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