在knitr R-figure片段中获取Unicode字符

目前,我正在使用“无原则”(机会主义)方式使我的无花果正确地获得Unicode字符.例如:

<<ClassFig>>=
pdf('figs/figA.pdf', h=6, w=6, encoding='CP1250')
plot(x, y, xlab='rečenica')
dev.off()
@

现在,我想知道如何正确地指定片段(或全局设置,如opts_chunk $set())以查看我需要的Uncode字符.例如:

<<ParadigmFig, fig.height=7, fig.width=15, out.width='1\\textwidth'>>=
plot(x, y, xlab='rečenica')
@

目前,如果我使用第二个,正确的变体,我得到点而不是规格.字符.

最佳答案 尝试用cairo_pdf()生成这个数字.

cairo_pdf('test.pdf', family="Helvetica")
plot(1:10, (1:10)^2, xlab=enc2utf8("ąśćźół"))
dev.off()

将字体系列更改为其中一个知道区域字符(我上面使用的是波兰字母)可能很重要.对于OS X,this list可能会提供有关字体系列选择的提示.

现在让我们设置knitr来使用这些设置.在文档的开头创建一个未缓存的代码块,并调用:

library("knitr")
library("tikzDevice")
opts_chunk$set(
   dev='cairo_pdf',
   dev.args=list(family='DejaVu Sans')
   #out.width='5in', 
   #fig.width=5,
   #fig.height=5/sqrt(2),
   #fig.path='figures-knitr/',
   #fig.align='center',
)

(我已经评论了这里没有意义的选项,但有些日子你也可能感兴趣).您可以找到有关块选项here的更多详细信息.

这是一个示例.Rnw文件(至少在我的Linux上)产生正确的结果:

\documentclass{article}

\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[T1,plmath]{polski}
\usepackage[polish]{babel}

\begin{document}

<<cache=FALSE,echo=FALSE,message=FALSE>>=
options(Encoding="UTF-8")
library("knitr")
library("tikzDevice")
opts_chunk$set(
   dev='cairo_pdf',
   dev.args=list(family='Helvetica')
   #out.width='5in', 
   #fig.width=5,
   #fig.height=5/sqrt(2),
   #fig.path='figures-knitr/',
   #fig.align='center',
)
@

<<>>=
plot(1:10, (1:10)^2, xlab="ąśćźół")
@

\end{document}
点赞