2020年秋季 LaTeX 版本已发布

此版本引入了许多重要的增强功能。

LaTeX 的通用钩子管理系统

大多数 LaTeX 用户和宏包编写者都会知道 LaTeX 到目前为止提供的一些钩子,其中最重要的一个可能是 \AtBeginDocument。 这些都是重要的钩子,但数量太少,以至于在许多情况下,宏包开发者不得不直接修补 LaTeX 的内部结构。 这导致了很多问题。

有了新的钩子管理系统,LaTeX 将获得更多的钩子,宏包编写者(和作者)可以使用这些钩子以受控和可靠的方式添加代码。 通过使用新系统,已经在许多地方添加了新的钩子,并且随着时间的推移还会添加更多。 现在可用的有

  • 用于在环境前后添加代码的钩子(以前通过 etoolbox 宏包提供);
  • 在加载文件、宏包或类时使用的钩子(类似于 filehook 宏包现在提供的功能);
  • 页面构建过程中的钩子(例如,以前通过 atbegshiatveryend 以及其他一些宏包提供的功能)。

这里重要的不是这些宏包的功能已经集成到 LaTeX 内核中,而是钩子管理系统为不同的宏包提供了一种单一的结构化方式来可靠地添加和排序代码。 这将解决许多宏包间的互操作性问题,这些问题以前只能通过以特定顺序加载宏包,或者通过在宏包内部使用复杂且脆弱的代码来解决,以适应用户文档中的各种情况。

钩子管理系统目前在这三份文档中描述

  • texdoc lthooks — 接口描述和已添加到内核的核心钩子。
  • texdoc ltshipout — 页面生成过程中可用的钩子文档。
  • texdoc ltfilehook — 可在文件加载前后使用的钩子。

xparse 作为格式的一部分提供

在之前的版本中,我们将 LaTeX3 编程层添加到 LaTeX 格式中,以提高使用 expl3 的宏包的加载速度。 在此版本中,我们现在通过集成 xparse 来扩展此支持,以便用于定义文档级命令的扩展接口可以直接使用。

这使得用户,尤其是宏包开发者,可以轻松定义具有多个可选参数或其他语法特性的 LaTeX 命令。 有关详细信息,请查看 xparse 文档,例如,通过 texdoc xparse

改进字体系列处理

在之前的版本中,我们扩展了 NFSS(新的字体选择方案),以更好地支持提供不同字体的现代字体,例如, Condensed、Semi-bold 等,并使它们彼此无缝协作。 扩展接口的经验表明,对于某些用例,仍然缺少足够的支持,或者在特殊设置中,算法有时会选择错误的字体系列值。 这些情况现在已得到解决,并添加了额外的支持命令。 例如,使用

\IfFontSeriesContextTF{〈context〉} {〈true code〉}{〈false code〉}

您现在可以定义根据当前字体系列上下文表现不同的命令。 要检查的 〈context〉 必须指定为 bfmd。 然后,该命令根据其使用位置(例如,在 \textbf (或 \bfseries) 内部或外部)选择 〈true code〉 或 〈false code〉。

大量其他增强功能和更正

我们在此版本的 ltnews 文章中记录了近五十项其他增强功能和更正(以及一些非常小的更正,仅包含在 changes.txt 文件中)。 从用户角度来看,最重要的有

  • 在 picture 命令的坐标中支持长度表达式,作为表示 \unitlength 倍数的十进制数的替代方法,例如,\put(0,.2\textheight){...}
  • 用于复制 robust 命令的新命令(\let 对它们不起作用)
  • 一个新的 \ShowCommand 命令,用于显示 robust 命令的完整定义(也适用于其他命令)

但请阅读完整的 ltnews 文章,因为其中可能还有其他对您有用的亮点。

在哪里了解更多信息……

此版本中新增的功能和最重要的错误修复记录在 “LaTeX2e News Issue 32” 中。 该文档可以在 LaTeX2e 新闻页面 上找到,您还可以在那里找到早期 LaTeX 版本的发布信息。

LaTeXing 愉快 — Frank