R沟通|用bookdown制作图书(1)

简介: R沟通|用bookdown制作图书(1)

介绍

R的bookdown扩展包是继knitr和rmarkdown扩展包之后, markdown格式的另一种扩展, 使得Rmd格式可以支持公式定理图表自动编号引用、链接 文献引用链接等适用于编写书籍的功能。

在bookdown的管理下:一本书的内容可以分解成多个Rmd文件, 其中可以有可执行的R代码R代码生成的文字结果表格图形可以自动插入到生成的内容中, 表格和图形可以是浮动排版的。

输出格式主要支持gitbook格式的网页图书, 这种图书在左侧显示目录, 右侧显示内容, 并可以自动链接到上一章和下一章;详细简介可参见:R语言教程-第23章[1]

通过单独安装的LaTeX编译器支持将书籍转换为一个PDF文件, 支持中文;可以生成ePub等格式的电子书。bookdown除了可以编写有多个章节的书籍, 也可以用来生成单一文件的研究报告。官网给出了很多免费的bookdown书籍:Bookdown优质免费书籍分享,当然小编也用它做日记本。

建议大家使用RStudio来制作图书, 该软件构建了一键编译整本书的功能。

简单教程

以下是一些简单的步骤,可帮助你开始使用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`[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文件第一行, 应该是以一个井号和空格开头的一级标题, 后面再加空格然后有大括号内以井号开头的章标签, 如

# 随机数 {#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[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/


目录
相关文章
|
Linux iOS开发 索引
【已解决】ModuleNotFoundError: No module named ‘matplotlib‘
【已解决】ModuleNotFoundError: No module named ‘matplotlib‘
|
存储 分布式计算 网络协议
大数据Spark Streaming入门
大数据Spark Streaming入门
301 1
|
自然语言处理 前端开发 数据可视化
Quarto ppt模板制作与Rstudio git连接
本文介绍了当前PPT演示中流行的Quarto文档使用情况,以及如何在Rstudio中连接Git进行版本控制。重点讲解了Quarto的ppt模板制作流程,包括安装、创建演示文稿及自定义样式等步骤,并提供了相关资源链接。
331 0
Quarto ppt模板制作与Rstudio git连接
|
机器学习/深度学习 自然语言处理 JavaScript
信息论、机器学习的核心概念:熵、KL散度、JS散度和Renyi散度的深度解析及应用
在信息论、机器学习和统计学领域中,KL散度(Kullback-Leibler散度)是量化概率分布差异的关键概念。本文深入探讨了KL散度及其相关概念,包括Jensen-Shannon散度和Renyi散度。KL散度用于衡量两个概率分布之间的差异,而Jensen-Shannon散度则提供了一种对称的度量方式。Renyi散度通过可调参数α,提供了更灵活的散度度量。这些概念不仅在理论研究中至关重要,在实际应用中也广泛用于数据压缩、变分自编码器、强化学习等领域。通过分析电子商务中的数据漂移实例,展示了这些散度指标在捕捉数据分布变化方面的独特优势,为企业提供了数据驱动的决策支持。
1370 2
信息论、机器学习的核心概念:熵、KL散度、JS散度和Renyi散度的深度解析及应用
|
12月前
|
SQL 分布式计算 Hadoop
Hadoop集群管理:向繁琐的计算源创建Say ByeBye
为了解决Hadoop计算源创建复杂、维护困难的问题,Dataphin在V4.4 版本推出了Hadoop集群管理功能,支持用户引用集群信息进行计算源的创建,大大提高用户的创建和维护效率。
197 1
|
文字识别
【提取翻译竖排文字日文图片的软件】竖排的日语图片文字识别翻译,竖排的日语图片文字如何识别,竖排日语图片识别后转横排,竖排的日语识别比较友好的方法
这款软件专攻竖排日语图片文字识别,支持自动横排转换,能准确提取左右排版文字,并翻译成中文。用户可从百度网盘或腾讯云盘下载。功能包括图片打开、拖拽识别、截屏拾取、顺序识别、文字导出、快捷搜索及窗体操作。识别时注意保持文字等高以减少误差。附带视频教程(BV1vW4y1p7st)帮助快速上手。
2449 1
|
机器人 测试技术 C++
ModbusCRC16校验 示例代码
本文提供了ModbusCRC16校验的示例代码,包括计算CRC、添加CRC校验位、删除CRC校验位和比较CRC校验位等四种常用函数的实现,以及一个完整的示例代码。这些代码在Ubuntu20.04环境下经过测试并确认有效。示例代码采用C++编写,展示了如何使用这些函数来处理Modbus通信中的数据校验。
775 2
【Matlab 2019b】Matlab在figure中如何把横坐标或者纵坐标单位转换为10的几次方
本文提供了在Matlab中如何改变图形坐标轴单位的方法,举例说明了如何将横轴刻度标签设置为特定的年份,并调整刻度取值以匹配自变量的变化。
2040 1
|
SQL 关系型数据库 MySQL
一文带你了解MySQL的DCL语句
一文带你了解MySQL的DCL语句
763 1
|
负载均衡 前端开发 Java
SpringCloud全链路灰色发布具体实现!
SpringCloud全链路灰色发布具体实现!
407 1