expl3 是直接在 TeX 中实现的吗,还是也利用了 LaTeX2e?
学习 LaTeX3 是否需要了解 LaTeX2e?LaTeX3 的设计是否独立于 LaTeX2e 进行学习?
LaTeX3 是要取代 LaTeX2e 还是要作为它的补充?如果是后者,那么 LaTeX2e 的哪些方面不会被 LaTeX3 取代,而哪些方面又会被 LaTeX3 取代?
* 前两个问题可以重新表述如下。
是否可以避免通过 LaTeX2e 加载 expl3,而是直接通过 TeX\input expl3.tex
或类似命令进行加载?如果可以,那么 expl3 的所有功能是否都可以使用,还是其中某些功能将无法使用、无法正常工作或无法完全工作?
答案1
- 不,它只使用原语。
- 没有,尚未决定。
- 是的,尚未决定。
您可以从当前格式转储格式expl3
,但它不会执行任何操作,因为它不提供输出例程等基本功能。如果您已经在运行某种格式(Plain TeX、LaTeX2e、ConTeXt、棒糖等)您可以输入expl3
宏包并使用它提供的一切。
我认为您问的是是否存在预加载的格式expl3
,答案是否定的。
答案2
首先,值得记住的是,LaTeX3 是一个长期项目,并且目标创建一个独立设置。然而,目前我们还没有这个:expl3
这是团队的主要“产品”。该expl3
语言是 LaTeX3 的编程层,但可用作 LaTeX2e 包。后一点很重要:为了推动工作,团队需要人们真正使用代码,这意味着让它与当前的文档。请注意,除了 之外,还有 LaTeX3 产品expl3
,最明显的是xparse
。
expl3
设置为独立语言,其实现方式是首先重命名所有 TeX 基元(参见l3names.dtx
),然后使用这些基元来引导语言。当作为 LaTeX2e 包加载时,格式的机制在某些地方很重要(例如寄存器分配器),因此会使用它们。(expl3
与普通 TeX 或 LaTeX2 一样基于 TeX。)目标是最终
expl3
实现完全自文档化。然而,目前情况并非如此。无论如何,人们确实需要熟悉基本的 TeX 概念,例如标记化、扩展、ETC。根据编写代码的目的,可能还需要其他 LaTeX2e 知识:例如,如果您想使用expl3
不同的字体,您目前需要使用 LaTeX2e NFSS。正如本答案开头所述,长期团队的目标是创建一个独立的产品。然而,这只有在用户可以迁移到它时才有价值。因此,正在进行的大部分开发工作都集中在“LaTeX3-in-2e”上,也就是说,可以与 LaTeX2e 一起使用的包代码。其中一些是有点“实验性的”(因为它不能与全套 LaTeX2e 包“很好地配合”:见例如
xgalley
),而大部分是完全独立的(expl3
,xparse
)。随着时间的推移,团队正在为 /LaTeX3 实现各种想法expl3
:例如,我目前(2017 年 8 月)正在致力于图像包含。
最后,代码的某些部分(expl3
)可以在 LaTeX 以外的格式中使用,而其他部分(xparse
,xgalley
)则不能,因为它们在某种程度上依赖于 LaTeX2e 概念。大部分代码可以变得完全通用,但对于其实用性存在疑问:大多数 TeX 用户使用 LaTeX2e,而使用其他格式的用户可能不想使用这些类型的库。