0%

Hexo · Math

Hexo 中的数学公式是通过 MathJax 渲染 LaTeX 代码实现的,具体开启步骤以及简要语法介绍如下。

开启MathJax

在 next 主题配置文件 _config.yaml 中找到 MathJax 选项,将 enable 改成 true 即可:

1
2
3
4
5
# MathJax Support
mathjax:
enable: true
per_page: false
cdn: //cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML

!!关于转义的问题

在 Markdown 中,_ 表示斜体;在 Latex 中,_ 表示下标。
在生成文档的时候,先是 Markdown 解释成斜体,再到 Mathjax 解释的时候, _ 就不再了,所以我们要在前面加转义字符 \ ,即写成 \_ 的形式,就可以正确显示了。

如果不想这么做, 而是保持Latex的写法, 那么需要做如下修改
(20181220 参考知乎)
具体思路参考了使Marked.js与MathJax共存, 打开nodes_modules/marked/lib/marked.js:
第一步: 找到下面的代码:

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

改为:

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

这样就会去掉\的转义了。

第二步: 找到em的符号:

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

改为:

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

完成

如何插入公式

1.行内插入公式, 不居中显示:

1
$E=mc^2$  #$公式$

$E=mc^2$

2.行间插入公式, 居中显示:

1
$$E=mc^2$$  #$$公式$$

$$E=mc^2$$

常用语法

上下标

^ 表示上标,_ 表示下标。

1
2
3
4
$$a_{1} x^{2} $$
$$e^{-alpha t} $$
$$a^{i}_{ij}$$
$$e^{x^2} \neq {e^x}^2$$

$$a_{1}$$
$$x^{2}$$
$$e^{-\alpha t}$$
$$a^{i}_{ij}$$
$$e{x2} \neq {ex}2$$

此外,如果左右两边都有上下标,则使用 \sideset 命令,效果如下:

1
2
3
4
5
$$\sideset{^xy}{^xy}\bigotimes$$
$$\sideset{^n_m}{}{H}$$
$$\sideset{^n_m}{}{\mathop{H}}$$
$$\sideset{^n_m}{}{\mathop{\mathrm{H}}}$$
$$\sideset{^\beta_a}{^\ast_\triangle}{\mathop{\mathrm{H}}}$$

$$\sideset{^xy}{^xy}\bigotimes$$
$$\sideset{^n_m}{}{H}$$
$$\sideset{^n_m}{}{\mathop{H}}$$
$$\sideset{^n_m}{}{\mathop{\mathrm{H}}}$$
$$\sideset{^\beta_a}{^\ast_\triangle}{\mathop{\mathrm{H}}}$$

平方根

平方根输入命令为 \sqrt,n次方根命令为 \sqrt[n],其符号大小由LaTeX 自动给定:

1
2
3
$$\sqrt{x}$$
$$\sqrt{x^2}+\sqrt{y}$$
$$\sqrt[3]{x^2+y^2+z^2}$$

$$\sqrt{x}$$
$$\sqrt{x^2}+\sqrt{y}$$
$$\sqrt[3]{x^2+y^2+z^2}$$

水平线

使用 \overline\underline 分别在表达式上下方画出水平线:

1
2
$$\overline{m + n}$$
$$\underline{m + n}$$

$$\overline{m + n}$$
$$\underline{m + n}$$

水平大括号

命令 \overbrace\underrace,效果如下:

1
2
$$\underbrace{a+b+\cdots+z}$$
$$\overbrace{a+b+\cdots+z}$$

$$\overbrace{a+b+\cdots+z}$$
$$\underbrace{a+b+\cdots+z}$$

矢量

矢量的命令是 \vec,用于单个字母的向量表示。\overrightarrow\overleftarrow分别表示向右和向左的向量箭头:

1
2
3
$$\vec{a}$$
$$\overrightarrow{AB}$$
$$\overleftarrow{BA}$$

$$\vec{a}$$
$$\overrightarrow{AB}$$
$$\overleftarrow{BA}$$

分数

分数使用 \frac{...}{...} 进行排版:

1
2
3
$$1\frac{1}{2}$$
$$\frac{x^2}{k+1}$$
$$x^{1/2}$$

$$1\frac{1}{2}$$
$$\frac{x^2}{k+1}$$
$$x^{1/2}$$

积分运算符

积分运算符使用 \int 生成。求和运算符使用 \sum 生成。乘积运算符使用 \prod 生成。上下限使用^_ 命令,类似 上下标:

1
2
3
$$\sum_{i=1}^{n}$$
$$\int_{0}^{\frac{\pi}{2}}$$
$$\prod_\epsilon$$

