解决MathJax的CDN过期问题,实现本地化

3,878 阅读1分钟

如果以官方cdn形式使用MathJax,网速慢的时候可能会出现数学表达式解析失败的问题,今天就花点时间弄了下本地化。项目非常大,依赖太多,如果有更好的方式,请指点。

将GitHub上的项目clone到本地 github.com/mathjax/Mat…


更新于2021-09-10:刚刚看了下mathjax的仓库,目录结构相比较两年前变化很大, 本文的方法以及太老,如果对mathjax版本没要求,可以到我的github下载当时的版本,传送门:Mathjax

在本地开启一个服务,在刚刚down下来的项目test文件夹中,打开index.html可以查看此时MathJax是否可用,正常情况下不会出现问题。

文件MathJax.js及文件夹config、extensions、fonts/HTML-CSS、jax、localization是项目实现本地化的基础

将包含以上文件的文件夹放到项目根目录即可。 ####引用方式:

<script src="${path}/MathJax/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>

"${path}"是你的项目路径,如果出现问题,请将MathJax文件夹放在根目录下。 "?"后面是可配置的参数,具体查看官网相关介绍 #####我们要在网页加载时初始化MathJax,并进行一些配置,以下是我在项目中使用的配置,仅供参考。

    <script type="text/x-mathjax-config">
        MathJax.Hub.Config({
            extensions: ["tex2jax.js"],
            jax: ["input/TeX", "output/HTML-CSS"],
            tex2jax: {
                inlineMath:  [ ["$", "$"] ],
                displayMath: [ ["?","?"] ],
                skipTags: ['script', 'noscript', 'style', 'textarea', 'pre','code','a'],
                ignoreClass:"class1"
            },
            "HTML-CSS": {
                showMathMenu: false
            },
            showProcessingMessages: false,
            messageStyle: "none"
        });
    </script>

通常我们是通过接口取得数学表达式的相关数据,要在获取到数据后,调用我们之前注册的方法

  MathJax.Hub.Queue(['Typeset', MathJax.Hub, "topicStat"]);

此时查看网页会发现,数学表达式已经被成功转译。

具体配置及含义,请参考:

官网:mathjax-chinese-doc.readthedocs.io/en/latest/c…

民间大神:www.cnblogs.com/tianshifu/p…