---
title:
output:
pdf_document:
latex_engine: xelatex
fontsize: 11pt
#mainfont: Calibri
classoption: letter
geometry: left=0.5in, right=0.5in, top=0.6in, bottom=1.25in
subparagraph: yes
header-includes:
- \usepackage[UTF8]{ctex}
- \usepackage{setspace}
- \usepackage{tocloft}
- \usepackage{anyfontsize}
- \usepackage{fancyhdr}
- \usepackage{fontspec}
- \usepackage{sectsty}
- \sectionfont{\huge}
- \subsectionfont{\fontsize{14}{16.8}\selectfont}
- \pagestyle{fancy}
- \renewcommand{\headrulewidth}{0pt}
---
```{r}
library(ggplot2)
print("中文")
df <- data.frame(
gp = factor(rep(letters[1:3], each = 10)),
y = rnorm(30)
)
ds <- plyr::ddply(df, "gp", plyr::summarise, mean = mean(y), sd = sd(y))
# The summary data frame ds is used to plot larger red points on top
# of the raw data. Note that we don't need to supply `data` or `mapping`
# in each layer because the defaults from ggplot() are used.
ggplot(df, aes(gp, y)) +
geom_point() +
geom_point(data = ds, aes(y = mean), colour = 'red', size = 3) +
labs(x = "中文")
```
编织该文件后,似乎print
函数的字符编码工作正常,但是汉字未显示在图形标签中,并且在字符转换时出现错误。我是Mac用户。
答案 0 :(得分:1)
TL; DR:这似乎不是knitr / rmarkdown问题,而是与字体和输出设备有关的问题。我不确定原因,但是下面的解决方法涉及更改输出字体(Batang为我工作)和输出设备(pdf
是默认设置,但更改为cairo_pdf
或{{1 }}都为我工作)。
首先,确定一个字体家族,R将为其正确渲染字符。我通常不确定如何确定是否需要反复试验,但是在过去,我发现Symbola和Batang字体通常似乎可以与非英文字符和各种unicode符号一起使用。如果没有字体,则需要在计算机上安装字体,并且可能还需要use the extrafont
package在R中注册字体。然后可以在控制台中运行绘图代码,查看是否汉字正确呈现。
使用Batang字体,我发现能够以正确显示汉字的方式将绘图输出到控制台。但是,无论是以交互方式还是在编织时将图保存为pdf,标准的png
设备都无法渲染字符。相反,我尝试了pdf
和cairo_pdf
设备,它们都起作用。以下是示例代码(使用与您的问题相同的png
):
yaml
这是输出文档中的图: