Customizing Book Output
This article covers customizing the output of book projects, including how to tailor the styles and appearance of books in each supported output format.
Format Options
If you want to specify rendering options (including format-specific options), you do it within the _quarto.yml
project file rather than within the individual markdown documents. This is because when rendering a book all of the chapters are combined together into a single document (with a single set of format options).
Here’s an example configuration:
highlight-style: pygments
format:
html:
theme: cosmo
code-copy: true
pdf: default
bibliography: references.bib
csl: citestyle.csl
Note that in the above configuration the highlight-style
option applies to all formats whereas the html
options apply to only HTML output. The bibliography related options naturally also apply to all formats.
Reader Tools
Website Tools
HTML books are at their core Quarto Websites with some special navigational behavior built in. This means that all of the features described for enhancing websites are also available for books, including:
One important thing to note about using website tools is that while these tools are added to websites within the website
key, in a book you should include the same options in the book
key. For example, in a website you would include a favicon and twitter card as follows:
website:
favicon: logo.png
twitter-card: true
site-url: https://example.com
In a book you’d use the book
key instead:
book:
favicon: logo.png
twitter-card: true
site-url: https://example.com
Cover Images
You can provide a cover image for EPUB and/or HTML formats using the cover-image
option. For example:
book:
cover-image: cover.png
You can also do this on a per-format basis (if for example you want to provide a higher resolution image for EPUB and a lower resolution image for HTML to reduce download time). For example:
format:
html:
cover-image: cover.png
epub:
cover-image: cover-highres.png
You can specify HTML alt-text for book cover images using the cover-image-alt
option:
book:
cover-image: cover.png
cover-image-alt: |
Alternative text describing the book cover
Output Path
By default, book output is written to the _book
directory of your project. You can change this via the output-dir
project option. For example:
project:
type: book
output-dir: docs
Single file outputs like PDF, EPUB, etc. are also written to the output-dir
. Their file name is derived from the book title
. You can change this via the output-file
option:
book:
title: "My Book"
output-file: "my-book"
Note that the output-file
should not have a file extension (that will be provided automatically as appropriate for each format).
LaTeX Output
In some cases you’ll want to do customization of the LaTeX output before creating the final printed manuscript (e.g. to affect how text flows between pages or within and around figures). The best way to approach this is to develop your book all the way to completion, then render to the latex
format
Terminal
quarto render --to latex
The complete LaTeX source code of your book will be output into the _book/book-latex
directory.
At this point you should probably make a copy or git branch of the _book
directory to perform your final LaTeX modifications within (since the modifications you make to LaTeX will not be preserved in your markdown source, and will therefore be overwritten the next time you render).
HTML Styles
HTML output can be customized either by adding (or enhancing) a custom theme, or by providing an ordinary CSS file. Use the theme
option to specify a theme:
format:
html:
theme: cosmo
To further customize a theme add a custom theme file:
format:
html:
theme: [cosmo, theme.scss]
You can learn more about creating theme files in the documentation on HTML Themes.
You can also just use plain CSS. For example:
format:
html:
css: styles.css
EPUB Styles
You can also use CSS to customize EPUB output:
format:
epub:
css: epub-styles.css
epub-cover-image: epub-cover.png
Note that we also specify a cover image. To learn more about other EPUB options, see the Pandoc documentation on EPUBs.
PDF Styles
You can include additional LaTeX directives in the preamble of your book using the include-in-header
option. You can also add documentclass
and other options (see the Pandoc documentation on LaTeX options for additional details). For example:
format:
pdf:
documentclass: scrbook
include-in-header: preamble.tex
fontfamily: libertinus
Quarto uses the KOMA Script scrreprt
document class by default for PDF books. KOMA-Script classes are drop-in replacements for the standard classes with an emphasis on typography and versatility.
You can switch to KOMA scrbook
as demonstrated above, or to the standard LaTeX book
and report
classes. You can find a summary of the differences between book
and report
here: https://tex.stackexchange.com/questions/36988
MS Word Styles
You can customize MS Word output by creating a new reference doc, and then applying it to your book as follows:
format:
docx:
reference-doc: custom-reference.docx
Learn more about creating and customizing a reference document in the documentation on Word templates.