zoukankan      html  css  js  c++  java
  • 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 可以去掉显示式子的标号,具体内容参见【链接

  • 相关阅读:
    利用相关的Aware接口
    java 值传递和引用传递。
    权限控制框架Spring Security 和Shiro 的总结
    优秀代码养成
    Servlet 基础知识
    leetcode 501. Find Mode in Binary Search Tree
    leetcode 530. Minimum Absolute Difference in BST
    leetcode 543. Diameter of Binary Tree
    leetcode 551. Student Attendance Record I
    leetcode 563. Binary Tree Tilt
  • 原文地址:https://www.cnblogs.com/linxd/p/4955530.html
Copyright © 2011-2022 走看看