0%

Hexo中mathjax公式与回车换行问题


初始问题

页面公式一部分能够渲染,另外一部分不能渲染,变成斜体。

这个问题显然是致命的,不解决基本没得救。

搜索了一下,发现这是因为Markdown与公式之间的不友好性,导致它会把公式中的'_'字符看出是斜体的语法, 导致公式渲染成了斜体。

另外这个问题与Next主题完全没有关系,就是Hexo它自己的问题。

Hexo默认的Markdown渲染引擎是marked,就是这个引擎的锅。


解决方法

我看到的解决方法第一个是使用rawblock保护代码块,我还不知道它是什么, 反正意思是我所以得文档都得改,不可能。

第二个方法是将引擎换成pandoc,它也是一个Markdown引擎, 但是试了一下不知道卡哪了,反正不成功。

看到的第三个解决办法是修改marked引擎的渲染规则,试了一下,照样产生混乱的公式。

最终的解决方式,换成kramed引擎!!!去看看官网怎么说的kramed, 其中开头就是,

marked hasn’t been evolving as much as it could be lately and due to our needs with GitBook, we need features such as robust mathjax support and want to strive closer to the rising kramdown standard.

它加强了对mathjax的支持,执行如下命令来安装它,

1
2
$ npm uninstall hexo-renderer-marked --save
$ npm install hexo-renderer-kramed --save

第一条命令卸载掉marked渲染引擎,第二条命令装上kramed渲染引擎。

果断的解决了问题。


后续

突然发现Markdown规则变成了回车换行,显然不能忍,这样根本没法排版, 这个问题和公式问题一样难以接受。

继续搜索,踩了无数坑终于明白了,对于marked引擎,要实现空格+空格+回车换行, 只要在_config.yml文件里面添加下面字段,

1
2
3
marked:
gfm: true
breaks: false

因为这里渲染引擎换成了kramed,所以上面的字段当然不管用了,但是, 只要原样修改就好,改成下面,

1
2
3
kramed:
gfm: true
breaks: false

总于解决了这个让我差点弃坑的两个严重的问题,o( ̄▽ ̄)o