是否有一套在knitr和Rmarkdown中使用Unicode的最佳实践或文档?在编织文档时,我似乎无法正确显示任何字形。
例如,这适用于控制台(在Rstudio中):
> cat("\U2660 \U2665 \U2666 \U2663")
♠ ♥ ♦ ♣
但是在编织的时候我得到了这个:
(我禁止使用云服务,因此无法将图片直接上传到SO)。
答案 0 :(得分:7)
它看起来像Windows特有的编码问题,可能与此问题有关:https://github.com/hadley/evaluate/issues/59不幸的是我们必须等待基础R中的修复,但如果您不必使用{{1这个表达式是你的代码块中的顶级表达式(例如,不在for循环或if语句中),我猜这可能有用:
cat()
它将字符串直接传递给 knitr 并绕过knitr::asis_output("\U2660 \U2665 \U2666 \U2663")
,因为 knitr 无法可靠地捕获cat()
在Windows上写出的多字节字符 - 这取决于字符是否可以由系统的本机编码表示。
答案 1 :(得分:3)
内联:
Phew, that was close `r knitr::asis_output("\U1F605 \U2660 \U2665 \U2666 \U2663")`
阻止:
```{r, echo=FALSE}
knitr::asis_output("Phew, that was close \U1F605 \U2660 \U2665 \U2666 \U2663")
```
答案 2 :(得分:2)
对于试图在Rstudio / Rmarkdown文档中获得表情符号支持后遇到此问题的其他人,另一个可能的问题是,如果文件编码未设置为UTF-8,则生成的编译文档也不支持表情符号。
要使表情符号在Rmarkdown中起作用,您必须change the file encoding of the Rmd document。转到文件->使用编码重新打开,然后选择UTF-8。
一旦确保以UTF-8编码打开文件,就应该能够使用表情符号支持进行编译。
您甚至应该甚至可以将浏览器中的表情符号直接粘贴到文档中。
将所有文件的默认编码更改为UTF-8可能是个好主意,这样您就不必再次处理此问题。