tikzDevice 尺寸不正确(knitr)

tikzDevice 尺寸不正确(knitr)

我使用 OSX、pdflatex、R (cran)、tikz/tikzDevice 和 knitr 创建文档。我的问题是生成的 tikZ 文件的字体大小与 LaTeX 文档字体大小不匹配。

结果/问题

以下是结果的截图:

屏幕截图 1

正如您所见,文本太大而点/圆圈太小。

文件

我有一个名为的主 LaTeX 文件main.tex,其中包含:

\documentclass[a4paper,12pt]{article}

\usepackage{tikz}

\begin{document}

%% begin.rcode myplot, dev='tikz',  external=FALSE, fig.width=5, fig.height=5
% plot(cars)
%% end.rcode

\hspace*{6.3cm}\color{red} speed

\end{document}

然后我使用 R-Script,将knit.R结果转换plot为 tikZ-Code:

library(knitr)
render_latex()
knit("/Users/ralfix/Documents/main.tex")

它创建一个新的 LaTeX 文件,main-out.tex其中包含以下内容:

...
\input{figure/myplot.tikz}
...
\hspace*{6.3cm}\color{red} speed
...

和一个新的 tikZ 文件,名为myplot.tikz

% Created by tikzDevice version 0.6.2-92-0ad2792 on 2013-03-30 18:14:48
% !TEX encoding = UTF-8 Unicode
\begin{tikzpicture}[x=1pt,y=1pt]
...
\node[text=drawColor,anchor=base,inner sep=0pt, outer sep=0pt, scale=  3.00] at (185.47,  6.24) {speed};
...
\end{tikzpicture}

我可以删除scale=3.0tikz 文件以获取正确的文本,但随后某些定位被破坏并且圆圈太小。

第一个想法

如果我从 documentclass 声明中删除[a4paper,12pt]并重新运行脚本,我会得到更好的结果:

屏幕截图 2

但是如果你将 tikz 输出与红色的 LaTeX 输出进行比较,文本仍然太大。tikz 文件scale=1.2现在显示为文本。

我应该如何以及在何处修改某些内容以使每个尺寸都正确?

答案1

我自己刚刚找到了解决方案:

有人可以手动设置 tikzDevice 的点大小——使用 knitr,可以通过添加

dev.args=list(pointsize=12)

到块选项。

希望这能够帮助到别人;)

答案2

一晖回答了这个问题:

这原来是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}

也就是说,切换12pta4paper以便可以检测到12而不是4

相关内容