在 Hexo 中渲染 MathJax 数学公式

显示数学公式看着才爽
最近更新:2018-09-28

【转自 冉茂松 的CSDN 博客】如何在 hexo 中支持 Mathjax?


1. 使用 Kramed 代替 Marked

  1. 在工程目录下执行以下命令来安装 kramed

    1
    2
    npm uninstall hexo-renderer-marked --save
    npm install hexo-renderer-kramed --save
  2. 打开 /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;
    }


2. 停止使用 hexo-math

如果安装了 hexo-math ,卸载它:

1
npm uninstall hexo-math --save

然后安装 hexo-renderer-mathjax 包:

1
npm install hexo-renderer-mathjax --save


3. 更新 Mathjax 的 CDN 链接

打开 /node_modules/hexo-renderer-mathjax/mathjax.html

<script> 更改为:

1
<script src='https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js?config=TeX-MML-AM_CHTML' async></script>


4. 更改默认转义规则

打开 node_modules\kramed\lib\rules\inline.js

1
escape: /^\\([\\`*{}\[\]()#$+\-.!_>])/,

更改为

1
escape: /^\\([`*\[\]()#+\-.!_>])/,

1
em: /^\b_((?:__|[\s\S])+?)_\b|^\*((?:\*\*|[\s\S])+?)\*(?!\*)/,

更改为

1
em: /^\*((?:\*\*|[\s\S])+?)\*(?!\*)/,


5. 在主题中开启 mathjax

进入到主题目录,打开 _config.yml ,把 mathjax 修改为 true:

1
2
3
# MathJax Support
mathjax:
enable: true

在需要的文章中的 Front-matter 里开启 mathjax:

1
2
3
4
5
6
---
title:
date:
tags:
mathjax: true
--


更多参考