markdown

使用R BookDown 来写书 - PDF, EPUB和Web

2020-03-29  本文已影响0人  喜欢苹果的梨

前面一文记录:筛选写书工具的艰苦经历简要记录的自己尝试几种工具的艰苦努力,最后的结论是"Word + Calibre" 制造常用的电子书(DOCX, PDF, EPUB,MOBI和AZW3等)还是够用的。

如果想要制作 Web 书,甚至是需要算法的动态展示?自己制作本地的Jupyter Book简单介绍了如何使用 Jupyter Book createbuild 生成Web 书。在那里也提到了我感兴趣的支持数据分析不错的工具 - R 和 RStudio,围绕R也有创建Web 书的技术。

R BookDown 编纂Web 书

自己制作本地的Jupyter Book中展示了几本谢益辉(YiHui Xie)[GitHub,Web]编纂的围绕R制作 PDF, EPUB和Web书的几本书,想着自己也有计划完成基于R的数据分析册子,所以,就搜罗资料实践了下如何基于 R BookDown 生成书的技巧。

R Studio 编纂 BookDown 书就够了 (不依赖*nix 操作系统环境)

意思是,虽然R语言包是RStudio 的底层技术,不过,有了 RStudio,其实就是够了:不管是使用R来编程,还是使用BookDown 来写R语言交互的书。

之所以点出来这一点,是因为我在R Project 的代码里加载了所需要的包,但是,R语言包和RStudio 的R语言包二者是相互独立的。

一些依赖的包还是换成国内源吧

一如很多开源软件的安装,访问国外是很耗时的,还是换成国内的源吧。

image image

在 RStudio 中创建 Bookdown project 很简单

image image

只是编译(Build All)的时候,有些包要依赖 – rmarkdown, caTools等。而这些包还依赖 R 的版本

我最开始安装的是 R3.5.2,在Build All 时就出现需要 caTools 1.14

image

查了下,caTools 有要求R的版本高 – 只好重新安装最新的 R 3.6.3

须重启 RStudio (会自动换成R 3.6.3环境) – 安装那些包即可

image

安装了rmarkdown后,就少了很多包

