使用R BookDown 來寫書 - PDF, EPUB和Web版用爪。還是算了吧原押!

前面一文記錄:篩選寫書工具的艱苦經(jīng)歷簡要記錄的自己嘗試幾種工具的艱苦努力,最后的結(jié)論是"Word + Calibre" 制造常用的電子書(DOCX, PDF, EPUB偎血,MOBI和AZW3等)還是夠用的诸衔。

如果想要制作 Web 書盯漂,甚至是需要算法的動態(tài)展示?自己制作本地的Jupyter Book簡單介紹了如何使用 Jupyter Book createbuild 生成Web 書笨农。在那里也提到了我感興趣的支持數(shù)據(jù)分析不錯的工具 - R 和 RStudio就缆,圍繞R也有創(chuàng)建Web 書的技術(shù)。

R BookDown 編纂Web 書

自己制作本地的Jupyter Book中展示了幾本謝益輝(YiHui Xie)[GitHub,Web]編纂的圍繞R制作 PDF, EPUB和Web書的幾本書谒亦,想著自己也有計劃完成基于R的數(shù)據(jù)分析冊子竭宰,所以,就搜羅資料實踐了下如何基于 R BookDown 生成書的技巧份招。

R Studio 編纂 BookDown 書就夠了 (不依賴*nix 操作系統(tǒng)環(huán)境)

意思是切揭,雖然R語言包是RStudio 的底層技術(shù),不過锁摔,有了 RStudio廓旬,其實就是夠了:不管是使用R來編程,還是使用BookDown 來寫R語言交互的書鄙漏。

之所以點出來這一點嗤谚,是因為我在R Project 的代碼里加載了所需要的包,但是怔蚌,R語言包和RStudio 的R語言包二者是相互獨立的巩步。

一些依賴的包還是換成國內(nèi)源吧

一如很多開源軟件的安裝,訪問國外是很耗時的桦踊,還是換成國內(nèi)的源吧椅野。

image
image

在 RStudio 中創(chuàng)建 Bookdown project 很簡單

image
image

只是編譯(Build All)的時候,有些包要依賴 – rmarkdown, caTools等籍胯。而這些包還依賴 R 的版本

我最開始安裝的是 R3.5.2竟闪,在Build All 時就出現(xiàn)需要 caTools 1.14

image

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

須重啟 RStudio (會自動換成R 3.6.3環(huán)境) – 安裝那些包即可

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代碼的結(jié)果圖

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書的經(jīng)歷 - 麻煩程度絕對不比 寫書低

想榜樣學習熄攘,應該算是捷徑吧兽愤。就想著找一個 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')即可:當然绩卤,在國內(nèi)的話還是修改為國內(nèi)源為宜途样。

在 Build 消息框里面的漢字顯示有問題,不過濒憋,可以定位到相應的代碼處何暇,點擊紅色方框中的小綠三角,就運行了那個代碼凛驮。在Console 中就顯示了錯誤信息的中文

image

還有一個 typo - “var1able”:應該是“variable”

image

過程中有一次生成了 HTML頁面 – 雖然是分在兩個目錄(還沒有整個合在一起)裆站,不過,已經(jīng)可以在HTML中正確嵌入圖片了黔夭。不過宏胯,整個生成過程不成功的(前面bookdown 例子,生成了 PDF, HTML 和EPUB的)本姥。<u>最終肩袍,也不清楚為什么不行,為什么不成功</u>

image

將 HTML頁面和那些包含圖片的目錄手工合在一起婚惫,然后查看HTML – 正確嵌入了 圖片氛赐。

image

即便是安裝了那些包,以及改了typo辰妙,還是不能生產(chǎn)PDF鹰祸,也并沒有 EPUB (應該是EPUB的build 在 PDF之后,所以密浑,PDF不過蛙婴,后面的 EPUB也沒有了) – <u>說是 GHC 的問題</u>

image

開始以為是 pandoc.exe 的問題,將錯誤信息在Google 搜索尔破,沒有效果

  • Pandoc.exe internal error closure type xxxx

  • GHC version 8.6.5 for x86_64_unknown_mingw32

下一個錯誤我開始以為是mingW32 的問題街图,找了很多mingW32 的工具包(RTools, 專門的mingw32, R和RStudio 自帶的 mingW32等等)浇衬,都沒有用

還按照 GHC信息找到關(guān)聯(lián)的 Haskell,安裝并PATH中添加了路徑餐济,也沒有用

image
image

最后耘擂,確定還真是 沒有 GHC 8.6.5 程序的問題!

image
image
image
image
image
image

要重新啟動 RStudio絮姆,GHC才有效

image
image

可還是不行 – 導出的 有問題醉冤!

image

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

