前面一文記錄:篩選寫書工具的艱苦經(jīng)歷簡要記錄的自己嘗試幾種工具的艱苦努力,最后的結(jié)論是"Word + Calibre" 制造常用的電子書(DOCX, PDF, EPUB偎血,MOBI和AZW3等)還是夠用的诸衔。
如果想要制作 Web 書盯漂,甚至是需要算法的動態(tài)展示?自己制作本地的Jupyter Book簡單介紹了如何使用 Jupyter Book create
和 build
生成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)的源吧椅野。
在 RStudio 中創(chuàng)建 Bookdown project 很簡單
只是編譯(Build All)的時候,有些包要依賴 – rmarkdown
, caTools
等籍胯。而這些包還依賴 R 的版本
我最開始安裝的是 R3.5.2竟闪,在Build All
時就出現(xiàn)需要 caTools 1.14
。
查了下杖狼,caTools 有要求R的版本高 – 只好重新安裝最新的 R 3.6.3
須重啟 RStudio (會自動換成R 3.6.3環(huán)境) – 安裝那些包即可
安裝了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’
按照提示,在 RStudio 的 Console 里安裝相應的包即可
ounter(lineounter(lineounter(lineounter(lineinstall.packages('caTools')install.packages('bitops')install.packages('rprojroot')install.packages('bookdown')
再次build All 就可以了
生成了 HTML, PDF 和 EPUB蝶涩。效果還是不錯的理朋。
對照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].
在Web 版上也能顯示嗽上。
不過,Bookdown 生成的HTML確實不能交互了 – Jupyter Book 則借助 Jupyter Notebook 而能交互
Build 一本實際的R BookDown書的經(jīng)歷 - 麻煩程度絕對不比 寫書低
想榜樣學習熄攘,應該算是捷徑
吧兽愤。就想著找一個 R BookDown 寫的書的源代碼,然后自己Build 一下:既能通過閱讀源代碼而學習如何使用R BookDown 編纂實際的書的技巧;又能真實體驗一下使用R Bookdown的麻煩程度浅萧。還真能找到這樣的書逐沙。
R Bookdown的書站:https://bookdown.org/
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 版本酱吝。
Build 此書 - 痛苦也就開始了!
類似前面的敘述土思,在RStudio 中Build All
此書。遇到了很多的問題忆嗜,到最后也沒有成功己儒!痛苦不堪!
缺包問題很多捆毫,不過解決也簡單 - install.packages(xxx)
即可
在右上的Build 標簽頁中能看出是缺少dplyr
闪湾,那么,在左下的Console 中install.packages('dplyr')
即可:當然绩卤,在國內(nèi)的話還是修改為國內(nèi)源為宜途样。
在 Build 消息框里面的漢字顯示有問題,不過濒憋,可以定位到相應的代碼處何暇,點擊紅色方框中的小綠三角,就運行了那個代碼凛驮。在Console 中就顯示了錯誤信息的中文
還有一個 typo - “var1able”:應該是“variable”
過程中有一次生成了 HTML頁面 – 雖然是分在兩個目錄(還沒有整個合在一起)裆站,不過,已經(jīng)可以在HTML中正確嵌入圖片了黔夭。不過宏胯,整個生成過程不成功的(前面bookdown 例子,生成了 PDF, HTML 和EPUB的)本姥。<u>最終肩袍,也不清楚為什么不行,為什么不成功</u>
將 HTML頁面和那些包含圖片的目錄手工合在一起婚惫,然后查看HTML – 正確嵌入了 圖片氛赐。
即便是安裝了那些包,以及改了typo辰妙,還是不能生產(chǎn)PDF鹰祸,也并沒有 EPUB (應該是EPUB的build 在 PDF之后,所以密浑,PDF不過蛙婴,后面的 EPUB也沒有了) – <u>說是 GHC 的問題</u>
開始以為是 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中添加了路徑餐济,也沒有用
最后耘擂,確定還真是 沒有 GHC 8.6.5 程序的問題!
要重新啟動 RStudio絮姆,GHC才有效
可還是不行 – 導出的 有問題醉冤!
查看 _main.log文件:不明所以
甚至想試試 TexMaker 使用XeLaTeX調(diào)試一下 _main.tex,更是一頭霧水篙悯!
甚至試了 更改 RStudio 中的 LaTeX 配置蚁阳,沒有用的
雖然沒順利結(jié)束,其實生成了 HTML 和 PDF 了 – EPUB 因為在PDF之后就被擋住了
HTML
PDF看上去也還不錯鸽照,不過螺捐。。矮燎。排版問題還是很多定血!圖的大小,很多warning
算是總結(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吧爽哎。