要生成一个动态报告,我一般会首选html报告(网页版报告),其交互性以及页面更加丰富点;但是如果是要一份正规的报告,那么一般会选PDF报告
在前面一篇博文R Markdown学习中提到过,如果你是用RStudio来生成报告的话,还除了pandoc外(因为RStudio自带),还需要安装miktex(windows),因为这是基于latex的 对于要在PDF中显示中文(中文LaTeX排版)的话,建议安装CTEX,下载地址:http://www.ctex.org/CTeXDownload;这里点需要注意下,网上有些建议安装basic版就够了,其实我还是建议安装完整版,不然后续一些模板需要一些latex包时,又要需要再安装,那样就有点麻烦了(主要是我不怎么懂latex,更不会安装latex包啦~~)
pandoc的下载地址:http://pandoc.org/installing.html
安装好上述,你在RStudio中按照流程新建一个pdf的rmarkdon就可以开始时会用了,YAML如下图所示:
---
title: "aaa"
output:
pdf_document:
keep_tex: yes
latex_engine: xelatex
---
latex_engine设置引擎:建议用xelatex,默认是pdflatex
如果你是写英文报告,那么以上步骤就足够了
But,如果像我一样需要写中文的报告,那么你会发现以上步骤根本识别不了中文(latex对中文不太友好)。。。查了资料遇了几次坑,总结下如何用rmarkdown写中文pdf报告
实现的pdf中输出中文,主要靠的是latex的xeCJK包,那么可以选择在YAML上加上命令调用这个包,如下:
---
title: "中文"
CJKmainfont: Microsoft YaHei
output:
pdf_document:
includes:
header-includes:
- \usepackage{xeCJK}
keep_tex: yes
latex_engine: xelatex
---
记得一定要用CJKmainfont设定好字体,不然还是无法显示中文的(显示空白),这坑查了好久才发现!!!
或者用in_header: header.tex
来调用xeCJK包以及CJKmainfont,你可以在header.tex(放在R运行的当前目录下)写入latex的一些语法,如写入:
\usepackage{xeCJK}
\setCJKmainfont{Microsoft YaHei}
然后在rmarkdown中的YAML改为:
---
title: "中文"
output:
CJKmainfont: Microsoft YaHei
pdf_document:
includes:
in_header: header.tex
keep_tex: yes
latex_engine: xelatex
word_document: default
---
如果上述能成功运行并且未报错,那么就能在pdf报告中显示中文了;没成功的话(比如我。。。),那么再试试谢益辉大神写的rmarkdown的模板包rticles
,里面的CTeX Document就是写好支持中文pdf的模板,怎么使用的话这里不细说了,参照这个文章https://github.com/rstudio/rticles和https://github.com/rstudio/rticles/blob/master/inst/rmarkdown/templates/ctex/skeleton/skeleton.Rmd即可
但是,通过以上方法,我还是没有成功,报错都是跟letax相关的(也就是之前装的CTEX),我查了网上相关资料,在谢益辉的建议下,决定使用其开发的TinyTeX包,是一个瘦身版的TeX Live,能很好的兼容rmarkdown,并且最新的rmarkdown默认会调用TinyTeX
怎么使用TinyTeX呢,按照中文说明文档来就行TinyTeX 中文文档,非常简单,但记得把你LaTeX套件(也就是提到的CTEX/miktex)删除掉
主要是TinyTeX能让你以R包的方式来维护你的LaTeX包,缺啥补啥,非常方便!
我将我的LaTeX套件替换成TinyTeX后,再次使用上述的几种方法来实现pdf中文,均成功无报错信息,看样子之前均是LaTeX套件的问题。。。
简单总结下就是,如果想用rmarkdown来写中文版的pdf报告,那么有以下两种方法:
- 安装LaTeX套件(CTEX/miktex),YAML中写入latex的一些设置
- 使用rticles包中的CTeX模板+TinyTeX = 全R包解决方案
如果你是遇到图片中的中文无法正常显示的话,可以考虑用showtext包(但我没试过,因为现在很少会在报告中的图片中添加中文了。。特别是我们这方面的)
以上是我解决PDF中文显示的一些解决方案以及过程,均整理自网上资料,如下面这些可供参考:
rmarkdown转化中文字符为PDF的设置
showtext package integration
RStudio 中Knitr 输出中文的问题
Rmarkdown安装配置、输出PDF正文中文以及图片中文配置
Rmarkdown中文实现
本文出自于http://www.bioinfo-scrounger.com转载请注明出处