作为OIer,写博客的时候经常会遇到需要数学公式的情况,特别是Σ、∈等符号,在markdown里用起来十分不友好(百度百科网络流那一篇就出现了:Σ(w∈V)f(u,w)=0。好在markdown中有插件为我们提供了强大的数学公式显示支持。现在我们就可以这样浪:

$ \displaystyle \sum_{w\in V} f(u,w)=0 $

我们甚至可以……

$ \displaystyle \frac{1}{\Bigl(\sqrt{\phi \sqrt{5}}-\phi\Bigr) e^{\frac25 \pi}} = 1+\frac{e^{-2\pi}} {1+\frac{e^{-4\pi}} {1+\frac{e^{-6\pi}} {1+\frac{e^{-8\pi}} {1+\cdots} } } } $

$ \displaystyle \left( \sum_{k=1}^n a_k b_k \right)^2 \leq \left( \sum_{k=1}^n a_k^2 \right) \left( \sum_{k=1}^n b_k^2 \right) $

是不是很浪?!

实现插件

目前似乎有两个比较流行的方案,一个是$\KaTeX$,一个是MathJax。

MathJax

这是目前最流行的方案,MathJax支持的公式很完整,基于TeX/LaTeX的语法,但是缺点是(据说)加载速度十分缓慢。(由于我WordPress中使用的MarkDown插件是国人开发的Editor.md,其中内置的只有KaTeX,所以我没有尝试过MathJax……)
官网:https://www.mathjax.org/

KaTeX

$\KaTeX $也是基于TeX/LaTeX的语法。(据说)KaTeX相比MathJax加载速度快得多,但是(据说)KaTeX支持没有MathJax完整。总之对于我们日常使用,上面两个都不错。
官网:https://khan.github.io/KaTeX/
(在这个管网上KaTeX直接放出加载速度对比图手撕MathJax……)

常用语法

由于我正在使用KaTeX,所以本文中公式显示均以KaTeX为准。

首先数学公式都是要用两个“$”符号包起来的。任仍然拿刚才的“Σ(w∈V)f(u,w)=0”举例,在编辑器里应该写成这样:

\displaystyle \sum_{win V} f(u,w)=0

行间公式与行内公式

这个displaystyle表示这是行间公式。与之对应的就是行内公式(不加displaystyle)。下面两个公式一个是行间公式,一个是行内,可以看出区别(主要是Sigma上下数字写法区别):

$ \displaystyle \sum_{w\in V} f(u,w)=0 $

$ \sum_{w\in V} f(u,w)=0 $

上标与下标

下标用“_”符号,上标用“^”符号。这些符号用在Sigma之后就可以让Sigma上下显示数字了。比如:

$ \displaystyle \sum_{i=1}^{i\leq n} $

\displaystyle \sum_{i=1}^{i\leq n}

这个leq是啥?这就要引出以下的:

关系运算符

回到一开始的公式,这个sum就是Sigma的意思了,就是加和。in表示属于。而leq则是小于等于。

完整的关系运算符可以去看:https://khan.github.io/KaTeX/。因为有很多,这里不一一列举了。

分数

使用\frac {分子} {分母}可以显示一个分数。便捷情况可直接输入\frac ab来快速生成一个$\frac ab $。
如果分式很复杂,亦可使用 分子 \over 分母 命令,此时分数仅有一层。
举例:

$ \frac{e^{-2\pi}} {1+\frac{e^{-4\pi}} {1+\frac{e^{-6\pi}} {1+\frac{e^{-8\pi}} {1+\cdots} } } } $

括号和分隔符

使用{}来表示{}。普通的括号、分隔符(比如“()”、“|”、“[]”)则用其本身表示。当要显示大号的括号或分隔符时,要用\left和\right命令。
举例:

$ \displaystyle f(x,y,z) = 3y^2z \left( 3+\frac{7x+5}{1+y^2} \right) $

f(x,y,z) = 3y^2z \left( 3+\frac{7x+5}{1+y^2} \right)


参考

https://khan.github.io/KaTeX/
https://www.zybuluo.com/codeep/note/163962