Hexo数学公式设置

本文最后更新于:2024年3月18日 下午

Hexo关于Latex的一些设置,避免重复渲染等问题。

重装渲染引擎

由于需要在markdown中插入数学公式,因此了解到了Latex,但是在完成了公式的输入后发现hexo中并不能成功渲染Latex公式。为什么呢?这是因为hexo使用自带的hexo-renderer-marked引擎来渲染页面,但是hexo-renderer-marked引擎不能渲染Latex引擎,因此我们需要更换引擎。

在更换渲染引擎时首先需要先卸载原先的渲染引擎,再安装新引擎。

这里使用kramed引擎,虽然kramed引擎不能渲染markdown all in one中的下标”~ ~”以及 上标”^ ^”这类格式,但姑且可以用Mathjax的_{}^{}代替

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

如果出现数学公式重复渲染的情况,在<your-priject-dir>/node_modules/hexo-renderer-kramed/lib/renderer.js中,将

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

改为

1
2
3
function formatText(text) {
return text;
}

如果出现行内公式无法渲染的情况,在<your-project-dir>/node_modules/kramed/lib/rules/inline.js中,将

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

改为

1
2
escape: /^\\([`*\[\]()#$+\-.!_>])/,
em: /^\b_((?:__|[\s\S])+?)_\b|^\*((?:\*\*|[\s\S])+?)\*(?!\*)/,

改为

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

使用hexo-renderer-mathjax

首先卸载原本的hexo-math

1
npm uninstall hexo-math --save

然后安装hexo-renderer-mathjax

1
npm install hexo-renderer-mathjax --save

若渲染出现问题,则更换Mathjax的CDN

<path-to-your-project>/node_modules/hexo-renderer-mathjax/mathjax.html中,将

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

改为

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

Tips

要想用Latex渲染花括号{},如果\{\}不生效的话,可以改成\\{\\}


Hexo数学公式设置
http://starnight.top/2020/11/13/Hexo数学公式设置/
作者
Cardy Xie
发布于
2020年11月13日
许可协议