不得不说Hexo虽然优点不少,但是毕竟年轻,问题也比较多。在Latex里下标是用_来表示下标,但是在Hexo里_会被渲染成<em>标签,导致数学公式里出现多个下标被当成加粗,如$x_1 x_2$会变成$x1 x2$,不是我们想要的,所以要怎么办?


在网上找了找,发现一个不是很好的解决方法,就是把Hexo对_的渲染删掉,找到博客根目录下的,
_node_modules/hexo-renderer-marked/node_modules/marked/lib/marked.js
em的正则匹配里删掉关于_的内容,如下,

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

改成

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

还有一处,
1
em: /^_(?=\S)([\s\S]*?\S)_(?!_)|^\*(?=\S)([\s\S]*?\S)\*(?!\*)/

改成
1
em: /^\*(?=\S)([\s\S]*?\S)\*(?!\*)/

然后就解决了,不过这方法有明显的缺点,其一就是以后加粗只能用*了,而且这个插件更新的话,可能还要再改一次,由于对Hexo代码了解少,目前也只能这样了。


参考链接:

  1. http://kubicode.me/2016/03/16/Hexo/Fix-Hexo-Bug-In-Mathjax/