本文来自我的个人博客 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 代替就好了。
网友评论