对于用惯了Word的来说,Latex大概是一个噩梦,好在能用惯Word的人并不多。各位观众应该都或多或少的见过各种Word排版技巧充斥在朋友圈,人人网,QQ空间等。跟Latex的命令一样,让人看了就头疼。

如果你会用Knitr,那就一定也会用Markdown(二者都不会的看官请移步这里)。Markdown是HTML的简化,语法简洁,十分钟就能学完。只是Knitr初出之时,Markdown也就只能转成HTML而已。如今Knitr已3岁有余,从Markdown到PDF的转化也很成熟了。话不多说,让我们直奔主题。

预先安装

  • 最新版本的Rstudio(已经内置的Pandoc工具,没听说过这个工具也没关系,装上最新版的Rstudio就是了)。
  • R包:knitrrmarkdown,均可从CRAN上直接下载。
  • Tex环境。Windows用户安装CTEX,Linux用户安装Texlive,Mac用户安装MacTex。似乎各种版本都有精简版和完整版,建议安装完整版。

英文环境

新建一个Rmd文档,其头文件应该是以下这种格式:

---
title: "XXX"
author: "xxx"
date: "xxx"
output: html_document
---

如果你的Rmd文档是全英的,只需要把html_document改成pdf_document。Ctrl+S保存后,编译按钮会自动从Knit HTML变成Knit PDF,轻点鼠标即大功告成。

这里简单说下转换的流程是:

  1. knitr运行Rmd中的代码,生成md文件
  2. 神器Pandoc把md文件转化为tex文件
  3. Latex环境编译tex文件生产PDF

中文环境

如果Rmd文档中有中文字符,那你就呵呵了。因为在第二步md到tex的转化中,是按照预先设置的模板来的,而默认的模板中并没有设置中文字体。

如果你是Latex和Padoc的高手,折腾一下模板就能搞定了。初学者也不用紧张,已经有高手把模板封装打包了,只需安装rticles这个包即可:

devtools::install_github("rstudio/rticles")

安装完成后,新建一个Rmd文件,从模板中选择CTex Documents

可以看到,rticles还提供了其他的模板如ACMACSJournal of Statistical Software等。没错,以后要投稿这些期刊的话,你可以直接用Markdown的语法来写了!回到CTex Documents模板中来,作者已经里边阐述了各系统下Rmd到PDF的转化问题。如果你是Windows用户,轻点鼠标即可生产精致的PDF文件。如果你是Linux或者Mac用户,只能无奈的再次呵呵了。不过别急着丧气,读读模板中的内容,其中已有妙计相赠。

其他

(1)对于其他的Rmd文档,想转成PDF的话,只需要把CTex Documents模板中的头信息粘贴过去,修改其中的title和author信息即可。

---
title: "在R Markdown文档中使用中文"
author:
  - 谢益辉
  - 邱怡轩
  - 于淼
documentclass: ctexart
output:
  pdf_document:
    fig_caption: yes
    latex_engine: xelatex
    number_sections: yes
    template: !expr rticles::ctex_template()
    toc: yes
classoption: "hyperref`r if (.Platform$OS.type != 'windows') ',nofonts'`"
---

(2)按钮Knitr PDF背后所做的事是由rmarkdown包的render函数支持的,相应的代码是:

rmarkdown::render('toremove.Rmd', pdf_document())

如果有多个文档,写个脚本就能把整个流程完全自动化了。

(3)如果Markdown中包含HTML标签,输出HTML是毫无影响的。比如<img src=picture.png/>![pic](picture.png)是等价的,前者是HTML标签,后者是md语法。但是Pandoc并不能识别前者的HTML标签并转化成相应的Tex代码。所以从md到PDF的转化,不能夹杂HTML标签。