我遇到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}
答案 0 :(得分:1)
这是tikzDevice
包的错误,已经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
。