甚至想試試 TexMaker 使用XeLaTeX調(diào)試一下 _main.tex,更是一頭霧水篙悯!

image

甚至試了 更改 RStudio 中的 LaTeX 配置蚁阳,沒有用的

image

雖然沒順利結(jié)束,其實生成了 HTML 和 PDF 了 – EPUB 因為在PDF之后就被擋住了

HTML

image
image

PDF

image
image
image

PDF看上去也還不錯鸽照,不過螺捐。。矮燎。排版問題還是很多定血!圖的大小,很多warning

image
image
image

算是總結(jié)吧

到目前為止诞外,寫書和論文的工具真是用了很多了澜沟,有如下的總結(jié):

寫書 - PDF, EPUB, AZW3, MOBI

我覺得還是 Word + Calibre 就可以了。

  • 活用 Word 的大綱模式浅乔,就能夠編纂頁數(shù)很多的書(我編纂過僅2000頁的書倔喂,沒有問題)
  • 要解決很多自動問題:圖、表和公式的自動編碼和引用靖苇,參考文獻的自動引用等(已解決席噩,另文撰述)
  • Word 本身對PDF 的支持就很不錯。
  • 使用Calibre 導入 Word 文檔贤壁,經(jīng)過一些簡單的設置就能夠?qū)С龈袷讲诲e的EPUB悼枢,AZW3, MOBI等(參看)

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

寫書 - 算法交互的Web書

覺得 Jupyter NoteBook 就可以了:能夠支持很多語言脾拆。要做的就是講對應語言的Kernel 加載進 Jupyter Notebook馒索。

論文 - Word + LaTeX

  • 中文論文,還是使用Word 吧名船。主要的挑戰(zhàn)就是要解決圖绰上、表、公式的自動編號和引用渠驼,以及參考文獻的格式和引用蜈块。
  • 英文論文,自然是 不可。

想要算法交互展示百揭?那還是使用 Jupyter NoteBook吧爽哎。

其他

Jupyter 也支持 R 語言(另文)

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

再次推薦去看看謝益輝(YiHui XIE)的博客吧

image
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市器一,隨后出現(xiàn)的幾起案子课锌,更是在濱河造成了極大的恐慌,老刑警劉巖祈秕,帶你破解...
    沈念sama閱讀 218,941評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件渺贤,死亡現(xiàn)場離奇詭異,居然都是意外死亡请毛,警方通過查閱死者的電腦和手機癣亚,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,397評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來获印,“玉大人,你說我怎么就攤上這事街州〖娣幔” “怎么了?”我有些...
    開封第一講書人閱讀 165,345評論 0 356
  • 文/不壞的土叔 我叫張陵唆缴,是天一觀的道長鳍征。 經(jīng)常有香客問我,道長面徽,這世上最難降的妖魔是什么艳丛? 我笑而不...
    開封第一講書人閱讀 58,851評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮趟紊,結(jié)果婚禮上氮双,老公的妹妹穿的比我還像新娘。我一直安慰自己霎匈,他們只是感情好戴差,可當我...
    茶點故事閱讀 67,868評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著铛嘱,像睡著了一般暖释。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上墨吓,一...
    開封第一講書人閱讀 51,688評論 1 305
  • 那天球匕,我揣著相機與錄音,去河邊找鬼帖烘。 笑死亮曹,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播乾忱,決...
    沈念sama閱讀 40,414評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼讥珍,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了窄瘟?” 一聲冷哼從身側(cè)響起拳球,我...
    開封第一講書人閱讀 39,319評論 0 276
  • 序言:老撾萬榮一對情侶失蹤肛冶,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體勘高,經(jīng)...
    沈念sama閱讀 45,775評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,945評論 3 336
  • 正文 我和宋清朗相戀三年渤早,在試婚紗的時候發(fā)現(xiàn)自己被綠了卤材。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,096評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡竣况,死狀恐怖克婶,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情丹泉,我是刑警寧澤情萤,帶...
    沈念sama閱讀 35,789評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站摹恨,受9級特大地震影響筋岛,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜晒哄,卻給世界環(huán)境...
    茶點故事閱讀 41,437評論 3 331
  • 文/蒙蒙 一睁宰、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧寝凌,春花似錦柒傻、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,993評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至劫映,卻和暖如春违孝,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背泳赋。 一陣腳步聲響...
    開封第一講書人閱讀 33,107評論 1 271
  • 我被黑心中介騙來泰國打工雌桑, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人祖今。 一個月前我還...
    沈念sama閱讀 48,308評論 3 372
  • 正文 我出身青樓校坑,卻偏偏與公主長得像拣技,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子耍目,可洞房花燭夜當晚...
    茶點故事閱讀 45,037評論 2 355

推薦閱讀更多精彩內(nèi)容