过去十年(2013-2022)LaTeX 的重要改进

过去十年(2013-2022)LaTeX 的重要改进

我们已经很多年没有遇到过这个问题了(201620142010),但尤其是 2014 年的问题已被浏览超过 5 万次,因此我们似乎应该偶尔提供最新的答案。

那么,过去十年中 LaTeX & Friends 最重要的改进是什么?为什么?新的钩子管理(参见 lthooks-code.pdf)或包括 pdf/A 输出的 pdf 管理?LuaLaTeX 和 PDFLaTeX 一样快?LuaTeX 1.x 版?许多新的表格包?还是开发了更广泛的包之一(例如 TikZ、pstricks、KOMA-script)?L3 编程层?UTF-8 作为默认编码?使用中文、阿拉伯语、希伯来语……语言?

答案1

对于 LaTeX 内核来说,过去十年中有几个非常重要的变化。从 LaTeX 新闻中挑选出亮点

新的变更/错误修复政策

可能最重要的是,内核开发工作在 2014 年左右重新启动,并制定了新的错误修复政策。 不再使用 中冻结的内核进行更改fixltx2e,而是使用 引入了回滚机制latexrelease。 这导致了更广泛的内核开发重新启动,意味着可以集成新功能:本条目的其余部分都依赖于此。

UTF-8 默认设置

LaTeX 现在假定文档是 UTF-8 格式,除非另有说明,这意味着您不需要inputenc明确加载。以前,格式实际上只对 7 位字符安全,虽然有些人“侥幸”处理了某些 8 位字符而没有加载inputenc,但这更多的是运气而不是判断。

正式支持 Unicode 引擎

LaTeX 现已正式与 LuaTeX 和 XeTeX 进行测试。同时,当使用这些引擎时,标准字体设置使用TU(Unicode) 字体编码和 Latin Modern 字体:这是使用这些引擎最明智的起点。

需要 e-TeX 和更多原语

e-TeX 现在是格式所必需的,还有许多额外的 ('pdfTeX') 原语。这些原语允许以前设置起来要复杂得多的功能。这主要对软件包作者有利,他们不再需要考虑多个代码路径。e-TeX 还带来了更多寄存器,这意味着No room for a new ...几乎所有实际文档都不再需要寄存器。

expl3并且ltcmd(是xparse)格式

编程层expl3ltcmd(提供\NewDocumentCommand等)现已集成到格式中。这意味着用户的加载时间更快,程序包作者的设置也更简单。\NewDocumentCommand等为用户和程序员提供了更简单的方法来获取参数,而不仅仅是一组简单的强制参数。

钩子管理

LaTeX 现在提供了一组丰富的钩子,可以对其进行排序。例如,这包括在 shipout 开始时、文档开始之前、期间和之后发生的钩子等。这整合了以前依赖于包的几个钩子。排序和管理钩子条目的能力是新的,可以更好地处理包交互。可以将通用钩子添加到一系列命令中,以减少以脆弱的方式修补命令的需要。

浮点计算支持

该命令\fpeval现在可以开箱即用,通过在 LaTeX 内扩展来执行浮点计算。

Keyval 选项处理

在 的加载基础上expl3,内核中现在提供 keyval 处理。最值得注意的是,这已扩展为允许包/类选项开箱即用地获取 keyval 条目。包作者无需切换到 即可使用这些机制expl3。它们还允许使用不同的选项重复加载包而不会触发错误:包能够确定选项之间的交互。

更好的 Unicode 支持

LaTeX 团队现在分发了一组 Unicode 数据文件,供 TeX 通用使用。这些数据文件用于支持 LaTeX 内核中的某些功能,最值得注意的是增强的大小写更改设置。后者将软件包中的想法集成到内核中,但进一步增强了它们。现在可以直接使用完整的 Unicode 大小写更改,即使使用 8 位引擎也是如此。增强的 Unicode 支持还意味着现在可以在/机制和加载文件时textcase使用完整的 Unicode 范围,而无需使用技巧。\label\ref

扩展的 NFSS

