1. 程式人生 > >Linux 系統使用 R markdown 和 LaTeX 生成中文 PDF 的基本配置

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

本人工作中需要在 Linux 系統中自動化生成 PDF 報告。網上有很多介紹如何在 Windows 系統中使用 R Markdown 生成 PDF 的文章,很少有 Linux 系統下的介紹文章。因此記錄下自己的一些心得體會,希望對大家有幫助。

準備工作

安裝 TeX Live

安裝 R 包 rmarkdown 和 knitr

# knitr 會自動一起安裝
install.packages('rmarkdown')

配置中文字型

  • 獲取字型

    • 從 Windows 字型庫複製字型 C:\Windows\Fonts
  • 複製到 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 在這裡插入圖片描述