我使用 OSX、pdflatex、R (cran)、tikz/tikzDevice 和 knitr 创建文档。我的问题是生成的 tikZ 文件的字体大小与 LaTeX 文档字体大小不匹配。
结果/问题
以下是结果的截图:
正如您所见,文本太大而点/圆圈太小。
文件
我有一个名为的主 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.0
tikz 文件以获取正确的文本,但随后某些定位被破坏并且圆圈太小。
第一个想法
如果我从 documentclass 声明中删除[a4paper,12pt]
并重新运行脚本,我会得到更好的结果:
但是如果你将 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}
也就是说,切换12pt
到a4paper
以便可以检测到12
而不是4
。