在我的 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/