问题的出现
今天写了公式特别多的一篇博客:FFT学习笔记
然后我的博客的内联公式显示出了大量的问题。
失败的尝试
经过转爷的提醒,纠正了之前的错误写法
$ x=1 $
改成了正确的
$x=1$
后来还是不行,以为是大括号的问题
最后发现,并不是大括号的问题,而是mathjax中内联公式就最好不要用太多\frac之类的这种转义字符了
最后是怎么解决的呢?
参考了这个帖子:https://www.jianshu.com/p/7ab21c7f0674
这个帖子先提到了要更换Hexo的markdown渲染引擎,hexo-renderer-kramed引擎是在默认的渲染引擎hexo-renderer-marked的基础上修改了一些bug,两者比较接近,也比较轻量级。但是我的引擎已经是这个了,所以问题再下一步。
然后,跟换引擎后行间公式可以正确渲染了,但是这样还没有完全解决问题,行内公式的渲染还是有问题,因为hexo-renderer-kramed引擎也有语义冲突的问题。接下来到博客根目录下,找到node_modules\kramed\lib\rules\inline.js,把第11行的escape变量的值做相应的修改:
// escape: /^\\([\\`*{}\[\]()#$+\-.!_>])/,
escape: /^\\([`*\[\]()#$+\-.!_>])/,
这一步是在原基础上取消了对,{,}的转义(escape)。
同时把第20行的em变量也要做相应的修改。
// em: /^\b_((?:__|[\s\S])+?)_\b|^\*((?:\*\*|[\s\S])+?)\*(?!\*)/,
em: /^\*((?:\*\*|[\s\S])+?)\*(?!\*)/,
重新启动hexo(先clean再generate),问题完美解决。哦,如果不幸还没解决的话,看看是不是还需要在使用的主题中配置mathjax开关。
补充
在以上步骤之后,还是存在一些显示错误
我自己猜测的是mathjax最好不要用*号来乘,可以用点乘和叉乘
如下:
符号 | 写法 |
---|---|
叉乘 | a \times b |
点除 | a \div b |
点乘 | a \cdot b |