Mathjax与LaTex公式简介

MathJax与LaTex公式简介 (转载)

PS: 原文链接写的非常好!!! 博主写这篇文章,一是为了防止原链接失效,二是在cnblogs上测试MathJax;

本文从math.stackexchange.com上名为MathJax basic tutorial and quick reference的问题翻译而来,并有所改动。主要讲述了如何使用MathJax和相关的Latex语法。

MathJax简介

MathJax是一款运行在浏览器中的开源数学符号渲染引擎,使用MathJax可以方便的在浏览器中显示数学公式,不需要使用图片。目前,MathJax可以解析Latex、MathML和ASCIIMathML的标记语言。MathJax项目于2009年开始,发起人有American Mathematical Society, Design Science等,还有众多的支持者,个人感觉MathJax会成为今后数学符号渲染引擎中的主流,也许现在已经是了。本文接下来会讲述MathJax的基础用法,但不涉及MathJax的安装及配置。此外,推荐使用StackEdit学习MathJax的语法,它支持Markdown和MathJax,本文使用此编辑器撰写。

基础

公式标记与查看公式 

使用MathJax时,需要用一些适当的标记告诉MathJax某段文本是公式代码。此外,MathJax中的公式排版有两种方式,inline和displayed。inline表示公式嵌入到文本段中,displayed表示公式独自成为一个段落。例如,$f(x) = 3 imes x $ 这是一个inline公式,而下面$$f(x) = 3 imes x $$ 则是一个displayed公式。

在MathJax中,默认的displayed公式分隔符有 $$...$$[...],而默认的inline公式分隔符为(...),当然这些都是可以自定义的,具体配置请参考文档。下文中,使用$$...$$作为displayed分隔符,$...$作为inline分隔符。

此外,可以在渲染完成的公式上方右键点击,唤出右键菜单。在菜单中提供了查看公式代码、设置显示效果和渲染模式的选项。

希腊字母

请参见下表:

名称               大写               Tex               小写               Tex

alpha             $A$                   A                  $alpha$               alpha

beta              $B$                   B                   $eta$               eta

gamma          $Gamma$                  Gamma         $gamma$                gamma

delta             $Delta$                  Delta             $delta$                delta

epsilon          $E$                    E                  $epsilon$                 epsilon

zeta              $Z$                    Z                  $zeta$                zeta

eta               $H$                    H                  $eta$                eta

theta            $Theta$                   Theta             $ heta$                 heta

iota              $I$                      I                   $iota$                 iota

kappa           $K$                    K                  $kappa$                 kappa

lambda         $Lambda$                   Lambda          $lambda$                 lambda

mu               $M$                    M                  $mu$                 mu

nu                $N$                    N                   $ u$                 u

xi                 $Xi$                    Xi                  $xi$                  xi

omicron        $O$                     O                  $omicron$                  omicron

pi                 $Pi$                    Pi                 $pi$                  pi

rho               $P$                     P                  $ ho$                   ho

sigma           $Sigma$                   Sigma            $sigma$                  sigma

tau               $T$                     T                   $ au$                   au

upsilon         $Upsilon$                   Upsilon           $upsilon$                  upsilon

phi               $Phi$                   Phi                 $phi$                  phi

chi               $X$                     X                   $chi$                  chi

psi               $Psi$                    Psi                $psi$                   psi

omega          $Omega$                  Omega            $omega$                   omega 

上标与下标

上标和下标分别使用^与_,例如x_i^2: $x_i^2$。默认情况下,上下标符号仅对下一个组起作用。一个组即单个字符或者使用{...}包裹起来的内容。也就是说,如果使用10^10,会得到$10^10$,而10^{10}才是$10^{10}$。同时,大括号还能消除二义性,如x^5^6将得到一个错误,必须使用大括号来界定^的结合性,如{x^5}^6: ${x^5}^6$或者x^{5^6}: $x^{5^6}$

括号

1. 小括号与方括号:使用原始的(),[]即可,如(2+3)[4+4]: $(2+3)[4+4]$

2. 大括号:由于大括号{}被用来分组,因此需要使用{和}表示大括号,也可以使用lbrace和 brace来表示。如{a*b}: ${a*b}$,lbrace a*b brace : $lbrace a*b brace$

