Markdown本身的特殊符号与Latex中的符号会出现冲突,导致网页中不能正确显示数学公式。
问题
例如:_
的转义,在Markdown中,_
是斜体,但是在Latex中,却有下标的意思,就会出现问题;\\
的换行,在Markdown中,\\
会被转义为\
,这样也会影响影响Mathjax对公式中的\\
进行渲染
原因
Hexo默认使用marked.js
去解析我们写的Markdown,比如一些符号,_
代表斜体,会被处理为<em>
标签,
比如x_i
在开始被渲染的时候,处理为x<em>i</em>
,这个时候MathJax就无法渲染成下标了。
解决
找到nodes_modules/lib/marked/lib/marked.js
文件,将文件中代码:1escape: /^\\([\\`*{}\[\]()# +\-.!_>])/,
改为:1escape: /^\\([`*{}\[\]()# +\-.!_>])/,
找到:1em: /^\b_((?:[^_]|__)+?)_\b|^\*((?:\*\*|[\s\S])+?)\*(?!\*)/,
改为:1em:/^\*((?:\*\*|[\s\S])+?)\*(?!\*)/,
做了上边修改后,网页中的数学公式正常显示了。