最近手贱将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
文件的escape
和em
:1
2//escape: /^\\([\\`*{}\[\]()#$+\-.!_>])/,
escape: /^\\([`*\[\]()#$+\-.!_>])/,
1 | //em: /^\b_((?:__|[\s\S])+?)_\b|^\*((?:\*\*|[\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
预览是否已生效。
-
本文作者:
Shintaku
本文链接:
https://www.shintaku.xyz/posts/hexo-mathjax/
版权声明:
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Shintaku's Blog 。