外包 Tikz 和相对路径

外包 Tikz 和相对路径

概括:

使用 tikzscale 时,如何includegraphics相对于当前文件?


细节

如同平均血流量我喜欢有一个.tikz只包含tikzpicture环境的文件。(主要原因是,我懒得像班级standalone要求的那样将所有图表都包装在完整的序言中,而这正是tikzscale需要的输入)。

因为我喜欢在不同的文档中使用我的图片,所以我的乳胶文件夹看起来像这样:

pictures
-TEST.tex %contains documentclass and loads tikzpreamble,
          % modified by hand to input the tikz file currently under development
-tikzpreamble.tex
-picture1.tikz
-picture2.tikz
documentA
-documentA.tex
-...
documentB
...

虽然此流程对于纯 tikzpictures 来说毫无问题,但我最近有一个使用 tikzpicture 的\includegraphics情况。虽然当我从图片文件夹 (TEST.tex) 内部工作时没有问题,但我很快就遇到了输入路径相对于主 tex 文件而不是当前文件的问题。

通过谷歌搜索,我找到了import带有的包。虽然这允许我以在内部工作subimport的方式加载 tikzpicture ,但它不支持。includegraphicstikzpicturetikzscale

当我读到以下内容时,我以为自己很幸运tikzscale 文档,关于这个问题:

如果同时加载了 tikzscale 和 currfile,则限制是固定的,因此 [includegraphics 相对于主文件和相对于当前文件] \includegraphics 命令都会成功。

但是,对我来说它不起作用。例如,以下结果导致找不到 png:

文件树:

pictures/tikzpicture.tikz
pictures/OtherSources/png.png
document1/doc1.tex

doc1.tex:

\documentclass{report}
\usepackage{tikz}
\usepackage{currfile}
\usepackage{tikzscale}
\begin{document}
    \input{../pictures/tikzpicture.tikz}
\end{document}

tikz图片.tikz

\begin{tikzpicture}
\includegraphics{OtherSources/png.png}
\end{tikzpicture}

=> 错误信息:

包 pdftex.def 错误:未找到文件“OtherSources/png.png”。...ng.png}

有关的:外包 TikZ 代码

答案1

在您的示例中,您不需要tikzscale,但如果您需要它来导入 tikz 图像,\includegraphics我看到两种解决方案。

一种方法是修补\includegraphics使用etoolbox以使其与import软件包兼容。但我没有足够的能力向您展示如何做到这一点。

另一种方法是使用个人宏myinput来指定路径,然后在子文档中使用此路径。这是您的 MWE:

doc1.tex:

\documentclass{report}
\usepackage{tikz}
\usepackage{currfile}
\usepackage{tikzscale} % not needed in this example
\newcommand{\myinput}[2]{%
  \edef\mypath{#1}
  \input{#1#2}
}
\begin{document}
    \myinput{../pictures/}{tikzpicture.tikz}
\end{document}

tikzpicture.tikz:

\begin{tikzpicture}
  \node {\includegraphics{\mypath OtherSources/png.png}};
\end{tikzpicture}

笔记:我很惊讶你直接将其包含png在内tikzpicture。我通过将图像包含在节点内进行了修改。

相关内容