概述
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 |