PDF引擎

概述

Pandoc支持使用各种TeX发行版和PDF编译引擎,包括pdflatex、xelatex、lualatex、tectonic和latexmk。

虽然你可以使用任何喜欢的工具链进行LaTeX编译,但我们强烈推荐使用TinyTeX,这是一个TeX Live的发行版,提供了合理的初始下载大小(约100 MB),包含了Pandoc文档中最常用的约200个TeX包。

我们还推荐使用Quarto内置的PDF编译引擎,它能够自动安装任何缺失的TeX包。

安装TeX

要安装TinyTeX,请使用以下命令:

终端
quarto install tinytex

TinyTeX不会安装到系统的PATH中,因此不会影响使用TeX的其他应用程序。如果你想在其他应用程序中使用TinyTeX,请在安装时添加--update-path标志(这将把TinyTex添加到系统路径中):

终端
quarto install tinytex --update-path

如果你已经安装了其他TeX版本,并且希望与Quarto一起使用,请在你的项目或文档前言中添加latex-tinytex: false,以防止Quarto使用其内部版本。

如果你更喜欢TeX Live,可以在这里找到安装说明:https://tug.org/texlive/

请注意,Quarto自动安装缺失TeX包的功能适用于TinyTeX和TeX Live,但不适用于其他TeX发行版(因为它依赖于TeX Live的tlmgr命令)。

管理TeX

除了安装TinyTeX,你还可以更新或删除TinyTex的安装。要查看当前安装的TinyTex版本,请使用以下命令:

终端
quarto list tools

这将提供可用工具的列表、已安装的版本和最新可用版本:

[✓] 检查工具

工具        状态            已安装        最新
chromium    未安装         ---           869685
tinytex     最新           v2022.10      v2022.10

要更新到最新版本,请使用以下命令:

终端
quarto update tinytex

这将下载并安装最新版本的TinyTex(遵循与上述安装TinyTex相同的行为)。

要彻底删除TinyTex,请使用以下命令:

终端
quarto uninstall tinytex
Tip

每年四月份,TeXlive会将他们的远程包仓库更新到新一年的TeX版本。发生这种情况时,前一年的TeX安装将无法从远程仓库下载和安装包。当这种情况发生时,你可能会看到如下错误:

你的TexLive版本不够新,无法连接到远程仓库并下载包。请更新你的TexLive或TinyTex安装。

当这种情况发生时,你可以使用quarto update tinytex来下载并安装更新的tinytex版本。

Quarto PDF引擎

Quarto内置的PDF编译引擎处理多次运行LaTeX以解析索引和参考文献条目,并自动执行LaTeX包的安装。本节描述如何自定义内置引擎(有关使用其他引擎的文档,请参阅下面的备用PDF引擎部分)。

PDF编译

以下选项可用于自定义PDF编译:

选项 描述
latex-min-runs 数字(最小编译次数)
latex-max-runs 数字(最大编译次数)
latex-clean 布尔值(编译后清理中间文件,默认为true
latex-output-dir 字符串(中间文件和PDF的输出目录)
latex-makeindex 字符串(用于makeindex的程序)
latex-makeindex-opts 数组(makeindex程序的选项)

包安装

以下选项可用于自定义自动包安装:

选项 描述
latex-auto-install 布尔值(启用/禁用自动包安装)
latex-tlmgr-opts 数组(tlmgr的选项)

备用PDF引擎

你可以使用 pdf-enginepdf-engine-opts 来控制 Quarto 将 LaTeX 输出编译为 PDF 时使用的 PDF 引擎。例如:

title: "我的文档"
pdf-engine: lualatex
pdf-engine-opts:
  - '--no-shell-escape'
  - '--halt-on-error'

上面的例子将使用带有特定选项的 lualatex PDF 引擎,而不是默认的 xelatex

Latexmk

Quarto 内置了一个 Latexmk 引擎,它将多次运行 pdf-engine 来生成你的 PDF(例如,如果你使用交叉引用或参考文献)。此外,如果 TeX Live 可用,此引擎将检测并尝试安装缺失的包、字体或命令。

你可以通过将 latex-auto-mk 选项设置为 false 来禁用 Quarto 的内置 Latexmk 引擎。例如:

title: "我的文档"
latex-auto-mk: false

引擎选项仍然可以使用 pdf-engine-opts 设置。例如:

latex-auto-mk: false
pdf-engine: latexmk
pdf-engine-opts:
  - '-auxdir=custom-aux'
  - '-emulate-aux-dir'

上面的例子将使用 latexmk 作为 PDF 引擎,并设置一些选项来修改辅助文件的目录名称。