3. 尖括号:使用langle和 angle表示左尖括号和右尖括号。如langle x angle : $langle x angle$

4. 上取整:使用lceil和 ceil表示。如lceil x ceil:$lceil x ceil$

5. 下取整:使用lfloor和 floor表示。如lfloor x floor:$lfloor x floor$

6. 不可见括号:使用.表示

需要注意的是,原始符号并不会随着公式大小缩放,可以使用left(... ight)来自适应地调整括号大小。如下,$$lbracesum_{i=0}^0 i^2 = frac{(n^2+n)(2n+2)}{6} brace ag{1.1}$$

$$leftlbracesum_{i=0}^0 i^2 = frac{(n^2+n)(2n+2)}{6} ight brace ag{1.2}$$

可以看到,公式1.2中的括号是经过缩放的。

求和与积分

sum用来表示求和符号,其下标表示求和下限,上标表示上限。如sum_1^n: $sum_1^n$。

int用来表示积分符号,同样地,其上下标表示积分的上下限。如int_1^infty: $int_1^infty$。

与此类似的符号还有:prod:$prod$ , igcup: $igcup$ , igcap:$igcap$ , iint:$iint$。

分式和根式

分式的表示:

  • 第一种,使用frac ab , frac作用于其后的两个组a , b ,结果为$frac ab$。如果你的分子或分母不是单个字符,请使用{...}来分组。
  • 第二种,使用over来分隔一个组的前后两部分,如 {a+1 over b+1}: ${a+1 over b+1}$

根式使用sqrt表示,如:sqrt[4]{frac xy} : $sqrt[4]{frac xy}$

字体

1. 使用mathbb或Bbb显示黑板粗体字,此字体经常用来表示实数、整数、有理数、复数。如 $mathbb{CHNQRZ}$

2. 使用mathbf显示黑体字,如 $mathbf{ABCDEFGHIJKLMNOPQRSTUVWXYZ}$,$$mathbf{abcdefghijklmnopqrstuvwxyz}$$

3. 使用mathtt显示打印机字体,如 $mathtt{ABCDEFGHIJKLMNOPQRSTUVWXYZ}$,

$$mathtt{abcdefghijklmnopqrstuvwxyz}$$

4. 使用mathrm显示罗马字体,如 $mathrm{ABCDEFGHIJKLMNOPQRSTUVWXYZ}$,

$$mathrm{abcdefghijklmnopqrstuvwxyz}$$

5. 使用mathscr显示手写体,如,$$mathscr{ABCDEFGHIJKLMNOPQRSTUVWXYZ}$$

6. 使用mathfrak显示Fraktur字母(一种德国字体),如 $$mathfrak{ABCDEFGHIJKLMNOPQRSTUVWXYZ}$$,

$mathfrak{abcdefghijklmnopqrstuvwxyz}$

特殊函数和符号

1.  常见的三角函数,如 $sin x$ , $arctan_x$ , $lim_{1 oinfty}$

2. 比较运算符:lt gt le ge eq : $lt$ $gt$ $le$ $ge$ $ eq$。可以在这些运算符前面加上 ot,如 otlt : $ otlt$

3. imes div pm mp 表示:$ imes$ $div$ $pm$ $mp$,cdot表示居中的点,x cdot y :$x cdot y$

4. 集合关系与运算:cup cap setminus subset subseteq subsetneq supset in otin emptyset varnothing : $cup$ $cap$ $setminus$ $subset$ $subseteq$ $subsetneq$ $supset$ $in$ $ otin$ $emptyset$ $varnothing$

5. 表示排列使用inom{n+1}{2k}或{n+1 choose 2k}

6. 箭头: o ightarrow leftarrow Rightarrow Leftarrow mapsto: $ o$ $ ightarrow$ $leftarrow$ $Rightarrow$ $Leftarrow$ $mapsto$

7. 逻辑运算符:land lor lnot forall exists op ot vdash vDash:$land$ $lor$ $lnot$ $forall$ $exists$ $ op$ $ot$ $vdash$ $vDash$

8. star ast oplus circ ullet : $star$ $ast$ $oplus$ $circ$ $ullet$

9. approx sim cong equiv prec : $approx$ $sim$ $cong$ $equiv$ $prec$

