如何使Hexo支持Latex数学公式

在写技术博客时会遇到很多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

Reference

Hexo下mathjax的转义问题

Contents
  1. 1. Reference
|