knitr 文档中 ggplot 中的非英文字符
Non English characters in ggplot within a knitr document
我正在尝试在 RStudio 中从 .Rmd 文件编织一个包含立陶宛语字符(如 ąčęėįšųž)的文件。虽然编织到 html 工作正常并且 ggplot
标题有立陶宛字符,当编织到 pdf 时 ggplot
确实会产生警告并消除这些字符。
可重现的例子:
---
title: "Untitled"
output:
pdf_document:
includes:
in_header: header_lt_text.txt
---
```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
library(ggplot2)
```
## Lithuanian char: ĄČĘĖĮŠŲŪžąčęėįšųūž
```{r}
ggplot(iris, aes(Sepal.Length, Sepal.Width))+
geom_point(aes(col=Species))+
labs(title="Lithuanian char: ĄČĘĖĮŠŲŪžąčęėįšųūž")
```
我通过 header_lt_text.txt
参数如下:
\usepackage[utf8]{inputenc}
\usepackage[L7x]{fontenc}
\usepackage[lithuanian]{babel}
\usepackage{setspace}
\onehalfspacing
关于如何ggplot
创建正确的标签有什么建议吗?
问题出在 pdf
设备上,只有在将图片另存为 pdf 格式时才会出现(您需要这样,因为它看起来好多了)。这就是为什么它在某些情况下看起来 "work" 的原因:图像不是呈现为 pdf,而是例如作为png。感谢@Konrad 正确识别问题的根源。
要解决这个问题,您需要将正确的编码传递给 pdf
设备。
幸运的是,pdf 设备 (?pdf
) 采用 encoding
参数和 there is a chunk option 将参数传递给设备:dev.args
在 Windows 上,适当的编码是 CP1257.enc
(波罗的海):
```{r dev="pdf", dev.args=list(encoding="CP1257.enc")}
ggplot(iris, aes(Sepal.Length, Sepal.Width))+
geom_point(aes(col=Species))+
labs(title="Lithuanian char: ĄČĘĖĮŠŲŪžąčęėįšųūž")
```
您可以看到开箱即用的其他编码:list.files(system.file("enc", package = "grDevices"))
在我的 linux 机器上运行良好:
或者,如果您愿意在 pdf 中插入 png 图像,您可以简单地在块选项中使用 dev="png"
。虽然看起来不太好。
我正在尝试在 RStudio 中从 .Rmd 文件编织一个包含立陶宛语字符(如 ąčęėįšųž)的文件。虽然编织到 html 工作正常并且 ggplot
标题有立陶宛字符,当编织到 pdf 时 ggplot
确实会产生警告并消除这些字符。
可重现的例子:
---
title: "Untitled"
output:
pdf_document:
includes:
in_header: header_lt_text.txt
---
```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
library(ggplot2)
```
## Lithuanian char: ĄČĘĖĮŠŲŪžąčęėįšųūž
```{r}
ggplot(iris, aes(Sepal.Length, Sepal.Width))+
geom_point(aes(col=Species))+
labs(title="Lithuanian char: ĄČĘĖĮŠŲŪžąčęėįšųūž")
```
我通过 header_lt_text.txt
参数如下:
\usepackage[utf8]{inputenc}
\usepackage[L7x]{fontenc}
\usepackage[lithuanian]{babel}
\usepackage{setspace}
\onehalfspacing
关于如何ggplot
创建正确的标签有什么建议吗?
问题出在 pdf
设备上,只有在将图片另存为 pdf 格式时才会出现(您需要这样,因为它看起来好多了)。这就是为什么它在某些情况下看起来 "work" 的原因:图像不是呈现为 pdf,而是例如作为png。感谢@Konrad 正确识别问题的根源。
要解决这个问题,您需要将正确的编码传递给 pdf
设备。
幸运的是,pdf 设备 (?pdf
) 采用 encoding
参数和 there is a chunk option 将参数传递给设备:dev.args
在 Windows 上,适当的编码是 CP1257.enc
(波罗的海):
```{r dev="pdf", dev.args=list(encoding="CP1257.enc")}
ggplot(iris, aes(Sepal.Length, Sepal.Width))+
geom_point(aes(col=Species))+
labs(title="Lithuanian char: ĄČĘĖĮŠŲŪžąčęėįšųūž")
```
您可以看到开箱即用的其他编码:list.files(system.file("enc", package = "grDevices"))
在我的 linux 机器上运行良好:
或者,如果您愿意在 pdf 中插入 png 图像,您可以简单地在块选项中使用 dev="png"
。虽然看起来不太好。