bookdown入门教程
介绍
R的bookdown 扩展包是继knitr和rmarkdown扩展包之后, markdown格式的另一种扩展, 使得Rmd格式可以支持公式、定理、图表自动编号和引用、链接, 文献引用和链接等适用于编写书籍的功能。
在bookdown的管理下:一本书的内容可以分解成多个Rmd文件, 其中可以有可执行的R代码, R代码生成的文字结果、表格、图形可以自动插入到生成的内容中, 表格和图形可以是浮动排版的。 输出格式主要支持gitbook格式的网页图书, 这种图书在左侧显示目录, 右侧显示内容, 并可以自动链接到上一章和下一章; 详细简介可参见:R语言教程-第23章。
通过单独安装的LaTeX编译器支持将书籍转换为一个PDF文件, 支持中文; 可以生成ePub等格式的电子书。bookdown除了可以编写有多个章节的书籍, 也可以用来生成单一文件的研究报告。当然小编也用它做有趣的事:超链接。
建议大家使用 RStudio 来制作图书,该软件构建了一键编译整本书的功能。
简单教程
以下是一些简单的步骤,可帮助你开始使用 Bookdown 编写书籍。 有关 bookdown 的全面文档,请参阅 https://bookdown.org/yihui/bookdown。
安装
任意一种方法即可:
# you can either use the CRAN version
install.packages('bookdown')
# or the development version on Github
remotes::install_github('rstudio/bookdown')
创建
点击File-New Project-New Directory,然后点击以下图标:
设置文件名和路径,点击创建即可
这时候就会出现下面的界面,右下角是自带的一些文件,其中小框内部是每章节的rmd,可以看到bookdown是将很多个rmd文件合成的一本书。当然还包括yml文件,放文献的bib格式,制作主题的css文件等。
编译
我们找到index.rmd文件,打开并点击knit进行编译,右下角即可得到编译以后的结果:
当然你也可以将其在网页中预览,点击右下角框扫把右边的show in new windows。
注意 :Knit按钮只呈现你正在编辑的章节(例如index.rmd, 01-intro.Rmd等)并使用该书的默认输出格式。
要构建该书的所有章节和所有格式,可以使用RStudio构建窗格中的build book按钮(整个界面的右上角)。
呐,这时你就已经制作出不同格式的书籍了!你可以在对应项目文件夹中找到对应文件。
该模板不支持渲染中文字体的pdf,但是支持含中文字体的html。
制作中文书籍
如果你需要制作含中文字的书籍(当然需要!)可以直接套用李东风老师为我们准备好的模板了。
下载链接为:bookdown-template-v0-5.zip
,也可以在公众号命令窗口输出[bookdown
]获得。
文件夹包含
CBook子目录包含了所需的中文书模板, CArticle子目录包含了论文格式模板, 其它子目录有一些别的模板(都可以学习使用,感谢李老师!有机会小编再出教程呀!)
为了在本地支持网页中的数学公式显示还有一个MathJax目录, 参见其中的readme.txt说明文件。
使用教程
新建一个新的project(File-New Project),然后将CBook文件夹内部的所有文件复制粘贴到project文件夹中,例如:
介绍下其中的一些文件:
- index.rmd
一本bookdown书, 一般都需要有一个index.Rmd
文件, 这是最后生成的网站的主页的原始文件, 可以在这个文件中写一些书的说明, 并在开头的YAML元数据部分进行有关设置, 如标题、作者、日期等。类似于Rmarkdown中的yaml文件,你可以在此进行修改,李老师也给出模板内部参数详细解释。本文针对初学者,所以不做过多解释,先会用就好。
- xxx.Rmd
除了index.rmd,项目中每个.Rmd文件都作为一章。 每个.Rmd文件第一行, 应该是以一个井号和空格开头的一级标题, 后面再加空格然后有大括号内以井号开头的章标签, 如
# 随机数 {#rng}
模板中的0101-usage.rmd给出了中文图书Bookdown模板的基本用法,包括:安装设置、文档结构、图形表格公式的自动编号、生成PDF、上传到网站等内容。
这个rmd文件内容干货很多,大家不要跳过!
1001-chapter01.rmd给出了一章节内部内容,可以作为参考。你可以把内容换成自己的,可以建立更多类似rmd文件,名字最好按类似序号排列,因为默认按序号先后编译。例如,我的日记本设置为:
等你写完自己的内容之后呢,可以按照前面的基础教程进行编译(两种方式)。或者可以使用李老师推荐的:在命令窗口使用以下命令编译:
bookdown::render_book("index.Rmd",
output_format="bookdown::gitbook", encoding="UTF-8")
要输出pdf必须要有tex环境噢!建议安装谢益辉的TinyTeX。
然后在项目文件夹中找到对应的pdf文件,打开就是你自己制作好的书籍了!下面是我日记本截图: