Skip to main content

小书匠语法说明之公式

概述

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.

Powered by MathJax

使用

元数据标识: grammar_mathjax

想要使用该语法,需要在 设置>扩展语法 里把mathjax选项打开。或者在每篇文章的元数据里通过 grammar_mathjax 进行控制。系统默认关闭mathjax语法功能

由于 mathjax 推荐的写法是 $ 包裹,考虑到该符号在日常生活中有太多使用,如果使用该符号做为公式标识,容易造成文档解析错误,特别是在既有公式显示的需求,文档里又有大量普通 $ 符号的内容时,对于用户很容易对公式的解析造成错误的判断。因此小书匠在公式标识的规则上做了特殊处理,只有在代码里加上感叹号后,才表示为要执行生成公式功能。

当然,小书匠也提供了一种兼容 mathjax 自己默认的写法,该选项需要用户自己到 设置>扩展语法>mathjax 里单独打开 兼容常规写法 功能。

行内公式

行内公式使用`!$`$包裹,如果你在 设置>扩展语法>mathjax 里打开了兼容通用写法 ,则可以直接把公式包裹在两个 $ 符号之间

示例

  1. 1`!$ \Gamma(z) = \int_0^\infty t^{z-1}e^{-t}dt\,. $` 

效果

块级公式

块级公式在代码块里使用 mathjax 做为标识语言,并在结尾添加上一个感叹号,表示执行里面的代码。如果你在 设置>扩展语法>mathjax 里打开了兼容通用写法 ,则可以直接把公式包裹在两个 $$ 符号之间。

示例

  1. 1```mathjax! 
  2. 2$$\Gamma(z) = \int_0^\infty t^{z-1}e^{-t}dt\,.$$ 
  3. 3``` 

效果

带编号的公式

公式编号可以跨代码块,也就是在其中的一个代码块里生成了一个编号,在其他代码块里可以引用该编号

示例

带编号的数学公式    10行
  1. 1`!$\eqref{ref1}$` 
  2. 2 
  3. 3```mathjax! 
  4. 4\begin{equation} 
  5. 5\int_0^\infty \frac{x^22}{e^x-1}\,dx = \frac{\pi^4}{15}\label{ref1} 
  6. 6\end{equation} 
  7. 7``` 
  8. 8 
  9. 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}

当重音修饰在像 ij 这两个字母上时,你可以分别通过 \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. 1(\frac{a}{x} )^2 

会发现界线符号没有足够高

通过输入 \left\right 在相关的界线符号前面时,界线符号生成的效果就会比较理想

  1. 1\left(\frac{a}{x} \right)^2 

这是应用了 \left\right 的最终效果

另一个应用 \left\right 的例子

  1. 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. 1\underbrace{a_0+a_1+a_2+\cdots+a_n}_{x} 

显示效果

\overbrace 可以显示上括号

  1. 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

疑问

相关

  1. mathjax 官方网站
  2. mathjax 支持的 text 命令
  3. 更多 mathjax 符号
  4. latex 相关