13.10.8 Source blocks in LaTeX export

LaTeX 导出后端根据 org-latex-src-block-backend 的值提供多种代码块渲染方式。默认值 ‘verbatim’ 以原样格式输出代码,无额外样式。其他值支持更丰富的彩色高亮,但需要额外 LaTeX 宏包( ‘listings’ 、 ‘minted’ )、系统工具( ‘minted’ )或 Emacs 包( ‘engraved’ )。详细说明参见 org-latex-src-block-backend 文档字符串。

LaTeX 导出后端可通过 ‘:float’ 与 ‘:options’ 属性将代码块设为浮动对象。 ‘:float’ 取值:

t

将代码块设为浮动体;默认情况下带标题的代码块均为浮动体。

multicolumn

使代码块跨页面多栏显示。

nil

即使使用标题也不启用 ‘:float’ 浮动体;适用于可能无法在单页内容纳的源代码块。

#+ATTR_LATEX: :float nil
#+BEGIN_SRC emacs-lisp
  Lisp code that may not fit in a single page.
#+END_SRC

LaTeX 导出后端会将 ‘:options’ 中的字符串传递给对应 LaTeX 宏包,用于单独定制该代码块。下例为 Engraved 或 Minted 设置 ‘:options’ 。Minted 是功能丰富的代码高亮 LaTeX 宏包143。 Minted 与 Engraved 均基于 fvextra,因此支持许多相同选项。

#+ATTR_LATEX: :options mathescape
#+BEGIN_SRC emacs-lisp
  (defun Fib (n) ; $n_i = n_{i-2} + n_{i-1}$
    (if (< n 2) n (+ (Fib (- n 1)) (Fib (- n 2)))))
#+END_SRC

如需为文件中所有代码块统一设置选项,可使用 org-latex-listings-options~、~org-latex-engraved-optionsorg-latex-minted-options 变量。


Footnotes

(143)

Minted 使用外部 Python 包进行代码高亮,需要在 org-latex-pdf-process 中添加 ‘-shell-escape’ 参数