Elegant Bookdown Template
优雅的 Bookdown 书籍模版
2021-05-09
第 1 章 欢迎
A Markdown-formatted document should be publishable as-is, as plain text, without looking like it’s been marked up with tags or formatting instructions.
— John Gruber
这是一份 R Markodwn 文档。 Markdown 提供一种简洁的格式语法,用来生成 HTML、PDF 和 MS Word 文档。
当你点击 Knit 按钮时,就会生成一份包含正文和代码执行结果的文档。你可以像这样嵌入 R 代码块:
summary(cars)
## speed dist
## Min. : 4.0 Min. : 2.00
## 1st Qu.:12.0 1st Qu.: 26.00
## Median :15.0 Median : 36.00
## Mean :15.4 Mean : 42.98
## 3rd Qu.:19.0 3rd Qu.: 56.00
## Max. :25.0 Max. :120.00
1.1 如何参与改进
改进原则
- 不要引入新的 LaTeX 宏包,在我看来,上游 ElegantBook 使用的宏包已经足够多了,详见 https://d.cosx.org/d/421349-latex/2
- 书籍风格尽可能简洁,本人信奉 simple is better
- 不要自定义 Pandoc’s LaTeX 模版,Pandoc 内建的模版已经功能很全面了,下游的 R Markdown 生态已经甩掉了自己造的大量 LaTeX 模版。为保持与下游的完美兼容,也为了更加轻量地输出多种文档格式,也尽可能多地保持多种输出格式的风格一致。
- 本书输出格式目标是 HTML/PDF/EPUB,可以推动上游优化 Pandoc 模版或者 ElegantBook 模版
1.2 运行环境
::session_info(c("rmarkdown", "bookdown", "knitr"), dependencies = FALSE) xfun
## R version 4.0.5 (2021-03-31)
## Platform: x86_64-apple-darwin20.4.0 (64-bit)
## Running under: macOS Big Sur 11.3
##
## Locale: en_US.UTF-8 / en_US.UTF-8 / en_US.UTF-8 / C / en_US.UTF-8 / en_US.UTF-8
##
## Package version:
## bookdown_0.22 knitr_1.33.2 rmarkdown_2.8
##
## Pandoc version: 2.13
文武线
ruler()
----+----1----+----2----+----3----+----4----+----5----+----6----+----
123456789012345678901234567890123456789012345678901234567890123456789
1.3 Pandoc
Pandoc 自诞生以来已历 15 个春秋,Github 星级 18.5k,而日常使用的 Hive 不过区区 3k。Pandoc 现已被各大 Linux 发行版(如 CentOS/Ubuntu 等)收录。下面给出一个使用 Pandoc 的简单例子
echo "hello, world!" > note.md
pandoc note.md -s -o note.tex # markdown 文本转化为 tex 文本
pandoc note.md -o note.pdf # markdown 文本转化为 pdf 文档
pandoc note.md -o note.html # markdown 文本转化为 html 文档
Pandoc 支持数十种文档输出格式,更多命令参数说明见 https://pandoc.org/MANUAL.html。可不可以不要 R,也不要 R Markdown 呢?当然可以,详见 https://github.com/annProg/PanBook,基于 Pandoc’s Markdown 实现一次写作,多样输出!
1.4 已有 Block
1.5 数学公式
数学公式加粗可能是最常见的需求之一, elegantbook 宏包提供的文类 elegantbook.cls
已经调用了 bm 宏包。1有了 bm 宏包,就可以使用 bm 宏包提供的 \bm{}
命令,而不需要调 \boldsymbol{}
加粗希腊字母,如将 \(\alpha\) (正常)加粗为 \(\bm{\alpha}\)(粗体)。为了在 HTML 网页中显示加粗效果,则还不够,默认情况下, MathJax 是不认识 \bm{}
命令的,所以需要在 header.html
自定义 \bm{}
命令:
<script type="text/x-mathjax-config">
.Hub.Config({
MathJaxTeX: {
Macros: {
bm: ["{\\boldsymbol #1}",1],
}
};
})</script>
进一步地,使用常用的 3 个取消符号 \(\bcancel{///}\) 需要在 header.html
添加 JS 库 cancel.js
,
<script type="text/x-mathjax-config">
.Hub.Config({
MathJaxTeX: {
Macros: {
bm: ["{\\boldsymbol #1}",1],
,
}extensions: ["cancel.js"]
};
})</script>
并在 preamble.tex 文件中添加一行代码加载 cancel 宏包
\usepackage[makeroom]{cancel}
1.6 自定义 block
基于 Pandoc 自定义 block 是一件很有意思的事情,目前不想让模版过于复杂,仅给出几个最常用的例子。如何自定义可以去看谢益辉的新书 https://bookdown.org/yihui/rmarkdown-cookbook/custom-blocks.html。
要做的还有很多
这是警告
这是提示
这是注意
普通说明