错误:无法将tikz编译为pdf

时间:2015-01-19 14:17:56

标签: knitr

在我的朋友的Windows PC上,然后运行任何类型的绘图,其中knitr输出与dev =' tikz'我收到了错误。

适用于dev =' pdf'。

输出文件" foo-1.tikz"这可以自己编译好,但是当使用knitr by

knit("temp.Rnw")

然后呢

processing file: temp.Rnw
  |......................                                           |  33%
  ordinary text without R code

  |...........................................                      | 67%
label: foo (with options)
List of 2
$ fig.height: num 4
$ dev       : chr "tikz"

Creating new TikZ metrics dictionary at:
    temp-tikzDictionary
Using TikZ metrics dictionary at:
    temp-tikzDictionary
Quitting from lines 9-13 (temp.Rnw)
Error: failed to compile figure/foo-1.tikz to PDF

我不知道可能出现什么问题以及在哪里寻找解决方案。不知怎的,knitr无法找到如何调用pdflatex或其他东西。

任何人都可以提示我如何解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

我有同样的问题。

由于this report on the knitr Github repo,我找到了解决方法。

设置块选项external=FALSE。使用此选项,knitr不会运行文件xxx.tikz的编译。相反,它将它们包含在LaTeX文件中,如下所示:

\begin{knitrout}
\definecolor{shadecolor}{rgb}{0.969, 0.969, 0.969}
\input{figure/myplot-1.tikz}
\end{knitrout}

这种方式的问题在于忽略了块选项out.width,并且数字可能非常大,以至于它们都处于边缘甚至更远的位置。

但你可以使用scalebox在Rnw中控制这样的数字大小:

\begin{figure}
\centering
\scalebox{0.5}{
<<myplot, echo=FALSE, fig.width=10, fig.height=6, dev='tikz', external=FALSE>>=
…….
@
}
\end{figure}

奇怪的是,dev.args chunk选项会导致崩溃(我尝试例如dev.args=list(width=3,height=3)来设置维度),而它应该将参数传递给设备。