在写技术博客时会遇到很多Latex数学公式,本文将介绍如何在Hexo中实现对Mathjax的支持。
Hexo的默认渲染引擎marked不支持Mathjax,因此我们需要替换为kramed(在marked基础上进行修改):
npm uninstall hexo-renderer-marked —save
npm install hexo-renderer-kramed —save
然后将/node_modules/hexo-renderer-kramed/lib/renderer.js
文件中的
// Change inline math rule
function formatText(text) {
// Fit kramed's rule: $$ + \1 + $$
return text.replace(/`\$(.*?)\$`/g, '$$$$$1$$$$');
}
改为
// Change inline math rule
function formatText(text) {
return text;
}
之后就可以开始安装mathjax了:
npm uninstall hexo-math --save
npm install hexo-renderer-mathjax --save
安装好后,需要更新mathjax的CDN链接,将/node_modules/hexo-renderer-mathjax/mathjax.html
中的<script>
改为
<script src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-MML-AM_CHTML"></script>
为了防止语义冲突,还需要将<path-to-your-project/node_modules/kramed/lib/rules/inline.js
中的
escape: /^\\([\\`*{}\[\]()#$+\-.!_>])/,
em: /^\b_((?:__|[\s\S])+?)_\b|^\*((?:\*\*|[\s\S])+?)\*(?!\*)/,
改为
escape: /^\\([`*\[\]()# +\-.!_>])/,
em: /^\*((?:\*\*|[\s\S])+?)\*(?!\*)/,
最后在的配置文件中开启mathjax
mathjax:
enable: true
在需要添加latex数学公式的博客中,加入 mathjax: true
即可。