Mathjax内联公式出错的问题与解决方案


问题的出现

今天写了公式特别多的一篇博客:FFT学习笔记

然后我的博客的内联公式显示出了大量的问题。

mathjax

失败的尝试

经过转爷的提醒,纠正了之前的错误写法

$ x=1 $

改成了正确的

$x=1$

后来还是不行,以为是大括号的问题

最后发现,并不是大括号的问题,而是mathjax中内联公式就最好不要用太多\frac之类的这种转义字符了

mathjax

最后是怎么解决的呢?

参考了这个帖子: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开关。

补充

在以上步骤之后,还是存在一些显示错误

cdot

我自己猜测的是mathjax最好不要用*号来乘,可以用点乘和叉乘

如下:

符号 写法
叉乘 a \times b
点除 a \div b
点乘 a \cdot b

文章作者: REXWind
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 REXWind !
评论
  目录