我想将一个文档嵌套加载到另一个文档中,跳过嵌套文档的 序言\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
五个选项:
- 这
standalone
包裹。 - 这
subfiles
包裹。 - 这
docmute
包裹。 - 这
combine
包裹。 - 这
newclude
包裹。
这standalone
套件旨在允许较大文档的部分内容需要单独提取和编译,但仍保留其在较大文档中的位置。因此,子文档需要使用standalone
文档类。
该subfiles
包是同一主要思想的不同实现:子文档是寄生subfiles
文档类,在单独编译时应该了解主文档以采取序言(而可以 standalone
使用 Borg 同化策略)。
这docmute
是同一主要思想的另一种实现,但子文档可以使用任何docmute
真正独立的文档类(没有类)。简单地说,子文档的前言在组合时会被丢弃,因此您有责任确保主前言包含所有子文档所需的所有包。使用通用包\input{preamble}
可以避免这种麻烦。
对于使用这三个包的简单文档,结果可能相同,但是虽然第一个包有很多有用的选项,但在某些情况下,一些替代方案可能会更好(Fran 注:没有太在意我,但我隐约记得在使用这两个包时遇到了一些问题,import
而standalone
切换到后这个问题得到了解决docmute
)。
该combine
软件包旨在将论文打包成一份更大的出版物(例如用于准备会议论文集)。所有单个文档都应属于同一文档类别(但不同的是,standalone
它们都可以是article
、 或report
等)。完全不需要更改原始单个文档(与使用standalone
)。但是,根据设计,参考书目、目录、章节编号等都是当地的针对每篇单独的论文。还有一个journal
文档类具有相同的用途,但它特定于paper
(类似文章的)文档类。
该newclude
包定义了一个实验性命令\includeenv
,该命令精确包含子文档中单个环境中的内容。如果使用了环境的多个实例,您可以选择指定要包含哪个实例。通过指定环境的名称document
,它应该会按照问题中描述的方式执行您想要的操作。(但如果您在子文档中加载了任何包,您有责任在主文档中也加载它。)
从文档中可以看出,大多数软件包都是为不同的用例而设计的。由您来决定哪个最适合您的需求。