将独立文件包含在读取其他文件的子目录中

将独立文件包含在读取其他文件的子目录中

我想使用包standalonePGFPlotsTikZ来生成图形。具体来说,我希望在构建主文档时使用buildmissing包选项仅在缺少图形时才生成standalone图形,但同时,如果我正在处理它们,我想单独生成它们。但是,如果图形位于子目录中,我似乎无法使其工作。

./
├── figures/
│   ├── sub.csv
│   └── sub.tex
├── main.tex
├── same.csv
└── same.tex

主要文件为main.tex

\documentclass{article}
\usepackage[mode=buildmissing]{standalone}
\begin{document}
Same directory:
\includestandalone{same}

Sub directory:
\includestandalone{figures/sub}
\end{document}

同一目录中的独立图形为same.tex

\documentclass[tikz,crop]{standalone}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}
\begin{axis}
\addplot+ table [col sep=comma, x=x, y=y] {same.csv};
\end{axis}
\end{tikzpicture}
\end{document}

同一目录中的独立图形从以下位置读取 CSV 数据same.csv

x,y
1,2
3,4
5,6
7,8
9,0

子目录中的独立图形为figures/sub.tex

\documentclass[tikz,crop]{standalone}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}
\begin{axis}
\addplot+ table [col sep=comma, x=x, y=y] {sub.csv};
\end{axis}
\end{tikzpicture}
\end{document}

子目录中的独立图形从以下位置读取 CSV 数据figures/sub.csv

x,y
1,-2
3,-4
5,-6
7,-8
9,-0

如果我手动编译这些图,一切都会正常进行,并生成 PDF 文件。如果我随后编译主文档,则会包含这些 PDF 文件。

但是,如果我在手动编译图形之前编译主文档,则只有第一个文档可以正确生成。第二个文档会生成一个空图,因为它无法访问文件sub.csv。据我所知,相对路径始终被视为相对于初始文档,但在这种情况下,初始文档位于两个不同的目录中,具体取决于我是否编译主文档或独立图形。

我用作PGFPlots示例,但如果我想包含任何其他带有\input{}或 的文件,也会出现此问题\include{}。例如,我有时有一个包含首字母缩略词和字体的通用序言,我想在主文档和图形中使用它们,但我无法从两个文件中都包含它并使其正常工作。

答案1

我用的是currfile\currfiledir包来解决这个问题。您可以在您的sub.tex构建绝对路径中使用。

figures/sub.tex

\documentclass[tikz,crop]{standalone}
\usepackage{currfile}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}
\begin{axis}
\addplot+ table [col sep=comma, x=x, y=y] {\currfiledir sub.csv};
\end{axis}
\end{tikzpicture}
\end{document}

确保也导入了currfile您的main.tex

相关内容