介绍
R的bookdown扩展包是继knitr和rmarkdown扩展包之后, markdown格式的另一种扩展, 使得Rmd格式可以支持公式、定理、图表自动编号和引用、链接, 文献引用和链接等适用于编写书籍的功能。
在bookdown的管理下:一本书的内容可以分解成多个Rmd文件, 其中可以有可执行的R代码, R代码生成的文字结果、表格、图形可以自动插入到生成的内容中, 表格和图形可以是浮动排版的。
输出格式主要支持gitbook格式的网页图书, 这种图书在左侧显示目录, 右侧显示内容, 并可以自动链接到上一章和下一章;详细简介可参见:R语言教程-第23章[1]。
通过单独安装的LaTeX编译器支持将书籍转换为一个PDF文件, 支持中文;可以生成ePub等格式的电子书。bookdown除了可以编写有多个章节的书籍, 也可以用来生成单一文件的研究报告。官网给出了很多免费的bookdown书籍:Bookdown优质免费书籍分享,当然小编也用它做日记本。
建议大家使用RStudio来制作图书, 该软件构建了一键编译整本书的功能。
简单教程
以下是一些简单的步骤,可帮助你开始使用Bookdown编写书籍。
安装
任意一种方法即可:
代码语言:javascript复制# 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`[2],也可以在公众号命令窗口输出[bookdown
]获得,小编只是个搬运工,感谢李老师分享!
- 文件夹包含
CBook子目录包含了所需的中文书模板, CArticle子目录包含了论文格式模板, 其它子目录有一些别的模板(都可以学习使用,有机会小编再出教程呀!)
为了在本地支持网页中的数学公式显示还有一个MathJax目录, 参见其中的readme.txt说明文件。
使用教程
新建一个新的project(File-New Project),然后将CBook文件夹内部的所有文件复制粘贴到project文件夹中,例如:
介绍下其中的一些文件:
- index.Rmd
一本bookdown书, 一般都需要有一个index.Rmd
文件, 这是最后生成的网站的主页的原始文件, 可以在这个文件中写一些书的说明, 并在开头的YAML元数据部分进行有关设置, 如标题、作者、日期等。
类似于Rmarkdown中的yaml文件,你可以在此进行修改,李老师也给出模板内部参数详细解释[3]。本文针对初学者,所以不做过多解释,先会用就好。
- xxx.Rmd
除了index.rmd外,项目中每个.Rmd文件都作为一章。每个.Rmd文件第一行, 应该是以一个井号和空格开头的一级标题, 后面再加空格然后有大括号内以井号开头的章标签, 如
代码语言:javascript复制# 随机数 {#rng}
0101-usage.rmd
给出了中文图书Bookdown模板的基本用法,包括:安装设置、文档结构、图形表格公式的自动编号、生成PDF、上传到网站等内容。
这个rmd文件内容干货很多,大家不要跳过!
1001-chapter01.rmd
给出了一章节内部内容,可以作为参考。
你可以把内容换成自己的,可以建立更多类似rmd文件,名字最好按类似序号排列,因为默认按序号先后编译。例如,我的日记本设置为:
等你写完自己的内容之后呢,可以按照前面的基础教程进行编译(两种方式)。或者可以使用李老师推荐的:在命令窗口使用以下命令编译:
代码语言:javascript复制bookdown::render_book("index.Rmd",
output_format="bookdown::gitbook", encoding="UTF-8")
要输出pdf必须要有tex环境噢!建议安装谢益辉的TinyTeX[4]。
然后在项目文件夹中找到对应的pdf文件,打开就是你自己制作好的书籍了!下面是我日记本截图:
pdf格式
html格式:找到_book的index.rmd文件打开
小编有话说
- 如果你是第一次看到我有关文档沟通的内容并且想跟着这个教程构建书籍的话,建议你看看我写的RMarkdown的基础教程推文或b站视频(文末推文推荐),因为构建书籍中包含了各类Rmarkdown的语法,如果你不会使用可能会很头疼。
- 小编只能带大家入个门和拓展思维(如何创建,运用,编译)。而在你实际使用过程中可能会遇到各类实际问题,建议大家多使用bing[5](google[6])英文搜索,找到自己想要的答案。当然之后还会出一些使用bookdown经验和技巧的总结。也欢迎大家留言和我分享,我再整理分享给更多R爱好者们。
- 这里再给大家推荐一些Bookdown相关的参考资料
《R语言教程-23章》[7]
bookdown: Authoring Books and Technical Documents with R Markdown[8]
bookdown官网[9]
参考资料
[1]
R语言教程-第23章: https://www.math.pku.edu.cn/teachers/lidf/docs/Rbook/html/_Rbook/rmarkdown.html
[2]
bookdown模板: https://www.math.pku.edu.cn/teachers/lidf/docs/Rbook/html/_Rbook/bookdown-template-v0-5.zip
[3]
内部参数解释: https://www.math.pku.edu.cn/teachers/lidf/docs/Rbook/html/_Rbook/bookdown.html
[4]
TinyTeX: https://yihui.name/tinytex/
[5]
bing: https://www.bing.com/?mkt=zh-CN
[6]
google: https://www.google.com/
[7]
《R语言教程-23章》: https://www.math.pku.edu.cn/teachers/lidf/docs/Rbook/html/_Rbook/bookdown.html
[8]
bookdown书: Authoring Books and Technical Documents with R Markdown: https://bookdown.org/yihui/bookdown/
[9]
bookdown官网: https://www.bookdown.org/