使用R,Sweave和knitr在动态报告中使用的图中的Unicode字符

Woj*_*chF 4 unicode r ggplot2 rstudio knitr

我在使用knitr在Sweave中使用R studio生成的LaTeX报告中正确显示由ggplot2生成的图中的字体时出现问题.

起初我无法使用波兰字体正确生成pdf,但是在这篇文章中解决了这个问题:

ggplot2 PDF输出中的Unicode字符

简而言之,作者建议使用Cairo包(在R中)使用ggplot2生成图.

这对我有用 - 一次 - >意味着我能够生成一个带有波兰字符的情节,但是当我尝试在sweave文档中使用它来使用这样的knitr生成LaTeX报告时:

<<pieniadze_graph,fig=TRUE,echo=FALSE>>=
library(Cairo)
cairo_pdf("TutorialExercisesPart2-pieniadze_graph.pdf")  
plot1 <- qplot(expenditure, data = cas) + xlim(0, 8000) + 
    xlab(expression(paste("Pieni?dze wydane na ucznia ($)"))) +
    ylab("Liczba szkó??????")
print(plot1)
@ 
Run Code Online (Sandbox Code Playgroud)

我收到一个错误:

Running pdflatex on TutorialExercisesPart2.tex...failed
Run Code Online (Sandbox Code Playgroud)

在调查发生的同时 - >我发现cairo生成的文件是空白的(有一个给cairo_pdf命名的pdf文件但是无法用pdf查看器打开 - >错误无法打开文本文件)

现在需要注意一点:cairo_pdf函数需要设置文件名.所以我给pdf一个名字,需要稍后由tex文件使用,格式为filename-chunk_name.pdf(动态报告非常多:P)

所以我不是cairo_pdf选项.有没有办法在没有cairo_pdf选项的情况下生成正确的pdf文件?

没有cairo-pdf,我无法在这个主题上找到更多...

当我删除cairo部分时,我的tex文件很好地生成了一个丑陋的点标签PDF文件...

这是生成的报告中的ććźżñół字母的样子

以下是从Rstudio直接导出到png的绘图的样子

Ros*_*tev 6

您应该指示knitr使用该设备,而不是像调用cairo_pdf()那样打开设备.看一下knitr选项和特别是"dev".总之,你需要

<<pieniadze_graph,fig=TRUE,echo=FALSE,dev='cairo_pdf'>>=
...
Run Code Online (Sandbox Code Playgroud)

或者使其成为所有块的默认值

opts_chunk$set(dev='cairo_pdf')
Run Code Online (Sandbox Code Playgroud)