在Hexo博客中正确显示LaTex排版

Intro.

Hexo的主题配置文件默认不支持LaTex,且Markdown语法和LaTex语法存在一定冲突。

在Hexo中启用LaTex支持

在主题配置文件_config.yml中找到Third Party Services Settings,修改falseture

1
2
3
mathjax:
enable: ture
cdn: //cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML

解决Markdown和LaTex的语法冲突

举例:

下划线_在Markdown语法中是斜体标记,然而在LaTex中用来标记下标,转HTML文件中优先按Markdown语法处理,导致MathJax无法得到正确的LaTex语句。

解决方法:

在Hexo安装文件夹中找到/node_modules/marked/lib/中的marked.js,打开。

1.将

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

替换为

1
escape: /^\\([`*\[\]()#+\-._>])/,

取消对\\,\{,\},\!的转义。

2.将

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

替换为

1
em:/^\*((?:\*\*|[\s\S])+?)\*(?!\*)/,

取消对_等的识别。

注意: 这样无法使用_作为 斜体 标记,可以使用*

部署测试

$$
\int\!\!\!\int_D dx\,dy \\
\int_D dx
$$