10. infty aleph_o abla partial Im Re : $infty$ $aleph_o$ $ abla$ $partial$ $Im$ $Re$

11. 模运算 pmode , 如 a equiv b pmod n : $a equiv b pmod n$

12. ldots与cdots,其区别是dots的位置不同,ldots位置稍低,cdots位置居中。$$a_1 + a_2 + cdots + a_n , a_1, a_2, ldots , a_n$$

13. 一些希腊字母具有变体形式,如epsilon varepsilon : $epsilon$ $varepsilon$ , phi varphi : $phi$ $varphi$

使用Detexify,你可以在网页上画出符号,Detexify会给出相似的符号及其代码。这是一个方便的功能,但是不能保证它给出的符号可以在MathJax中使用,你可以参考supported-latex-commands确定MathJax是否支持此符号。

空间

通常MathJax通过内部策略自己管理公式内部的空间,因此a...b与a......b( . 表示空格)都会显示为$ab$。可以通过在ab间加入\,增加些许间隙,;增加较宽间隙,quad与qquad会增加更大的间隙,如 $a quad b$

顶部符号

对于单字符,hat :  $hat x$ ;

对于多字符,widehat : $widehat {xy}$

类似的还有 overline , vec , overrightarrow , dot , ddot : $overline {xyz}$ $vec a$ $overrightarrow x$ $dot x$ $ddot x$

结束

基础部分就是这些。需要注意的是一些MathJax使用的特殊字符,可以使用转义为原来的含义,如$表示$ , \_表示下划线。

表格

使用$$egin{array}{列样式}...end{array}$$这样的形式来创建表格,列样式可以是clr表示居中,左,右对齐,还可以使用|表示一条竖线。表格中各行使用\分隔,各列使用&分隔,使用hline在本行前加入一条直线。例如 $$egin{array}{c|lcr} n & ext{Left} & ext{Center} & ext{Right} \ hline 1 & 0.24 & 1 & 125 \ 2 & -1 & 189 & -8 \ 3 & -20 & 2000 & 1+10i \ end{array}$$ 结果:$$egin{array}{c|lcr} n & ext{Left} & ext{Center} & ext{Right} \ hline 1 & 0.24 & 1 & 125 \ 2 & -1 & 189 & -8 \ 3 & -20 & 2000 & 1+10i \ end{array}$$

一个复杂的例子如下:

$$egin{array}{c}egin{array}{cc}egin{array}{c|cccc}  ext{min} & 0 & 1 & 2 &3 \ hline 0 & 0 & 0 & 0 & 0 \ 1 & 0 & 1 & 1 & 1 \ 2 & 0 & 1 & 2 & 2 \ 3 & 0 & 1 & 2 & 3  end{array} & egin{array}{c|cccc}  ext{max} & 0 & 1 & 2 & 3 \ hline 0 & 0 & 1 & 2 & 3 \ 1 & 1 & 1 & 2 & 3 \ 2 & 2 & 2 & 2 & 3 \ 3 & 3 & 3 & 3 & 3 end{array} end{array} \ egin{array}{c|cccc} Delta & 0 & 1 & 2 & 3 \ hline 0 & 0 & 1 & 2 & 3 \ 1 & 1 & 0 & 1 & 2 \ 2 & 2 & 1 & 0 & 1 \ 3 & 3 & 2 & 1 & 0 end{array}end{array}$$

矩阵

基本用法

使用$$egin{matrix}...end{matrix}$$来表示矩阵,在egin与end之间加入矩阵的元素即可。矩阵的行之间用\分隔,列之间用&分隔。

例如 $$egin{matrix} 1 & x & x^2 \ 1 & y & y^2 \ 1 & z & z^2 end{matrix}$$ 结果:$$egin{matrix} 1 & x & x^2 \ 1 & y & y^2 \ 1 & z & z^2 end{matrix}$$

加括号

如果要对矩阵加括号,可以像上文中提到的那样,使用left与 ight配合表示括号符号。也可以使用特殊的matrix,即替换egin{matrix}...end{matrix}中的matrix为pmatrix , bmatrix , Bmatrix , vmatrix , Vmatrix.

