面向数学应用程序的Web应用显示引擎——MathJax

2019年12月12日 01:28

介绍

MathJax是适用于所有现代浏览器的LaTeX,MathML和AsciiMath表示法的开源JavaScript显示引擎。它的设计目标是将网络技术的最新进展整合到支持主要浏览器和操作系统,单一的确定的网络数学平台上。它不需要用户进行任何设置(无需下载插件或安装软件),因此页面作者可以编写包含数学的Web文档,并确信用户将能够自然而轻松地查看它。只需在网页中包含MathJax和一些数学运算,剩下的就由MathJax完成。



github

https://github.com/mathjax/MathJax


功能

MathJax的一些主要功能包括:

  • 在HTML页面中高质量显示LaTeX,MathML和AsciiMath表示法
  • 大多数浏览器都支持,没有插件、额外的字体或针对阅读器的特殊设置
  • 便于作者,对发布者灵活,对开发人员可扩展支持数学可访问性,
  • 剪切和粘贴互操作性以及其他高级功能
  • 与其他Web应用程序集成的强大API
  • MathJax组件

    MathJax版本3使用称为组件的文件,这些文件包含各种MathJax模块,可以将其包含在网页中或通过NodeJS在服务器上进行访问。一些组件将运行MathJax所需的所有组件与一种或多种输入格式和特定​​的输出格式结合在一起,而其他组件是可以在需要时按需加载的组件,或通过指定要组合的组件的配置来组合自定义方式。有关使用说明,请参见MathJax文档。组件提供了MathJax模块的便捷包,但是你可以形成自己的自定义组件,也可以直接在服务器上的节点应用程序中使用MathJax的模块。有一些Web示例示范了如何在网页中使用MathJax以及如何构建自己的组件,还有一些节点示例说明如何在节点应用程序中使用组件或直接调用MathJax模块。

    安装使用

    如果要将MathJax从CDN加载到网页中,则无需安装任何程序。只需使用从CDN加载MathJax的脚本标签。例如:

    <script id="MathJax-script" async
    src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js">
    </script>

    托管您自己的MathJax组件副本:

    npm install mathjax
    mv node_modules/mathjax/es5 <path-to-server-location>/mathjax

    或者,您可以通过GitHub获取:

    git clone https://github.com/mathjax/MathJax.git mj-tmp
    mv mj-tmp/es5 <path-to-server-location>/mathjax
    rm -rf mj-tmp

    然后(无论哪种情况),都可以使用如下脚本标签:

    <script id="MathJax-script" async
    src="<url-to-your-site>/mathjax/tex-chtml.js"></script>

    其中<url-to-your-site>由URL替换为您将MathJax文件移至上方的位置的URL。

    在Node.js应用程序中使用MathJax组件

    要在Node.js应用程序中使用MathJax组件,请安装mathjax软件包:

    npm install mathjax
    require('mathjax').init({ ... }).then((MathJax) => { ... });

    其中第一个{...}是MathJax配置,第二个{...}是加载MathJax之后要运行的代码。例如。

    require('mathjax').init({
    loader: {load: ['input/tex', 'output/svg']}
    }).then((MathJax) => {
    const svg = MathJax.tex2svg('\frac{1}{x^2-1}', {display: true});
    console.log(MathJax.startup.adaptor.outerHTML(svg));
    }).catch((err) => console.log(err.message));

    在Web应用程序中的演示



    总结

    MathJax是一个面向数学的显示JavaScript引擎,支持node和绝大多数浏览器,如果你正有类似的苦恼,不妨尝试使用它,Enjoy it!