有没有办法使用带有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}