在写技术博客时会遇到很多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
即可。
更新:
在写公式时发现latex中的下标符号在markdown中表示斜体,因此会出现问题。
该问题可以通过更换hexo默认的渲染markdown的引擎换掉来解决,如hexo-renderer-pandoc.
npm uninstall hexo-renderer-marked --save
npm install hexo-renderer-pandoc --save