expl3、LaTeX3、LaTeX2e 和 TeX

expl3、LaTeX3、LaTeX2e 和 TeX
  1. expl3 是直接在 TeX 中实现的吗,还是也利用了 LaTeX2e?

  2. 学习 LaTeX3 是否需要了解 LaTeX2e?LaTeX3 的设计是否独立于 LaTeX2e 进行学习?

  3. LaTeX3 是要取代 LaTeX2e 还是要作为它的补充?如果是后者,那么 LaTeX2e 的哪些方面不会被 LaTeX3 取代,而哪些方面又会被 LaTeX3 取代?


* 前两个问题可以重新表述如下。

是否可以避免通过 LaTeX2e 加载 expl3,而是直接通过 TeX\input expl3.tex或类似命令进行加载?如果可以,那么 expl3 的所有功能是否都可以使用,还是其中某些功能将无法使用、无法正常工作或无法完全工作?

答案1

  1. 不,它只使用原语。
  2. 没有,尚未决定。
  3. 是的,尚未决定。

您可以从当前格式转储格式expl3,但它不会执行任何操作,因为它不提供输出例程等基本功能。如果您已经在运行某种格式(Plain TeX、LaTeX2e、ConTeXt、棒糖等)您可以输入expl3宏包并使用它提供的一切。


我认为您问的是是否存在预加载的格式expl3,答案是否定的。

答案2

首先,值得记住的是,LaTeX3 是一个长期项目,并且目标创建一个独立设置。然而,目前我们还没有这个:expl3这是团队的主要“产品”。该expl3语言是 LaTeX3 的编程层,但可用作 LaTeX2e 包。后一点很重要:为了推动工作,团队需要人们真正使用代码,这意味着让它与当前的文档。请注意,除了 之外,还有 LaTeX3 产品expl3,最明显的是xparse

  1. expl3设置为独立语言,其实现方式是首先重命名所有 TeX 基元(参见l3names.dtx),然后使用这些基元来引导语言。当作为 LaTeX2e 包加载时,格式的机制在某些地方很重要(例如寄存器分配器),因此会使用它们。(expl3与普通 TeX 或 LaTeX2 一样基于 TeX。)

  2. 目标是最终expl3实现完全自文档化。然而,目前情况并非如此。无论如何,人们确实需要熟悉基本的 TeX 概念,例如标记化、扩展、ETC。根据编写代码的目的,可能还需要其他 LaTeX2e 知识:例如,如果您想使用expl3不同的字体,您目前需要使用 LaTeX2e NFSS。

  3. 正如本答案开头所述,长期团队的目标是创建一个独立的产品。然而,这只有在用户可以迁移到它时才有价值。因此,正在进行的大部分开发工作都集中在“LaTeX3-in-2e”上,也就是说,可以与 LaTeX2e 一起使用的包代码。其中一些是有点“实验性的”(因为它不能与全套 LaTeX2e 包“很好地配合”:见例如 xgalley),而大部分是完全独立的(expl3xparse)。随着时间的推移,团队正在为 /LaTeX3 实现各种想法expl3:例如,我目前(2017 年 8 月)正在致力于图像包含。

最后,代码的某些部分(expl3)可以在 LaTeX 以外的格式中使用,而其他部分(xparsexgalley)则不能,因为它们在某种程度上依赖于 LaTeX2e 概念。大部分代码可以变得完全通用,但对于其实用性存在疑问:大多数 TeX 用户使用 LaTeX2e,而使用其他格式的用户可能不想使用这些类型的库。

相关内容