将电脑里的Rsudio升级,发现最新的rmarkdown包支持pandoc,顿觉会有很牛气的功能。

果然新建Rmd文档,弹出选择框,可以指定是knitr成Html、PDF或者Word文档。当然也可以自行在文件头进行设置。于是将最近计算精馏塔理论塔板数的R脚本文件编写成Rmd,试着生成计算报告。结果发现Html和Word格式文档都可以顺利生成,而PDF格式中无法显示汉字,想想肯定又是LaTeX天生对中文支持不好的影响。

作为一个菜鸟,这问题自己当然无法解决。好在使用汉字的人里是有很多大牛的,比如knitr的作者yihui,比如showtext的作者yixuan。即使强大的谷歌被封,单位里也懒得科学上网,可度娘还是能够找到他们。

总结下解决办法:

  1. 我用的是Rstudio,其他R环境调用Rmarkdown不清楚是否凑效。

  2. 安装showtext包。

  3. 图片中显示汉字的设置如下示例(示例来源点击这里)。用showtext.begin()和showtext.end()将含有汉字的图片生成代码括起来就行。

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    
    ---
    title: "test"
    author: "yufree"
    output:
    	pdf_document:
    		keep_tex: yes
    			latex_engine: xelatex
    html_document: default
    word_document: default
    ---
    
    中英文混合
    
    This is an R Markdown document. 
    
    ```{r}
    library(showtext)
    showtext.begin()
    plot(cars,main='中文issue')
    plot(cars,main='中文issue2')
    showtext.end()
    ```
    
  4. 正文中汉字的显示。将如下代码放在header.tex中。

    1
    2
    
    \usepackage{xeCJK}  
    \setCJKmainfont{simsun.ttc}  % 字体可以更换
    

    注意windows下header.tex和编辑的Rmd文件都一定要保存成UTF-8格式编码,否则后面编译PDF通不过。将其放在与编辑的Rmd文档同一个文件夹下,然后用includes字段把它插入模板中,用xelatex作为生成PDF的引擎。如下:

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    
    ---
    title: "test"
    author: "yufree"
    output:
    	pdf_document:
    		keep_tex: yes
    		latex_engine: xelatex
            includes:
      			in_header: header.tex
    html_document: default
    word_document: default
    ---
    
  5. 点击knitr,生成PDF,大功告成。示例效果如下: 1 2