ounter(lineounter(line> install.packages('rmarkdown')also installing the dependencies ‘highr’, ‘markdown’, ‘digest’, ‘Rcpp’, ‘rlang’, ‘glue’, ‘magrittr’, ‘stringi’, ‘knitr’, ‘yaml’, ‘htmltools’, ‘evaluate’, ‘base64enc’, ‘jsonlite’, ‘mime’, ‘tinytex’, ‘xfun’, ‘stringr’
image

按照提示,在 RStudio 的 Console 里安装相应的包即可

ounter(lineounter(lineounter(lineounter(lineinstall.packages('caTools')install.packages('bitops')install.packages('rprojroot')install.packages('bookdown')
image

再次build All 就可以了

image image

生成了 HTML, PDF 和 EPUB。效果还是不错的。

image image image

对照Rmd文本和生成的页面,看出,页面中有Rmd中嵌入的R代码的结果图

01-intro.Rmd

ounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(line# Introduction {#intro}You can label chapter and section titles using `{#label}` after them, e.g., we can reference Chapter \@ref(intro). If you do not manually label them, there will be automatic labels anyway, e.g., Chapter \@ref(methods).Figures and tables with captions will be placed in `figure` and `table` environments, respectively.​```{r nice-fig, fig.cap='Here is a nice figure!', out.width='80%', fig.asp=.75, fig.align='center'}par(mar = c(4, 4, .1, .1))plot(pressure, type = 'b', pch = 19)​```Reference a figure by its code chunk label with the `fig:` prefix, e.g., see Figure \@ref(fig:nice-fig). Similarly, you can reference tables generated from `knitr::kable()`, e.g., see Table \@ref(tab:nice-tab).​```{r nice-tab, tidy=FALSE}knitr::kable(  head(iris, 20), caption = 'Here is a nice table!',  booktabs = TRUE)​```You can write citations, too. For example, we are using the **bookdown** package [@R-bookdown] in this sample book, which was built on top of R Markdown and **knitr** [@xie2015].
image

在Web 版上也能显示。

image

不过,Bookdown 生成的HTML确实不能交互了 – Jupyter Book 则借助 Jupyter Notebook 而能交互

Build 一本实际的R BookDown书的经历 - 麻烦程度绝对不比 写书低

想榜样学习,应该算是捷径吧。就想着找一个 R BookDown 写的书的源代码,然后自己Build 一下:既能通过阅读源代码而学习如何使用R BookDown 编纂实际的书的技巧;又能真实体验一下使用R Bookdown的麻烦程度。还真能找到这样的书。

R Bookdown的书站:https://bookdown.org/

image image

R For Data Science 书 - 感谢Garrett Grolemund, Hadley Wickham

在 Google 中输入 "R For Data Science Github",幸运地找到这本书的源码。

https://github.com/hadley/r4ds

https://r4ds.had.co.nz/是此书的Web 版本。

image

Build 此书 - 痛苦也就开始了!

类似前面的叙述,在RStudio 中Build All 此书。遇到了很多的问题,到最后也没有成功!痛苦不堪!

缺包问题很多,不过解决也简单 - install.packages(xxx)即可

image

在右上的Build 标签页中能看出是缺少dplyr,那么,在左下的Console 中install.packages('dplyr')即可:当然,在国内的话还是修改为国内源为宜

在 Build 消息框里面的汉字显示有问题,不过,可以定位到相应的代码处,点击红色方框中的小绿三角,就运行了那个代码。在Console 中就显示了错误信息的中文

image

还有一个 typo - “var1able”:应该是“variable”

image

过程中有一次生成了 HTML页面 – 虽然是分在两个目录(还没有整个合在一起),不过,已经可以在HTML中正确嵌入图片了。不过,整个生成过程不成功的(前面bookdown 例子,生成了 PDF, HTML 和EPUB的)。<u>最终,也不清楚为什么不行,为什么不成功</u>

image

将 HTML页面和那些包含图片的目录手工合在一起,然后查看HTML – 正确嵌入了 图片。

image

即便是安装了那些包,以及改了typo,还是不能生产PDF,也并没有 EPUB (应该是EPUB的build 在 PDF之后,所以,PDF不过,后面的 EPUB也没有了) – <u>说是 GHC 的问题</u>

image

开始以为是 pandoc.exe 的问题,将错误信息在Google 搜索,没有效果

下一个错误我开始以为是mingW32 的问题,找了很多mingW32 的工具包(RTools, 专门的mingw32, R和RStudio 自带的 mingW32等等),都没有用

还按照 GHC信息找到关联的 Haskell,安装并PATH中添加了路径,也没有用

image image

最后,确定还真是 没有 GHC 8.6.5 程序的问题!

image image image image image image

要重新启动 RStudio,GHC才有效

image image

可还是不行 – 导出的 有问题!

image

查看 _main.log文件:不明所以

甚至想试试 TexMaker 使用XeLaTeX调试一下 _main.tex,更是一头雾水!

image

甚至试了 更改 RStudio 中的 LaTeX 配置,没有用的

image

虽然没顺利结束,其实生成了 HTML 和 PDF 了 – EPUB 因为在PDF之后就被挡住了

HTML

image image

PDF

image image image

PDF看上去也还不错,不过。。。排版问题还是很多!图的大小,很多warning

image image image

算是总结吧

到目前为止,写书和论文的工具真是用了很多了,有如下的总结:

写书 - PDF, EPUB, AZW3, MOBI

我觉得还是 Word + Calibre 就可以了。

不足的就是不能生成算法交互的Web。

写书 - 算法交互的Web书

觉得 Jupyter NoteBook 就可以了:能够支持很多语言。要做的就是讲对应语言的Kernel 加载进 Jupyter Notebook。

论文 - Word + LaTeX

想要算法交互展示?那还是使用 Jupyter NoteBook吧。

其他

Jupyter 也支持 R 语言(另文)

R PageDown就算了吧(想试试的自己去试试吧)

再次推荐去看看谢益辉(YiHui XIE)的博客吧

image
上一篇 下一篇

猜你喜欢

热点阅读