我对 knitr
和 tikzDevice
有问题,就像我之前的人一样。 (参见 https://tex.stackexchange.com/questions/106057/tikzdevice-is-not-getting-sizes-right-knitr/106595#106595。)他使用 dev.args
来消除这个错误,但是如果我通过 knitr
运行这段代码(使用 rstudio
),字体大小仍然是乱七八糟的。 dev.args=list(pointsize=12)
对我不起作用。唯一可行的是删除 a4paper,12pt
。关于我做错了什么有什么想法吗?
\documentclass[a4paper,12pt]{scrartcl}
\begin{document}
\begin{figure}
<<dev='tikz', dev.args=list(pointsize=12)>>=
x<-1
plot(x)
@
\end{figure}
\end{document}
最佳答案
原来是tikzDevice
包的bug,已经reported long time ago (但仍未修复)。问题是用于检测点大小的正则表达式是错误的(他们应该使用 pt
而不是 [pt]
):
> tikzDevice:::getDocumentPointsize
function (docString)
{
psLocation <- regexpr("\\d+[pt]", docString, ignore.case = T,
perl = T)
if (psLocation == -1) {
return(NA)
}
else {
pointsize <- substr(docString, psLocation, psLocation +
attr(psLocation, "match.length") - 2)
return(as.numeric(pointsize))
}
}
有多种方法可以解决此问题。最好的方法当然是在 tikzDevice
中修复它。在此之前,您可以使用这个简单的技巧:
\documentclass[12pt,a4paper]{scrartcl}
也就是说,将 12pt
切换为 a4paper
,这样可以检测到 12
而不是 4
。
关于font-size - Knitr 和 tikzDevice 不能与文章选项一起工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15801683/