我的knitrtikzDevice有问题,就像我之前的某个人一样。 (请参阅https://tex.stackexchange.com/questions/106057/tikzdevice-is-not-getting-sizes-right-knitr/106595#106595。)他使用dev.args消除了此错误,但是如果我通过knitr(使用rstudio)运行此代码,则fontsize仍然混乱。 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包的一个错误,该错误已被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/

10-10 05:24