2013-04-04 2 views
3

У меня проблема с 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. Любые идеи о том, что я сделал, сделали неправильно?Knitr и tikzDevice не работают вместе с опциями статьи

\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 пакета, который был reported long time ago (но еще не фиксированным). Проблема в том, регулярное выражение, используемое для обнаружения pointsize было неправильно (они должны были использовать 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 может быть обнаружен.

+0

Yihui, вы сделали мой день. Спасибо, сэр. – cjena

 Смежные вопросы

  • Нет связанных вопросов^_^