mylatexformat | 转储‘之后’加载的包?

mylatexformat | 转储‘之后’加载的包?

我一直在测试 mylatexformat 作为加速编译各种调用的文档的一种方法很多序言中的 (30-40) 个软件包(包括一些大型软件包,如 TikZ)——文档中拉取序言会消耗大量总编译时间。到目前为止,似乎已经奏效(将文档的编译时间缩短到尝试此方法之前的约 10-20%)。

但是,有一件事我很疑惑。假设您的文档使用了包 A、B、...E、F。包 A -> E 的大多数选项/标志都是固定的,因此使用 mylatexformat,您可以将它们“转储”到生成的格式文件中。但是,如果您需要/想要针对给定的编译调整包 F 的设置,该怎么办?这似乎不可行。

例如,如果我的 .tex 文档中有(比如说)

 %&"My.Document.Template"

 \usepackage[bunch of tweaked options]{F}

 \begin{document}
  ...
 \end{document}

然后编译会忽略包 F。换句话说,一旦拉入“dumped”格式的文件(第一行),那么之后的所有内容都会被忽略,直到解析 \begin{document} 为止。

我是不是漏掉了什么?有没有办法把大多数包放入一个格式文件中,但在拉入该格式文件后再加载一些包?根据我迄今为止的尝试,答案似乎是“不”。不过,我不确定,因为 mylatexformat 的文档提到 minitoc 包是格式中不能包含的东西(“您必须在 \usepackage{minitoc} 之前使用 \endofdump”),这似乎意味着它读入格式文件后,可以引入另一个包(或更多)。如果可以...怎么做?

提前致谢...

答案1

mylatexformat允许您将预加载的序言保留在文件中。这样可以将序言和文档的来源放在一起,记录使用了哪些包,帮助编辑器通过扫描 \documentclass 自动检测 LaTeX 文件,并且更容易使用带有和不带有自定义格式的 ame 文档。为了避免再次加载包或类时出现问题,它会在加载格式时跳过您的序言。可以通过将序言分成忽略部分和非预加载部分来避免这种情况\endofdump

%&"My.Document.Template"

% This is ignored and might (or might not) contain your original preamble..., e.g.
\documentclass{my_super_class}
\usepackage{A, B, C, D, E}

\endofdump
% This gets executed everytime you compile.

\usepackage[bunch of tweaked options]{F}

\begin{document}
 ...
\end{document}

答案2

这取决于包裹。

一些包使用选项来设置以后可更改的标志,例如 hyperref 选项大多只是为了方便,您可以\hypersetup{...}在加载包后使用来做同样的事情。

其他包在加载时会改变其行为,例如amsmath实现居中或左对齐方程,但只有一组根据是否fleqn使用而定义,因此如果您预先加载了用于fleqn居中数学显示的代码的包,则不可用,并且您无法轻松将其恢复。(如果您尝试取消定义某些内容以便可以重新加载包,这在理论上是可行的,但比简单地使用正常格式要多得多)

相关内容