【Hexo4】公式渲染出错更正——渲染位置失效问题

记录一下长久以来困扰我的公式渲染问题

问题描述

很早就有这个问题了,hexo对公式的渲染莫名其妙会出现问题,自己在本地Typora编辑器中渲染得都非常漂亮,但是一旦发布或者在本地服务器上预览就会出问题,本来的应该被渲染的公式可能没有被渲染或者被渲染到了别的地方。这次好好写的笔记又炸了,如下图所示:

主要的问题在于:

  1. 用来生成$\{\}$的代码

    1
    \{\}

    中花括号的转义字符\会消失导致渲染失败

  2. 下标转义字符_会偶尔消失,主要是行内公式

  3. 由以上问题导致非公式文本会被渲染

太难看了,这次从网上找了解决方案,聊记于此,原因是原来的渲染包hexo-renderer-marked不太行。。。我先自己更新了一下,发现问题没有改观,然后卸载之并安装hexo-renderer-kramed,问题仍未改观。最后按照解决方案修改js规则,总算🆗啦!

试错顺序

第一步观察是不是工具包未升级的问题:

1
npm install -g npm

第二步观察是不是新的工具包就好了:

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

第三步按链接找到../node_modules/kramed/lib/rules/inline.js中第11行和第20行并修改转义规则:

1
2
3
4
5
//escape: /^\\([\\`*{}\[\]()#$+\-.!_>])/,
escape: /^\\([`*\[\]()#$+\-.!_>])/,

//em: /^\b_((?:__|[\s\S])+?)_\b|^\*((?:\*\*|[\s\S])+?)\*(?!\*)/,
em: /^\*((?:\*\*|[\s\S])+?)\*(?!\*)/,

再重新渲染就🆗啦!

参考链接:

VitaHeng的博客hexo博客MathJax公式渲染问题,顺便发现这位大兄弟的主页了,前两年还有两篇文章,加油!

自己确实试了错,加了自己的探索过程,除了代码,我觉得不算转载。如果的确需要授权,请联系我商议解决~