\pgfplotstableread 和子文件

\pgfplotstableread 和子文件

有没有办法使用带有subfiles和的文件夹结构\pgfplotstableread

我有以下结构:

main.tex
\documentclass{article}
\usepackage{pgfplots}
\usepackage{subfiles}
\begin{document}
\subfile{chapters/chapter1.tex}
\end{document}

第二个文件:

chapter1.tex
\documentclass[../main.tex]{subfiles} 
\begin{document}
\begin{tikzpicture}
\pgfplotstableread{<PATH>}\loadedtable
   ...some plot
\end{tikzpicture}
\end{document}

现在<PATH>可以设置两者之一,以便main.tex工作,chapter1.tex但不能同时设置,因为它们位于不同的目录中。有没有办法在不放弃文件夹结构的情况下使用此功能?

答案1

我通过切换到 解决了这个问题,standalone因为它有宏\onlyifstandalone。以下设置有效:

main.tex
\documentclass{article}
\usepackage{standalone}
\usepackage{pgfplots}
\newcommand{\fromRoot}[1]{./#1}
\begin{document}
\subfile{chapters/chapter1.tex}
\end{document}

第二个文件:

chapter1.tex
\documentclass{subfiles}
\usepackage{tikz,pgfplots}
\onlyifstandalone{\newcommand{\fromRoot}[1]{../../#1}}
\begin{document}
\begin{tikzpicture}
\pgfplotstableread{\fromRoot{<PATH>}}\loadedtable
   ...some plot
\end{tikzpicture}
\end{document}

现在<PATH>是相对于项目根目录的相对路径。

答案2

由于该standalone软件包不是完美的解决方案,因此我找到了更好的方法subfiles

main.tex
\documentclass{article}
\usepackage{subfiles}
\usepackage{pgfplots}
\begin{document}
\newcommand{\fromRoot}[1]{./#1}%will not be read by subfiles
\subfile{chapters/chapter1.tex}
\end{document}

第二个文件:

chapter1.tex
\documentclass[../main.tex]{subfiles}

\makeatletter
\@ifundefined{fromRoot}{\newcommand{\fromRoot}[1]{../#1}}{}
\makeatother
\begin{document}
\begin{tikzpicture}
\pgfplotstableread{\fromRoot{<PATH>}}\loadedtable
   ...some plot
\end{tikzpicture}
\end{document}

现在一切都按预期进行。

答案3

我知道这是一个古老的问题,但我根据 OP 的回答有另一种方便的方法,这样我们就不必使用 pgfplotstable 在每个子文件中重新输入相同的命令定义。

假设文件夹结构如下:

root
--main.tex
++sections
  --subfile.tex
++res
  --table.csv

main.tex

\newcommand{\getResources}[1]{../res/#1}%relative to `sections` folder

\begin{document}
\renewcommand{\getResources}[1]{./res/#1}%relative to root folder
\end{document}

在中subfile.tex,使用以下代码调用你的 csv 文件getResources

\pgfplotstabletypeset[...]{\getResources{table.csv}}

答案4

阅读子文件的文档后,我尝试使用\subfix{...}为我完成工作的命令,即

chapter1.tex
\documentclass[../main.tex]{subfiles} 
\begin{document}
\begin{tikzpicture}
\pgfplotstableread{\subfix{<PATH>}}\loadedtable
   ...some plot
\end{tikzpicture}
\end{document}

相关内容