RMarkdown PDF输出

时间:2016-08-29 12:21:41

标签: r utf-8 latex knitr r-markdown

我正在尝试将一些课程笔记放在一起作为PDF格式,并且无法正常显示某些Unicode字符。

使用xelatex乳胶引擎对于要渲染的文档是必要的(使用默认引擎会因无法识别的字符而导致错误),但是,只有第一个Unicode字符(大写增量)是显示得当。

例如,使用rmarkdown render()函数呈现以下.Rmd文件时:

---
output:
  pdf_document:
    latex_engine: xelatex
---

- works - Δ
- doesn't work - ⌘

生成的PDF仅显示第一个unicode字符(大写三角形),而不是后一个(循环方形)。

enter image description here

我知道有different character subsets组成了完整的UTF-8字符编码,因此似乎只支持更基本的子集。

为了确定,我使用iconv -f UTF-8 your_file -o /dev/null [1]检查了文件的编码,它确实看起来是一个有效的UTF-8文档。

最后,使用默认选项将文档呈现为HTML,因此问题特定于PDF输出。

如何将第二个角色渲染为PDF?

系统信息

  • Linux 64位
  • R 3.3.1
  • rmarkdown 1.0
  • pandoc 1.17.2
  • XeTeX 3.14159265-2.6-0.99996
  • 区域设置:en_US.UTF-8

1 个答案:

答案 0 :(得分:6)

问题可能是默认字体没有该字符。您需要找到拥有它的字体。在Linux上,fc-list列出了计算机上可用的字体。选择一个并将其添加到您的yaml前端:

---
output:
  pdf_document:
    latex_engine: xelatex
mainfont: FreeMono
---

- works - Δ
- doesn't work - ⌘

在这里,我使用FreeMono,这是我发现的第一个具有⌘字符的人,但可能还有一个更好的。