我正在将一个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。
答案 0 :(得分:0)
尝试将org-latex-prefer-user-labels
设为t
。
变量的文档字符串部分表示(执行C-h v org-latex-prefer-user-labels RET
以获取整个内容):
非零时使用用户提供的标签而不是内部标签。
当此变量为非零时,Org将使用值 CUSTOM_ID属性,NAME关键字或组织目标作为关键字 \ label命令生成。
默认情况下,Org在LaTeX期间生成自己的内部标签 出口。此过程可确保\标签键是唯一的 并且有效,但这意味着密钥在提前无法使用 出口过程。