在Hexo中插入LaTeX公式测试

1. 安装hexo-math

在hexo博客的根目录下执行如下命令,安装hexo-math

1
npm install hexo-math --save

2. 修改配置文件

2.1. 修改博客配置文件

接下来在你博客的配置文件config.yml加上如下的配置

1
2
3
4
5
6
7
8
9
10
11
12
config.yml
math:
engine: 'mathjax' # or 'katex'
mathjax:
src: custom_mathjax_source
config:
# MathJax config
katex:
css: custom_css_source
js: custom_js_source # not used
config:
# KaTeX config

2.2. 修改主题配置文件

在博客主题配置文件config.yml开启mathjax,不同博客主题可能修改的不太一样。我用的是even,做如下修改即可。

1
2
# LaTeX support (via MathJax)
latex: true

3. 实践

写一篇博客,插入如下源码进行测试。

1
2
3
4
5
Simple inline $ a = b + c $.

$$
\frac{|ax + by + c|}{\sqrt{a^{2}+b^{2}}}
$$

现实效果如下:

Simple inline $ a = b + c $
$$
\frac{|ax + by + c|}{\sqrt{a^{2}+b^{2}}}
$$

4. 存在的问题

Marked.js和MathJax共存时可能会发生一些渲染冲突。如下面的LaTeX源码,在不处理冲突时便会导致公式内的换行失效。

1
2
3
4
5
6
7
8
$$
\begin{eqnarray}
\nabla\cdot\vec{E} &=& \frac{\rho}{\epsilon_0} \\
\nabla\cdot\vec{B} &=& 0 \\
\nabla\times\vec{E} &=& -\frac{\partial B}{\partial t} \\
\nabla\times\vec{B} &=& \mu_0\left(\vec{J}+\epsilon_0\frac{\partial E}{\partial t} \right)
\end{eqnarray}
$$

现在./node_modules/marked/lib/marked.js文件内做如下修改。

4.1. 修改1

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

替换成

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

4.2. 修改2

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

替换成

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

执行hexo clean,重启hexo之后便可以看到正常的显示效果。

$$
\begin{eqnarray}
\nabla\cdot\vec{E} &=& \frac{\rho}{\epsilon_0} \\
\nabla\cdot\vec{B} &=& 0 \\
\nabla\times\vec{E} &=& -\frac{\partial B}{\partial t} \\
\nabla\times\vec{B} &=& \mu_0\left(\vec{J}+\epsilon_0\frac{\partial E}{\partial t} \right)
\end{eqnarray}
$$

参考

https://www.sail.name/2018/05/31/use-mathjax-in-hexo/