gpt4 book ai didi

pdf - 导出为pdf时如何将代码块封装成一帧?

转载 作者:行者123 更新时间:2023-12-04 05:43:37 25 4
gpt4 key购买 nike

我已经使用 org-mode + emacs 有一段时间了,我喜欢制作内容是多么容易。我经常从同一个文档中使用 html + pdf 导出组合(首先是网页,然后是 pdf 文档)。我的问题是将代码块(#+BEGIN_SRC ...)导出为 pdf。
html ,导出命令(C-c C-e h h)给了我一个令人满意的解决方案:它使用一个框架来封装代码(当你将鼠标指针放在它上面时显示编程语言)并为结果消息使用不同的框架(正如我设置的那样:export both)。使用 #+CAPTION: my caption here 时在 #+BEGIN_SRC 之前,生成的 html 页面在代码框架之前包含“Listing #: my caption here”。
pdf ,导出命令( C-c C-e l p )生成的文档在代码和结果周围都没有框架(真正的困惑),并且标题在代码和结果之间显示为“图#:我的标题”。
我如何同时获得 代码和结果的不同框架类似列表的字幕 从 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
这是结果 html以及由此产生的 pdf .

最佳答案

基于 Alex Ott 的回答(以及几个小时的网页浏览),我终于做到了。
我们将使用 minted .为了完整起见,这就是我必须设置所有内容的方式:

需要 Pythonminted使用 Python 包突出显示名为 Pygmets 的语法.你可以安装它:

pip install Pygments

Emacs 设置
  • 在 org 文件序言中,您需要以下行:#+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
    等等瞧!
    enter image description here

    类型转换手册
    要使用不同的框架样式,请查看 manual

    关于pdf - 导出为pdf时如何将代码块封装成一帧?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46438516/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com