如何嵌套 LaTeX 文档

如何嵌套 LaTeX 文档

我想将一个文档嵌套加载到另一个文档中,跳过嵌套文档的 序言\begin{document}和。\end{document}

所以

\documentclass{article}
% load some packages here
\begin{document}
\loaddocument{otherdocument}
text
\end{document}

\loaddocument应与被替换为相同,只是仅加载 otherdocument.tex 的 和\input之间的位。\begin{document}\end{document}

我可能可以使用来实现这一点LuaLaTeX,但我不是第一个寻找此功能的人,但我无法在这个论坛上找到解决方案。有现有的解决方案吗?

****** 编辑 ******

我感谢 Sam Carter 指出,subfiles但该软件包不允许在序言中加载软件包。如果嵌套文件是这样的

\documentclass{article}

\usepackage{amsmath}

\begin{document}
\begin{equation}
x=\quad y.
\end{equation}
\end{document}

然后编译就会停止,所以subfiles包将无法运行。

根据其文档判断,最接近我的想法是,newclude但该软件包很旧,文档声称它提供了一个\includeenv命令,但 LaTeX 无法识别。但是,除非发生任何变化,否则我会接受这个答案并编写自己的 LuaLaTeX 例程。

* 第二次编辑 *

fwiw,我已经编写了一个简单的 LuaLaTeX 例程来解决这个问题。

答案1

五个选项:

  1. standalone包裹。
  2. subfiles包裹。
  3. docmute包裹。
  4. combine包裹。
  5. newclude包裹。

standalone套件旨在允许较大文档的部分内容需要单独提取和编译,但仍保留其在较大文档中的位置。因此,子文档需要使用standalone 文档类

subfiles包是同一主要思想的不同实现:子文档是寄生subfiles文档类,在单独编译时应该了解主文档以采取序言(而可以 standalone使用 Borg 同化策略)。

docmute是同一主要思想的另一种实现,但子文档可以使用任何docmute真正独立的文档类(没有类)。简单地说,子文档的前言在组合时会被丢弃,因此您有责任确保主前言包含所有子文档所需的所有包。使用通用包\input{preamble}可以避免这种麻烦。

对于使用这三个包的简单文档,结果可能相同,但是虽然第一个包有很多有用的选项,但在某些情况下,一些替代方案可能会更好(Fran 注:没有太在意我,但我隐约记得在使用这两个包时遇到了一些问题,importstandalone切换到后这个问题得到了解决docmute)。

combine软件包旨在将论文打包成一份更大的出版物(例如用于准备会议论文集)。所有单个文档都应属于同一文档类别(但不同的是,standalone它们都可以是article、 或report等)。完全不需要更改原始单个文档(与使用standalone)。但是,根据设计,参考书目、目录、章节编号等都是当地的针对每篇单独的论文。还有一个journal文档类具有相同的用途,但它特定于paper (类似文章的)文档类。

newclude包定义了一个实验性命令\includeenv,该命令精确包含子文档中单个环境中的内容。如果使用了环境的多个实例,您可以选择指定要包含哪个实例。通过指定环境的名称document,它应该会按照问题中描述的方式执行您想要的操作。(但如果您在子文档中加载了任何包,您有责任在主文档中也加载它。)

从文档中可以看出,大多数软件包都是为不同的用例而设计的。由您来决定哪个最适合您的需求。

相关内容