3

knitr我对and有一个问题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}
4

1 回答 1

1

原来这是tikzDevice包的一个bug,很久以前就报告过(但还没有修复)。问题是用于检测点大小的正则表达式是错误的(他们应该使用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}

即,切换12ptwitha4paper以便可以检测到12而不是。4

于 2013-04-04T03:20:45.400 回答