R tikzdevice 相对目录

R tikzdevice 相对目录

我问过这个问题,但也许这里更相关:

这是我在很多情节中遇到的问题。

在 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}

相关内容