与工作原理类似graphicspath
,是否可以subfilespath
为 .tex 文件而不是图像创建搜索路径?
例如,给定如下所示的文件夹结构。
- Main
- FolderA
- subfileA.tex
- subfileB.tex
- FolderB
- FolderC
- subfileC.tex
- subfileA.tex
- main.tex
我设想以下文档结构:
\documentclass{article}
\usepackage{subfiles}
\subfilespath{
{FolderA}
{FolderB}
}
\begin{document}
\subfiles{subfileA.tex} % Found in FolderA, not FolderB, because FolderA is first in search path
\subfiles{subfileB.tex} % Found in FolderA
\subfiles{subfileC.tex} % Found recursively via FolderB in FolderC
\end{document}
编辑
我应该提到,我正在为软件手册设置一个文件夹结构,其中一个软件可以与另一个软件重叠,因此我希望能够在多个文档中重复使用某些子文件。对于每个手册,我想指示一组依赖路径,其中每个路径指向一个包含一堆子文件的文件夹,这些子文件按子目录组织。我认为有一种方法可以为子文件提供动态搜索路径,这样我就可以添加子目录而不必将它们添加到搜索路径中,这样我就可以更轻松地完成工作。
答案1
根据@DavidCarlisle 的评论,我提出了以下解决方案。欢迎对我的解决方案提出批评。
我还应该提到,我想保留\dependentPaths
逗号分隔,因为我在其他地方使用它来循环列表中的项目。
\documentclass{article}
% Packages
\usepackage{xstring}
\usepackage{subfiles}
% Define file name
\newcommand{\fileName}{searchpath.txt}
% List of directories
% Can be a comma-separated list of directories to include in search path
\newcommand{\dependentPaths}{.}
% Replace commas by apostrophes to create list of paths in command prompt
\StrSubstitute{"\dependentPaths"}{,}{" "}[\maindirs]
\makeatletter
% Print files
\immediate\write18{dir \maindirs /s /b /ad > \fileName}
% Command to add to input path
\providecommand*{\input@path}{}
\newcommand{\appendInputPath}[1]{%
\g@addto@macro\input@path{#1}%
}
% Read file and add lines to input path
\newread\myread
\openin\myread=\fileName
\begingroup\endlinechar=-1
\loop\unless\ifeof\myread
\readline\myread to \line
\expandafter\appendInputPath\expandafter{\expandafter{\line}}
\repeat
\endgroup
\closein\myread
\makeatother
\begin{document}
Load subfiles using search path:\\
\subfile{subfileA.tex}
\subfile{subfileB.tex}
\subfile{subfileC.tex}
\end{document}
的内容searchpath.txt
如下。
C:\Users\<path to main>\FolderA
C:\Users\<path to main>\FolderB
C:\Users\<path to main>\FolderB\FolderC
在子文件中,我写下了文件的位置,以便我可以看到加载了哪些子文件。 PDF 显示以下内容: