LaTeX 可以在任何 TeX 上运行吗?

LaTeX 可以在任何 TeX 上运行吗?

据我所知,它latex只是一个宏包tex,就像tex程序一样,而不是格式。(同样,很奇怪,但我理解 LaTeX 是一种格式TeX。

这是否意味着 LaTeX 格式可以应用于任何 TeX 引擎?

从积极的方面假设,XeLaTeX 和 LuaLaTeX 与 LaTeX 有何关系,因为它们建立在各自的引擎 XeTeX 和 LuaTeX 上?

如果有人要建造其他 tex,假设它通过了 TRIP 测试,那么 LaTeX 可以应用于它吗?

答案1

当前的 LaTeX2e 内核 ( latex.ltx) 不包含任何除 Knuth 在 TeX 中提供的原语之外的原语。事实上,如果你阅读代码,你会发现已经采取了明确的步骤来支持 TeX 2(7 位版本),即使 TeX 3(“TeX90”)于 1990 年发布。因此,内核本身可以与通过 TRIP 测试的任何 TeX 实现兼容。

但是,这有一个重要的条件。构建格式需要的不仅仅是latex.ltx,特别是它需要连字模式。在我的系统(TeX Live 2013)上,尝试构建没有 e-TeX 扩展的格式文件会失败,因为至少一个连字文件使用了\numexpr( texmf-dist/tex/generic/hyph-utf8/patterns/tex/hyph-ka.tex)。由于连字模式不是格式的一部分,因此您可以绕过这个问题。


就 XeLaTeX 和 LuaLaTeX 而言,它们非常接近“标准”LaTeX 格式。由于这些引擎使用 UTF-8 输入,因此在设置方面需要进行一些或多或少必要的调整(类别代码、ETC。),因此这是在格式构建过程中完成的。LuaLaTeX 的格式设置还启用了它提供的额外原语(它们不会“开箱即用”)。在这两种情况下,这些调整都是必要的,就像在latex.ltxXeTeX 或 LuaTeX 发布之前设计的那样,将调整作为格式构建系统的一部分是最明智的。


值得注意的是,LaTeX3 软件包(expl3ETC。) 有更严格的要求。以及 e-TeX 扩展,\pdfstrcmp或同等功能是必需的。目前,满足这些要求的引擎是

  • pdfTeX v1.30 或更高版本
  • XeTeX v0.9994 或更高版本
  • LuaTeX v0.40 或更高版本

答案2

虽然目前 latex.ltx(用于构建 LaTeX2e 格式的文件)不依赖于除通过 TRIP 测试的 vanilla TeX 引擎之外的任何原语,但 LaTeX 项目几年前就宣布,预期 LaTeX(2e) 将在启用 e-TeX 扩展的系统上运行。此声明位于列出所有重要发布更改的 ltnews 文档之一中。

正如约瑟夫在他的回答中提到的那样,显示这一点的一个领域是连字文件,但也有 LaTeX 包开始使用这些扩展。

因此,问题的答案是,是的,LaTeX 可以在任何原始 TeX 引擎上运行,但如果它是少数不支持 e-TeX 或默认情况下未启用 e-TeX 扩展的系统之一,则可能会有一些限制。

相关内容