专栏首页庄闪闪的R语言手册R沟通|Bookdown中文书稿写作手册(上)

R沟通|Bookdown中文书稿写作手册(上)

前言

今年接了 5 本与贝叶斯近似计算包INLA相关的翻译书,将由高等教育出版社出版。在准备翻译的时候,我静下来思考了一下二个问题。一是互联网时代在兼顾图书质量的同时怎么充分考虑读者阅读体验?二是什么是当下最为成熟的图书写作工具?特别是与数据科学密切相关的统计类图书的写作与出版。书稿模板的选择成为首先要考虑的事。

在书稿模板的选择与测试过程中遇到了很多的坑,幸运的是逐个踩过来了,但从 TEXTEX 到Rnw(Sweave+R), 再到Rmd (Knitr + R), 最后到Bookdown, 共经历了 4 个模板。快速、高效、高质量是写书人追求的目标。目前来看Bookdown是最好的选择,因为它满足我模板选择的快速编辑、高效生成、高质量输出的要求。

这本小册子可视为一个写中文书稿的Bokdown模板,也是中文Bookdown写作的一本说明书,其中汇总了书稿中几大核心要素的写作技巧。我主要参考了三个模板Bookdown模板和三本电子书,罗列如下,在此一并对谢益辉、李东风等表示感谢。

  1. 谢益辉, bookdown 中文范例[1]
  2. 谢益辉, A bookdown example for Chapman & Hall books[2]
  3. bookdown-chapterbib[3]
  4. 谢益辉, bookdown: Authoring Books and Technical Documents with R Markdown[4], 2021-03-15.
  5. 李东风,R 语言教程,第 23 章:用 bookdown 制作图书[5], 2020-12-28.
  6. Yihui Xie, J. J. Allaire, Garrett Grolemund, R Markdown: The Definitive Guide[6], 2020-12-14.

本文框架

由于内容较多,我们将通过三次推文进行发布,尽情期待。当然文末给出了原文链接,你可以直接学习。

本文框架

第 1 章 引言

这是第1[7]章的内容,回顾中国图书发展的历史及最新趋势. (R Core Team, 2020[8]; Xie, 2015a[9]),

1.1 中国图书出版的变化

中国的图书出版经历一些折腾,方正系统一度非常流行,但现在看来是非常失败的,主要是它在解决公式排版的同时没有解决便利性,其本质上想实现在其自创的中文系统中将 TEXTEX 命令做一个映射以实现数学公式排版,同时完成格式的定制。

中国学术界也经历了一些折腾,如中科院张林波研究员等开发的CCT系统和华东师范大学肖刚与陈志杰等老师开发的天元系统,它们是 TEXTEX 系统汉化版,较好地解决了汉字生成与调用,但因没有考虑普适性或可拓展性而像方正系统一样随着CJK的逐渐成熟而逐渐被抛弃,均退出了历史舞台。而同期中科院吴凌云博士等在普及 TEXTEX 的同时开发的 TEXTEX 中文套餐 CTEX 相当成功,主要是针对汉字排版的ctex宏包,并对三个主流的文档类book, article, report进行了定制,推出了相应的中文文档类ctexbook, ctexart, ctexrep, 由此避免了传统的基于CJK宏包需要的大幅定制,同时保证了与原有 TEX 系统的兼容性。这样我们始终可以使用跨平台的TeXLiVe进行排版或各类模板的开发,例如各个出版社的图书模板、各个期刊的模板、各高校的硕士和博士毕业论文模板等。

TEX 的出现1[10],而且始终屹立不倒的原因是什么?第一个原因是它解决了一个Word之类文字编辑系统的痛点,即从所见所得(WYSIWYG, What you see is what you get)到所想所得(WYTIWYG), 即通过一些 TEX 命令集构成一个完整的编程语言,由它完成一个封闭的体系,具有类似C语言一样非常强大的开发功能,由此形成了后来的latex, miktex, latex2.09, luatex, xetex等 TEXTEX 编译引擎,它们在充分利用电脑系统资源的同时实现高质量输出需要的精度。

