use*_*808 2 unicode r knitr r-markdown
是否有一套在knitr和Rmarkdown中使用Unicode的最佳实践或文档?在编织文档时,我似乎无法正确显示任何字形.
例如,这适用于控制台(在Rstudio中):
> cat("\U2660 \U2665 \U2666 \U2663")
? ? ? ?
Run Code Online (Sandbox Code Playgroud)
但是在编织时,我得到了这个:
(云服务对我来说是阻止的,因此我无法将图像直接上传到SO).
它看起来像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上写出的多字节字符- 这取决于字符是否可以由系统的本机编码表示.
对于在 Rstudio/Rmarkdown 文档中尝试获得表情符号支持后遇到此问题的任何其他人,另一个可能的问题是,如果文件编码未设置为 UTF-8,则生成的编译文档也不支持表情符号。
为了让表情符号在 Rmarkdown 中工作,您必须更改 Rmd 文档的文件编码。转到文件 -> 使用编码重新打开,然后选择 UTF-8。
确保文件以 UTF-8 编码打开后,您应该能够使用表情符号支持进行编译。
您甚至应该能够将表情符号从浏览器直接粘贴到文档中。
将所有文件的默认编码更改为 UTF-8 可能是一个好主意,这样您就不必再次处理此问题。
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)
这里还有一些例子
| 归档时间: |
|
| 查看次数: |
2954 次 |
| 最近记录: |