3.2 LaTeX/PDF
我们强烈建议你在撰写书籍时使用 HTML 输出格式,而不是 LaTeX,因为你将不会因为排版细节而分心,如果经常查看书籍的 PDF 输出就会知道,排版细节会给你带来很多麻烦。把仔细排版的工作留到最后(最好在真正完成书籍的内容之后)。
LaTeX/PDF 输出格式是由 bookdown 中的 pdf_book()
提供的。pdf_book()
和 rmarkdown 中的 pdf_document()
格式之间没有明显的区别。pdf_book()
的主要目的是解决使用第 2.4、2.5 和 2.6 节中描述的语法编写的标签和交叉引用。如果你希望书籍的唯一输出格式是 LaTeX/PDF,则可以使用 LaTeX 特有的语法,例如使用 \label{}
来标记图片/表格/章节,使用 \ref{}
通过它们的标签来交叉引用,因为 Pandoc 支持在 Markdown 中使用 LaTeX 命令。然而,LaTeX 语法不能移植到其他输出格式,如 HTML 和电子书。这就是为什么我们为标签引入了 (\#label)
语法,为交叉引用引入了 \@ref(label)
语法。
有一些顶级 YAML 配置项将被应用于 LaTeX 输出。对于一本书,你可以把默认的文档类别改为 book
(默认是 artical
),并指定出版商要求的参考文献样式。下面是一个一个简短的 YAML 示例。
LaTeX 输出格式还有大量的 YAML 配置项可以使用,如纸张大小、字体大小、页边距、行间距、字体族等等。关于配置项的完整列表,请参见 http://pandoc.org/MANUAL.html#variables-for-latex。
pdf_book()
格式与 html_book()
一样是一种通用格式,它也有一个 base_format
参数。
pdf_book(toc = TRUE, number_sections = TRUE,
fig_caption = TRUE, pandoc_args = NULL, ...,
base_format = rmarkdown::pdf_document,
toc_unnumbered = TRUE, toc_appendix = FALSE,
toc_bib = FALSE, quote_footer = NULL,
highlight_bw = FALSE)
你可以将 base_format
函数改成其他的输出格式函数,bookdown 提供了一个简单的封装函数 tufte_book2()
,基本上就是 pdf_book(base_format = tufte::tufte_book)
,用 Tufte 的 PDF 样式来制作一本 PDF 书籍(类似地,详情请见 tufte 软件包)。