{r setup, include=FALSE} knitr::opts_chunk$set(eval = FALSE)
本文于r format(Sys.Date(), "%Y-%m-%d")更新。 如发现问题或者有建议,欢迎提交 Issue 更多问题参考github
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-AMS-MML_HTMLorMML">
</script>
{r message=FALSE, warning=FALSE, include=FALSE} library(tidyverse) library(knitr)
前言
新增
- 整理的$\LaTeX$
- cross reference
- 整理的$\LaTeX$, 2018-05-04
yaml option
yaml文档要修改对应路径下的文档,才能修改样式。
目录
output:
html_document:
toc: true
toc_float:
collapsed: false
smooth_scroll: false
toc_float浮动目录,这个不需要记忆,我倾向大家在这里设置。[@RStudioHTML]

df_print比DT::datatable方便[@RStudioHTML]
{r eval=F} output: html_document: df_print: paged
Code Folding
code_folding: hidecode_folding: show用户可以自己选择隐藏。[@RStudioHTML]

Shared Options
建立一个_output.yaml,这样就不需要重复设置了。 与_output.yaml同一文件夹的.Rmd文件,不需要设置html_document的格式了。[@RStudioHTML]
fig size
---
title: "Habits
output:
html_document:
fig_width: 7
fig_height: 6
fig_caption: true
---
参考 @Yihui2018PowerPointBook。
整理的$\LaTeX$
@XieTinyTeX2018 提供了Rmd中使用$\LaTeX$、安装相关包的解决方案。
报错部分
- [@Datta2017, pp. 40]给出的Quoted Texts和
flushright没有执行成功。 - [@Datta2017, pp. 57]给出的tabbing环境没有执行成功。我估计是需要在
.tex文件声明的话,可以执行,因为\hspace我之前成功使用过。
上下括号
brace 有弓形的意思。 这里使用
\overbrace\underbrace
$$A = \overbrace{a_1 + a_2 + a_3 }^{\text{Part 1}} + \underbrace{a_4 + a_5 + a_6 }_{\text{Part 2}}$$
- 注意一个是
^一个是_
\mbox{}, \text{}, \mathrm{}比较
在$\LaTeX$公式中,字体都是斜体,因此 \mbox{}, \text{}, \mathrm{}可以防止字体斜体。 但是\mbox{}, \text{}会让字体的数学:模式消失,然而\mathrm{}不会 [@Datta2017]。 具体见例子, \mbox{A_2}, \text{A_2},\mathrm{A_3}, A_3
$$\mbox{A_2}, \text{A_2},\mathrm{A_3}, A_3$$
我们发现只有A_3是斜体,其余都是正常的。 其次,只有\mathrm{A_3}, A_3保持了下角标。 综上,我们选择\mathrm。
点点点
$$\ldots, \cdots: i = 1,\ldots,n$$ \ldots, \cdots: i = 1,\ldots,n,推荐使用$\ldots$,更符合印刷体。
conditioning的书写
$$\frac{\partial f(x)}{\partial x} |_{x=0} = f^{\prime} (0)$$ \frac{\partial f(x)}{\partial x} |_{x=0} = f^{\prime} (0): 这里使用|_{x=0}而非|x=0
自定义函数
\newcommand{变量名称}{变量内容}
例如, \newcommand{\bs}{\backslash}表示用\bs表示\backslash
比如
\newcommand{\bs}{\backslash}
$\backslash: 这是一个自定义的函数$
to-do
\surd: $\surd$ [@Datta2017, pp. 253]
等号对齐
$$\begin{alignat}{2} 1 + 1 & = 2\ 1 + 10 & = 11\ \end{alignat}$$
mathbb
在$\LaTeX$中是使用\mathbb{}函数实现的有
- indicator function $\mathbb{I}$
- 实数集合 $\mathbb{R}$ [@wikimathbb]
箭头 Arrow
参考 @Frank2012 箭头相关的$\LaTex$代码。
{r eval=F} library(rvest) xml <- read_html('http://www.sascha-frank.com/Arrow/latex-arrows.html') library(glue) xml %>% html_nodes('td') %>% html_text() %>% str_subset('\\\\[A-z]{1,}') %>% paste0('+ \`',.,'\`',': $',.,'$') %>% # str_replace_all('\\$','$') %>% # 这一步还是需要手动去剔除,不能用正则化 paste(collapse = '\n') %>% write_file('latex.txt')
参考 @XieTinyTeX2018 安装相应地 $\LaTex$ 包。
```{r eval=F} library(tinytex) tlmgr_search(’/stmaryrd.sty’) tlmgr_install(‘stmaryrd’) tlmgr_update()
tlmgr_search(’/MnSymbol.sty’) tlmgr_install(‘MnSymbol’)
+ `\uparrow`: $\uparrow$
+ `\downarrow`: $\downarrow$
+ `\Uparrow`: $\Uparrow$
+ `\Downarrow`: $\Downarrow$
+ `\updownarrow`: $\updownarrow$
+ `\Updownarrow`: $\Updownarrow$
+ `\leftarrow`: $\leftarrow$
+ `\rightarrow`: $\rightarrow$
+ `\leftrightarrow`: $\leftrightarrow$
+ `\Leftrightarrow`: $\Leftrightarrow$
+ `\Leftarrow`: $\Leftarrow$
+ `\Rightarrow`: $\Rightarrow$
+ `\longleftarrow`: $\longleftarrow$
+ `\longrightarrow`: $\longrightarrow$
+ `\Longleftarrow`: $\Longleftarrow$
+ `\Longrightarrow`: $\Longrightarrow$
+ `\longleftrightarrow`: $\longleftrightarrow$
+ `\Longleftrightarrow`: $\Longleftrightarrow$
+ `\nwarrow`: $\nwarrow$
+ `\nearrow`: $\nearrow$
+ `\swarrow`: $\swarrow$
+ `\searrow`: $\searrow$
+ `\mapsto`: $\mapsto$
+ `\longmapsto`: $\longmapsto$
+ `\hookleftarrow`: $\hookleftarrow$
+ `\hookrightarrow`: $\hookrightarrow$
+ `\leftharpoonup`: $\leftharpoonup$
+ `\rightharpoonup`: $\rightharpoonup$
+ `\leftharpoondown`: $\leftharpoondown$
+ `\rightharpoondown`: $\rightharpoondown$
+ `\rightleftharpoons`: $\rightleftharpoons$
+ `\twoheadleftarrow`: $\twoheadleftarrow$
+ `\twoheadrightarrow`: $\twoheadrightarrow$
+ `\Lsh`: $\Lsh$
+ `\Rsh`: $\Rsh$
+ `\leftleftarrows`: $\leftleftarrows$
+ `\rightrightarrows`: $\rightrightarrows$
+ `\upuparrows`: $\upuparrows$
+ `\downdownarrows`: $\downdownarrows$
+ `\rightleftarrows`: $\rightleftarrows$
+ `\leftrightarrows`: $\leftrightarrows$
+ `\Lleftarrow`: $\Lleftarrow$
+ `\Rrightarrow`: $\Rrightarrow$
+ `\leftarrowtail`: $\leftarrowtail$
+ `\rightarrowtail`: $\rightarrowtail$
+ `\rightsquigarrow`: $\rightsquigarrow$
+ `\leftrightsquigarrow`: $\leftrightsquigarrow$
+ `\looparrowleft`: $\looparrowleft$
+ `\looparrowright`: $\looparrowright$
+ `\circlearrowleft`: $\circlearrowleft$
+ `\circlearrowright`: $\circlearrowright$
+ `\curvearrowleft`: $\curvearrowleft$
+ `\curvearrowright`: $\curvearrowright$
+ `\upharpoonleft`: $\upharpoonleft$
+ `\upharpoonright`: $\upharpoonright$
+ `\downharpoonleft`: $\downharpoonleft$
+ `\downharpoonright`: $\downharpoonright$
+ `\nleftarrow`: $\nleftarrow$
+ `\nrightarrow`: $\nrightarrow$
+ `\nLeftarrow`: $\nLeftarrow$
+ `\nRightarrow`: $\nRightarrow$
+ `\nleftrightarrow`: $\nleftrightarrow$
+ `\nLeftrightarrow`: $\nLeftrightarrow$
+ `\overleftarrow{Text}`: $\overleftarrow{Text}$
+ `\overrightarrow{Text}`: $\overrightarrow{Text}$
+ `\underleftarrow{Text}`: $\underleftarrow{Text}$
+ `\underrightarrow{Text}`: $\underrightarrow{Text}$
+ `\overleftrightarrow{Text}`: $\overleftrightarrow{Text}$
+ `\underleftrightarrow{Text}`: $\underleftrightarrow{Text}$
+ `A \xLongleftarrow[\text{unten Text}]{\text{oben Text}} B `: $A \xLongleftarrow[\text{unten Text}]{\text{oben Text}} B $
+ `A \xLongleftarrow{\text{ganz langer text}} B `: $A \xLongleftarrow{\text{ganz langer text}} B $
+ `A \xLongrightarrow[\text{unten Text}]{\text{oben Text}} B`: $A \xLongrightarrow[\text{unten Text}]{\text{oben Text}} B$
+ ` A \xLongrightarrow{\text{ganz langer text}} B`: $ A \xLongrightarrow{\text{ganz langer text}} B$
+ `A \xLongleftrightarrow[\text{unten Text}]{\text{oben Text}} B`: $A \xLongleftrightarrow[\text{unten Text}]{\text{oben Text}} B$
+ `A \xLongleftrightarrow{\text{ganz langer text}} B`: $A \xLongleftrightarrow{\text{ganz langer text}} B$
+ `A \xLeftrightarrow[\text{unten Text}]{\text{oben Text}} B`: $A \xLeftrightarrow[\text{unten Text}]{\text{oben Text}} B$
+ `A \xLeftrightarrow{\text{ganz langer text}} B`: $A \xLeftrightarrow{\text{ganz langer text}} B$
+ `A \xlongleftrightarrow[\text{unten Text}]{\text{oben Text}} B`: $A \xlongleftrightarrow[\text{unten Text}]{\text{oben Text}} B$
+ `A \xlongleftrightarrow{\text{ganz langer text}} B`: $A \xlongleftrightarrow{\text{ganz langer text}} B$
+ `A \xlongrightarrow[\text{unten Text}]{\text{oben Text}} B`: $A \xlongrightarrow[\text{unten Text}]{\text{oben Text}} B$
+ `A \xlongrightarrow{\text{ganz langer text}} B`: $A \xlongrightarrow{\text{ganz langer text}} B$
+ `A \xlongrightarrow{} B`: $A \xlongrightarrow{} B$
+ `A \xleftrightarrow[\text{unten Text}]{\text{oben Text}} B`: $A \xleftrightarrow[\text{unten Text}]{\text{oben Text}} B$
+ `A \xleftrightarrow{\text{ganz langer text}} B`: $A \xleftrightarrow{\text{ganz langer text}} B$
+ `A \xlongleftarrow[\text{unten Text}]{\text{oben Text}} B`: $A \xlongleftarrow[\text{unten Text}]{\text{oben Text}} B$
+ `A \xlongleftarrow{\text{ganz langer text}} B`: $A \xlongleftarrow{\text{ganz langer text}} B$
+ `A \xlongleftarrow{} B`: $A \xlongleftarrow{} B$
+ `A \xleftarrow[\text{unten Text}]{\text{oben Text}} B`: $A \xleftarrow[\text{unten Text}]{\text{oben Text}} B$
+ `A \xleftarrow{\text{ganz langer text}} B`: $A \xleftarrow{\text{ganz langer text}} B$
+ `A \xrightarrow[\text{unten Text}]{\text{oben Text}} B`: $A \xrightarrow[\text{unten Text}]{\text{oben Text}} B$
+ `A \xrightarrow{\text{ganz langer text}} B`: $A \xrightarrow{\text{ganz langer text}} B$
+ `A \xlongequal[\text{unten Text}]{\text{oben Text}} B `: $A \xlongequal[\text{unten Text}]{\text{oben Text}} B $
+ `A \xlongequal{\text{ganz langer text}} B `: $A \xlongequal{\text{ganz langer text}} B $
+ `\Rsh`: $\Rsh$
+ `\Lsh`: $\Lsh$
+ `\Rsh`: $\Rsh$
+ `\rotatebox[origin=c]{90}{$\Rsh$}`: $\rotatebox[origin=c]{90}{$\Rsh$}$
+ `\rotatebox[origin=c]{180}{$\Rsh$}`: $\rotatebox[origin=c]{180}{$\Rsh$}$
+ `\rotatebox[origin=c]{270}{$\Rsh$}`: $\rotatebox[origin=c]{270}{$\Rsh$}$
+ `\Lsh`: $\Lsh$
+ `\rotatebox[origin=c]{90}{$\Lsh$}`: $\rotatebox[origin=c]{90}{$\Lsh$}$
+ `\rotatebox[origin=c]{180}{$\Lsh$}`: $\rotatebox[origin=c]{180}{$\Lsh$}$
+ `\rotatebox[origin=c]{270}{$\Lsh$}`: $\rotatebox[origin=c]{270}{$\Lsh$}$
+ `\rightarrow oder \to`: $\rightarrow oder \to$
+ `\Rightarrow`: $\Rightarrow$
+ `\longrightarrow`: $\longrightarrow$
+ `\Longrightarrow`: $\Longrightarrow$
+ `\mapsto`: $\mapsto$
+ `\longmapsto`: $\longmapsto$
+ `\hookrightarrow`: $\hookrightarrow$
+ `\rightharpoonup`: $\rightharpoonup$
+ `\rightharpoondown`: $\rightharpoondown$
+ `\twoheadrightarrow`: $\twoheadrightarrow$
+ `\Rsh`: $\Rsh$
+ `\rightrightarrows`: $\rightrightarrows$
+ `\Rrightarrow`: $\Rrightarrow$
+ `\rightarrowtail`: $\rightarrowtail$
+ `\rightsquigarrow`: $\rightsquigarrow$
+ `\looparrowright`: $\looparrowright$
+ `\circlearrowright`: $\circlearrowright$
+ `\curvearrowright`: $\curvearrowright$
+ `\nrightarrow`: $\nrightarrow$
+ `\nRightarrow`: $\nRightarrow$
+ `\rhookrightarrow`: $\rhookrightarrow$
+ `\dashedrightarrow`: $\dashedrightarrow$
+ `\leadsto`: $\leadsto$
+ `\rcurvearrowright`: $\rcurvearrowright$
+ `\rcirclearrowright`: $\rcirclearrowright$
+ `\lcirclearrowright`: $\lcirclearrowright$
+ `\nhookrightarrow`: $\nhookrightarrow$
+ `\nrhookrightarrow`: $\nrhookrightarrow$
+ `\nrightharpoonup`: $\nrightharpoonup$
+ `\nrightharpoondown`: $\nrightharpoondown$
+ `\ndashedrightarrow`: $\ndashedrightarrow$
+ `\nrightrightarrows`: $\nrightrightarrows$
+ `\nleadsto`: $\nleadsto$
+ `\nrightrsquigarrow`: $\nrightrsquigarrow$
+ `\ncurvearrowright`: $\ncurvearrowright$
+ `\nrcurvearrowright`: $\nrcurvearrowright$
+ `\nrcirclearrowright`: $\nrcirclearrowright$
+ `\nlcirclearrowright`: $\nlcirclearrowright$
+ `\ncirclearrowright`: $\ncirclearrowright$
+ `\nmapsto`: $\nmapsto$
+ `\nRrightarrow`: $\nRrightarrow$
+ `\leftarrow bzw. \gets `: $\leftarrow bzw. \gets $
+ `\Leftarrow`: $\Leftarrow$
+ `\longleftarrow`: $\longleftarrow$
+ `\Longleftarrow`: $\Longleftarrow$
+ `\hookleftarrow`: $\hookleftarrow$
+ `\leftharpoonup`: $\leftharpoonup$
+ `\leftharpoondown`: $\leftharpoondown$
+ `\twoheadleftarrow`: $\twoheadleftarrow$
+ `\Lsh`: $\Lsh$
+ `\leftleftarrows`: $\leftleftarrows$
+ `\Lleftarrow`: $\Lleftarrow$
+ `\leftarrowtail`: $\leftarrowtail$
+ `\looparrowleft`: $\looparrowleft$
+ `\circlearrowleft`: $\circlearrowleft$
+ `\curvearrowleft`: $\curvearrowleft$
+ `\nleftarrow`: $\nleftarrow$
+ `\nLeftarrow`: $\nLeftarrow$
+ `\leftmapsto`: $\leftmapsto$
+ `\lhookleftarrow`: $\lhookleftarrow$
+ `\dashedleftarrow`: $\dashedleftarrow$
+ `\leftlsquigarrow`: $\leftlsquigarrow$
+ `\nleftmapsto`: $\nleftmapsto$
+ `\lcurvearrowleftt`: $\lcurvearrowleftt$
+ `\rcirclearrowleft`: $\rcirclearrowleft$
+ `\lcirclearrowleft`: $\lcirclearrowleft$
+ `\ntwoheadleftarrow`: $\ntwoheadleftarrow$
+ `\nleftarrowtail`: $\nleftarrowtail$
+ `\nhookleftarrow`: $\nhookleftarrow$
+ `\nlhookleftarrow`: $\nlhookleftarrow$
+ `\nleftharpoonup`: $\nleftharpoonup$
+ `\nleftharpoondown`: $\nleftharpoondown$
+ `\ndashedleftarrow`: $\ndashedleftarrow$
+ `\nleftleftarrows`: $\nleftleftarrows$
+ `\nleftlsquigarrow`: $\nleftlsquigarrow$
+ `\nleftrsquigarrow`: $\nleftrsquigarrow$
+ `\ncurvearrowleft`: $\ncurvearrowleft$
+ `\nlcurvearrowleft`: $\nlcurvearrowleft$
+ `\nrcirclearrowleft`: $\nrcirclearrowleft$
+ `\nlcirclearrowleft`: $\nlcirclearrowleft$
+ `\ncirclearrowleft`: $\ncirclearrowleft$
+ `\nLleftarrow`: $\nLleftarrow$
+ `\xtwoheadrightarrow[\text{oben}]{\text{unten}}`: $\xtwoheadrightarrow[\text{oben}]{\text{unten}}$
+ `\xtwoheadleftarrow[\text{oben}]{\text{unten}}`: $\xtwoheadleftarrow[\text{oben}]{\text{unten}}$
+ `\xmapsto[\text{oben}]{\text{unten}}`: $\xmapsto[\text{oben}]{\text{unten}}$
+ `\xlongequal[\text{oben}]{\text{unten}}`: $\xlongequal[\text{oben}]{\text{unten}}$
+ `\xtofrom[\text{oben}]{\text{unten}}`: $\xtofrom[\text{oben}]{\text{unten}}$
## 其他
+ $\hat{oo}, \widehat{oo}$可能可以消除帽子错位的问题
+ $\vec{o}$表示向量
+ $\dot{o} = \Delta o$
+ $a \hspace{20pt} b$: `a \hspace{20pt} b`。中间必须要指定大小。
+ $\epsilon, \varepsilon$: `\epsilon, \varepsilon`。明显后面是用来记录回归中的误差项的。
+ 其他误差项表示$\mu, \nu$: `\mu, \nu`。
+ `\because`: $\because$
+ `\therefore`: $\therefore$
+ $\text{补集: } \complement_UA$
+ $\text{交集: } \bigcap$
+ $\text{并集: } \bigcup$
+ 输入:`$${\forall}$$`,会显示出${\forall}$任意符号
+ 输入:`$${\exists}$$`,会显示出${\exists}$存在符号
+ `\text{abc abc}` 用于写文字,里面的空格不需要插入`\space`[@Hughes2012]
+ 关键是`\begin`和`\end`加上`{alignat}`,其中的`&`和`\\`类似于矩阵的书写方式。
+ $\mathrm{d}x$,`$\mathrm{d}x$`, 导数 [@CSDNLatex2017]
+ $\mathbb{I}$,`$\mathbb{I}$`, 指示函数 [@CSDNLatex2017]
+ $\int$,`$\int$`, 积分 [@CSDNLatex2017]
+ $\iint$, $\iint$, 积分 [@CSDNLatex2017]
+ $\iint$, $\iint$, 积分 [@CSDNLatex2017]
+ $\sqrt[p]{a}$, `$\sqrt[p]{a}$`,n次根 [@Nicelookingpthroots]
+ $\LaTeX$ logo 输出方式 `$\LaTeX$`
+ `overset`可以在$\LaTeX$元素上加文字,如`$\overset{A}{B}$`$\to \overset{A}{B}$
$$\begin{alignat}{2}
f(x) & = (m+n)^2 \\
& = m^2+2mn+n^2 \\
\end{alignat}$$
\begin{alignat}{2} f(x) & = (m+n)^2 \ & = m^2+2mn+n^2 \ \end{alignat}
一个比较好的参考博客。
* [$\LaTeX$ 各种命令,符号 - CSDN博客](http://blog.csdn.net/garfielder007/article/details/51646604)
+ `\ddots`$\ddots$,`\vdots`$\vdots$ [@Matthes2011]
### bold, italitic [@Datta2017,pp.10]
+ `\textbf{}`: $\textbf{textbf}$
+ `\bf{}`: $\bf{bf}$
+ `\textit{}`: $\textit{textit}$,但是也就文本化了,下角标和上角标失效。
+ `\it{}`: $\it{it}$,但是也就文本化了,下角标和上角标失效。
### not perp [@Loretan2011]
$$\not \perp$$
$$\not\perp$$
两个都行,只是在电脑上的显示是不行的,格式问题。
无限大 $\infty$
# 其他 Pandoc 使用技巧
## 举例说明[@MacFarlane2018]
```
(@eg1) 例子一,例子一,例子一,例子一。
(@eg2) 例子二,例子二,例子二,例子二。
正如例子(@eg1)所说,例子一,例子一,例子一,例子一。
正如例子(@eg2)所说,例子二,例子二,例子二,例子二。
(1) 例子一,例子一,例子一,例子一。 (2) 例子二,例子二,例子二,例子二。
正如例子(1)所说,例子一,例子一,例子一,例子一。 正如例子(2)所说,例子二,例子二,例子二,例子二。
脚注[@MacFarlane2018]
这里会产生一个脚注[^脚注][^脚注],你可以点击[^脚注]上方的数字查看。
```{r eval=F} [^脚注]: 这是脚注的第一行。
缩进两格子这一行会跟着脚注的第一行。
a + b = a + b # 缩进4格,这里产生一行代码
[^脚注]:
这是脚注的第一行。
缩进两格子这一行会跟着脚注的第一行。
a + b = a + b # 缩进4格,这里产生一行代码
这行没有缩进,所以不会算在脚注里,而是承接上文。
## `>`空行问题
`>`引用时,
> 我
你
`我`后面加上一个`tab`就可以实现两行。
> 我
你
## 引用`>`的深入
多个`>`,但是只空一行,也是可以整体引用的。
## 引用空行问题
引用文段,
>xxx
xxx
xxx
最后会变成
xxx xxx xxx
使用`\t`
>xxx\t
xxx\t
xxx
最后会变成
xxx
xxx
xxx
替换的快捷方式
`\n` $\to$ `\t\n`
# PowerPoint 书写
@Yihui2018PowerPoint, @Yihui2018PowerPointBook 发布了新版本的RMarkdown支持导出PowerPoint,而且交互很好,类似于其他RMarkdown导出方式,以下为测评。
安装最新的[测试版本RStudio](https://dailies.rstudio.com/)
## yaml options
---
title: "Habits
author: John Doe
date: March 22, 2005
output:
powerpoint_presentation:
reference_doc: corp_style.pptx
---
这里类似于`docx`文档书写,支持模板。
## 主要功能
`---`支持分页
code chunk支持图片命名使用`fig.cap=""`参数
## 分栏
:::::: {.columns}
::: {.column width="40%"}
Content of the left column.
:::
::: {.column width="60%"}
Content of the right column.
:::
::::::
在使用模版的时候,会乱码。
## 目录
toc: true
## 模板代码
---
title: "Habits
author: John Doe
date: March 22, 2005
output:
powerpoint_presentation:
toc: true
---
# In the morning
## Getting up
- Turn off alarm
- Get out of bed
## Breakfast
- Eat eggs
- Drink coffee
# In the evening
## Dinner
- Eat spaghetti
- Drink wine
---
```r, cars, fig.cap="A scatterplot.", echo=FALSE
plot(cars)
```
## Going to sleep
- Get in bed
- Count sheep
## Multi-column layout
:::::: {.columns}
::: {.column width="40%"}
Content of the left column.
:::
::: {.column width="60%"}
Content of the right column.
:::
::::::
展示结果为 ../../../picbackup/Habits.pptx
# html 使用技巧
## `details [open|close]`和`summary`建立fold功能
<details open>
<summary> Session Info </summary>
xxxxxxxxxx
</details>
<details open>
<summary> Session Info </summary>
xxxxxxxxxx
</details>
由于这里的参数是`open`,因此默认的内容是*打开*的
<details close>
<summary> Session Info </summary>
xxxxxxxxxx
</details>
<details close>
<summary> Session Info </summary>
xxxxxxxxxx
</details>
由于这里的参数是`close`,因此默认的内容是*关闭*的。
并且可以对`#`进行fold。
<details close>
<summary> some text </summary>
# 123
123
# 123
123
</details>
## 自定义的高亮方式 [@Robbins2018,pp.313]
<style>
.glossary {
color: #0378a9; /* blue */
background-color: red;
}
</style>
Every variety of cabbage had their origin in the wild cabbage of
Europe (<dfn class="glossary"><i>Brassica oleracea</i></dfn>)
<style>
.glossary {
color: #0378a9; /* blue */
background-color: red;
}
</style>
Every variety of cabbage had their origin in the wild cabbage of
Europe (<dfn class="glossary"><i>Brassica oleracea</i></dfn>)
`<span style="background-color: #FFFF00">需要高亮的字</span>`:
<span style="background-color: #FFFF00">需要高亮的字</span>
## 插入警告 [@Robbins2018,pp.322]
<style>
p.warning::before {
content: url(exclamation.png);
margin-right: 6px;
}
p.warning::after {
content: " Thank you.";
color: red;
}
</style>
`content: url(exclamation.png);` 这种需要自己去找好logo的
<p class="warning">We are required to warn you that undercooked food is
a health risk.</p>
<style>
p.warning::before {
content: url(exclamation.png);
margin-right: 6px;
}
p.warning::after {
content: " Thank you.";
color: red;
}
</style>
`content: url(exclamation.png);` 这种需要自己去找好logo的
<p class="warning">We are required to warn you that undercooked food is
a health risk.</p>
# 中文使用问题
## captioner
`\ref(...)`的使用在pdf文档中,一直存在问题,
[captioner](https://github.com/adletaw/captioner)包是一个替代方案。
```
library(captioner)
fig_nums <- captioner(prefix = '图',auto_space = F)
fig_nums("my_first_figure",cite = F)
fig_nums("my_second_figure",cite = F)
fig_nums("my_first_figure",cite = F)
会按照my_first_figure和my_second_figure来记录图片的顺序,且顺序不会乱。 教程可参考 @Norbert2018 。
pdf 图片浮动
参考这篇 Stack Overflow
- 建立一个
.tex文件, - 命名为
preamble-latex.tex, - 内容为
{tex} \usepackage{float} \let\origfigure\figure \let\endorigfigure\endfigure \renewenvironment{figure}[1][2] { \expandafter\origfigure\expandafter[H] } { \endorigfigure } - 在yaml中申明,
{yaml} output: rmarkdown::pdf_document: fig_caption: yes includes: in_header: preamble-latex.tex
这篇 博客 的方式无效。 加入/后,标题消失了。
RMarkdown 使用技巧
R chunk 图片参数
{r nice-fig, fig.cap='Here is a nice figure!', out.width='80%', fig.asp=.75, fig.align='center'}
其他(未整理)
把.Rmd的文档提取出来建立.R文档
用purl建立反编织。 cheatsheet,打印 可以设计是否需要文字或者不需要。
library(knitr)
purl("test.Rmd")
purl("test.Rmd", output = "test2.R", documentation = 2)
有限显示表格
cols.print=3, rows.print=3 在r框中设定,这个比什么head()好用多了。
一些有用的markdown
- 1
- 2
- 3
- 4
<!-- -->
+ 1
+ 2
+ 3
+ 4
只要间隔两个tab,就可以写细分的点了。
superscript^2^
superscript^2^
subscript2
subscript~2~
knit style 的选择

---
output:
html_document:
theme: cosmo
---
待办事项
- $\boxtimes$ task 1
- $\square$ task 2
- $\Box$ task 3
available: $\boxtimes$, $\square$, $\Box$.
-
symbols - How to write checkmark in $\LaTeX$ - TeX - $\LaTeX$ Stack Exchange only $\checkmark$, not
$\CheckedBox$
用excel刷批量列表

暂时不需要这项技能了,因为可以用+可以批量选择。然后用正则化替换就好。
Rmd,打出高亮的效果
Marked text <mark>Marked text</mark>
代码显示方式
用\``code`框住代码,就可以实现code`,代码显示方式了。
theme选择
在yaml设置中, theme: cosmo$\to$theme: united 可以保持英文字母不"变细"。
## References {-}
{-}就不number headings
自动引用使用过的包
search() %>%
str_subset("package:") %>%
str_replace_all("package:","")
这个不行,因为会出现一些write_bib没有生成的引用。
write_bib是 @knitr 基于citation函数 开发的。
{r eval=F} write_bib(x = .packages(), file = "r_pkg.bib",prefix="")
{r eval=F} read_csv("r_pkg.bib",col_names = FALSE) %>% rename(value = X1) %>% select(value) %>% filter(value %in% str_subset(value,"@")) %>% mutate(value = str_replace(value, "@Manual\\{","")) %>% .$value %>% paste("@",.,sep="",collapse = ", ") %>% writeLines()
然后将其复制粘贴到正文即可。
citr使用

这个引用文献非常方便。
字体变红
<span style="color:red">需要被红的信息</span>
保留代码,不跑代码。
eval=FALSE
knitr::opts_chunk$set在setup
直接设置,不需要背诵。
## eval = F
inline 就不能写了。
bookdown::gitbook主要参数
bookdown::gitbook:
split_by: none
self_contained: TRUE
df_print: paged
split_by: none: 建立的html文件不拆分self_contained: TRUE: 生成的html文件保留样式df_print: paged也是可以使用的[@Martin2017]。
表格加脚注
{r} library(knitr) library(kableExtra)
{r} mtcars[1:5, 1:6] %>% kable("html") %>% kable_styling() %>% column_spec(5:7,bold = T) %>% # 表格加粗 row_spec(3:5, bold = T, color = "white", # 字体白色 background = "#D7261E") %>% # 背景红色 footnote( footnote_as_chunk = T, general = "每个变量都有简单的解释。", general_title = "备注", number = c("mpg: Miles/(US) gallon", "cyl: Number of cylinders", "disp: Displacement (cu.in.)", "hp: Gross horsepower", "drat: Rear axle ratio", "wt: Weight (1000 lbs) ), number_title = "变量解释 )
函数footnote加脚注[@Zhu2018]。
将表格存成图片
点击Export并Save as Image
选择Height = 300即可。`即可。
.bib一个都不能错
只要.bib出问题,所有都不能跑,花了1h学的教训。
get_bib函数 for rmarkdown
{r} get_bib <- function(input,output){ library(knitr) library(tidyverse) note_bib <- read.table(input, sep="\t") %>% mutate( pkg = str_extract(V1,"library\\([:alnum:]{2,10}\\)"), pkg = str_remove_all(pkg,"library\\(|\\)") ) %>% filter(!is.na(pkg)) %>% distinct(pkg) %>% .$pkg write_bib(note_bib,file=output,prefix = "") type1 <- paste("@",note_bib,sep = "",collapse = ", ") type2 <- paste("@",note_bib,sep = "",collapse = "; ") return(list(type1=type1,type2=type2)) }
"r get_bib("note.Rmd","note1.bib")$type1" 提供。
引用用分号
{r eval=F} Here is a statement [@key1; @key2]. @key3 did something. Some examples [e.g. @key4; @key5; but see @key6]
cross reference
- 章节题目可以按照这个来显示,
章节名称 {#haha} - 交叉引用格式为
章节 \@ref(haha),不要以数字开头
就可以实现了。
-
blogdown 直接可以cross reference
-
html_document不可以。 -
process reading 加上cross reference。
\@ref(other) 看看。不行
图片是webp格式
微信的图片是webp格式,不能简单插入,转化方式是通过微信打开,另存为jpeg格式,这是默认的。 目前暂时是手动的。
引用建立跳转链接 [@bookdownOnline, 2.8]
link-citations: true
用render实现格式修改
- 用网页check,最简单的
{r eval=F} library(rmarkdown) render(file.path(dirname(getwd()),'eng_learning.Rmd'), word_document( highlight = "zenburn", reference_docx = "180710_word_note_sample.docx ))
kable_styling使得表格更好看些

kableExtra::kable_styling函数可以让html下的表格更好看些。
kableExtra包主要函数解析
{r} library(tidyverse) library(knitr) library(kableExtra) library(formattable)
{r} mtcars[1:5, 1:6] %>% mutate(hp = color_bar("lightgreen")(hp)) %>% mutate(disp = ifelse(disp > 200 ,cell_spec(disp, "html", color = "red", bold = T) ,cell_spec(disp, "html", color = "green", italic = T)) ) %>% kable("html",escape = F) %>% kable_styling(full_width = F) %>% row_spec(3:5, bold = T, color = "white", # 字体白色 background = "#D7261E") %>% # 背景红色 footnote( footnote_as_chunk = T, general = "每个变量都有简单的解释。", general_title = "备注", number = c("mpg: Miles/(US) gallon", "cyl: Number of cylinders", "disp: Displacement (cu.in.)", "hp: Gross horsepower", "drat: Rear axle ratio", "wt: Weight (1000 lbs) ), number_title = "变量解释 )
formattable::color_bar函数实现柱状图。cell_spec可以改变单元格字体的颜色和形状。但是必须满足这两个要求 [@朱昊2018]kable("html",escape = F) %>%kable_styling(full_width = F) %>%
否则出现报错:
Error in xml_children(x)[[search]] : subscript out of bounds
快速定位,加上#
例如找 archive写入# archive, 就可以避开正文里面含有archive的。
表格显示
Hi 晓松,
表格问题,我晚上看了一下。
在yaml处设置,
output:
html_document:
df_print: paged
或者
output: html_notebook
都是可以实现这种可以换页的表格展示方法。

因此你可以尝试下,如果不行我猜是你电脑的版本问题。
那么我建议你使用两个包。
- DT 包的使用技巧,想必你使用过,但是功能略显复杂。
- Tidyverse使用技巧,查询
3.37.1.5.3 floor 函数,其中
{r eval=F} kable("html") %>% kable_styling() %>%
这两个函数可以完成比较美观的表格展示。
用于展示
RMarkdown实现静态网页,用于展示,只read_*和include_*,不要跑过程代码,
- 费时
- 容易出bug
cache=T,导致结果不能更新。
paged_table
- 当行数很多,但又必须全部展示的时候,可以使用
rmarkdown::paged_table。options = list(rows.print = 15)可以限定展示的行数[@AllaireRadixTables]
- 当然也可以展示
DT::datatable,但是会占用很多CPU,R session 会闪退。
