对于用惯了Word的来说,Latex大概是一个噩梦,好在能用惯Word的人并不多。各位观众应该都或多或少的见过各种Word排版技巧充斥在朋友圈,人人网,QQ空间等。跟Latex的命令一样,让人看了就头疼。
如果你会用Knitr,那就一定也会用Markdown(二者都不会的看官请移步这里)。Markdown是HTML的简化,语法简洁,十分钟就能学完。只是Knitr初出之时,Markdown也就只能转成HTML而已。如今Knitr已3岁有余,从Markdown到PDF的转化也很成熟了。话不多说,让我们直奔主题。
预先安装
- 最新版本的Rstudio(已经内置的Pandoc工具,没听说过这个工具也没关系,装上最新版的Rstudio就是了)。
- R包:
knitr
,rmarkdown
,均可从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
,轻点鼠标即大功告成。
这里简单说下转换的流程是:
- knitr运行Rmd中的代码,生成md文件
- 神器Pandoc把md文件转化为tex文件
- Latex环境编译tex文件生产PDF
中文环境
如果Rmd文档中有中文字符,那你就呵呵了。因为在第二步md到tex的转化中,是按照预先设置的模板来的,而默认的模板中并没有设置中文字体。
如果你是Latex和Padoc的高手,折腾一下模板就能搞定了。初学者也不用紧张,已经有高手把模板封装打包了,只需安装rticles
这个包即可:
devtools::install_github("rstudio/rticles")
安装完成后,新建一个Rmd文件,从模板中选择CTex Documents
:
可以看到,rticles
还提供了其他的模板如ACM
,ACS
和Journal 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标签。