Creating PDF with Chinese using RMarkdown

| category RStudy  | tag LaTeX 
在Mac OS上使用R Markdown生成含有中文的pdf文件

准备工作

除了安装R, RStudio外,还要安装pandocBasicTeX. 如果电脑硬盘空间够大,可以直接安装MacTex. 最后安装R软件包rticles. pandoc 和 BasicTex下载后双击运行安装。BsicTex 安装好后先升级一下,再安装ctex包,具体操作如下:

sudo tlmgr update --self
sudo tlmgr update --all
sudo tlmgr install ctex

如果运行中提示“package.sty” 缺失的话,直接用“sudo tlmgr install package”安装即可(package 为具体的软件包的名字)。打开RStudio安装rticles:

install.packages("rticles")

安装完成后,新建RMarkdown文件,在弹出窗口点击左下角“from template”,在右半边窗口选“CTex Documents”即可。

以下的内容为模版的默认内容的删减版。

引言

中文LaTeX文档并非难题。当然这句话得站在巨人 CTeX 的肩膀上才能说,它让我们只需要一句

\documentclass{ctexart} % 或者ctexrep/ctexbook

或者

\usepackage{ctex}

就轻松搞定中文LaTeX排版问题。跨平台通用的LaTeX编译却是个小难题,主要是没有一种跨平台通用且免费的中文字体。好吧,你们Windows用户永远有宋体黑体,你们Mac用户有华文字体,而我们苦逼Linux用户在编译LaTeX文档就没那么简单了1,是啊,我们有文泉驿,但我们要是用了文泉驿之后把文档发给你们八成不能编译,因为你们没有安装文泉驿。

字体和选项

LaTeX包ctex支持若干种字体选项,如果你是ctex老用户,请注意这里我们要求的最低版本是2.2,你可能需要升级你的LaTeX包。从版本2.0开始,ctex支持根据不同操作系统自动选择中文字体,简直是为人类进步作出了巨大贡献,我们再也不必费尽口舌向用户解释“啊,你用Windows啊,那么你该使用什么字体;啊,你用Mac啊,又该如何如何”。

下面的YAML元数据应该能满足多数用户的需求,主要设置两项参数:文档类为ctexart(当然也可以是别的类),输出格式为rticles::ctex,其默认LaTeX引擎为XeLaTeX(真的,别纠结你的旧爱PDFLaTeX了)。

---
documentclass: ctexart
output: rticles::ctex
---

R代码段

R代码用R Markdown的语法嵌入,即三个反引号开始一段代码```{r}和三个反引号``` 结束一段代码:

options(digits = 4)
fit = lm(dist ~ speed, data = cars)
coef(summary(fit))
##             Estimate Std. Error t value  Pr(>|t|)
## (Intercept)  -17.579     6.7584  -2.601 1.232e-02
## speed          3.932     0.4155   9.464 1.490e-12
b = coef(fit)

上面回归方程中的斜率是3.9324,完整的回归方程为:\[ Y = -17.5791 + 3.9324x\]

画图当然也是木有问题的啦,想画就说嘛,不说我怎么知道你想画呢?

par(mar = c(4, 4, .1, .1), las = 1)
plot(cars, pch = 19)
abline(fit, col = 'red')
cars数据散点图以及回归直线。

cars数据散点图以及回归直线。

请不要问我为什么图浮动到下一页去了,这么初级的LaTeX问题问出来信不信我扁你。

小结

事实证明我们可以理直气壮地通过XeLaTeX将中文R Markdown转化为PDF文档,麻麻再也不用担心我的论文满屏幕都是反斜杠,朕养完小白鼠之后终于不必先折腾三个小时LaTeX再开始写实验报告了:打开RStudio,菜单File > New File > R Markdown,然后从模板中选择CTeX Documents,搞定。


  1. 切,傲娇的Linux用户怎么会干出找你们复制字体的事情

R Markdown转化为PDF文档的效果如下(只显示了第一页)

preview

Previous     Next