使用 Mathjax

使用 Kramed 代替 Marked

hexo 默认的渲染引擎是 marked ,但是 marked 不支持 mathjax 。 kramed 是在 marked 的基础上进行修改。我们在工程目录下执行以下命令来安装 kramed 。

npm uninstall hexo-renderer-marked --save
npm install hexo-renderer-kramed --save

然后,打开 /node_modules/hexo-renderer-kramed/lib/renderer.js ,更改:

function formatText(text) {
// Fit kramed's rule: $$ + \1 + $$
return text.replace(/`\$(.*?)\$`/g, '$$$$$1$$$$');
}

为

function formatText(text) {
return text;
}

安装 Mathjax 包

如果之前安装过 hexo-math ,则先卸载 hexo-math 再安装 mathjax

npm uninstall hexo-math --save
npm install hexo-renderer-mathjax --save

更新 Mathjax 的 CDN 链接

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

<script src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>

为

<script src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-MML-AM_CHTML"></script>

更改默认转义规则

因为 hexo 默认的转义规则会将一些字符进行转义,比如 _ 转为 <em> , 所以我们需要对默认的规则进行修改。打开 /node_modules/kramed/lib/rules/inline.js ,修改 inline 变量中。

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

更改为:

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

把

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

更改为:

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

开启 Mathjax

打开 主题配置文件 ,增加以下字段:

mathjax:
enable: true
per_page: true # 按需加载mathjax

在每次需要用的博文中,在文章的 Front-matter 里打开 mathjax 开关

mathjax: true

————————————————

版权声明:本文为CSDN博主「冉茂松」的原创文章,遵循 CC 4.0 by-sa版权协议 ,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/u014630987/article/details/78670258​