5.1 构建书籍
要将所有 Rmd 文件构建到一本书中,可以在 bookdown 中调用 render_book()
函数。下面是 render_book()
的参数:
render_book(input = ".", output_format = NULL, ...,
clean = TRUE, envir = parent.frame(),
clean_envir = !interactive(), output_dir = NULL,
new_session = NA, preview = FALSE,
config_file = "_bookdown.yml")
最重要的参数是 output_format
,它可以接受表示输出格式的字符串(例如 'bookdown::gitbook'
)。你可以将此参数留空,默认输出格式是在第一个 Rmd 文件的 YAML 元数据中指定的第一个输出格式,或者在单独的 YAML 文件 _output.yml
中,如 4.4 部分所述。如果你计划为书籍生成多种输出格式,建议在 _output.yml
中指定所有格式。
一旦在 _output.yml
中指定了所有格式,就很容易编写一个 R 或 Shell 脚本或 Makefile 来编译书籍。下面是一个使用 Shell 脚本将书籍编译为 HTML(GitBook 样式)和 PDF 的简单示例:
#!/usr/bin/env Rscript
bookdown::render_book("index.Rmd", "bookdown::gitbook")
bookdown::render_book("index.Rmd", "bookdown::pdf_book")
Shell 脚本在 Windows 上不起作用(虽然严格来说并不是真的),但希望你能理解。
译者注:Windows 的 cmd 和 powershell 都无法运行 bash shell 脚本,但能够通过其它一些方式运行。
参数 ...
被传递给输出格式函数。参数 clean
和 envir
被传递给 rmarkdown::render()
,分别决定是否清理中间文件以及指定运行 R 代码的环境。
书籍的输出目录可以通过 output_dir
参数指定。默认情况下,书籍生成到 _book
目录。这也可以通过配置文件 _bookdown.yml
中的 output_dir
字段进行更改,这样就不必多次指定它来将书籍编译为多种输出格式。new_session
参数已在第 1.4 节中进行了解释。当设置 preview = TRUE
时,只编译 input
参数中指定的 Rmd 文件,这在预览某一章节时很方便,因为你不重新编译整本书,但在发布图书时,该参数肯定应该设置为 FALSE
。
render_book()
将生成许多输出文件。有时你可能需要清除书籍输出目录并重新开始生成书籍。例如,删除由 knitr 自动生成的图形和缓存文件。函数 clean_book()
就是为此而设计的。默认情况下,它告诉你可以删除哪些输出文件。如果你查看了它输出的可删除文件列表,并且确定没有文件被错误地标识为输出文件(你当然不想删除手动创建的输入文件),则可以使用 bookdown::clean_book(TRUE)
删除所有输出文件。由于删除文件是一个相对危险的操作,我们建议你通过版本控制工具(如 GIT)或支持备份和还原的服务来维护你的书籍,这样,如果你错误地删除某些文件,文件将不会永远丢失。