Hexo 整合 MathJax

为了在博文中嵌入数学公式,所以将MathJax和Hexo整合在一起了


这里不使用任何Hexo插件,仅仅是将MathJax的script标签加入到页面最后,这样子在页面dom加载完毕后执行MathJax将相关的表达式转换成数学公式。

按照官方的脚本安装教程,将下下列标签加入至页面底部

1
<script src='https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/latest.js?config=TeX-MML-AM_CHTML' async></script>

这里会有两个问题,第一,可能对 $$ 不支持,这时可以在页面中添加如下脚本

1
2
3
4
5
6
7
8
<script type="text/x-mathjax-config">
MathJax.Hub.Config({
tex2jax: {
inlineMath: [ ['$','$'], ["\\(","\\)"] ],
processEscapes: true
}
});
</script>

第二,Hexo中转换Markdown的库 marked.js 可能会对 MathJax 产生影响,此时需要对 marked.js 的源码进行修改,找到 ./node_modules/marked/lib/ 文件夹下的代码文件,找到类似于如下的代码

1
escape: /^\\([\\`*{}\[\]()# +\-.!_>])/,

改成这样

1
escape: /^\\([`*\[\]()# +\-.!_>])/,

这一步是在原基础上取消了对 \\, \{ , \} 的转义(escape)

以下为测试代码

1
2
3
$$
H = -\sum\limits_{i=1}^{k}p_i\log_2(p_i)
$$

$$
H = -\sum\limits_{i=1}^{k}p_i\log_2(p_i)
$$

1
$G = 1 - \sum\limits_k (p_k)^2$

$G = 1 - \sum\limits_k (p_k)^2$