e-TeX 对 LaTeX 用户有哪些好处?

e-TeX 对 LaTeX 用户有哪些好处?

etex软件包提供了 e-TeX 功能的接口。它为 LaTeX 用户提供了哪些优势?

是否存在任何可能的缺点,例如与任何其他包不兼容,或者我可以放心地使用它吗?

答案1

e-TeX 为软件包编写者提供了许多附加功能,例如增加了寄存器数量。我发现最有用的是其扩展的跟踪功能,我通常通过软件包访问它trace。特别是,跟踪命令和跟踪任务在尝试诊断问题时非常有用。

e-TeX 还提供了一个\middle类似\left和的分隔符,\right这可能会有所帮助。

\[\left\{\sum_{i=0}^n a_i\ \middle|\ a_0<a_1<\dotsb<a_n\right\}\]

编辑:在写另一个问题的答案时,我突然想起了 e-TeX 中两个非常有用的扩展。第一个是,\unless它允许您否定 的分支\if。它在循环中特别有用,除非某些条件为真,否则您需要循环。读取文件就是我的例子。

\loop\unless\ifeof\file
    \readline\file to\foo
    % Do something with \foo
\repeat

这也显示了两个扩展中的第二个:\readline。它的作用与完全相同\read,只是所有字符都被赋予了类别代码 other 或 space。它对于读取包含$%^&_或 等字符的文本非常方便\。例如,这是一个作弊者的奎因。

\newread\file
\openin\file\jobname
\endlinechar-1
\tt
\loop\unless\ifeof\file
\readline\file to\foo
\noindent\foo\endgraf
\repeat
\bye

还有其他类别更改命令,如\scantokens\detokenize,但我从未使用过。

答案2

总体上看 e-TeX 扩展,我想强调一下其他人没有提到的两点。首先,e-TeX 提供了在分配整数、维度时执行计算的原语,ETC。 例如,

\newcount\mycount
\mycount\numexpr 1 + 2 * 3\relax
\showthe\mycount

将给出7。现在,你可以用该calc包做类似的事情,但仅限于 LaTeX 管理的变量。我发现 e-TeX 原语特别方便Tikz因为它直接使用 TeX 寄存器,所以不能与该calc包一起使用。e-TeX 意味着

\tikzset{ key-name = \dimexpr 3 * \SomeDimension\relax }

工作良好。

其次,从更“概念”的角度来说,LaTeX 用户可以从使用 e-TeX 基元编写代码的软件包中获益;我想指出的是biblatex. 作为一名程序员,e-TeX 扩展使许多事情变得更容易,并且还允许使用 TeX82 无法实现的编程思想(IETeX(由 Knuth 编写)。e-TeX 的直接影响可能不会显现给用户,但软件包的可用性肯定会显现出来。

答案3

需要指出的是,早在几年前,LaTeX 项目就正式宣布,LaTeX 有望在基于 e-TeX 的引擎上运行。换句话说:e-TeX 中提供的所有功能都应该可用于 LaTeX 内核和任何附加包。

到目前为止,LaTeX 项目团队尚未对没有 e-TeX 就无法运行的“内核”进行任何更改,但有些软件包(包括团队维护的软件包)确实需要此功能。对于所有基于 LaTeX3 的工作(例如expl3基于的软件包)尤其如此。

etex.sty软件包是 LaTeX2e 的核心软件包,可启用使用正确格式化程序时无法自动使用的 e-TeX 扩展。它基于 Peter Breitenlohner 的软件包etex.src

答案4

etex.sty似乎旨在将 LaTeX 转换为etex.src纯 TeX。它似乎对于为 e-TeX(引擎)的魔法常数赋予好听的名字很有用,因此您可以\hboxgrouptype为 2、\ligaturenode为 7 等等进行书写。它由相当多的软件包内部加载。

它提供的另一个功能是,如果普通池耗尽,则透明地使扩展寄存器池可用。建议用户加载它,以帮助解决“没有空间容纳新事物' 错误,例如此常见问题解答

相关内容