因此,受到启发修复 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
。那么总数可能会超过限制。