This repository has been archived by the owner on Jan 1, 2023. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 26
/
index.Rmd
153 lines (111 loc) · 5.26 KB
/
index.Rmd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
---
title: "优雅的 bookdown 书籍模版"
author:
- 黄湘云
- 叶 飞
site: bookdown::bookdown_site
documentclass: elegantbook
bibliography:
- book.bib
colorlinks: true
link-citations: true
mathspec: true
graphics: true
lot: true
lof: true
github-repo: XiangyunHuang/ElegantBookdown
classoption:
- lang=cn
- titlestyle=hang
- chinesefont=ctexfont
description: "最初看到 elegantbook 做的书籍样式很漂亮,就想把它引入到 bookdown 中,遂定制了此模版。在此基础上,做了迁移和扩展的工作,融合了 LaTeX (精美)、Pandoc (简洁) 和 R (强大) 的特性。"
---
\mainmatter
# 欢迎 {#welcome}
> 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 代码块:
```{r cars}
summary(cars)
```
## 如何参与改进 {#pr}
改进原则
1. 不要引入新的 LaTeX 宏包,在我看来,上游 [ElegantBook](https://github.com/ElegantLaTeX/ElegantBook) 使用的宏包已经足够多了,详见 <https://d.cosx.org/d/421349-latex/2>
2. 书籍风格尽可能简洁,本人信奉 simple is better
3. 不要自定义 Pandoc's LaTeX 模版,Pandoc 内建的模版已经功能很全面了,下游的 R Markdown 生态已经甩掉了自己造的大量 LaTeX 模版。为保持与下游的完美兼容,也为了更加轻量地输出多种文档格式,也尽可能多地保持多种输出格式的风格一致。
4. 本书输出格式目标是 HTML/PDF/EPUB,可以推动上游优化 Pandoc 模版或者 [ElegantBook](https://github.com/ElegantLaTeX/ElegantBook) 模版
## 运行环境 {#session-info}
```{r}
xfun::session_info(c(
"rmarkdown", "bookdown", "knitr"
), dependencies = FALSE)
```
## Pandoc
Pandoc 自诞生以来已历 15 个春秋,Github 星级 18.5k,而日常使用的 Hive 不过区区 3k。Pandoc 现已被各大 Linux 发行版(如 CentOS/Ubuntu 等)收录。下面给出一个使用 Pandoc 的简单例子
```bash
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 实现一次写作,多样输出!
## 已有 Block {#theorem-block}
```{lemma, chf-pdf}
For any two random variables $X_1$, $X_2$, they both have the same probability distribution if and only if
$$\varphi _{X_1}(t)=\varphi _{X_2}(t)$$
```
```{theorem, chf-sum}
If $X_1$, ..., $X_n$ are independent random variables, and $a_1$, ..., $a_n$ are some constants, then the characteristic function of the linear combination $S_n=\sum_{i=1}^na_iX_i$ is
$$\varphi _{S_{n}}(t)=\prod_{i=1}^n\varphi _{X_i}(a_{i}t)=\varphi _{X_{1}}(a_{1}t)\cdots \varphi _{X_{n}}(a_{n}t)$$
```
```{proposition}
The distribution of the sum of independent Poisson random variables $X_i \sim \mathrm{Pois}(\lambda_i),\: i=1,2,\cdots,n$ is $\mathrm{Pois}(\sum_{i=1}^n\lambda_i)$.
```
## 数学公式 {#math-formular}
[^load-bm]: <https://github.com/ElegantLaTeX/ElegantBook/blob/6ab10beda81252f0b478e05fa926199301347e4a/elegantbook.cls#L884>
数学公式加粗可能是最常见的需求之一, **elegantbook** 宏包提供的文类 `elegantbook.cls` 已经调用了 **bm** 宏包 [^load-bm]。有了 **bm** 宏包,就可以使用 **bm** 宏包提供的 `\bm{}` 命令,而不需要调 `\boldsymbol{}` 加粗希腊字母,如将 $\alpha$ (正常)加粗为 $\bm{\alpha}$(粗体)。为了在 HTML 网页中显示加粗效果,则还不够,默认情况下, MathJax 是不认识 `\bm{}` 命令的,所以需要在 `header.html` 自定义 `\bm{}` 命令:
```html
<script type="text/x-mathjax-config">
MathJax.Hub.Config({
TeX: {
Macros: {
bm: ["{\\boldsymbol #1}",1],
}
}
});
</script>
```
进一步地,使用常用的 3 个取消符号 $\bcancel{///}$ 需要在 `header.html` 添加 JS 库 `cancel.js`,
```html
<script type="text/x-mathjax-config">
MathJax.Hub.Config({
TeX: {
Macros: {
bm: ["{\\boldsymbol #1}",1],
},
extensions: ["cancel.js"]
}
});
</script>
```
并在 preamble.tex 文件中添加一行代码加载 **cancel** 宏包
```latex
\usepackage[makeroom]{cancel}
```
## 自定义 block {#custom-block}
基于 Pandoc 自定义 block 是一件很有意思的事情,目前不想让模版过于复杂,仅给出几个最常用的例子。如何自定义可以去看谢益辉的新书 <https://bookdown.org/yihui/rmarkdown-cookbook/custom-blocks.html>。
[要做的还有很多]{.todo}
::: {.rmdwarn data-latex="{警告}"}
这是警告
:::
::: {.rmdtip data-latex="{提示}"}
这是提示
:::
:::: {.rmdnote data-latex="{注意}"}
这是注意
::::
::: {.rmdinfo}
普通说明
:::