4.2 更换主题

有时你可能想要更改输出的整体主题,这通常可以通过上一节叙述的 in_header 选项或 css 选项(如果输出格式为 HTML)来完成。一些输出格式有它们独特的主题,例如 gitbooktufte_html_booktufte_book2,而你可能不想过多地自定义这些主题。相比之下,输出格式 html_book()pdf_book 不受到特定主题的约束,更具有定制性。

如第 3.1.3 节所述,html_book() 的默认样式是 Bootstrap 样式。Bootstrap 样式实际上有一些可以使用的内置主题,包括 defaultbootstrapceruleancosmodarklyflatlyjournallumenpaperreadablesandstonesimplexspacelabunitedyeti。你可以通过 theme 选项设定主题,例如:

---
output:
  bookdown::html_book:
    theme: united
---

如果你不喜欢上述任何一个 Bootstrap 主题,你可以将 theme 设置为 null,然后通过 cssincludes 选项应用你自己的 CSS。

对于 pdf_book(),除了上一节提到的 in_header 选项,另一个方法是改变文档类 (document calss)。对于书籍来说有许多可用的 LaTeX 类,例如 memoir (https://www.ctan.org/pkg/memoir)、amsbook (https://www.ctan.org/pkg/amsbook)、KOMA-Script (https://www.ctan.org/pkg/koma-script) 等等。以下是在 YAML 元数据中指定 KOMA-Script 软件包中的 srcbook 类的一个简要的示例:

---
documentclass: scrbook
output:
  bookdown::pdf_book:
    template: null
---

一些出版商(例如 Springer 和 Chapman & Hall/CRC)有他们自己的 LaTeX 样式或类文件。你可以尝试更改 documentclass 选项来使用他们的文档类,尽管通常情况下并非如此简单。你最终可能会使用 in_header,甚至设计一个自定义的 Pandoc LaTeX 模板来容纳这些文档类。

请注意,当你更改 documentclass 时,你可能会指定一个额外的 Pandoc 参数 --top-level-division=chapter 以便 Pandoc 知道应该将第一级标题视为章而不是小节(这是在 documentclassbook 时的默认值),例如:

documentclass: krantz
output:
  bookdown::pdf_book:
    pandoc_args: --top-level-division=chapter