MathJax v4.0.0
MathJax 团队很高兴地宣布期待已久的 MathJax v4.0.0 正式发布。这是团队三年多工作的结晶,带来了重大的新功能和重要改进。虽然等待时间较长,但我们希望结果值得期待。v4 中的部分新功能和改进包括:
- 扩展字体支持:新增 11 种字体。
- 新默认字体:字符覆盖范围大幅扩大。
- 行断支持:适用于内联和显示公式。
- 更新的表达式探索器:默认启用。
- 语音生成分离:移至 web worker 线程以提高性能。
- HTML 嵌入支持:可在 TeX 和 MathML 表达式中嵌入 HTML。
- 模块化支持:提供 ES6 和 CommonJS 模块。
- 新 TeX 扩展:包括 v2 的
begingroup
扩展(更多功能)及多个字体相关扩展。 - textmacros 扩展:包含在所有组合组件文件中。
- mathtools 包更新:整合了 2022 和 2024 年的变更。
- CHTML 输出改进:在基于 WebKit 的浏览器中优化文本基线对齐,并增强可拉伸分隔符。
- promise-based 调用:在文档级别提供更多基于 Promise 的转换和排版接口。
对于多数网站,升级到 v4 的唯一改动是更改加载 MathJax 的 URL,指向版本 4 而非版本 3,并移除 URL 中的 /es5
目录。大多数 v3 配置仍兼容 v4;但如果使用 startup.ready()
函数修改 MathJax 或创建新 TeX 扩展,可能需要调整。一个重要变化是,由于 TeX 包数量增加,移除了 all-packages
扩展和“-full”组件。如果依赖这些,需切换到无“-full”的组件,并利用 autoload
扩展自动加载所需包,或手动加载它们。
MathJax 文档已针对 v4 进行全面更新,新增了关于在 Node.js 中使用 MathJax 的缺失或有限内容,包括大量示例和细节。更多关于上述功能的详细信息,请参阅 https://docs.mathjax.org/en/latest/whatsnew.html 部分(长达 50 多页),特别是检查 https://docs.mathjax.org/en/latest/whatsnew.html#breaking-changes 部分以了解可能影响使用的变更。
MathJax Web 演示仓库已更新至 v4.0 并重新组织以便查看。演示现在包含“Show Source”按钮,显示解释和关键源代码片段,而不是使用单独的 .md 文件,从而减少了文件浏览量,便于比较源码与输出。文档中新增了在浏览器中使用 MathJax 的示例;多数列在 https://docs.mathjax.org/en/latest/examples/browser.html 部分。
MathJax Node 演示仓库也在更新和重组中,但工作仍在进行(目前可能需要阅读代码注释)。该仓库的工具功能更强大完整,通用功能已移至可共享的实用库。这意味着示例不再是独立文件,但能更完整地使用 MathJax 功能。例如,所有生成 CHTML 或 SVG 输出的示例可自定义字体或添加语音标签。由于语音功能已集成,不再需要单独的语音演示。工具现在支持批量排版表达式、从文件读取或处理完整 HTML 页面,因此减少了基于页面的工具数量但扩展了功能。MathJax 文档更详细地覆盖了在 Node.js 应用中的使用(相比 v3),许多示例列在 https://docs.mathjax.org/en/latest/examples/node.html 部分。
如往常一样,您可以在 https://github.com/mathjax/MathJax/issues 报告问题;这是一个重大更新,肯定有需要调整的地方。😊
总结
MathJax v4.0.0 的发布标志着团队三年多努力的成果,引入了多项关键改进和新功能,旨在提升用户体验和性能。主要内容总结如下:
- 核心新特性:包括扩展字体支持(新增 11 种字体)、新默认字体(字符覆盖范围扩大)、行断支持(适用于内联和显示公式)、默认启用的表达式探索器、语音生成分离到 web worker 线程以优化性能、HTML 嵌入功能(允许在 TeX 和 MathML 中嵌入 HTML)、ES6 和 CommonJS 模块支持、新 TeX 扩展(如
begingroup
和相关字体扩展)、textmacros 扩展集成到所有组件中、mathtools 包更新(整合了 2022 和 2024 年变更)、CHTML 输出改进(优化文本基线对齐和可拉伸分隔符)、以及更多 promise-based 文档级调用接口。 - 升级指南:用户只需修改加载 URL 指向 v4 并移除
/es5
目录即可;v3 配置大多兼容,但使用startup.ready()
或依赖已移除的all-packages
和“-full”组件的用户需切换到 autoload 扩展或手动加载包。 - 文档与演示更新:v4 文档全面更新,新增 Node.js 使用细节和示例;Web 演示仓库添加了“Show Source”按钮简化源码查看;Node 演示仓库正在重组,工具功能增强,支持批量处理和页面级操作。
- 问题报告:鼓励用户通过 https://github.com/mathjax/MathJax/issues 报告问题,以适应这个重大更新的调整需求。