Linux 系统使用 R markdown 和 LaTeX 生成中文 PDF 的基本配置

本人工作中需要在 Linux 系统中自动化生成 PDF 报告。网上有很多介绍如何在 Windows 系统中使用 R Markdown 生成 PDF 的文章,很少有 Linux 系统下的介绍文章。因此记录下自己的一些心得体会,希望对大家有帮助。

准备工作

安装 TeX Live

建议安装 TeX Live 最新版,链接为 http://tug.org/texlive/acquire.html,既可以网络方式安装,也可以直接下载 DVD 再安装。软件安装请参考官方版快速安装教程,或查看完整版文档在线英文文档中文 PDF 下载页面,或者网上搜索安装方法。

安装 R 包 rmarkdown 和 knitr

# knitr 会自动一起安装
install.packages('rmarkdown')

配置中文字体

  • 获取字体

  • 复制到 Linux 系统的字体库(二选一)

    • /usr/share/fonts
    • ${HOME}/.fonts
  • 检查字体是否安装成功 fc-list

    $ fc-list
    # 或者使用 fc-list :lang=zh 查看中文字体
    /home/user/.fonts/AdobeFangsongStd-Regular (v5.010).otf: Adobe 仿宋 Std,Adobe Fangsong Std,Adobe Fangsong Std R,Adobe 仿宋 Std R:style=R,Regular
    /home/user/.fonts/AdobeHeitiStd-Regular.otf: Adobe 黑体 Std,Adobe Heiti Std,Adobe Heiti Std R,Adobe 黑体 Std R:style=R,Regular
    /home/user/.fonts/AdobeKaitiStd-Regular (v5.010).otf: Adobe 楷体 Std,Adobe Kaiti Std,Adobe Kaiti Std R,Adobe 楷体 Std R:style=R,Regular
    /home/user/.fonts/AdobeSongStd-Light.otf: Adobe 宋体 Std,Adobe Song Std,Adobe Song Std L,Adobe 宋体 Std L:style=L,Regular
    /home/user/.fonts/FandolBraille-Display.otf: Fandol Braille,Fandol Braille Display:style=Display,Regular
    /home/user/.fonts/FandolBraille-Regular.otf: Fandol Braille,Fandol Braille Regular:style=Regular
    /home/user/.fonts/FandolFang-Regular.otf: FandolFang,FandolFang R:style=Regular
    /home/user/.fonts/FandolHei-Bold.otf: FandolHei:style=Bold
    /home/user/.fonts/FandolHei-Regular.otf: FandolHei:style=Regular
    /home/user/.fonts/FandolKai-Regular.otf: FandolKai:style=Regular
    /home/user/.fonts/FandolSong-Bold.otf: FandolSong:style=Bold
    /home/user/.fonts/FandolSong-Regular.otf: FandolSong:style=Regular
    /home/user/.fonts/msyh.ttf: 微软雅黑,Microsoft YaHei:style=Regular,Normal,obyčejné,Standard,Κανονικά,Normaali,Normál,Normale,Standaard,Normalny,Обычный,Normálne,Navadno,Arrunta
    /home/user/.fonts/timesbd.ttf: Times New Roman:style=Bold,Negreta,tučné,fed,Fett,Έντονα,Negrita,Lihavoitu,Gras,Félkövér,Grassetto,Vet,Halvfet,Pogrubiona,Negrito,Полужирный,Fet,Kalın,Krepko,đậm,Lodia
    /home/user/.fonts/timesbi.ttf: Times New Roman:style=Bold Italic,Negreta cursiva,tučné kurzíva,fed kursiv,Fett Kursiv,Έντονα Πλάγια,Negrita Cursiva,Lihavoitu Kursivoi,Gras Italique,Félkövér dőlt,Grassetto Corsivo,Vet Cursief,Halvfet Kursiv,Pogrubiona kursywa,Negrito Itálico,Полужирный Курсив,Tučná kurzíva,Fet Kursiv,Kalın İtalik,Krepko poševno,nghiêng đậm,Lodi etzana
    /home/user/.fonts/timesi.ttf: Times New Roman:style=Italic,cursiva,kurzíva,kursiv,Πλάγια,Kursivoitu,Italique,Dőlt,Corsivo,Cursief,kursywa,Itálico,Курсив,İtalik,Poševno,nghiêng,Etzana
    /home/user/.fonts/times.ttf: Times New Roman:style=Regular,Normal,obyčejné,Standard,Κανονικά,Normaali,Normál,Normale,Standaard,Normalny,Обычный,Normálne,Navadno,thường,Arrunta

生成 PDF

  1. 打开编辑器,输入以下 R Markdown 代码,以 UTF-8 编码保存为文件 test_pdf_zh.Rmd。注意其中的 latex_engine: xelatex 用于设置 LaTeX 的引擎。更多 R Markdown 的用法请参考 https://rmarkdown.rstudio.com/

    ---
    title: "R markdown 生成 pdf"
    output: 
      pdf_document:
        includes:
          in_header: header.tex
        latex_engine: xelatex
    ---
    
    # R Markdown
    
    Context
    
    # 中文标题
    
    中文内容
  2. 准备 header.tex,同样文件以 UTF-8 编码,与test_pdf_zh.Rmd 文件放置在同一目录。该文件设置中文环境 ctex,也可以自定义中英文字体。% 后的内容为注释。

    A、 使用默认的 Fandol 字体

    \usepackage[UTF8, fontset = fandol]{ctex}

    B、使用 adobe 字体

    \usepackage[UTF8, fontset = adobe]{ctex}

    C、自定义字体

    \usepackage[UTF8]{ctex}
    \setmainfont{Times New Roman}     % 设置英文字体
    \setCJKmainfont{Microsoft YaHei}  % 设置中文字体
  3. 启动 R,生成 pdf

    library(rmarkdown)
    render('test_pdf_zh.Rmd')
  4. 查看结果文件 test_pdf_zh.pdf
    在这里插入图片描述