Unicode与knitr和Rmarkdown

use*_*808 2 unicode r knitr r-markdown

是否有一套在knitr和Rmarkdown中使用Unicode的最佳实践或文档?在编织文档时,我似乎无法正确显示任何字形.

例如,这适用于控制台(在Rstudio中):

> cat("\U2660   \U2665  \U2666  \U2663")
?   ?   ?   ?
Run Code Online (Sandbox Code Playgroud)

但是在编织时,我得到了这个:

(云服务对我来说是阻止的,因此我无法将图像直接上传到SO).

Yih*_*Xie 7

它看起来像Windows特有的编码问题,可能与此问题有关:https://github.com/hadley/evaluate/issues/59不幸的是我们必须等待基础R中的修复,但如果你不必须使用cat(),这个表达式是你的代码块中的顶级表达式(例如,不在for循环或if语句中),我想这可能有效:

knitr::asis_output("\U2660   \U2665  \U2666  \U2663")
Run Code Online (Sandbox Code Playgroud)

它将字符串直接传递给knitr和绕过cat(),因为knitr无法可靠地捕获cat()在Windows上写出的多字节字符- 这取决于字符是否可以由系统的本机编码表示.


srv*_*las 7

对于在 Rstudio/Rmarkdown 文档中尝试获得表情符号支持后遇到此问题的任何其他人,另一个可能的问题是,如果文件编码未设置为 UTF-8,则生成的编译文档也不支持表情符号。

为了让表情符号在 Rmarkdown 中工作,您必须更改 Rmd 文档的文件编码。转到文件 -> 使用编码重新打开,然后选择 UTF-8。

确保文件以 UTF-8 编码打开后,您应该能够使用表情符号支持进行编译。

您甚至应该能够将表情符号从浏览器直接粘贴到文档中。

将所有文件的默认编码更改为 UTF-8 可能是一个好主意,这样您就不必再次处理此问题。


use*_*745 5

统一码:内联

Phew, that was close `r knitr::asis_output("\U1F605  \U2660   \U2665  \U2666  \U2663")` 
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

统一码:块

```{r, echo=FALSE} 
knitr::asis_output("Phew, that was close \U1F605  \U2660   \U2665  \U2666  \U2663")
```
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

情绪包

不幸的是,这个包还没有在 CRAN 上,但是可以通过以下方式安装:devtools::install_github("hadley/emo")

emo::ji("face")
Run Code Online (Sandbox Code Playgroud)

这里还有一些例子