什么是mathjax?

mathjax是一个用于latex、mathml和ascimath表示法的开源javascript显示引擎,可在所有现代浏览器中工作。它的设计目标是将web技术的最新进展整合为一个单一的、确定的、支持主要浏览器和操作系统(包括移动设备上的浏览器和操作系统)的web平台上的数学。它不需要用户设置(不需要下载插件或安装软件),因此页面作者可以编写包含数学的web文档,并确信用户能够自然、轻松地查看它。其中一个简单地包括mathjax和web页面中的一些数学,而mathjax完成其余的工作。

mathjax使用基于web的字体来生成高质量的排版,这种排版可以以全分辨率缩放和打印,这与包含在位图图像中的数学不同。使用mathjax,数学是基于文本的,而不是基于图像的,因此它可用于搜索引擎,这意味着可以搜索公式,就像页面的文本一样。mathjax允许页面作者使用tex和latex符号编写公式, MathML (用XML格式表示数学的万维网联盟标准),或 AsciiMath 表示法。mathjax可以生成多种格式的输出,包括带有css样式的html或可缩放矢量图形(svg)图像。

mathjax包括生成可与屏幕阅读器一起使用的数学表达式的可说出文本版本的能力,为视力受损的人提供可访问性。mathjax中的辅助支持还包括一个交互式表达式浏览器,它可以帮助这些用户一次“遍历”一个表达式,而不必一次听一个复杂的表达式,并且能够“折叠”部分表达式以允许要读取的简化表达式,只有在需要更多详细信息时才展开。

mathjax是模块化的,因此它只能在必要时加载组件,并且可以根据需要进行扩展以包含新功能。mathjax是高度可配置的,允许作者根据其网站的特殊需求对其进行自定义。与mathjax的早期版本不同,版本3可以打包成一个文件,或者作为那些以这种方式管理javascript资产的站点的大型捆绑包的一部分包含。

最后,mathjax有一个丰富的应用程序编程接口(api),可用于使web页面上的数学具有交互性和动态性。版本3已经用typescript(一个包含类型检查和转换到es5的javascript版本)在es6中重写。它被设计成可以很容易地在服务器上使用(作为 node.js 应用程序)在浏览器中。这使得对包含数学的网页的预处理比版本2要容易得多,因此网站可以预先执行所有的数学处理,而不是让浏览器在每次查看网页时都这样做。