5 bookdown语法
bookdown 比 Rmarkdown 的主要升级之处在于自动编号和交叉引用。
5.1 章节编号和引用
5.1.2 引用
{#tag}
,自动为标题编号,并定义标题的标签,便于引用。标签只能含字母、数字和连字符”-“,图、表标签同{-}
,不为标题编号,也不定义标签{#tag .unnumbered}
,设置标题的标签,但不为标题编号\@ref(tag)
,引用标题编号。如第5节是关于bookdown的。
5.2 图形自动编号
用R代码块生成的图形,只要具有代码块标签label,且提供代码段选项fig.cap="图题"
,就可对图形自动编号,并且可以用如\@ref(fig:label)
的格式引用图形。如:
plot(1:10)

Figure 5.1: 测试图
引用如:参见图5.1,其中的fig:
是必须的。
5.3 表格自动编号
用R代码knitr::kable()
生成的表格,只要具有代码块标签,并且在knitr::kable()
调用时加选项caption="表题"
,就可以对表格自动编号,并且可以用如\@ref(tab:label)
的格式引用表格。如:
<- data.frame("自变量" = 1:10, "因变量" = (1:10)^2)
d ::kable(d, caption = "1到10的平方", longtable = TRUE) knitr
自变量 | 因变量 |
---|---|
1 | 1 |
2 | 4 |
3 | 9 |
4 | 16 |
5 | 25 |
6 | 36 |
7 | 49 |
8 | 64 |
9 | 81 |
10 | 100 |
引用如:参见表5.1,其中的tab:
是必须的。
5.4 数学公式编号
不需要编号的公式,仍可以按照一般的Rmd文件使用行内的$ $
或独立的$$ $$
公式块。
需要编号的公式,写在\begin{align}
和\end{align}
之间。然后,对不需要编号的行在末尾用\nonumber
标注;对需要编号的行用(\#eq:mylabel)
添加自定义标签,在正文的引用中使用与上面相同的格式\@ref(eq:mylable)
。如:
\[\begin{align} f(x) =& \sum_{k=0}^\infty \frac{1}{k!} x^k \tag{5.1} \\ = e^x \tag{5.2} \end{align}\]
\[\begin{align} \Sigma =& (\sigma_{ij})_{n\times n} \nonumber \\ =& E[(\boldsymbol{X} - \boldsymbol{\mu}) (\boldsymbol{X} - \boldsymbol{\mu})^T ] \tag{5.3} \end{align}\]
引用如:协方差定义见式(5.3)。
5.5 文献引用与文献列表
- 将所有文献用bib格式保存为一个
.bib
文献库,如模板中的样例文件mybib.bib
。用@item
和[@item]
引用文献题录,如2:
源代码 | 效果 |
---|---|
@MWP06-HighStat |
茆诗松 et al. (2006) |
@Lin2018 [page. 33] |
林毅夫 (2018, page. 33) |
[@Lin2018, page. 33] |
(林毅夫 2018, page. 33) |
[@Lin2018; @MWP06-HighStat] |
(林毅夫 2018; 茆诗松 et al. 2006) |
[see @Lin2018, page. 33-35; also @MWP06-HighStat, ch. 1] |
(see 林毅夫 2018, page. 33-35; also 茆诗松 et al. 2006, ch. 1) |
[-@Lin2018] |
(2018) |
- 将
nocite:|
@item1,@item2
写在YAML文件头中,表示某些文献不直接引用,只在末尾参考文献列表中出现。
被引用的文献将出现在一章末尾以及全书的末尾,对PDF输出则仅出现在全书末尾。
参考文献
没有方括号时,题录前后一定要加空格。↩︎