编辑

编辑

与工作原理类似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 显示以下内容:

这是做什么的?

相关内容