Knitr и tikzDevice не работают вместе с параметрами статьи

У меня проблема с knitr и tikzDevice, как и у кого-то до меня. (См. https://tex.stackexchange.com/questions/106057/tikzdevice-is-not-getting-sizes-right-knitr/106595#106595 .) Он использовал dev.args, чтобы избавиться от этой ошибки, но если я запускаю этот код через knitrrstudio), размер шрифта все еще перепутался. 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}

person cjena    schedule 04.04.2013    source источник


Ответы (1)


Оказывается, это ошибка пакета tikzDevice, о которой сообщалось давно ( но до сих пор не исправлено). Проблема в том, что регулярное выражение, используемое для определения размера точки, было неправильным (они должны были использовать 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.

person Yihui Xie    schedule 04.04.2013
comment
Ихуэй, ты сделал мой день. Спасибо, сэр. - person cjena; 04.04.2013