yufree / lifeguide

自然生活的数学原理

Home Page:https://yufree.github.io/lifeguide/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

请教关于 lifeguide.pdf 的生成脚本

randomwangran opened this issue · comments

您好,于淼:

我是在您的博客上了解到这个仓库的。我非常喜欢这种记录生活的文字,特别是
这种提供了很多实用信息的文字,非常感谢作者。

提这个 Issue 的目的是想请教下作者,关于 lifeguide.pdf 的生成脚本。从
pdf 内容的纯文本后缀名 .Rmd应该是RStudio所使用的一种标记文本。

简单了解了一下 knitr,再结合这个仓库的组织构成,我觉得应该是在
RStudio 中使用 knitr 包来生成 lifeguide.pdf

我目前的打算是:

  • 安装 RStudio
  • 安装 knitr
  • 下载这个仓库
  • knitr 生成 pdf

之后可能的一些研究

  • Rmd 和普通 md 的区别
  • GitHub Action 自动化生成

另外一点是,用 usepackage{ctex}直接来处理 md 文本,这是我一直想去
实现的东西。但是我知道,现成的 make 文件不是特别好找。

非常感谢分享这些知识。

Ran

这位朋友可能不熟悉 Rmarkdown,简单说就是可以执行 R 代码的 markdown 文档,如果不需要文档生成中运行 R,其实就是最简单的 markdown 电子书。

这本电子书是使用 R 包 bookdown 来作为框架的,bookdown 的原型就是 gitbook 项目加上对 R 语言的支持,这个包,包括我个人网站所用的 blogdown 包还有你提到的 knitr 包,都是 R 语言大牛谢益辉开发的项目。

knitr 包是比 bookdown 更底层的包,主要用来把纯文本的 rmd 文档运行 R 代码后编译成 md 文档,至于最后转成什么格式,其实大都是 RStudio 里内置的文档格式转化工具 pandoc 来做的。bookdown 项目是特意为制作支持 R 语言代码运行的电子书而设计的,可以输出 html、pdf、epub、mobi等格式的电子书。如果你不写带有 R 语言的部分(例如这本书),可以套用 bookdown 内置的框架用 markdown 标记语言来写书,本质上类似 gitbook。至于你提到的步骤,把 knitr 改成 bookdown 就更贴切,因为 bookdown 底层调用 knitr,所以事实上两个包都会被安装。

至于你说的自动发布,其实在 bookdown 的在线电子书里有专门的一章讲自动发布方法,我这本书用是 github pages ,我本地更新文本文档后调用 bookdown 的 render_book() 函数更新输出的网页与pdf文档,然后推送到 github pages 的 docs 文件夹就可以。如果你打算用持续集成的方式,可以用 Travis 来自动远程更新输出推送到 github pages,这个前面链接里有详细方法。

至于你说的 ctex 包处理md文档,其实在 rticles 包里已经解决了,不过那个包的用途是用 markdown 写学术论文,这种转换核心就是 md 文档与 tex 文档的转换,底层工具就是我前面说的 pandoc

已经下载了 R 以及 RStudio,并成功编译出修改后的 bookdown-minimal.pdf

遇到一点小问题:

Output created: docs/index.html
Error in loadNamespace(name) : there is no package called 'tufte'
Calls: <Anonymous> ... loadNamespace -> withRestarts -> withOneRestart -> doWithOneRestart
Execution halted

Exited with status 1.

RStudio 安装 tufte 之后还是存在问题。

查手册后,发现可能是 LaTeX 编译器的问题,目前我用的 MiKTeX手册建议TinyTeX

不过,方向比较明朗了。

非常感谢这些建议。