我问过这个问题,但也许这里更相关:
这是我在很多情节中遇到的问题。
在 R 中,假设我创建了一个带有颜色条的 ggplot2 图:
R> sample = ggplot(data=data.frame(x=runif(10),y=runif(10)),aes(x,y)) +
geom_point(aes(color=x))
现在,当我通过以下方式将其导出到 tikz 对象时:
tikz("./figures/sample.tikz",width = 6,height=6/sqrt(2))
print(sample)
dev.off()
然后可以将其包含在文档中,如下所示:
\begin{figure}[htbp]
\centering
\input{figures/sample.tikz}
\end{figure}
在里面sample.tikz
,大约在第 193 行包含以下内容:
\pgfimage[width= 14.45pt,height= 72.27pt,interpolate=true]{sample_ras1}};
指的是颜色条的光栅图像。它显然是在与主.tikz
文件相同的目录中创建和写入的。
现在的问题是,该.tikz
文件被写入到 images 文件夹中,该文件夹是根文档的子目录,因此,为了在 latex 文档中正确绘制该文件,上面的 pgfimage 行应如下所示:
\pgfimage[width= 14.45pt,height= 72.27pt,interpolate=true]{figures/sample_ras1}};
我如何确保(是否有可能)图像是相对于 tikz 文件而不是根 .tex 文件拾取的?
我可以手动添加小改动,但就像我说的,我有很多很多图片,这会很繁琐。一个选项是简单地将 tikz 文件写入根文件夹,但是,我并不特别想用无数图片污染根文件夹。
更新:我想到的一个解决方案是创建一个用于输入 tikz 文件的新命令:
\newcommand\inputTikz[2][figures]{
\let\pgfimageOld\pgfimage%
\renewcommand{\pgfimage}[2][]{\pgfimageOld[##1]{#1/##2}}%
\input{#1/#2}%
\let\pgfimage\pgfimageOld%
}
这似乎可以解决问题,但这是一个非常具体的解决方案,在本地重新定义命令pgfimage
。如果出现其他遭受同样命运的命令,它将失败。
它可以像这样使用:
\begin{figure}[htbp]
\centering
\inputTikz{sample.tikz}
\end{figure}