在 Hexo 中,无法显示LaTeX数学公式,这对于书写学术博客来说是很大的不便。
以下便是通过安装第三方库来解决这一问题。
安装Kramed代码
Hexo 默认的渲染引擎是 Marked,但是 Marked 不支持 Mathjax。 Kramed 是在 Marked 的基础上进行修改。我们在工程目录下执行以下命令来安装 Kramed.
1 | npm uninstall hexo-renderer-marked --save |
然后,更改renderer.js(路径:/node_modules/hexo-renderer-kramed/lib/renderer.js),
更改:
1 | // Change inline math rule |
为:
1 | // Change inline math rule |
停止使用 hexo-math
首先,如果你已经安装 hexo-math, 请卸载它:
1 | npm uninstall hexo-math --save |
然后安装 hexo-renderer-mathjax 包:
1 | npm install hexo-renderer-mathjax --save |
更新 Mathjax 的 CDN 链接
首先,打开mathjax.html(路径:/node_modules/hexo-renderer-mathjax/mathjax.html)
然后,把<script>更改为:
1 | <script src="//cdn.bootcss.com/mathjax/2.7.0/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script> |
在Marked中更改默认转义规则
因为 Hexo 默认的转义规则会将一些字符进行转义,比如 _ 转为 <em>, 所以我们需要对默认的规则进行修改.
首先, 打开inline.js(路径:node_modules\kramed\lib\rules\inline.js)
1 | # 第11行 |
更改为:
1 | escape: /^\\([`*\[\]()# +\-.!_>])/, |
把
1 | # 第20行 |
更改为:
1 | em: /^\*((?:\*\*|[\s\S])+?)\*(?!\*)/, |
开启mathjax
在主题 _config.yml (路径:/theme/next/_config.yml)中开启 Mathjax,
找到 mathjax 字段修改如下代码(false改为true):
1 | mathjax: |
在文章的Front-matter里打开Mathjax开关
1 | --- |
测试
LaTeX源码:
1 | \begin{eqnarray} |
显示效果,如下所示:
可以正常显示麦克斯韦方程组。