gpt4 book ai didi

pdf - Sweave 不打印本地化字符

转载 作者:行者123 更新时间:2023-12-04 14:07:50 25 4
gpt4 key购买 nike

我正在尝试通过 Sweave 在我的 LaTeX 文档中加入一些来自 R 的图。

\SweaveOpts{eps = FALSE, pdf = TRUE, echo = FALSE, prefix = TRUE, prefix.string = data}

<<label = abundanca:barplot, fig = TRUE, include = FALSE, results = hide>>=
barplot(abund, xlab="Vzorčne postaje", ylab="Abundanca", main="", col="slategrey", names.arg=c("HM1", "HM2", "HM3", "HM4", "HM5", "HM6", "HM7", "HM8", "HM9", "HM10"))
@

Sweave 中的 pdf 设备使用 native 编码(如在 options("encoding") 中设置),它无法识别 xlab 中的本地字符 (ščćž)(用两个点替换它们)。

我尝试将选项设置为在 R 中有效的选项:
options("encoding" = "CP1250.enc")

但我收到一个错误:
Error in file() : unsupported conversion from 'CP1250.enc' to ''

任何解决方案,解决方法......?

编辑

通过运行 aL3xa 的 Rnw
R CMD Sweave report.Rnw

不起作用。

通过 Eclipse+StatET 运行相同的文件
Sweave("report.Rnw")

然而,确实如此。

我的 .Rnw文件和 .pdf .

最佳答案

这并不像看起来那么简单。从技术上讲,此问题与 OS/locale/pdf writer/Sweave 相关(请参阅“R 安装和管理”,第 7 章)。因为我运行的是 GNU/Linux,所以这个“解决方案”不是针对 Mac 和 Windows 用户的。只是为了让事情变得更复杂一点,GNU/Linux 发行版有所不同,因此很有可能如果某些东西在 Ubuntu 上运行,则在 Arch Linux 上不起作用。

我将使用 mtcars数据集。让我们创建一些带有本地化字符的基本图形:

pdf("foo.pdf")
boxplot(mpg ~ cyl, data = mtcars, ylab = "Potrošnja goriva", xlab = "Broj cilindara", main = "Dijagram raspršenja")
dev.off()

(塞尔维亚语速成类:“Potrošnja goriva”代表油耗,“Broj cilindara”代表气缸数,“Dijagram raspršenja”相当于散点图)

现在,我收到一堆警告:
Warning messages:
1: In title(ylab = "Potrošnja goriva", xlab = "Broj cilindara", main = "Dijagram raspršenja") :
conversion failure on 'Dijagram raspršenja' in 'mbcsToSbcs': dot substituted for <c5>
2: In title(ylab = "Potrošnja goriva", xlab = "Broj cilindara", main = "Dijagram raspršenja") :
conversion failure on 'Dijagram raspršenja' in 'mbcsToSbcs': dot substituted for <a1>
3: In title(ylab = "Potrošnja goriva", xlab = "Broj cilindara", main = "Dijagram raspršenja") :
conversion failure on 'Dijagram raspršenja' in 'mbcsToSbcs': dot substituted for <c5>
4: In title(ylab = "Potrošnja goriva", xlab = "Broj cilindara", main = "Dijagram raspršenja") :
conversion failure on 'Dijagram raspršenja' in 'mbcsToSbcs': dot substituted for <a1>
5: In title(ylab = "Potrošnja goriva", xlab = "Broj cilindara", main = "Dijagram raspršenja") :
conversion failure on 'Potrošnja goriva' in 'mbcsToSbcs': dot substituted for <c5>
6: In title(ylab = "Potrošnja goriva", xlab = "Broj cilindara", main = "Dijagram raspršenja") :
conversion failure on 'Potrošnja goriva' in 'mbcsToSbcs': dot substituted for <a1>
7: In title(ylab = "Potrošnja goriva", xlab = "Broj cilindara", main = "Dijagram raspršenja") :
conversion failure on 'Potrošnja goriva' in 'mbcsToSbcs': dot substituted for <c5>
8: In title(ylab = "Potrošnja goriva", xlab = "Broj cilindara", main = "Dijagram raspršenja") :
conversion failure on 'Potrošnja goriva' in 'mbcsToSbcs': dot substituted for <a1>

虽然 options(encoding = "CP1250")没有用 - 我收到相同的警告, pdf.options(encoding = "CP1250")修复它,同样代表 pdf(file = "foo.pdf", encoding = "CP1250") .所以,我会用 options(encoding = "native.enc") 取回我的旧编码, 设置 pdf.options如前所述,把事情做好。

一些用户只需设置 pdf.options 就可以逃脱,并且使用 Sweave 不会有任何问题。因此,在开始绘图之前,您应该在 .Rnw 文件中的某处插入这部分代码:
<<setOptions, echo = FALSE, results = hide>>==
pdf.options(encoding = "CP1250")
@

稍后,只需执行以下操作:
<<plotTheFigure, echo = TRUE, fig = TRUE>>==
# I've set echo to TRUE intentionally, to prove my point here
boxplot(mpg ~ cyl, data = mtcars, ylab = "Potrošnja goriva", xlab = "Broj cilindara", main = "Dijagram raspršenja")
@

同样的场景代表 ggplot2 图。

你们中的一些人会得到正确的输出,但我不会!正如我之前所说,如果您正在运行 Ubuntu,那么这很有可能会奏效,但就目前而言,我似乎无法让它活跃起来并在 Arch 中发挥作用。

为了保存您的击键,您可以下载 Sweave file ,和/或 PDF file (在 Arch 机器上执行)。如您所见,本地化字符在 plot 函数中正确显示,但在 Sweave 中出现乱码。现在,如果我尝试将图形保存为 PDF 文件(不使用 Sweaving),我会得到 correct output .

所以,我已经解决了一些问题,但还有很多试错工作要做。

请在您的机器上运行 .Rnw 文件,并给我一些反馈。为了让事情变得简单,我创建了 Rscript 来收集我认为在这种情况下相关的系统信息(不是个人信息):这里是 source ,这是我的 output .

关于pdf - Sweave 不打印本地化字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3434349/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com