如 pmatrix: $egin{pmatrix} 1 & 2 \ 3 & 4 \ end{pmatrix}$ bmatrix: $egin{bmatrix} 1 & 2 \ 3 & 4 \ end{bmatrix}$ Bmatrix: $egin{Bmatrix} 1 & 2 \ 3 & 4 \ end{Bmatrix}$ vmatrix: $egin{vmatrix} 1 & 2 \  3 & 4 \ end{vmatrix}$ Vmatrix: $egin{Vmatrix} 1 & 2 \ 3 & 4 \ end{Vmatrix}$

省略元素

可以使用cdots $cdots$ ddots $ddots$ vdots $vdots$ 来省略矩阵中的元素,如:$$egin{pmatrix} 1 & a_1 & a_1^2 & cdots & a_1^n \ 1 & a_2 & a_2^2 & cdots & a_2^n \ vdots & vdots & vdots & ddots & vdots \ 1 & a_m & a_m^2 & cdots & a_m^n end{pmatrix}$$

增广矩阵

增广矩阵需要使用前面的array来实现,如 $$ left[ egin{array}{cc|c} 1 & 2 & 3 \ 4 & 5 & 6 end{array} ight] $$ 结果:$$ left[ egin{array}{cc|c} 1 & 2 & 3 \ 4 & 5 & 6 end{array} ight] $$ 

对齐的公式

有时候可能需要一系列的公式中等号对齐,如:$$ egin{align} sqrt{37} & = sqrt{frac{73^2-1}{12^2}} \ & = sqrt{frac{73^2}{12^2} cdot frac{73^2-1}{73^2}} \ & = frac{73}{12} sqrt{1 - frac{1}{73^2}} \ & approx frac{73}{12} left( 1 - frac{1}{2 cdot 73^2} ight) end{align} $$

这时候需要使用形如egin{align}...end{align}的格式,其中需要使用&来指示需要对齐的位置,请使用右键查看上述公式的代码。

分类表达式

定义函数的时候经常需要分情况给出表达式,可使用egin{cases}...end{cases}。其中,使用来分类,使用&指示需要对齐的位置。如:$$ f(n) = egin{cases} n/2, & ext{if $n$ is even} \ 3n+1, & ext{if $n$ is odd} end{cases} $$

上述公式也可以移动到右侧,不过需要使用array来实现,如下:$$ left. egin{array}{l} ext{if $n$ is even:} & n/2 \ ext{if $n$ is odd:} & 3n+1 end{array} ight} = f(n) $$

最后,如果需要让分类之间的垂直间隔变大,可以使用[2ex]代替来分隔不同情况。(3ex, 4ex也可以使用,1ex相当于原始距离)。

空间问题

在使用LaTex公式时,有一些不会影响公式正确性,但会使其看上去很糟糕的问题。

不要在指数或者积分中使用frac

在指数或者基本表达式中使用frac会使表达式看起来不清晰,因此在专业的数学排版中很少被使用。应该使用一个水平的/来代替,效果如下:$$egin{array}{cc} mathrm{Bad} & mathrm{Better} \ hline \ e^{ifrac{pi}{2}} quad e^{frac{ipi}{2}} & e^{ipi/2} \ int_{-frac{pi}{2}}^{frac{pi}{2}} sin x \, dx & int_{-pi/2}^{pi/2} sin x \, dx \ end{array} $$

使用mid代替|作为分隔符

符号|作为分隔符时有排版空间大小的问题,应该使用mid代替,效果如下:$$egin{array}{cc} mathrm{Bad} & mathrm{Better} \ hline \ {x | x^2 in Bbb Z} & {x mid x^2 in Bbb Z } end{array}$$

多重积分

对于多重积分,不要使用intint此类的表达,应该使用iint iiint等特殊形式,效果如下:$$ egin{array}{cc} mathrm{Bad} mathrm{Better} \ hline \ intint_S f(x) \, dy \, dx & iint_S f(x) \, dy \, dx \ intintint_V f(x) \, dz \, dy \, dx & iiint_V f(x) \, dz \, dy \, dx end{array} $$ 

此外,在微分前应该使用\,来增加些许空间,否则$TeX$会将微分紧凑地排列在一起,如下:$$ egin{array}{cc} mathrm{Bad} & mathrm{Better} \ hline \ iiint_V f(x) dz dy dx & iiint_V f(x) \, dz \, dy \, dx end{array} $$ 

连分数

