Hexo中渲染MathJax数学公式的问题

2019-03-04  本文已影响0人  shenghaishxt

本文来自我的个人博客 https://www.zhangshenghai.com/posts/2405/

在学习机器学习算法的过程中有大量的公式需要渲染,原本使用的是Hexo默认的"hexo-renderer-marked"引擎,现在感觉已经力不从心了,好多复杂的公式都无法渲染,网上关于这个问题的解决方法其实有很多,但这里还是po出我觉得最靠谱的一种方法吧。

替换默认渲染引擎

hexo-renderer-kramed 是 hexo-renderer-marked 的Fork修改版,只是在渲染部分进行了修改,首先替换默认渲染引擎:

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

解决语义冲突的问题

hexo s 启动本地服务器后看到行间公式已经渲染成功了,但一些行内公式还是无法渲染。原因是hexo-renderer-kramed 也有语义冲突的问题。于是来到hexo根目录下,打开node_modules\kramed\lib\rules\inline.js 作相应的修改:

//escape: /^\\([\\`*{}\[\]()#$+\-.!_>])/,  # 第11行
escape: /^\\([`*\[\]()#$+\-.!_>])/ 
//em: /^\b_((?:__|[\s\S])+?)_\b|^\*((?:\*\*|[\s\S])+?)\*(?!\*)/,  # 第20行
em: /^\*((?:\*\*|[\s\S])+?)\*(?!\*)/

重启本地服务器后可以看到问题基本解决了,不过行内公式中针对两个 * 的语义冲突依然存在,查了一圈,发现这个问题目前也没有什么解决方法,不过问题也不太大,直接用 \star 代替就好了。

上一篇 下一篇

猜你喜欢

热点阅读