MathJax v3.1的新增功能

版本3.1包括许多新特性,以及对版本3.0的几个问题的错误修复。这些将在下面描述。


TeX包名称更改

几个tex包的名称已更改,以符合新的命名约定。所有包名称现在都是小写。过去使用的混合大小写命名被证明是有问题的,因此四个扩展被重命名为所有小写: amscdcolorv2configmacrostagformat .

如果您正在使用组件系统来加载MathJax,那么旧的名称现在将继续工作,但是向后兼容性支持在将来可能会被删除,因此您应该将名称更改为其小写版本,以防将来发生更改。请注意,名称不仅需要在 tex.packages 数组,但也以其配置选项的名称(如果有)和 autoload 配置(例如,如果您正在禁用 colorv2 扩展)。

如果您使用的是MathJax模块的直接导入,那么现在需要更改为新名称,因为没有向后兼容选项。

文本格式错误

有一种新的 formatError 用于TeX input jax的选项,该选项提供一个函数,该函数在TeX表达式的处理过程中发生语法或其他错误时被调用。这可用于捕获错误以进行报告,或以其他方式处理错误。见 formatError 文件。

名词定义的包选项

这个 noundefined 包现在有类似于版本2中可用的配置选项的配置选项。这些功能包括设置文本颜色、背景颜色和文本大小,以便在TeX公式中不显示未定义的宏名称。见 noundefined options 有关详细信息。

新的 textmacros 包裹

有一种新的 textmacros 用于TeX input jax的包,该包支持在出现大量文本模式宏时对其进行处理 \text{{}} 或其他生成文本模式材质的类似设置。这允许您在文本模式材料中引用TeX特殊字符、创建重音字符、更改字体和大小、添加间距等。见 文本宏 第页了解完整的详细信息。

新安全扩展

这个 Safe 扩展hs现在已经从v2移植到v3。此扩展允许您过滤从TeX、ascimath或MathML输入生成的底层MathML属性中使用的值。这可以用来防止某些URL被使用,或某些CSS样式被使用,等等。请参阅 排版用户提供的内容 了解更多详细信息。

新的辅助功能

MathJax的可访问性代码在速度和可靠性方面进行了一些内部改进。此外,现在德语语言的语音输出已经本地化。辅助功能上下文菜单已更新,以包括选择本地化语言的功能(在 speech 子菜单),并显示其他功能,例如在 highlight 子菜单。最后,还有一个新的控制面板,用于管理 Clearspeak rules 的子菜单 Speech 菜单。见 可访问性扩展 了解更多详细信息。

MathML验证选项

MathML输入jax能够检查和报告或(有时)纠正MathML树中的错误,但是控制这种检查的选项没有文档记录,并且不容易更改。版本3.1公开了这些选项,因此可以在MathML输入jax的配置块中设置这些选项。

新的输出配置选项

有两个新的输出配置选项,以及两个现有选项的更新行为和默认值。这些选项控制用于 <mtext><merror> 元素。原来的 mtextInheritFontmerrorInheritFont 属性控制这些元素是否使用与周围文本相同的字体,但在版本3.0中都不能正常工作。在版本3.1中已经修复了这一问题,因此当设置为时,这些字体将正确地用于指定元素的内容 true .

如果这些设置为 false ,新的 mtextFontmerrorFont 属性指定用于这些元素内容的字体系列(或系列列表)。这允许您强制数学中的文本使用特定的字体。如果设置为空字符串,则将使用MathJax字体。

它们的默认值是

mtextInheritFont: false,
merrorInheritFont: false,
mtextFont: '',
merrorFont: 'serif',

这意味着MathJax字体将用于 <mtext> 元素,浏览器的serif字体将用于 <merror> 文本。见 所有输出处理器通用的选项 更多信息。

注: 的默认值 merrorInheritFont 已从更改 truefalse 既然 merrorFont 可用。

创业承诺修订

这个 MathJax.startup.promise 现在以更直观的方式工作。在过去,它最初被设置为一个承诺,当MathJax准备好并且 DOMContentLoaded 事件发生,并被 startup.pageReady() 函数转换为在初始排版完成时解析的函数。所以你不能用 MathJax.startup.promise 在不重写 startup.pageReady() 方法也是如此。

在版本3.1中 MathJax.startup.promise 已更改为解决 startup.pageReady() 方法完成(包括初始排版操作)。这使得这一承诺成为确定初始排版完成时间的可靠方法。

请参见 在启动期间执行操作处理异步排版 ,以及 pageReady() 了解更多详细信息。

用于清除排版内容的新API

如果您在动态地添加和删除页面中的内容,您需要告诉MathJax abiout您在做什么,这样它就可以对任何新的数学进行排版,而忘记您删除的任何旧的排版数学。在3.0版中 MathJax.typesetClear() 方法可以用来告诉MathJax忘记 all 数学是排版的,但是如果你只删除了其中的一部分,就没有简单的方法让它忘记你删除的数学。在版本3.1中,通过允许 MathJax.typesetClear() 方法接受元素数组,该数组的内容应被忽略。看到了吗 更新以前的排版内容 了解更多详细信息。

用于在容器中获取数学的新API

MathJax使用名为 MathItems . 它们存储原始的数学字符串、数学在文档中的位置、用于处理它的输入jax,等等。过去,您可以通过存储在 MathDocument 对象存储在 MathJax.startup.document ,但要以方便的方式访问各个MathItems并不容易。在v3.1中现在有一个函数 MathJax.startup.document.getMathItemsWithin() 它返回DOM容器元素(或DOM元素集合)中类型集数学的所有MathItems。看到了吗 在页面上查找数学 有关详细信息。

更改为SRE接口

在版本3.0.5中 a11y/sre 模块暴露了一个值 sreReady 当语音规则引擎准备好使用时,这一承诺将得到解决。由于SRE中的更改(现在可以将其配置为加载本地化的翻译数据,因此在发生这种情况时可能会变得不就绪),因此 sreReady 版本3.1.0中的value现在是一个返回promise的函数,因此应该称为 sreReady() .

修复了LiteDOM和domadapters

这个 LiteDOM 在版本3.0.5中,未能正确处理注释:注释被正确读取并被忽略,但是当DOM序列化时,这些注释没有包含在输出中。在版本3.1.0中,已经对其进行了修复,以便正确维护注释。此外 doctype 文档的 LiteDOM ,并且可以通过新的 doctype() 方法 DOMAdaptor 类(及其子类)。

更新的演示

这个 webnode 示例已更新为使用3.1.0版中提供的新功能,并包含更多示例。尤其是,节点示例现在包括对节点应用程序使用更简单的加载机制、使用puppeter执行服务器端处理以及使用JSDOM进行服务器端处理的演示。