2013-04-04 34 views
3

我遇到了knitrtikzDevice的問題,就像以前的某個人一樣。 (請參閱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。我所做的任何想法都做錯了?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} 

也就是說,切換12pta4paper,使12代替4可以被檢測到。

+0

怡輝,你讓我的一天。謝謝你,先生。 – cjena 2013-04-04 04:26:09