当我尝试导出这样的文件时:
#+LaTeX_CLASS: tufte
#+ATTR_LaTeX: :float t :options label={test}
#+begin_src c
#include <iostream>
using namespace std;
int main() {
cout << "Hello world!" << endl;
return 0;
}
#+end_src
该options
属性被忽略(它不会进入生成的文件tex
)并且仅传递默认选项:
\begin{listing}[H]
\begin{minted}[frame=lines, linenos=true]{c}
#include <iostream>
using namespace std;
int main() {
cout << "Hello world!" << endl;
return 0;
}
\end{minted}
\end{listing}
知道为什么吗?我的 org 版本是 8.2.7c。
编辑:我的设置如下:
#+begin_src emacs-lisp
(require 'ox-latex)
(require 'org-latex)
(add-to-list 'org-latex-packages-alist '("" "minted"))
(setq org-latex-listings 'minted)
(setq org-latex-minted-options
'(("frame" "lines") ("linenos=true")))
(setq org-latex-pdf-process (list "latexmk -pdf %f"))
#+end_src
** Tufte
#+begin_src emacs-lisp
(add-to-list 'org-latex-classes
`("tufte"
"\\documentclass{tufte-handout}"
("\\section{%s}" . "\\section*{%s}")
("\\subsection{%s}" "\\newpage" "\\subsection*{%s}" "\\newpage")
("\\subsubsection{%s}" . "\\subsubsection*{%s}")
("\\paragraph{%s}" . "\\paragraph*{%s}")
("\\subparagraph{%s}" . "\\subparagraph*{%s}"))
)
#+end_src
答案1
卢卡斯,我自己不使用org-mode
,但如果我有,作为示例,你问题中的第一个 MWE,并#+NAME
在下一行后面添加,随后#+ATTR_LaTeX:
跟着任何名称,你想要引用标签,文档编译得很好,只要三个类中的一个,即,report
或是book
在article
中指定#+LaTeX_CLASS
,而不是tufte
。
编辑:第二次编辑。是的,卢卡斯。一旦初始化文件加载了选项、环境、非环境以及介于两者之间的所有内容,选项、环境、非环境以及介于两者之间的所有内容就会被传递。
因此,为了获取铸造的选项、正确的默认选项以及获取选项的正确环境,初始化文件至少需要具备:
(setq org-latex-listings 'minted)
(setq org-latex-minted-options
'(("frame" "lines") ("linenos=true")))
因此,您得到:
\begin{listing}[H]
\begin{minted}[frame=lines,linenos=true]{c}
#include <iostream>
using namespace std;
int main() {
cout << "Hello world!" << endl;
return 0;
}
\end{minted}
\label{ref:sourC}
\end{listing}
例如:
#+LaTeX_CLASS: book
#+ATTR_LaTeX: :float t :options label={test}
#+NAME: ref:source
#+begin_src c
#include <iostream>
using namespace std;
int main() {
cout << "Hello world!" << endl;
return 0;
}
#+end_src
为您提供tex
包含以下行的文件:
\begin{figure}[H]
\begin{verbatim}
#include <iostream>
using namespace std;
int main() {
cout << "Hello world!" << endl;
return 0;
}
\end{verbatim}\label{ref:source}
\end{figure}
答案2
根据的描述org-latex-listings
,您还需要配置org-latex-pdf-process
才能传递-shell-escape
选项。以下对我有用:
(setq org-latex-pdf-process
(mapcar
(lambda (s)
(replace-regexp-in-string "%latex " "%latex -shell-escape " s))
org-latex-pdf-process))