Hexo博客使用MathJax公式

目录

  1. 1. 更换渲染引擎
  2. 2. 更改字符集
  3. 3. 更改cdn链接

最近手贱将Hexo的博客的版本升到了3.8.0,顺便将npm组件也都升级了。一开始没有发现什么问题,后来打开一篇带公式的文章发现里面的部分MathJax公式渲染失败了。想到之前曾经因为Markdown里面的下划线_表示斜体,和MathJax里的下标冲突了,之前改过的node_modules被更新覆盖了,这次索性重新搞一遍。

更换渲染引擎

卸载原来的hexo-renderer-marked,换成专门对MathJax魔改过的hexo-renderer-kramed(注意kram这个单词的拼写):

npm uninstall hexo-renderer-marked --save
npm install hexo-renderer-kramed --save

再安装hexo-renderer-mathjax渲染器:

npm install hexo-renderer-mathjax --save

更改字符集

为了避免语义冲突,修改node_modules/kramed/lib/rules/inline.js文件的escapeem

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

1
2
//em: /^\b_((?:__|[\s\S])+?)_\b|^\*((?:\*\*|[\s\S])+?)\*(?!\*)/,
em: /^\*((?:\*\*|[\s\S])+?)\*(?!\*)/,

更改cdn链接

修改node_modules/hexo-renderer-mathjax/mathjax.html的最后一行,将http改成https

1
2
<!--script src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script-->
<script src="https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>

这样是为了避免在网站为https协议时请求http的内容时被浏览器block。使用hexo s预览是否已生效。