概述
MathJax 是一个 JavaScript 库,是可以跨浏览器渲染数学公式的引擎。支持 LaTeX, MathML 和 AsciiMath 标记。
MathJax is a cross-browser JavaScript library that displays mathematical notation in web browsers, using MathML, LaTeX and ASCIIMathML markup.

使用
元数据标识: grammar_mathjax
想要使用该语法,需要在 设置>扩展语法 里把mathjax选项打开。或者在每篇文章的元数据里通过 grammar_mathjax 进行控制。系统默认关闭mathjax语法功能
由于 mathjax 推荐的写法是 $ 包裹,考虑到该符号在日常生活中有太多使用,如果使用该符号做为公式标识,容易造成文档解析错误,特别是在既有公式显示的需求,文档里又有大量普通 $ 符号的内容时,对于用户很容易对公式的解析造成错误的判断。因此小书匠在公式标识的规则上做了特殊处理,只有在代码里加上感叹号后,才表示为要执行生成公式功能。
当然,小书匠也提供了一种兼容 mathjax 自己默认的写法,该选项需要用户自己到 设置>扩展语法>mathjax 里单独打开 兼容常规写法 功能。
行内公式
行内公式使用`!$ 和 `$包裹,如果你在 设置>扩展语法>mathjax 里打开了兼容通用写法 ,则可以直接把公式包裹在两个 $ 符号之间
示例
- 1`!$ \Gamma(z) = \int_0^\infty t^{z-1}e^{-t}dt\,. $`
效果
块级公式
块级公式在代码块里使用 mathjax 做为标识语言,并在结尾添加上一个感叹号,表示执行里面的代码。如果你在 设置>扩展语法>mathjax 里打开了兼容通用写法 ,则可以直接把公式包裹在两个 $$ 符号之间。
示例
- 1```mathjax!
- 2$$\Gamma(z) = \int_0^\infty t^{z-1}e^{-t}dt\,.$$
- 3```
效果
带编号的公式
公式编号可以跨代码块,也就是在其中的一个代码块里生成了一个编号,在其他代码块里可以引用该编号
示例
- 1`!$\eqref{ref1}$`
- 2
- 3```mathjax!
- 4\begin{equation}
- 5\int_0^\infty \frac{x^22}{e^x-1}\,dx = \frac{\pi^4}{15}\label{ref1}
- 6\end{equation}
- 7```
- 8
- 9`!$\eqref{ref1}$`
效果
Mathjax 常用符号
符号 (Operators)
| Symbol | Command | Symbol | Command | Symbol | Command |
|---|---|---|---|---|---|
| \pm | \mp | \times | |||
| \div | \cdot | \ast | |||
| \star | \dagger | \ddagger | |||
| \amalg | \cap | \cup | |||
| \uplus | \sqcap | \sqcup | |||
| \vee | \wedge | \oplus | |||
| \ominus | \otimes | \circ | |||
| \bullet | \diamond | \lhd | |||
| \rhd | \unlhd | !Unrhd.gif |
\unrhd | ||
| \oslash | \odot | \bigcirc | |||
| \triangleleft | \Diamond | \bigtriangleup | |||
| \bigtriangledown | \Box | \triangleright | |||
| \setminus | \wr | \sqrt{x} | |||
| x^{\circ} | \triangledown | \sqrt[n]{x} | |||
| a^x | a^{xyz} |
关系(Relations)
| Symbol | Command | Symbol | Command | Symbol | Command |
|---|---|---|---|---|---|
| \le | \ge | \neq | |||
| \sim | \ll | \gg | |||
| \doteq | \simeq | \subset | |||
| \supset | \approx | \asymp | |||
| \subseteq | \supseteq | \cong | |||
| \smile | \sqsubset | \sqsupset | |||
| \equiv | \frown | \sqsubseteq | |||
| \sqsupseteq | \propto | \bowtie | |||
| \in | \ni | \prec | |||
| \succ | \vdash | \dashv | |||
| \preceq | \succeq | \models | |||
| \perp | \parallel | ||||
| \mid | \bumpeq |
上面这些关系符号的否定(反义)形式可以通过在原符号前添加 \not 来进行实现,或者在 \ 和符号单词之间添加 n 来实现。下面列出几个常用的否定形式,其他符号的否定形式规则基本类似。
| Symbol | Command | Symbol | Command | Symbol | Command |
|---|---|---|---|---|---|
| \nmid | \nleq | \ngeq | |||
| \nsim | \ncong | \nparallel | |||
| \not< | \not> | \not= | |||
| \not\le | \not\ge | \not\sim | |||
| \not\approx | \not\cong | \not\equiv | |||
| \not\parallel | \nless | \ngtr | |||
| \lneq | \gneq | \lnsim | |||
| \lneqq | \gneqq |
像 =, >, and < 这些没有列在上面的符号,可以直接字面输入,并不需要命令进行触发。
希腊字母(Greek Letters)
| Symbol | Command | Symbol | Command | Symbol | Command | Symbol | Command |
|---|---|---|---|---|---|---|---|
| \alpha | \beta | \gamma | \delta | ||||
| \epsilon | \varepsilon | \zeta | \eta | ||||
| \theta | \vartheta | \iota | \kappa | ||||
| \lambda | \mu | \nu | \xi | ||||
| \pi | \varpi | \rho | \varrho | ||||
| \sigma | \varsigma | \tau | \upsilon | ||||
| \phi | \varphi | \chi | \psi | ||||
| \omega |
| Symbol | Command | Symbol | Command | Symbol | Command | Symbol | Command |
|---|---|---|---|---|---|---|---|
| \Gamma | \Delta | \Theta | \Lambda | ||||
| \Xi | \Pi | \Sigma | \Upsilon | ||||
| \Phi | \Psi | \Omega |
箭头(Arrows)
| Symbol | Command | Symbol | Command |
|---|---|---|---|
| \gets | \to | ||
| \leftarrow | \Leftarrow | ||
| \rightarrow | \Rightarrow | ||
| \leftrightarrow | \Leftrightarrow | ||
| \mapsto | \hookleftarrow | ||
| \leftharpoonup | \leftharpoondown | ||
| \rightleftharpoons | \longleftarrow | ||
| \Longleftarrow | \longrightarrow | ||
| \Longrightarrow | \longleftrightarrow | ||
| \Longleftrightarrow | \longmapsto | ||
| \hookrightarrow | \rightharpoonup | ||
| \rightharpoondown | \leadsto | ||
| \uparrow | \Uparrow | ||
| \downarrow | \Downarrow | ||
| \updownarrow | \Updownarrow | ||
| \nearrow | \searrow | ||
| \swarrow | \nwarrow |
(有些箭头指令, mathjax 提供了缩写指令, \iff 和 \implies 可以分别表示为 \Longleftrightarrow 和 \Longrightarrow 。)
点(Dots)
| Symbol | Command | Symbol | Command |
|---|---|---|---|
| \cdot | \vdots | ||
| \dots | \ddots | ||
| \cdots | \iddots |
重音(Accents)
| Symbol | Command | Symbol | Command | Symbol | Command |
|---|---|---|---|---|---|
| \hat{x} | \check{x} | \dot{x} | |||
| \breve{x} | \acute{x} | \ddot{x} | |||
| \grave{x} | \tilde{x} | \mathring{x} | |||
| \bar{x} | \vec{x} |
当重音修饰在像 i 和 j 这两个字母上时,你可以分别通过 \imath 和 \jmath ,把它们头上的点去掉。
| Symbol | Command | Symbol | Command |
|---|---|---|---|
| \vec{\jmath} | \tilde{\imath} |
\tilde 和 \hat 两个指令有宽符号的版本 \widetilde 和 \widehat,通过这两个指令可以生成长版本的表达式结构的符号.
| Symbol | Command | Symbol | Command |
|---|---|---|---|
| \widehat{7+x} | \widetilde{abc} |
其他(Others)
| Symbol | Command | Symbol | Command | Symbol | Command |
|---|---|---|---|---|---|
| \infty | \triangle | \angle | |||
| \aleph | \hbar | \imath | |||
| \jmath | \ell | \wp | |||
| \Re | \Im | \mho | |||
| \prime | \emptyset | \nabla | |||
| \surd | \partial | \top | |||
| \bot | \vdash | \dashv | |||
| \forall | \exists | \neg | |||
| \flat | \natural | \sharp | |||
| \backslash | \Box | \Diamond | |||
| \clubsuit | \diamondsuit | \heartsuit | |||
| \spadesuit | \Join | \blacksquare | |||
| \S | |||||
| \bigstar | \in | \cup | |||
| \square | |||||
| \mathbb{R} (represents all real numbers) | |||||
| \checkmark |
命令符号(Command Symbols)
有些符号是有特殊意义,比如用在指令上,如果想显示这些符号,就需要进行一些特殊处理。大部份通过 \ 符号对其进行转义,也有些是通过符号的单词名称进行显示。
| Symbol | Command | Symbol | Command | Symbol | Command | Symbol | Command |
|---|---|---|---|---|---|---|---|
| $ | & | % | # | ||||
| _ | { | } | \backslash |
界线符号(Bracketing Symbols)
In mathematics, sometimes we need to enclose expressions in brackets or braces or parentheses. Some of these work just as you'd imagine in LaTeX; type ( and ) for parentheses, [ and ] for brackets, and | and | for absolute value. However, other symbols have special commands:
在数学公式里,有时我们会通过括号((), [], {})进行界线控制。这些符号有些是可以直接输入,比如 (), [], | 等,而有些符号是要经过转义的,下面列出了这些比较特殊的符号
| Symbol | Command | Symbol | Command | Symbol | Command |
|---|---|---|---|---|---|
| { | } | | | |||
| \backslash | \lfloor | \rfloor | |||
| \lceil | \rceil | \langle | |||
| \rangle |
当界线符号用在像下面的表达式时
- 1(\frac{a}{x} )^2
会发现界线符号没有足够高
通过输入 \left 和 \right 在相关的界线符号前面时,界线符号生成的效果就会比较理想
- 1\left(\frac{a}{x} \right)^2
这是应用了 \left 和 \right 的最终效果
另一个应用 \left 和 \right 的例子
- 1\left\{\begin{array}{l}x+y=3\\2x+y=5\end{array}\right.
显示结果
See that there's a dot after \right. You must put that dot or the code won't work.
注意在 \right 后面有一个点 .。如果不输入这个点的话,该公式将会无效
\underbrace 可以显示下括号
- 1\underbrace{a_0+a_1+a_2+\cdots+a_n}_{x}
显示效果
\overbrace 可以显示上括号
- 1\overbrace{a_0+a_1+a_2+\cdots+a_n}^{x}
显示效果
\left and \right 也可以用来改变下面这些符号的大小
| Symbol | Command | Symbol | Command | Symbol | Command |
|---|---|---|---|---|---|
| \uparrow | \downarrow | \updownarrow | |||
| \Uparrow | \Downarrow | \Updownarrow |
不同尺寸的符号
有些符号在行模式和块模式的渲染效果会不一样。所谓的行模式就是使用了 $ 符号包裹的公式,而块模式就是类似使用 $$ 包裹的公式。
下面的列表里显示了一些符号在行模式和块模式的差别
| Symbol | Command | Symbol | Command | Symbol | Command |
|---|---|---|---|---|---|
| |
\sum | |
\int | |
\oint |
| |
\prod | |
\coprod | |
\bigcap |
| |
\bigcup | |
\bigsqcup | |
\bigvee |
| |
\bigwedge | |
\bigodot | |
\bigotimes |
| |
\bigoplus | |
\biguplus |