让hexo-next完美支持mathjax

最近开始用mathjax写一些数据公式,才发现hexo虽然支持markdown但是对mathjax语法支持的不太好。综合网上的各种资料,加上自己的实践,整理出来修正的方法。

卸载默认的渲染引擎

1
npm uninstall hexo-renderer-marked --save

安装kramed引擎

1
npm install hexo-renderer-kramed --save

修改kramed的inline.js文件

文件位于:$HEXO\node_modules\kramed\lib\rules\inline.js

  • 更改escape的正则(第10行)

    1
    2
    // escape: /^\\([\\`*{}\[\]()#$+\-.!_>])/,
    escape: /^\\([`*\[\]()#$+\-.!_>])/,
  • 更改em的正则(第21行)

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

在Next主题中开启mathjax

找到next主题的_config.yml,修改mathjax的配置

1
2
3
4
mathjax:
enable: true
per_page: false
cdn: //cdn.bootcss.com/mathjax/2.7.1/latest.js?config=TeX-AMS-MML_HTMLorMML

在文章中添加声明

1
2
3
4
5
6
title: 深度学习入门1-线性代数-基本概念
tags:
- 深度学习
mathjax: true
abbrlink: 35217
date: 2017-12-04 15:52:02

清理缓存重新生成

1
2
3
hexo clean
hexo g
hexo d

END

参考资料