在Hexo中使用mathjax渲染数学公式
在 hexo 中,你会发现我们不能用 Latex 语法来书写数学公式,这对于书写学术博客来说是很大的不便,因为我们会经常碰到很多的数学公式推导,但是我们可以通过安装第三方库来解决这一问题。 ### 第一步: 使用Kramed代替 Marked hexo 默认的渲染引擎是 marked ,但是 marked 不支持 mathjax 。 kramed 是在 marked 的基础上进行修改。我们在工程目录下执行以下命令来安装 kramed .
1 | npm uninstall hexo-renderer-marked --save |
然后,更改/node_modules/hexo-renderer-kramed/lib/renderer.js,更改:
1
2
3
4
5// Change inline math rule
function formatText(text) {
// Fit kramed's rule: $$ + \1 + $$
return text.replace(/`\$(.*?)\$`/g, '$$$$$1$$$$');
}1
2
3
4// Change inline math rule
function formatText(text) {
return text;
}1
npm uninstall hexo-math --save
1
npm install hexo-renderer-mathjax --save
第三步: 更新 Mathjax 的 CDN 链接
首先,打开 /node_modules/hexo-renderer-mathjax/mathjax.html
然后,把 <script> 更改为: 1
<script src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-MML-AM_CHTML"></script>
第四步: 更改默认转义规则
因为 hexo 默认的转义规则会将一些字符进行转义,比如
**_** 转为 <em> ,
所以我们需要对默认的规则进行修改. 修改 node_modules.js 中的第11行:
1
2// escape: /^\\([\\`*{}\[\]()#$+\-.!_>])/,
escape: /^\\([`*\[\]()#$+\-.!_>])/,1
2// em: /^\b_((?:__|[\s\S])+?)_\b|^\*((?:\*\*|[\s\S])+?)\*(?!\*)/,
em: /^\*((?:\*\*|[\s\S])+?)\*(?!\*)/,
第五步: 开启mathjax
在主题 **_config.yml** 中开启 Mathjax , 找到
mathjax 字段添加如下代码: 1
2mathjax:
enable: true1
2
3
4
5
6---
title: Testing Mathjax with Hexo
category: Uncategorized
date: 2017/05/03
mathjax: true
---