3.2 LaTeX/PDF

我们强烈建议你在撰写书籍时使用 HTML 输出格式,而不是 LaTeX,因为你将不会因为排版细节而分心,如果经常查看书籍的 PDF 输出就会知道,排版细节会给你带来很多麻烦。把仔细排版的工作留到最后(最好在真正完成书籍的内容之后)。

LaTeX/PDF 输出格式是由 bookdown 中的 pdf_book() 提供的。pdf_book()rmarkdown 中的 pdf_document() 格式之间没有明显的区别。pdf_book() 的主要目的是解决使用第 2.42.52.6 节中描述的语法编写的标签和交叉引用。如果你希望书籍的唯一输出格式是 LaTeX/PDF,则可以使用 LaTeX 特有的语法,例如使用 \label{} 来标记图片/表格/章节,使用 \ref{} 通过它们的标签来交叉引用,因为 Pandoc 支持在 Markdown 中使用 LaTeX 命令。然而,LaTeX 语法不能移植到其他输出格式,如 HTML 和电子书。这就是为什么我们为标签引入了 (\#label) 语法,为交叉引用引入了 \@ref(label) 语法。

有一些顶级 YAML 配置项将被应用于 LaTeX 输出。对于一本书,你可以把默认的文档类别改为 book(默认是 artical),并指定出版商要求的参考文献样式。下面是一个一个简短的 YAML 示例。

---
documentclass: book
bibliography: [book.bib, packages.bib]
biblio-style: apalike
---

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 软件包)。