MathJax v3.1的新增功能
版本3.1包括许多新特性,以及对版本3.0的几个问题的错误修复。这些将在下面描述。
TeX包名称更改
几个tex包的名称已更改,以符合新的命名约定。所有包名称现在都是小写。过去使用的混合大小写命名被证明是有问题的,因此四个扩展被重命名为所有小写: amscd
, colorv2
, configmacros
和 tagformat
.
如果您正在使用组件系统来加载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>
元素。原来的 mtextInheritFont
和 merrorInheritFont
属性控制这些元素是否使用与周围文本相同的字体,但在版本3.0中都不能正常工作。在版本3.1中已经修复了这一问题,因此当设置为时,这些字体将正确地用于指定元素的内容 true
.
如果这些设置为 false
,新的 mtextFont
和 merrorFont
属性指定用于这些元素内容的字体系列(或系列列表)。这允许您强制数学中的文本使用特定的字体。如果设置为空字符串,则将使用MathJax字体。
它们的默认值是
mtextInheritFont: false,
merrorInheritFont: false,
mtextFont: '',
merrorFont: 'serif',
这意味着MathJax字体将用于 <mtext>
元素,浏览器的serif字体将用于 <merror>
文本。见 所有输出处理器通用的选项 更多信息。
注: 的默认值 merrorInheritFont
已从更改 true
到 false
既然 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 类(及其子类)。
更新的演示
这个 web 和 node 示例已更新为使用3.1.0版中提供的新功能,并包含更多示例。尤其是,节点示例现在包括对节点应用程序使用更简单的加载机制、使用puppeter执行服务器端处理以及使用JSDOM进行服务器端处理的演示。