如何将对#begin_src块的引用导出到LaTeX

时间:2016-10-18 14:27:07

标签: emacs latex org-mode

我正在将一个ORG文件导出到LaTeX,org-latex-listings设置为t。该文件包含一些源列表,我想插入一些引用。

在生成的TEX文件中,\ref中包含的引用名称似乎由org-mode转换,但label的{​​{1}}选项保持不变。这样,\lstset找不到正确的引用,并提供消息pdflatex

以下是MWE的示例:

LaTeX Warning: There were undefined references.

导出为LaTeX文件(#+latex_header: \usepackage{listings} First simple java program in listing [[thesourcelisting]] #+name: thesourcelisting #+caption: Simple java program #+BEGIN_SRC java public static void main(String[] args){ System.exit(0); } #+END_SRC C-c C-e l)时,我得到了

t

原始名称% Created 2016-10-18 mar 14:50 \documentclass[11pt]{article} \usepackage[utf8]{inputenc} \usepackage[T1]{fontenc} \usepackage{fixltx2e} \usepackage{graphicx} \usepackage{grffile} \usepackage{longtable} \usepackage{wrapfig} \usepackage{rotating} \usepackage[normalem]{ulem} \usepackage{amsmath} \usepackage{textcomp} \usepackage{amssymb} \usepackage{capt-of} \usepackage{hyperref} \usepackage{listings} \author{alvaro} \date{\today} \title{} \hypersetup{ pdfauthor={alvaro}, pdftitle={}, pdfkeywords={}, pdfsubject={}, pdfcreator={Emacs 25.1.2 (Org mode 8.3.6)}, pdflang={English}} \begin{document} \tableofcontents First simple java program in listing \ref{orgsrcblock1} \lstset{language=java,label=thesourcelisting,caption={Simple java program},captionpos=b,numbers=none} \begin{lstlisting} public static void main(String[] args){ System.exit(0); } \end{lstlisting} \end{document} thesourcelisting命令中转换为orgsrcblock1,但在\ref命令中未转换为\lstset

我正在使用GNU Emacs 25.1.2。

1 个答案:

答案 0 :(得分:0)

尝试将org-latex-prefer-user-labels设为t

变量的文档字符串部分表示(执行C-h v org-latex-prefer-user-labels RET以获取整个内容):

  

非零时使用用户提供的标签而不是内部标签。

     

当此变量为非零时,Org将使用值   CUSTOM_ID属性,NAME关键字或组织目标作为关键字   \ label命令生成。

     

默认情况下,Org在LaTeX期间生成自己的内部标签   出口。此过程可确保\标签键是唯一的   并且有效,但这意味着密钥在提前无法使用   出口过程。