首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Sweave不打印本地化字符

Sweave不打印本地化字符
EN

Stack Overflow用户
提问于 2010-08-08 12:47:56
回答 1查看 1.2K关注 0票数 6

我试图通过Sweave将R中的一些情节合并到我的LaTeX文档中。

代码语言:javascript
复制
\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设备使用本机编码(在options("encoding")中设置),它不识别xlab中的本地字符(ščćž) (用两个点替换它们)。

我尝试将选项设置为在R中起作用的东西:

代码语言:javascript
复制
options("encoding" = "CP1250.enc")

但我发现了一个错误:

代码语言:javascript
复制
Error in file() : unsupported conversion from 'CP1250.enc' to ''

有什么解决办法吗?

编辑

运行aL3xa的Rnw

代码语言:javascript
复制
R CMD Sweave report.Rnw

不起作用。

通过Eclipse+StatET运行相同的文件

代码语言:javascript
复制
Sweave("report.Rnw")

然而,确实如此。

我的.Rnw文件和一个.pdf

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-08-08 15:36:16

这件事并不像看上去那么简单。从技术上讲,这个问题是OS/locale/pdf编写器/Sweave依赖的(参见"R安装和管理“,第7章)。由于我运行的是GNU/Linux,这个“解决方案”不是针对Mac和Windows用户的。为了让事情变得更复杂,GNU/Linux发行版有所不同,所以如果某些东西在Arch Linux上不起作用,比如Ubuntu,就有很大的可能。

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

代码语言:javascript
复制
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“相当于散点图)

现在,我收到了一大堆警告:

代码语言:javascript
复制
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文件中的某个位置插入这部分代码:

代码语言:javascript
复制
<<setOptions, echo = FALSE, results = hide>>==
pdf.options(encoding = "CP1250")
@

稍后,就这样做:

代码语言:javascript
复制
<<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,这是一个很大的机会,但就目前而言,我似乎无法让它活跃起来。

为了保存击键,您可以下载浪文件和/或PDF文件 (在Arch机器上执行)。如您所见,本地化字符在绘图函数中正确显示,但在Sweave中被混淆。现在,如果我试图将图形保存到PDF文件(没有甜味),我就会得到正确输出

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

请在您的机器上运行.Rnw文件,并给我一些反馈。为了方便起见,我创建了一个Rscript来收集您的系统信息(而不是个人信息),我在本例中找到了这些信息:这里是来源,这是我的输出

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3434349

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档