我应该默认加载 eTeX 和/或 fixltx2e 吗

我应该默认加载 eTeX 和/或 fixltx2e 吗

因此,受到启发修复 LaTeX2e我一直在想:我应该默认加载fixltx2e和/或吗?eTeX

通常我会以如下方式开始我的文档

%Page layout here
\documentclass[letterpaper, 11pt]{article}

是否应改为

\RequirePackage{etex}
\RequirePackage{fixltx2e}
%Page layout here
\documentclass[letterpaper, 11pt]{article}

或者我只有在遇到需要修复其中一个的问题时才应该加载它们?另外,我应该按什么顺序加载它们?

答案1

截至 2016 年 1 月 11 日的 CTAN 检查,我发现了以下情况...

他们对 fixltx2e 包的记录如下:

此包除了在当前 LATEX 版本中发出警告外,不执行任何其他操作。在早期版本中,它用于分发 LATEX 内核的错误修复和改进。有关新错误修复策略的更多详细信息,请参阅 latexrelease 包。 https://www.ctan.org/topic/obsolete

对于 etex 来说,它表示:

TEX 的扩展版本(能够像未修改的 TEX 一样运行)。LATEX 团队已指定 E-TEX 作为近期开发 LATEX 2e 的引擎;因此,LATEX 程序员可以(在所有当前 TEX 发行版中)使用 e-TEX 功能。e-TEX 的开发版本可在 TEX 实时源存储库中找到。

对于 etex-pkg,现在有一个“版本 2.5 2016-01-07”。自述文件只说:

该软件包为 e-TeX 提供的许多扩展提供了一个简单的接口;特别是,它修改了 LaTeX 的寄存器分配宏以利用扩展的寄存器范围。请注意,对于 2015 年以后的 LaTeX 版本,此软件包不需要使用扩展的寄存器范围。

答案2

在几乎所有情况下,加载etex包都应该是安全的。它的主要目的是改变分配方案以使用 e-TeX 提供的额外空间,并且它以尽可能避免任何冲突的方式实现这一点。(请注意,团队计划在格式发布中启用扩展寄存器的使用,但这将使用一种略有不同的包方法etex。)至于是否需要加载etex:仅当您发现自己用完了寄存器时。这里添加到格式中的想法是,这将使包作者和最终用户都不必担心这一点。

加载fixltx2e有点棘手,事实上,团队正在努力确保一旦将其作为标准内置,就可以将其从格式中“撤消”。 中的更改fixltx2e目前尚未出现,latex.ltx因为它们会以某种方式改变行为。其中一些现在不是什么大问题:例如,制作\(\)健壮使用两个额外的 csname,当问题出现时,它们无法进入格式(当时这可能会使某些人的文档在名称使用方面超出极限)。 中的其他更改fixltx2e可能会以某种方式改变现有文档,这更棘手。(出于存档原因,某些文档在输出中不能有任何更改。)也就是说,的内容fixltx2e都是可以说应该1994 年发布时,格式如下。另一个答案,很可能永远不会需要fixltx2e。至于是否应该加载包:我认为应该加载,因为这些确实应该修复。但是,在很多情况下,您可能不会注意到差异。

这让我们想到一个问题:为什么团队要将这里的功能添加到标准内核中。在这种etex情况下,用户和软件包作者都不必担心启用扩展分配方案。格式应该对可用的功能有一定的“认识”并使用它们。就而言fixltx2e,如​​前所述,这些东西本来就应该在内核中。添加它将带来的是,用户不必知道它有用的情况,而软件包作者应该能够更容易地预测某些命令的形式(用于修补)。将有一个机制来逆转这种包含:在某些情况下,修复会改变结果而不是避免彻底的错误,这些对于存档稳定性方面很重要。

答案3

这些软件包有不同的用途。 fixltx2e纠正了 LaTeX2e 的一些设计错误;如果这些错误困扰着你,你应该使用它。它们很少困扰我——我想我在工作中遇到它们不超过两三次。

另一方面,etex有助于使用 etex 引擎的附加功能;作为用户,您可能根本不需要它们 - 除非您例如想要定义几百个计数器。类和包设计者更经常需要它们;我发现我必须为我的一些类加载它们。另一方面,etex会产生(确实很小的)开销,因此除非我需要,否则我通常不会加载它。无论如何,如果您使用需要这些功能的类或包,设计者可能已经加载了它。用户必须etex明确加载的唯一情况是当她有几个包时,每个包都大量使用 TeX 资源,但仍可以在没有单独的情况下工作etex。那么总数可能会超过限制。

相关内容