Hexo中数学公式渲染失败的解决

Stardustor Lv2

问题的产生

如果你和我一样会写一些拥有大量数学公式的md文档,当你安装好hexo-filter-mathjax后试图在网页上渲染时,大概率会出现渲染失败的问题。

由于我平常撰写markdown文档的编辑器是obsidian,查阅文档可知,obsidian同样是使用mathjax进行渲染的,所以首先可以排除我的公式语法不支持的问题。

并且其他的一些公式渲染正常,我的mathjax的配置大概率也是没有问题的。

经过检查发现,这种问题的出现大概率是因为markdown中下划线表示斜体,而在数学公式中表示下标,二者冲突了。

在下图中也可以看到,未正确渲染的部分并不是黄底标注的(若是因为数学公式格式错误造成的无法渲染,会以黄底标注的形式呈现),并且仔细观察可以发现 {\nu}(\psi,\nu) 都是斜体标注的,所以可以认为在这里本使用了本不应当使用的markdown渲染器进行了渲染,这就是造成问题的原因。

问题的解决

根据网上对于此问题的解决方案,我选择了卸载原本markdown渲染使用的marked,而改用pandoc。为此,首先需要先在电脑上下载pandoc ,否则在之后可能出现报错。

然后在hexo的根目录下运行命令

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

这时候再运行

1
2
3
hexo clean
hexo g
hexo s

可以发现,公式已经可以正常渲染了。

遇到的其他问题

在进行如上的过程中,我也遇见了非常多的其他问题,在这里也将解决方法罗列在下边。

  1. hexo clean处就报错:[ERROR][hexo-renderer-pandoc] pandoc exited with code null.

    这是由于在执行install hexo-renderer-pandoc的时候电脑上并没有安装pandoc,只需要先卸载hexo-renderer-pandoc插件,在下载好pandoc后再进行安装就不会报错了。

  2. 完成上述过程后大部分公式渲染正确,但仍有部分公式报错

    出现这样的问题暂时我也不明白是什么原因引起的,其实在第一张图片中出现的就是这样一个问题。在我试着在下划线前加上“\_“反转义后,公式可以正常渲染了,但是相应的这部分也没有被识别为下标。但当我删除“\“并执行hexo clean && hexo g && hexo s后,这部分公式竟然被正常渲染了!所以重复多次渲染可能会有助于解决这个问题。

目录
Hexo中数学公式渲染失败的解决