带有 knitr 和 Rmarkdown 的 Unicode
Posted
技术标签:
【中文标题】带有 knitr 和 Rmarkdown 的 Unicode【英文标题】:Unicode with knitr and Rmarkdown 【发布时间】:2021-12-13 18:37:10 【问题描述】:是否有一套在 knitr 和 Rmarkdown 中使用 Unicode 的最佳实践或文档?编织文档时,我似乎无法正确显示任何字形。
例如,这适用于控制台(在 Rstudio 中):
> cat("\U2660 \U2665 \U2666 \U2663")
♠ ♥ ♦ ♣
但是在编织时我得到了这个:
html 字【问题讨论】:
sessionInfo()
请。
【参考方案1】:
这看起来像是一个特定于 Windows 的编码问题,并且可能与此问题有关:https://github.com/hadley/evaluate/issues/59 不幸的是,我们必须等待基础 R 中的修复,但如果您不必使用 cat()
,并且此表达式是代码块中的 *** 表达式(例如,不在 for 循环或 if 语句内),我想这可能有效:
knitr::asis_output("\U2660 \U2665 \U2666 \U2663")
它将字符串直接传递给 knitr 并绕过 cat()
,因为 knitr 在 Windows 上无法可靠地捕获 cat()
写出的多字节字符——这取决于关于字符是否可以用系统的本机编码表示。
【讨论】:
【参考方案2】:对于尝试在 Rstudio/Rmarkdown 文档中获得表情符号支持后遇到此问题的其他人,另一个可能的问题是,如果文件编码未设置为 UTF-8,则生成的编译文档也不支持表情符号.
为了让表情符号在 Rmarkdown 中工作,您必须 change the file encoding of the Rmd document。转到文件 -> 使用编码重新打开,然后选择 UTF-8。
确保文件以 UTF-8 编码打开后,您应该能够使用表情符号支持进行编译。
您甚至应该能够将浏览器中的表情符号直接粘贴到文档中。 ?
将所有文件的默认编码更改为 UTF-8 可能是个好主意,这样您就不必再处理这个问题了。
【讨论】:
【参考方案3】:Unicode:内联
Phew, that was close `r knitr::asis_output("\U1F605 \U2660 \U2665 \U2666 \U2663")`
Unicode:块
```r, echo=FALSE
knitr::asis_output("Phew, that was close \U1F605 \U2660 \U2665 \U2666 \U2663")
```
emo 包
很遗憾,这个包还没有在 CRAN 上,但是可以用 devtools::install_github("hadley/emo")
安装
emo::ji("face")
还有一些例子here
【讨论】:
以上是关于带有 knitr 和 Rmarkdown 的 Unicode的主要内容,如果未能解决你的问题,请参考以下文章
可以在交互式 rmarkdown 文档中使用 knitr 缓存块吗?
如何在带有`knitr::kable`的表格*上方添加标题?
R Markdown、Knitr、Pandoc和Bookdown之间的关系
使用 knitr、Rmarkdown 和 pandoc 创建 HTML 幻灯片