(新)字体选择方案 (NFSS) 已得到扩展,以便能够正确支持将小写字母与其他更改相结合。系统还进行了扩展,以分离字体粗细和字体宽度。

答案2

自 2013 年以来,在线使用 (La)TeX 是一个重大变化。WriteLaTeX 和 ShareLaTeX 两个网站已合并为 Overleaf,目前拥有超过 1000 万注册用户(据我了解,其中相当一部分积极的用户)。对于新用户或协作工作来说,Overleaf 的易用性不容小觑。当然还有其他网站提供类似的在线 LaTeX 体验,但我认为可以说,在撰写本文时,Overleaf 是市场领导者。

在类似的领域,LearnLaTeX 网站旨在帮助新用户开始使用 LaTeX,而无需购买书籍或安装任何东西。这项工作的关键是 David Carlisle 的努力,他提供了一个简单的在线 LaTeX 编译器,它从表单中获取输入并返回 PDF:一个称为 TeXLive.net 的系统。(他实际上做了很多:该系统适用于其他 TeX 格式,可以返回 HTML 等!)TeXLive.net 已被其他希望在 Web 浏览器中提供“真实”(La)TeX 排版示例的网站所采用,因此其使用范围远远超出了 LearnLaTeX 所针对的新用户。

答案3

内核中的后端支持

长期以来,LaTeX 基本上与引擎和后端无关:后端特定代码仅在外部包中加载和维护,例如 color、graphicx、hyperref、bookmark、animate、pdfcomment、transparent、pdflscape、tikz 等。在这样的设置中,对后端和引擎的实际支持可能因包而异,每个包维护者都必须开发和维护自己的后端支持。这也意味着,格式应提供的基本功能(例如颜色或添加链接)只能通过加载包来提供。

随着 expl3 进入内核,这种情况发生了变化:现在每次运行 LaTeX 还会加载一个文件,其中l3backend包含执行各种任务所需的后端代码,例如使用颜色、旋转框、添加图形、创建链接和其他 PDF 对象,因此将允许在未来为用户和软件包作者提供开箱即用的抽象、一致的界面。

如果另外加载了 PDF 管理代码,\DocumentMetadata则会加载更多的后端代码来管理所需的中央 PDF 资源,例如不透明度和 XMP 元数据。

hyperref,新的表单字段代码l3pdffield-testphase以及标记项目的代码已经使用了新的后端代码(如果加载了 PDF 管理代码):然后它们使用抽象的接口并让内核后端代码处理细节。

答案4

长期以来,表格一直被许多人视为 LaTeX 的弱点。有一些软件包可以增强表格功能,例如,并且可以使用其他软件包(booktabs例如、、、、、、、...)的组合来创建一些复杂的表格multirow。但是代码很快就会变得复杂。然后出现了旨在将许多以前软件包的许多功能组合成一个相当完整的软件包,从而大大简化了复杂表格的创建。不幸的是,由于多种与本文主题无关的原因,array尽管社区努力在等待新版本的同时保持其正常运行,但它仍停止了维护并在其他软件包发生变化后变得无法使用。tabularxtabularylongtablecolortblmakecelltabutabu

从那时起,我们中的许多人一直处于使用修补版本的不确定状态,知道tabu它随时都会崩溃,或者回到原来的状态!这些都不是最佳选择

然后在 2018 年和 2021 年,得益于 LaTeX 的另一项重大改进(LaTeX3/expl3),出现了两个软件包,它们使用两种不同的方法重新使表格发挥作用:

好矩阵

nicematrix使用 pgf 进行绘制,以 LaTeX3 编写。它几乎以相同的方式处理表格和数学数组,并促进包含 tikz 元素以突出显示单元格/行/列中的值。

表格数组

tabularray再次用 LaTeX3 编写,并使用 regexp 来解析和生成表格。这个包在语法方面最接近旧的 tabu,几乎可以在不做太多修改的情况下代替它使用。但是,仍然需要修改代码才能充分利用其高级功能。允许将tabularray大多数(如果不是全部)格式化代码放在表头中,这似乎非常符合 (La)TeX 将格式与内容分离的精神。

相关内容