$$\sum_{i=1}^{n}$$
$$\int_{0}^{\frac{\pi}{2}}$$
$$\prod_\epsilon$$

希腊字母

希腊字母 效果 希腊字母 效果
$\alpha $ \alpha $\mu $ \mu
$\beta $ \beta $\nu $ \nu
$\gamma $ \gamma $\xi $ \xi
$\delta $ \delta $\pi $ \pi
$\epsilon $ \epsilon $\rho $ \rho
$\zeta $ \zeta $\sigma $ \sigma
$\eta $ \eta $\tau $ \tau
$\theta $ \theta $\phi $ \phi
$\iota $ \iota $\chi $ \chi
$\kappa $ \kappa $\psi $ \psi
$\lambda $ \lambda $\omega $ \omega
  • 若需要大写希腊字母,将命令首字母大写即可。
    $\Gamma$呈现为$\Gamma$

  • 若需要斜体希腊字母,将命令前加上var前缀即可。
    $\varGamma$呈现为$\varGamma$

字体转换

要对公式的某一部分字符进行字体转换,可以用{\rm需转换的部分字符}命令,其中\rm可以参照下表选择合适的字体。
一般情况下,公式默认为意大利体。

字体 关键词 代码 效果
罗马体 \rm $\rm test$ $\rm test$
黑体 \bf $\bf test$ $\bf test$
花体 \cal $\cal test$ $\cal test$
倾斜体 \sl $\sl test$ $\sl test$
等线体 \sf $\sf test$ $\sf test$
数学斜体 \mit $\mit test$ $\mit test$
打字机字体 \tt $\tt test$ $\tt test$
小体大写字母体 \sc $\sc test$ $\sc test$

注:
1)|、-、:之间的多余空格会被忽略,不影响布局。
2)默认标题栏居中对齐,内容居左对齐。
3) - :表示内容和标题栏居右对齐, :- 表示内容和标题栏居左对齐, :-: 表示内容和标题栏居中对齐。
4)内容和|之间的多余空格会被忽略,每行第一个|和最后一个|可以省略,-的数量至少有一个。

矩阵环境

矩阵环境:array, matrix, bmatrix, Bmatrix, pmatrix, vmatrix, Vmatrix,
分段函数环境:cases
公式对齐环境:split, align, eqnarray, gathered

$\left[\begin{matrix} 1 & 2 & 3 \\\\ 4 & 5 & 6 \\\\ 7 & 8 & 9 \end{matrix}\right]$
1
2
3
4
5
$\left[\begin{matrix} 
1 & 2 & 3\\
4 & 5 & 6\\
7 & 8 & 9
\end{matrix}\right]$
    </td>
</tr>
<tr>
    <td>
        $\left[\begin{array}{ccc}
        1 & 2 & 3 \\\\
        4 & 5 & 6 \\\\
        7 & 8 & 9 
        \end{array}\right]$
    </td>
    <td>
        
1
2
3
4
5
$\left[\begin{array}{ccc}
1 & 2 & 3\\
4 & 5 & 6\\
7 & 8 & 9
\end{array}\right]$
</td> </tr> <tr> <td> $\begin{bmatrix} 1 & 2 & 3 \\\\ 4 & 5 & 6 \\\\ 7 & 8 & 9 \end{bmatrix}$ </td> <td>
1
2
3
4
5
$\begin{bmatrix} 
1 & 2 & 3\\
4 & 5 & 6\\
7 & 8 & 9
\end{bmatrix}$
</td> </tr> <tr> <td> $\begin{Bmatrix} 1 & 2 & 3 \\\\ 4 & 5 & 6 \\\\ 7 & 8 & 9 \end{Bmatrix}$ </td> <td>
1
2
3
4
5
$\begin{Bmatrix} 
1 & 2 & 3\\
4 & 5 & 6\\
7 & 8 & 9
\end{Bmatrix}$
</td> </tr> <tr> <td> $\begin{vmatrix} 1 & 2 & 3 \\\\ 4 & 5 & 6 \\\\ 7 & 8 & 9 \end{vmatrix}$ </td> <td>
1
2
3
4
5
$\begin{vmatrix} 
1 & 2 & 3\\
4 & 5 & 6\\
7 & 8 & 9
\end{vmatrix}$
</td> </tr> <tr> <td> $\begin{Vmatrix} 1 & 2 & 3 \\\\ 4 & 5 & 6 \\\\ 7 & 8 & 9 \end{Vmatrix}$ </td> <td>
1
2
3
4
5
$\begin{Vmatrix} 
1 & 2 & 3\\
4 & 5 & 6\\
7 & 8 & 9
\end{Vmatrix}$
</td> </tr>

Reference

cat4coffee
ColdRomantic
MathJax basic tutorial and quick reference