TEXTEX 屹立不倒的另一个原因是浮动对象的处理,即包括公式,表格、图形、页码、章节、文献、定理等的标签化与引用,实现文档内部的自由跳转,结合Acrobat Reader这样强大的pdf阅读器的支持,使得读者的阅读体验得到大幅改善,并为图书的电子化奠定了基础。

随着数据科学这一新兴学科的出现,开源的RPython (还有正在逐步流行的Julia)编程语言越来越强大。为了增加这类图书的可读性,需要将代码较完整地呈现在读者面前,并且要求代码的即时可复现能力,即数据的变化,其分析的结果(包括图形和表格)也随之发生变化。这就是现在逐步流行的文学化编程(literate programming), 它实现上最早也是 TEXTEX 的鼻祖 Knuth 提出的, 后来被谢益辉得到重视并广泛推广,并通过Rstudio传递给R的用户。我们姑且把这种将写作与数据分析相结合的统计分析称为文学化统计编程(literate statistical programming), 在为数据科学爱好者带来便利的同时也通过Bookdown为图书的写作和电子化带来了极大的好处,越来越多的网页版电子书出现在(https://bookdown.org/)和(https://github.com/)等网站上。

现在写书选择什么类型的模板,下面我们来作进一步的探索与比较。

1.2 统计类图书的核心要素

统计类图书的排版除普通图书的页面及文字风格等静态元素外,核心要素体现在浮动的对象上,使得图书的阅读体验更好地发挥出来,即在不同页面之间快速切换、跟踪、搜索,必要的RPython代码以语法高亮方式显示。

  1. 章节标题是浮动的,最主要用于书签的生成;
  2. 公式是浮动的,这是数学、统计等理科书的特点,公式引用必不可少;
  3. 图形是浮动的,统计图形作为可视工具,在说明数据或展示分析结果时经常会引用相应的图形;
  4. 表格是浮动的,通常是原始数据或统计分析的结果以表格形式展示出来,它们可能被多次在不同的章节中引用;
  5. 定理是浮动的, 这里定理是指与之相关的一大类,包括常用的定理、引理、推论、命题、例子等,它们在文中也会被反复引用;
  6. 文本可以设置浮动标签后被引用,最为常见的是图形与表格的题图(caption)通过文本方式来引用;
  7. 文献是浮动的,这在是谈及前人的已有工作、成果比较或进行综述时经常要引用大量已经发表的论文、图书、会议报告等.

TEXTEX 有一套成熟的浮动对象的排版方式,通过给浮动对象打标签(label),然后引用(ref), Bookdown思路一样,但比 TEXTEX 的处理稍复杂些(可能因不习惯引起)。我们在后面章节中分别举例说明。

1.3 统计数据分析类图书模板的选择

统计数据分析类图书既有理论或原理的讲解,又会有一些案例分析,包括这些案例分析实现的代码。我们可以考虑的模板主要有三种类型。

1.3.1 基于纯 TEXTEX 模板

全世界 90%的书是由 TEX 排版的,包括硕士和博士毕业论文模板,这要感谢鼻祖 Knuth!开源成就了 TEX!

如果仅仅是统计理论方面的书集,这显然是最好的选择,因为高质量公式的排版离不开 TEXTEX. 基于 TEXTEX 的排版存在三个明显的缺陷或不足:

  1. 大量的 TEXTEX 命令需要记忆;
  2. 对于代码的排版非常不便,特别是RPython代码执行后的输出,尤其是图形与表格;
  3. 代码以listing等包来呈现, 无法实时呈现代码运行的结果,不符合文学化编程的要求.

1.3.2 Rmarkdown 与 TEXTEX 的结合

数据科学时代更注重文学化统计编程,代码伴随是这类图书的特点,自 Springer 出版R系列统计图书后,这种风格成为新趋势,大大方便了数据科学爱好者“便学习便练习”的学习方式。

针对代码伴随,早期对这类图书有二个解决方案:

  1. Sweave/knitr + R

本质上它是在 TEXTEX 嵌入R代码块,并由R在后台运行后将结果也嵌入到 TEXTEX 中,再由 TEXTEX 的编译引擎生成pdf。这个方案的基本沿用 TEXTEX 的方式,它仅解决了上面提到的第二个问题。在数据科学时代,报告的快速生成成为新的要求,效率优先!随着knitr的出现Sweave退出舞台.

  1. Rmarkdown + Mathjax/TEXTEX

Markdown作为一种轻量级的标记语言成为网页作为文字主要载体的互联网时代首先的写作工作,但它显然不适合数学与统计类论文或图书的撰写,但knitrpandoc的出现使不同风格的内容整合与转换成为可能,而不同风格的内容各有善长的工具实现,作为统计类专业论文或图书类文档主要的内容有:

  1. 文字, 由 markdown 完成
  2. 公式,由 TEXTEX 完成
  3. 代码,由R (或 Python) 完成

要说明的是,在网页端,TEXTEX 的实现可由Mathjax来完或渲染(转化或生成标准的公式),见第4[11]章说明。

随着Rstudio的越来越成熟与强大(得益于许多优秀包的出现,如knitr, kableExtra), Rstudio不仅是一个很好的代码编辑器(Eidtor), 也是一个非常好的集成开发环境(IDE),同时正在成为一个非常优秀的论文、幻灯片及图书等撰写与出版系统(PUB)。后者的基本流程是

  1. rmd文件通过knitr完成初步集成
  2. pandoc完成由rmdmd的转化与融合
  3. pandoc完成由md转化为 TEXTEX, 并由laTeX编译生成pdf (形式多样!)
  4. 或由pandocmd转化为html, 其中的数学公式由Mathjax完成渲染.

1.3.3 RmarkdownBookdown过渡

在科技高度发达的互联系时代,读者使用的媒介基本有三类:较为专业的电脑,较为轻便的平板(电脑)和全功能的智能手机。前者以pdf类图书为主呈现给读者,同时可以完成标注等工作;后者以文字型的电子图书为主,消磨时间为主;而平板的使用者逐渐成为电子类图书的新势力,包括pdfepub之类的电子书。 Bookdown注重不同类型读者的媒体使用的差异,并很好地实现统一编写与差异化输出。目前Bookdown可以生成三类图书:

  1. gitbook,可自由出版在git pages
  2. epub, 发表到大量的电子图书平台上
  3. pdf, 正规的图书出版公司以电子或纸质形式出版

推荐: 可以保存以下照片,在 b 站扫该二维码,或者 b 站搜索【庄闪闪】观看 Rmarkdown 系列的视频教程。Rmarkdown 视频新增两节视频(写轮眼幻灯片制作)需要视频内的文档,可在公众号回复【rmarkdown

R沟通|Rmarkdown教程(4)

R沟通|Rmarkdown教程(3)

R沟通|Rmarkdown教程(2)

R沟通|Rmarkdown教程(1)

本文分享自微信公众号 - 庄闪闪的R语言手册(Zss_R4ds),作者:汤银才

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2021-08-04

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • R沟通|Bookdown中文书稿写作手册(上)

    今年接了 5 本与贝叶斯近似计算包INLA相关的翻译书,将由高等教育出版社出版。在准备翻译的时候,我静下来思考了一下二个问题。一是互联网时代在兼顾图书质量的同时...

    王诗翔呀
  • R沟通|Bookdown中文书稿写作手册(中)

    这是第 2 章的内容,概要性地讲解基于bookdown拓展包进行图书排版的整体思路与实现方式.

    庄闪闪
  • R沟通|Bookdown中文书稿写作手册(下)

    本教程来自华东师范大学汤银才教授,本人已授权。为了获得更好的阅读体验,可在文末直达原文网站。前两期内容见:R沟通|Bookdown中文书稿写作手册(中);R沟通...

    庄闪闪
  • 《毕业论文新手入坑手册》分享

    我把之前公众号和专栏发布的关于毕业论文写作全过程(包含选题、文献阅读、文献分析、论文写作和答辩注意事项等)内容,集结成了一本书,并且在线发布了。

    王树义
  • R沟通|用bookdown制作图书(1)

    R的bookdown扩展包是继knitr和rmarkdown扩展包之后, markdown格式的另一种扩展, 使得Rmd格式可以支持公式、定理、图表自动编号和引...

    庄闪闪
  • 「Workshop」第十九期:Markdown与RMarkdown最佳入口

    目前对于两者的介绍网上一大堆,而且本身语法简单,上手很快,这里不会过多介绍。**本文的核心在于让读者了解这些工具以及根据需要去学习和利用它们。**这里主要为初学...

    王诗翔呀
  • 翻译|记住一些常用的R包

    原文:Some R Packages to Keep In Mind(原文见文末链接)

    庄闪闪
  • 别人的电子书,你的电子书,都在bookdown

    bookdown是著名R包作者谢益辉开发的,支持采用Rmarkdown (R代码可以运行)或普通markdown编写文档,然后编译成HTML, WORD, PD...

    生信宝典
  • 干掉 LaTeX !用BookDown写本书

    bookdown是著名R包作者谢益辉开发的,支持采用Rmarkdown (R代码可以运行)或普通markdown编写文档,然后编译成HTML, WORD, PD...

    统计学家
  • 原来Rstudio还可以这么使用,又方便了一些

    在别人的电子书,你的电子书,都在bookdown中我们讲述了bookdown用于自动化文档生成。里面涉及到一个文件Rproj用于项目管理。

    生信宝典
  • Bookdown文档生成教程

    bookdown是一款及其方便的编写技术文档或教材的工具,语法简洁,数据处理灵活。支持Rmarkdown或普通markdown通过pandoc软件转换为HTML...

    生信宝典
  • R分享|安利两个“云”办公的网站!

    最近电脑电池坏了,拿到店里维修了,自己也没有备用机。要不是有 ddl,小编就会以此为借口放个小长假 ?。玩笑可以开,但是活还是要干的。

    庄闪闪
  • 构建可重复的单细胞数据分析流程

    科学研究的过程可重复性可以说是一件不言而喻的事情:如果你提出一观点或发现一个现象,在别人那里完全重复不出来,谁知道是不是臆想呢?但是有时候重复人家的研究结论又会...

    生信技能树jimmy
  • 学习R语言,一篇文章让你从懵圈到入门

    PivotalR:用于读取Pivitol(Greenplum)和HAWQ数据库中的数据

    华章科技
  • R沟通|提升xaringan幻灯片的b格

    前面我们已经对xaringan进行详细的入门介绍:R沟通|用xaringan包制作幻灯片,并且做了一个小小的拓展:R沟通|设置xaringan主题。今天介绍下另...

    庄闪闪
  • 程序员副业那些事:聊聊出书和录视频

    或许有人会说,如果把本职工作做到极致,那么就不需要副业了,这话也有道理,因为干活的方式是相通的,如果本职都是得过且过地敷衍,那么就别再提副业了。

    用户1153489
  • R语言学习 - 入门环境Rstudio

    R语言是比较常用的统计分析和绘图语言,拥有强大的统计库、绘图库和生信分析的Bioconductor库,是学习生物信息分析的必备语言之一。 Rstudio是编辑、...

    生信宝典
  • 良心教程 | 如何在Typora中设置免费的图床

    https://github.com/Molunerfinn/PicGo/releases

    邓飞
  • 我的第一本英文技术书

    在这本书的写作过程中,我个人最大的收获应该是:当你制定了一个目标,不论这个目标开始开起来有多么的不切实际,一旦你开始细化这个目标并逐步实施,你就已经离这个目标不...

    ThoughtWorks

扫码关注云+社区

领取腾讯云代金券