在我的 friend 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 之类的东西。

谁能给我一个提示如何解决这个问题?

最佳答案

我也有同样的问题。

感谢 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 块选项会导致崩溃(我尝试过例如 dev.args=list(width=3,height=3) 来设置尺寸),而它应该将参数传递给设备。

关于knitr - 错误 : failed to compile tikz to pdf,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28026675/

10-12 19:52