书写连分数表达式时,请使用cfrac代替frac或者over,两者效果对比如下:

$$x = a_0+cfrac{1^2}{a_1+cfrac{2^2}{a_2+cfrac{3^2}{a_3+cfrac{4^2}{a_4+cdots}}}} ag{cfrac}$$

$$x = a_0+frac{1^2}{a_1+frac{2^2}{a_2+frac{3^2}{a_3+frac{4^2}{a_4+cdots}}}} ag{frac}$$

方程组

使用egin{array}...end{array}与left{...与 ight.配合表示方程组,如:

$$ left{ egin{array}{c} a_1x+b_1y+c_1z=d_1 \ a_2x+b_2y+c_2z=d_2 \ a_3x+b_3y+c_3z=d3 end{array}  ight. $$

同时,还可以使用egin{cases}...end{cases}表达同样的方程组,如:

$$ egin{cases} a_1x+b_1y+c_1z=d_1 \ a_2x+b_2y+c_2z=d_2 \ a_3x+b_3y+c_3z=d_3 end{cases} $$

对齐方程组中的=号,可以使用egin{aligned}...end{aligned},如:

$$ left{ egin{aligned} a_1x+b_1y+c_1z & = d_1+e_1 \ a_2x+b_2y & = d_2 \ a_3x+b_3y+c_3z & = d_3 end{aligned} ight. $$

颜色

命名颜色是浏览器相关的,如果浏览器没有定义相关的颜色名称,则相关文本将被渲染为黑色。以下颜色是HTML4和CSS2标准中定义的一些颜色,其应该被大多数浏览器定义了。

$$ egin{array}{|rc|} hline \ verb+color{black}{text}+ & color{black}{text} \ verb+color{gray}{text}+ & color{gray}{text} \ verb+color{silver}{text}+ & color{silver}{text} \ verb+color{white}{text}+ & color{white}{text} \ hline \ verb+color{maroon}{text}+ & color{maroon}{text} \ verb+color{red}{text}+ & color{red}{text} \ verb+color{yellow}{text}+ & color{yellow}{text} \ verb+color{lime}{text}+ & color{lime}{text} \ verb+color{olive}{text}+ & color{olive}{text} \ verb+color{green}{text}+ & color{green}{text} \ verb+color{teal}{text}+ & color{teal}{text} \ verb+color{aqua}{text}+ & color{aqua}{text} \ verb+color{blue}{text}+ & color{blue}{text} \ verb+color{navy}{text}+ & color{navy}{text} \ verb+color{purple}{text}+ & color{purple}{text} \ verb+color{fuchsia}{text}+ & color{fuchsia}{text} \ verb+color{magenta}{text}+ & color{magenta}{text} \ hline end{array} $$

此外,HTML5和CSS3也定义了一些颜色名称,参见 。同时,颜色也可以使用#rgb的形式来表示,如下:

$$ egin{array}{|rrrrrrrr|} hline verb+#000+ & color{#000}{text} & & & verb+#00F+ & color{#00F}{text} & & \ & & verb+#0F0+ & color{#0F0}{text} & & & verb+#0FF+ & color{#0FF}{text} \ verb+#F00+ & color{#F00}{text} & & & verb+#F0F+ & color{#F0F}{text} & & \ & & verb+#FF0+ & color{#FF0}{text} & & & verb+#FFF+ & color{#FFF}{text} & & \ hline end{array} $$

HTML色彩快速参考手册

公式标记与引用 

使用 ag{yourtat}来标记公式,如果想在之后引用该公式,则还需要加上label{yourlabel}在 ag之后,如:

$$ a:= x^2-y^3 ag{*}label{*} $$

为了引用公式,可以使用eqref{rlabel},如:

$$ a+y^3 stackrel{eqref{*}}=x^2 $$ 

可以看到,通过超链接可以跳转到被引用公式的位置。

补充

indicator function: mathbb{I}  $mathbb{I}$

空心的符号:mathbb{KL} $mathbb{KL}$

向量、矩阵:mathrm{x, y} $mathrm{x, y}$

实值:x  $x$

使用 egin{align} 时,在每个式子末尾加上 onumber 可以去掉显示式子的标号,具体内容参见【链接

原文地址:https://www.cnblogs.com/linxd/p/4955530.html