如果我想在我的 tex 文档中使用一组宏,我显然必须在序言中包含相应的包。所以现在,我写了一个 100 页的文档,其中已经包含了 55 个包(在单独的 tex 文件中或所有内容内联),并且我想包含一个新包,我需要转到序言,并包含我的包,然后返回我的工作。在 LaTeX 中是否可行,其中命令\usepackage{}
可以写在文件中的任何位置,而不仅仅是序言,类似于 C++ 或 Java,其中变量的声明不必总是紧跟在 main 之后,而是在程序中的任何位置(C 的主要缺点)
答案1
简短的回答:不。
有两个原因:一个是“LaTeX”原因,另一个是“TeX”原因。“LaTeX”原因是,在文档开始时故意禁用了加载包的机制,因此例如\usepackage
会出现错误。这样做的决定部分是基于对“逻辑结构”的渴望,但主要还是由于潜在的“TeX 原因”。TeX 按顺序读取文件并边读边处理。因此,运行 (La)TeX 时没有“首先查看加载了哪些包”阶段:包功能只能在加载后使用。由于 LaTeX 无法知道任何特定包的作用,这意味着它们都需要在排版“内容”之前放在序言中:否则结果可能会改变。
请注意,您可以\input
在任何地方创建文件,因此您可以在次级文件中定义命令,然后将其加载到文档中的一部分。我们不鼓励这样做:经验表明,应该为整个文档定义命令,而不是只为文档的一部分。
答案2
\usepackage{}
仅可在序言中使用。
您可以做的是制作其他文件并将它们连接在另一个文档中(例如,\includepdf
如果您使用 pdftex 或等效文件)