2013-04-04 36 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