我现在已经使用org-mode + emacs了一段时间,我喜欢制作内容是多么容易。我经常使用同一文档中的html + pdf export组合(首先是一个网页,下面是一个pdf文档)。我的问题是将代码块(#+BEGIN_SRC
...)导出为pdf。
要 html ,导出命令(C-c C-e h h
)给了我一个满意的解决方案:它使用一个框架来封装代码(当你将鼠标指针放在它上面时显示编程语言并为结果消息使用不同的框架(我设置:export both
)。在#+CAPTION: my caption here
之前使用#+BEGIN_SRC
时,生成的html页面包含" 列出#:我的标题"在代码框之前。
要 pdf ,导出命令(C-c C-e l p
)生成的文档在代码或结果(真正的混乱)周围都没有框架,并且字幕显示为& #34; 图#:我的标题"在代码和结果之间。
从org-mode导出为pdf时,如何为代码块获取不同的代码和结果框架和类似于列表的字幕?
这是一个最小的例子:
#+TITLE: EXPORT TESTINGS
#+OPTIONS: toc:nil
#+CAPTION: Caption, my caption!
#+BEGIN_SRC C :results output :exports both
int i, x = 10;
for(i = 0; i < x; i++)
printf("%d ",i);
printf(" ~ %d\n", x);
#+END_SRC
答案 0 :(得分:5)
基于Alex Ott的回答(以及几个小时的网络浏览),我终于做到了。
为了完整。这就是我必须设置所有内容的方式:
minted
使用Python包突出显示名为Pygmets的语法。您可以通过以下方式安装它:
pip install Pygments
#+LaTeX_HEADER: \usepackage{minted}
org-latex-listings
。您必须使用(setq org-latex-listings 'minted)
进行设置。pdflatex
执行shell命令才能使用Python软件包Pygments
。选项为-shell-escape
。用于描述对LaTeX编译器的调用的emacs变量为org-latex-pdf-process
。要达到这3点,我已在我的init文件中添加了此摘要
;; inside .emacs file
(setq org-latex-listings 'minted
org-latex-packages-alist '(("" "minted"))
org-latex-pdf-process
'("pdflatex -shell-escape -interaction nonstopmode -output-directory %o %f"
"pdflatex -shell-escape -interaction nonstopmode -output-directory %o %f"
"pdflatex -shell-escape -interaction nonstopmode -output-directory %o %f"))
注意:请参阅here,以了解为什么需要对pdflatex进行三个调用。如果使用bibtex,则必须插入相应的行。
现在,您可以在源代码块的顶部添加LaTeX属性:
#+ATTR_LATEX: :options frame=single
#+BEGIN_SRC emacs-lisp
(defun Fib (n)
(if (< n 2) n (+ (Fib (- n 1)) (Fib (- n 2)))))
#+END_SRC
要使用不同的框架样式,请检查manual
答案 1 :(得分:2)