文件是否可以知道它是否已被 \include 或 \input ?

文件是否可以知道它是否已被 \include 或 \input ?

我有一份相当大的用户指南,用于我与合作者一起开发的代码。每个章节都位于顶级目录的子目录中,其中包含 .tex 文件,该文件抓取并拼接所有单个章节的 .tex 文件以形成完整的文档。

有时单独编译和查看一章很有用。这让我很好奇 (La)TeX 是否可以处理以下内容: (La)TeX 能否在编译期间确定 .tex 文件是从另一个文件\input编译而来还是\include从另一个文件编译而来?

一个示例用例是,如果文件是,则仅包含\documentclass、等。\begin{document}不是 \include'ed 或\input'ed 来自另一个文件。 是的,我知道可以通过其他方式解决这个问题,即智能使用\includeonly,但我很好奇是否可以以更自动化的方式完成这。

对于那些熟悉的人来说Python,我真正寻找的是相当于通常的

if __name__ == "__main__":

检查当前文件是否是主模块,或者是否已被import另一个文件修改。

答案1

原始\input(\@@input在 LaTeX2e 中) 简单地将子文件“包含在这里”,就好像它是主文件的一部分一样。因此,最好的办法是在 TeX 之上构建机制来跟踪子文件(这就是 LaTeX 所做的)。没有内置的子文件概念。

答案2

除了决定文件是否被\include编译之外\input,还有其他选项允许您单独编译某些主.tex文件的“子文件”。subfiles文档类. 正如在类文档,您的主文件和“子文件”文档具有以下结构:

主文件/子文件中的子文件文档类结构

或者,combine文档类提供了类似的功能。阅读包装文档了解更多信息。

相关内容