基于MathJax渲染数学公式

太白
2022-05-19 / 0 评论 / 1 点赞 / 956 阅读 / 1,906 字 / 正在检测是否收录...
温馨提示:
本文最后更新于 2022-05-19,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

MathJax简介:MathJax是一款运行在浏览器中的开源的数学符号渲染引擎,使用MathJax可以方便的在浏览器中显示数学公式,不需要使用图片。目前,MathJax可以解析Latex、MathML和ASCIIMathML的标记语言。
 

一、引入MathJax

在页脚处,引入CDN

<script type="text/javascript" async src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js?config=TeX-MML-AM_CHTML" async></script>

但这个js还是会调用到 cdn.mathjax.org 里的一些配置js文件,我们最好在head内加一个dns-prefetch,用于网页加速,了解更多可以访问我另外一篇文章:here

<link rel="dns-prefetch" href="//cdn.mathjax.org" />

二、识别公式配置

基础配置

<script type="text/x-mathjax-config">
      MathJax.Hub.Config({
        showProcessingMessages: false,		// 去除左下角加载框
        messageStyle: "none",							// 是否显示加载信息
        extensions: ["tex2jax.js"],
        jax: ["input/TeX", "output/HTML-CSS"],
        tex2jax: {
          inlineMath:  [ ['$','$'], ["\\(","\\)"] ],	// 可以自定义行内公式的标识
          displayMath: [ ['$$','$$'], ["\\[","\\]"] ],	// 行间公式同理
          processEscapes: true,							// 是否允许使用\$来escape一些信息
          skipTags: ['script', 'noscript', 'style', 'textarea', 'pre','code', 'a', 'annotation', 'annotation-xml'],	// 不渲染这些标签内的东西
          ignoreClass: 'comment-content'			// 设置具有哪些cssclass的标签不用tex2jax预处理
        },
        TeX: {extensions: ["AMSmath.js","AMSsymbols.js","extpfeil.js","mhchem.js"]},
        "HTML-CSS": {									// 处理HTML/CSS输出的配置
          availableFonts: ["STIX","TeX"],		// 可用字体
          showMathMenu: false					// 不显示右键菜单
        },
        CommonHTML: {
          styles: {".mjx-ex-box-test": {overflow: "hidden"}} 	
        }
      });
    </script>

其它修改(按需)

# 去掉蓝色边框: 添加CSS
.MathJax{
  outline:0;
}

# 修改字体大小: 添加CSS
.MathJax span{
  font-size:15px;
}

三、使用触发

在需要的地方调用函数

<script>
  function aaaaa(){
  	// 渲染公式原始数据到页面
  	// ...........
  
  	// 方法一:全页面渲染
  	MathJax.Hub.Queue(["Typeset",MathJax.Hub]);
  
  	// 方法二:按照id局部渲染
  	var testDiv = document.getElementById("test");
  	MathJax.Hub.Queue(["Typeset",MathJax.Hub, testDiv]);
  }
</script>
1

评论区