Chapter 5 Bookdown

同样的,我们参考R Markdown: The Definitive GuideChapter 12学习Bookdown。

5.1 Bookdown包下载

install.packages('bookdown')

# or Github

devtools::install_github('rstudio/bookdown')

5.2 Bookdown project结构

请在进行Bookdown书写时,首先创建一个新的project。Working directory中一般有以下部分:

index.Rmd: Rmd的第一章节,包括整本书的格式设置和第一章内容

num-name.Rmd:num决定Bookdown输出时的章节顺序,保序;name自己起名

_bookdown.yml:输出格式逻辑调整,一般不用

_output.yml:输出格式内容调整(例如书名),一般只需要更改全书书名

preamble.texstyle.css:Latex和Css调整输出样式

其他可能还有.bib(引用,见Zotero部分)。

directory/
├──  index.Rmd
├── 01-intro.Rmd
├── 02-literature.Rmd
├── 03-method.Rmd
├── 04-application.Rmd
├── 05-summary.Rmd
├── 06-references.Rmd
├── _bookdown.yml
├── _output.yml
├──  book.bib
├──  preamble.tex
├──  README.md
└──  style.css

5.3 Index.Rmd

Index.Rmd是Bookdown中最重要的部分,其包括一个YAML和第一章内容,其中,YAML决定全书格式

---
title: "Summer RA Conclusion"
author: "Yuyang Shi, Yokia Xu"
date: "`r Sys.Date()`"
site: bookdown::bookdown_site
output: bookdown::gitbook
description: "Summer RA Conclusion"
documentclass: book
bibliography: law-and-politics.bib,
biblio-style: apalike
---

其中,site和output决定全书输出格式,可参见详见R Markdown: The Definitive Guide Chapter 12.4。一般而言,只需要更改title,author,description,bibliographybiblio-style

5.4 Num-name.Rmd

在随后的所有Rmd文件中,我们只需要使用markdown语法格式进行书写即可。(安利一下Typora!)

所有的Num-name.Rmd必须包含一个一级标题,如# Bookdown

为组织文章结构,我们可以在每个Num-name.Rmd中使用任意的二级、三级标题。但请不要使用四级及以下的标题

5.5 _bookdown.yml

一般不使用,可以用_bookdown.yml限定输出.Rmd的范围和顺序,如

rmd_files: ["index.Rmd", "02-git.Rmd", "01-Rmd.Rmd"]

将使Bookdown先输出02-git.Rmd,再生成01-Rmd.Rmd,且不输出其他内容。

5.6 _output.yml

一般不使用,可以调整输出格式。详见R Markdown: The Definitive Guide Chapter 12.4

bookdown::gitbook:
  lib_dir: assets
  split_by: section
  config:
    toolbar:
      position: static
bookdown::pdf_book:
  keep_tex: yes
bookdown::html_book:
  css: toc.css

5.7 补充说明

  1. Bookdown中,各章节需要依照“num-name.Rmd”的方式命名。其中num决定章节先后顺序,保序即可。

  2. Bookdown中的Zotero引用与第三部分完全一致。

  3. 即使没有"_bookdown.yml“和”_output.yml"文件,Bookdown依然能按照default格式输出。但在与Github连接不稳定时,将上述文件储存在本地是有用的。

  4. 在完成Bookdown各章节书写后,需要分别knit才能得到完整文档(仅knitindex.Rmd会有各章节目录,但不会有具体内容)。