使用RStudio写作

  • 一些对理解本文有用的链接

谢益辉: Sweave:打造一个可重复的统计研究流程

knitr 与可重复的统计研究(花絮篇)

knitr中文介绍

knitr选项函数

R Markdown: The Definitive Guide

宋春林:用LaTeX写学位论文

用 knitr 写作业

在R Markdown文档中使用中文


我一开始使用LaTeX写论文。我一直以来用的是MikTeX

而之所以不使用TeXmaker或是CTeX是因为它们容易出Bug而且不简约(主要是因为懒得花时间学)。个人认为MikTeX是最轻量级的TeX了。然而,MikTeX的界面过于简单粗暴,并且无法更换背景颜色(我喜欢使用深色界面保护视力,但MikTeX无法修改)。

MikTeX界面

Figure 1: MikTeX界面

然而,RStudio的界面漂亮简单。也可以选择保护视力的深色主题。况且作为R用户,将写作、制作幻灯片、统计分析等工作整合到R Studio也大大提升了工作效率。如何做到这一点呢?

首先要安装LaTeX环境。安装后R会自动识别这个环境。Windows用户请注意,MikTeX一定要安装在全英文路径下! MikTeX一定要安装在全英文路径下! MikTeX一定要安装在全英文路径下!

后续需要安装一些R包,如Knitrtinytex等(具体的R包我就不列出了,如果你没有安装,R会提示你的)。

然后需要配置一下R Studio的环境:

依次点击Tools - Global Options - Sweave配置Sweave环境

Figure 2: 依次点击Tools - Global Options - Sweave配置Sweave环境

其中,Weave Rnw files usingknitr。想要写中文LaTeX文档必须选XeLaTeX环境。

我们点击Open File打开一个LaTeX文档:

点击Open File打开一个LaTeX文档

Figure 3: 点击Open File打开一个LaTeX文档

打开后,可以直接在RStudio中进行编辑写作。完成后,点击上方Complie PDF编译LaTeX文档,如图:

点击Complie PDF编译LaTeX文档

Figure 4: 点击Complie PDF编译LaTeX文档

编译成功的PDF文档(是我用于某课程pre的LaTeX Beamer)如图:

编译好的PDF文档

Figure 5: 编译好的PDF文档

编辑公式我使用Mathtype或者这个在线工具。Mathtype的好处在于可以直接将公式复制为LaTeX代码(需要事先设置好剪切和复制预置选项):

Mathtype编辑器

Figure 6: Mathtype编辑器

以上的公式可以直接复制为如下的纯文本LaTeX公式:

$$\ln {h_i}(t) = \ln {h_0}(t) + {\beta _1}{X_1} + {\beta _2}{X_2} +  \cdot  \cdot  \cdot  + {\beta _p}{X_p}$$

效果是这样的:

\[\ln {h_i}(t) = \ln {h_0}(t) + {\beta _1}{X_1} + {\beta _2}{X_2} + \cdot \cdot \cdot + {\beta _p}{X_p}\]


使用R Sweave

另一个方案是使用R Sweave

R Sweave的主要功能并不是一个写纯LaTeX文档,而是为了将R代码嵌入LaTeX形成动态PDF报告。当然,作为日常工作,使用R Sweave写文档而不运行代码是完全可以的(只不过有点大材小用)。

方法很简单,新建一个R Sweave文档,然后在里面编辑LaTeX,之后运行就可以了。

新建一个R Sweave文档

Figure 7: 新建一个R Sweave文档

注意,如果发现你编写的R Sweave文档的图片不能显示中文,可以在R代码块中加入如下语句:

pdf.options(family='GB1')

具体的关于R Sweave中文显示问题可以参看谢益辉老师的这个链接

R Sweave文档以.Rnw为后缀,它可以将R代码整合到LaTeX中去。当然,因为语法的复杂性,R Sweave的功能很大程度上被R Markdown代替了。所以除非你有写论文的需求,否则尽量少用Sweave。

R Markdown

此小节写在我最初写这篇文章的半年后。我现在认为用LaTeX、R Sweave之类的已经完全没有使用的必要了。如果你需要做幻灯片、写论文、做数据分析、做网页,答案只有一个:R Markdown!它的功能目前已经完全替代了前两者。需要注意的是,如果要输出PDF文档的话,最好使用rticles包附带的中文模板。具体可以看这篇文章

需要的注意的是,如果在使用R Markdown的svg图片格式进行输出(PDF 同样),中文无法显示时。可以install.packages('showtext')后使用如下的knitr选项:

{r,dev='svg',fig.showtext=T}

矢量图输出人人有责。

表格工具

R Markdown同时支持HTML、Markdown、LaTeX表格。具体使用什么表格取决于要输出的格式。其中,HTML、LaTeX表格的语法十分复杂。我会使用Tables Generator这个强大的工具生成表格。谁用谁知道!