![外包 Tikz 和相对路径](https://linux22.com/image/315302/%E5%A4%96%E5%8C%85%20Tikz%20%E5%92%8C%E7%9B%B8%E5%AF%B9%E8%B7%AF%E5%BE%84.png)
概括:
使用 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 ,但它不支持。includegraphics
tikzpicture
tikzscale
当我读到以下内容时,我以为自己很幸运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
。我通过将图像包含在节点内进行了修改。