最近看了些机器学习的书籍, 想写点笔记记录下. 由于需要使用到很多的数学推导, 所以就看了下如何在 Markdown 中插入数学式,发现在 Markdown 中可以直接插入 LaTeX 数学式.

排版数学公式是 \(\TeX\) 系统设计的初衷, 在 \(\LaTeX\) 中占有特殊地位, 是 \(\LaTeX\) 最为人称道的功能之一, 很多人就是冲着 \(\LaTeX\) 的公式输入功能来的:), 如我... 下面简要介绍下 MarkDown 中如何使用 \(\LaTeX\) 输入数学公式.

数学模式

在 LaTeX 中,最常用到的主要有文本模式和数学模式这两种模式。数学模式又可分为行内公式{inline math)和行间公式 (display math) 两种形式。

行内公式形式是将数学式插入文本行之内,使之与文本融为一体,这种形式适合编写简 短的数学式。

行间公式形式是将数学式插在文本行之间,自成一行或一个段落,与上下文附加一段垂 直空白,使数学式突出醒目。多行公式、公式组和微积分方程等复杂的数学式都是采用行间 公式形式编写。

行内公式 $ ... $

行间公式 $$ ... $$

函数 ${f(x)=a_nx^n+a_{n-1}x^{n-1}+a_{n-2}x^{n-2}}+\cdots$

函数 $${f(x)=a_nx^n+a_{n-1}x^{n-1}+a_{n-2}x^{n-2}}+\cdots \tag{1.1}$$

函数 \({f(x)=a_nx^n+a_{n-1}x^{n-1}+a_{n-2}x^{n-2}}+\cdots\)

函数 $${f(x)=a_nxn+a_{n-1}x{n-1}+a_{n-2}x^{n-2}}+\cdots \tag{1.1}$$

LaTeX 注释符号为 \(\%\)

输入上下标

^ 表示上标, _ 表示下标。如果上下标的内容多于一个字符,要用大括号 { } 把这些内容括起来当成一个整体。上下标是可以嵌套的,也可以同时使用。

\(\sum_i^na_i\)

$\sum_i^na_i$

输入分数

分数的输入形式为 \frac{分子}{分母}

\(P(v)=\frac{1}{1+exp(-v/T)}\)

$P(v)=\frac{1}{1+exp(-v/T)}$

上下划线与花括号

\[\begin{array}
\overline{a+b+c} \\
\underline{a+b+c} \\
\overleftarrow{a+b} \\
\underleftarrow{a+b} \\
\underleftrightarrow{a+b} \\
\vec x = \vec{AB} \\
\overbrace {a+b}^\text{a,b} \\
a+\rlap{\overbrace{\phantom{b+c+d}}^m}b+\underbrace{c+d+e}_n+f
\end{array}
\]

$$
\begin{array}
\overline{a+b+c} \\
\underline{a+b+c} \\
\overleftarrow{a+b} \\
\underleftarrow{a+b} \\
\underleftrightarrow{a+b} \\
\vec x = \vec{AB} \\
\overbrace {a+b}^\text{a,b} \\
a+\rlap{\overbrace{\phantom{b+c+d}}^m}b+\underbrace{c+d+e}_n+f
\end{array}
$$

输入根号

\[\begin{align*}
\sqrt {12} \\
\sqrt[n]{12}
\end{align*}
\]

$$
\begin{align*}
\sqrt {12} \\
\sqrt[n]{12}
\end{align*}
$$

输入括号和分隔符

(), [] , | 分别表示原尺寸的形状,由于大括号 {} 在 LaTeX 中有特定含义, 所以使用需要转义, 即\{\} 分别表示表示{ }。当需要显示大尺寸的上述符号时, 在上述符号前加上 \left\right 命令.

\(\{a\}\)

$f(x,y,z) = 3y^2z 3+(\frac{7x+5}{1+y^2}) \(
\)f(x,y,z) = 3y^2z + \left( 3 +\frac{7x+5}{1+y^2} \right)$

$\{a\}$
$f(x,y,z) = 3y^2z 3+(\frac{7x+5}{1+y^2}) $
$f(x,y,z) = 3y^2z + \left( 3 +\frac{7x+5}{1+y^2} \right)$

关于各种数学符号写法, 详见Cmd Markdown 公式指导手册, 下面主要介绍下常用的 矩阵和多行公式输入 做详细的记录.

矩阵

矩阵中, 不同的列使用 & 分割, 行使用 \\ 分隔

下面展示一系列矩阵环境排版, 区别在于外面的括号不同

\[\begin{align*}
&\text{matrix}\quad\begin{matrix} a&b \\ c&d \end{matrix} \quad &\text{bmatrix}\quad\begin{bmatrix} a&b \\ c&d \end{bmatrix} \quad
&\text{vmatrix}\quad\begin{vmatrix} a&b \\ c&d \end{vmatrix} \quad \\
&\text{pmatrix}\quad\begin{pmatrix} a&b \\ c&d \end{pmatrix} \quad
&\text{Bmatrix}\quad\begin{Bmatrix} a&b \\ c&d \end{Bmatrix} \quad
&\text{Vmatrix}\quad\begin{Vmatrix} a&b \\ c&d \end{Vmatrix} \quad\\
\end{align*}
\]

\[\begin{pmatrix}
a & b & c \\
d & e & f \\
g & h & i
\end{pmatrix}
\]

\[\chi(\lambda) =
\begin{vmatrix}
\lambda - a & -b & -c \\
-d & \lambda - e & -f \\
-g & -h & \lambda - i
\end{vmatrix}
\]

$$
\begin{pmatrix}
a & b & c \\
d & e & f \\
g & h & i
\end{pmatrix}
$$ $$
\chi(\lambda) =
\begin{vmatrix}
\lambda - a & -b & -c \\
-d & \lambda - e & -f \\
-g & -h & \lambda - i
\end{vmatrix}
$$

省略号

\[\begin{eqnarray*} \\
\ldots \\
\cdots \\
\vdots \\
\ddots \\
\end{eqnarray*}
\]

$$
\begin{eqnarray*} \\
\ldots \\
\cdots \\
\vdots \\
\ddots \\
\end{eqnarray*}
$$

单行公式与多行公式

equation 环境用来输入单行公式, 自动生成编号, 也可以使用 \tag{...} 自己对公式编号; 使用 equation* 环境, 不会自动生成公式编号, 后续介绍的公式输入环境都是在自动编号后面加上 * 便是不自动编号环境.

\[\begin{equation}
(a+b) \times c = a\times c + b \times c
\end{equation}
\]

\[\begin{equation*}
(a+b) \times c = a\times c + b \times c \\
\end{equation*}
\]

\begin{equation}
(a+b) \times c = a\times c + b \times c \\
\end{equation}

\[ ... \]equation* 环境的简写

\[

(a+b) \times c = a\times c + b \times c \

\]

\\[
(a+b) \times c = a\times c + b \times c \\
\\]

eqnarray 环境用来输入按照等号(或者其他关系符)对齐的方程组, 编号

\[\begin{eqnarray}
f(x) = a_nx^n \\
g(x) = x^2
\end{eqnarray}
\]

$$
\begin{eqnarray}
f(x) = a_nx^n \\
g(x) = x^2
\end{eqnarray}
$$

输入多行公式, gather 环境得到的公式是每行居中的, align环境则允许公式按照等号或者其他关系符对齐, 在关系符前加&表示对齐

\[\begin{gather}
(a+b) \times c = a\times c + b \times c \notag \\
ac= a\times c \\
\end{gather}
\]

\[\begin{align}
y &= \cos t + 1 \\
y &= 2sin t \\
\end{align}
\]

$$
\begin{gather}
(a+b) \times c = a\times c + b \times c \notag \\
ac= a\times c \\
\end{gather}
$$ $$
\begin{align}
y &= \cos t + 1 \\
y &= 2sin t \\
\end{align}
$$

align 环境还允许排列多列对齐公式, 列与列之间使用&分割

\[\begin{align*}
x &= t & x &= \cos t & x &= t \\
y &= 2t & y &= \sin (t+1) & y &= \sin t \\
\end{align*}
\]

\[\begin{align*}
& (a+b)(a^2-ab+b^2) \\
= {}& a^3-a^2b+ab^2+a^2b-ab^2+b^2 \\
= {}& a^3 + b^3
\end{align*}
\]

$$
\begin{align*}
x &= t & x &= \cos t & x &= t \\
y &= 2t & y &= \sin (t+1) & y &= \sin t \\
\end{align*}
$$ $$
\begin{align*}
& (a+b)(a^2-ab+b^2) \\
= {}& a^3-a^2b+ab^2+a^2b-ab^2+b^2 \\
= {}& a^3 + b^3
\end{align*}
$$

align 环境中列分隔符 & 一般放在关系符前面, 如果个别需要再关系符后面或者别的地方对齐的, 则应该注意使用的符号类型

\[% 关系符后对齐,需要使用空的分组
% 代替关系符右侧符号,保证间距
\begin{align*}
& (a+b)(a^2-ab+b^2) \notag \\
={ } & a^3 - a^2b + ab^2 + a^2b
- ab^2 + b^2 \notag \\
={ } & a^3 + b^3 \label{eq:cubesum}
\end{align*}
\]

$$
% 关系符后对齐,需要使用空的分组
% 代替关系符右侧符号,保证间距
\begin{align*}
& (a+b)(a^2-ab+b^2) \notag \\
={ } & a^3 - a^2b + ab^2 + a^2b
- ab^2 + b^2 \notag \\
={ } & a^3 + b^3 \label{eq:cubesum}
\end{align*}
$$

跨多行的单个公式

单个公式很长的时候需要换行,但仅允许生成一个编号时,可以用 split 环境包围公式代码,在需要转行的地方使用 \. split 环境一般用在 equation, gather 环境里面, 可以把单个公式拆成多行, 同时支持 align 那样对齐公式.

split 环境不产生编号, 编号由外面的数学环境产生; 每行需要使用1个&来标识对齐的位置,结束后可使用 \tag{...} 标签编号。 如果 split 环境中某一行不是在二元关系符前面对齐, 需要通过 \quad 等手段设置间距或对齐方式.

\[% 注意 \tag{...} 编号的位置
\begin{equation}
\begin{split}
\cos 2x &= \cos^2 x - \sin^2 x \\
&= 2\cos^2 x - 1
\end{split} \tag{3.1}
\end{equation}
\]

\[\begin{equation}\label{eq:trigonometric}
\begin{split}
\frac12 (\sin(x+y) + \sin(x-y))
&= \frac12(\sin x\cos y + \cos x\sin y) \\
& \quad + \frac12(\sin x\cos y - \cos x\sin y) \\
&= \sin x\cos y
\end{split}
\end{equation}
\]

$$
% 注意 \tag{...} 编号的位置
\begin{equation}
\begin{split}
\cos 2x &= \cos^2 x - \sin^2 x \\
&= 2\cos^2 x - 1
\end{split} \tag{3.1}
\end{equation}
$$ $$
\begin{equation}\label{eq:trigonometric}
\begin{split}
\frac12 (\sin(x+y) + \sin(x-y))
&= \frac12(\sin x\cos y + \cos x\sin y) \\
& \quad + \frac12(\sin x\cos y - \cos x\sin y) \\
&= \sin x\cos y
\end{split}
\end{equation}
$$

将公式组合为块

最常见的是 case 环境, 他在几行公式前面用花括号括起来, 表示几种不同的情况; 每行公式使用 & 分隔, 便是表达式与条件, 例如

\[\begin{equation}
D(x) = \begin{cases}
1, & \text{if } x \in \mathbb{Q}; \\
0, & \text{if } x \in
\mathbb{R}\setminus\mathbb{Q}.
\end{cases}
\end{equation}
\]

$$
\begin{equation}
D(x) = \begin{cases}
1, & \text{if } x \in \mathbb{Q}; \\
0, & \text{if } x \in
\mathbb{R}\setminus\mathbb{Q}.
\end{cases}
\end{equation}
$$

gathered环境 将几行公式居中排列, 组合为一个整体;

\[\left. \begin{gathered}
S \subseteq T \\
S \supseteq T
\end{gathered} \right\}
\implies S = T
\]

$$
\left. \begin{gathered}
S \subseteq T \\
S \supseteq T
\end{gathered} \right\}
\implies S = T
$$

括号的其他用法

功能 语法 显示
圆括号,小括号 \left( \frac{a}{b} \right) \(\left( \frac{a}{b} \right)\)
方括号,中括号 \left[ \frac{a}{b} \right] \(\left[ \frac{a}{b} \right]\)
花括号,大括号 \left\{ \frac{a}{b} \right\} \(\left\{ \frac{a}{b} \right \}\)
尖括号 \left \langle \frac{a}{b} \right \rangle \(\left \langle \frac{a}{b} \right \rangle\)
单竖线,绝对值 \left | \frac{a}{b} \right| 丨\(\frac{a}{b}\)丨
双竖线,范式 \left \| \frac{a}{b} \right \| \(\left \| \frac{a}{b} \right \|\)
取整函数 \left \lfloor \frac{a}{b} \right \rfloor \(\left \lfloor \frac{a}{b} \right \rfloor\)
取顶函数 \left \lceil \frac{c}{d} \right \rceil \(\left \lceil \frac{c}{d} \right \rceil\)
斜线与反斜线 \left / \frac{a}{b} \right \backslash $\left / \frac{a}{b} \right \backslash $
上下箭头 \left \uparrow \frac{a}{b} \right \downarrow \(\left \uparrow \frac{a}{b} \right \downarrow\)
混合括号1 \left [ 0,1 \right ) \(\left [ 0,1 \right )\)
混合括号2 \left \langle \psi \right\| \(\left \langle \psi \right \|\)
单左括号 \left \{ \frac{a}{b} \right . \(\left \{ \frac{a}{b} \right .\)
单右括号 \left . \frac{a}{b} \right \} \(\left . \frac{a}{b} \right \}\)

希腊字母

希腊字母(小写) 输入 希腊字母(大写) 输入
α \alpha Α A
β \beta Β B
γ \gamma Γ \Gamma
δ \delta Δ \Delta
ε或ϵ \epsilon或\varepsilon Ε E
ζ \zeta Ζ Z
η \eta Η H
θ或ϑ \theta或\vartheta Θ \Theta
ι \iota Ι I
κ \kappa Κ K
λ \lambda Λ \Lambda
μ \mu Μ M
ν \nu Ν N
ξ \xi Ξ \Xi
ο o Ο O
π或ϖ \pi或\varpi Π \Pi
ρ或ϱ \rho或\varrho Ρ P
σ或ς \sigma或\varsigma Σ \Sigma
τ \tau Τ T
υ \upsilon Υ \Upsilon
φ或φ \phi或\varphi Φ \Phi
χ \chi Χ X
ψ \psi Ψ \Psi
ω \omega Ω \Omega

三角函数与逻辑数学字符

数学字符 输入 数学字符 输入
± \pm × \times
÷ \div | \mid
\(\nmid\) \nmid \cdot
\circ \ast
\bigodot \bigotimes
\bigoplus \leq
\geq \neq
\approx \equiv
\sum \prod
\coprod \emptyset
\in \notin
\subset \supset
\subseteq \supseteq
\bigcap \bigcup
\bigvee \bigwedge
\biguplus \bigsqcup
log \log lg \lg
ln \ln \bot
\angle 30^∘ 30 ^ \circ
sin \sin cos \cos
tan \tan cot \cot
\prime \int
\iint \iiint
\iiiint \oint
lim \lim \infty
\nabla \because
\therefore \forall
\exists \not=
\not> \not\subset
\hat{y} \check{y}
\breve{y} sec \sec
\uparrow \downarrow
\Uparrow \Downarrow
\rightarrow \leftarrow
\Rightarrow \Leftarrow
\longrightarrow \longleftarrow
\Longrightarrow \Longleftarrow
\(\quad\) \quad # #

参考

Markdown中编写LaTeX数学公式

Markdown下LaTeX公式、编号、对齐

<<LaTeX入门>> 刘海洋

随机推荐

  1. MongoDB安全及身份认证

    前面的话 本文将详细介绍MongoDB安全相关的内容 概述 MongoDB安全主要包括以下4个方面 1.物理隔离 系统不论设计的多么完善,在实施过程中,总会存在一些漏洞.如果能够把不安全的使用方与Mo ...

  2. 流畅python学习笔记:第十一章:抽象基类

    __getitem__实现可迭代对象.要将一个对象变成一个可迭代的对象,通常都要实现__iter__.但是如果没有__iter__的话,实现了__getitem__也可以实现迭代.我们还是用第一章扑克 ...

  3. 干货:基于 Git Flow 的 Git 最佳实践(附加解决大家经常碰到的问题)

    突然想写这一篇Git的使用心得,主要有几个原因,其一是自己使用Git也有快3年时间了,其间自己经历过一些坑,也有迷茫的时候,在呆过的大大小小的团队中,其实每个人也都并不是Git专家,很多对于流程以及G ...

  4. nyoj_120: 校园网络

    题目链接 要加边使一个图成为一个强连通分量,只需加max(出度为0的点数,入度为0的点数)条边(可以不使用tarjan算法).题目数据有点弱,网上一些人所谓 结果 = 出度为0的点的数量+入度为0的点 ...

  5. 操作系统,银行家算法模拟实现(Windows 环境 C++)

    计算机操作系统课设需要,写了两个下午的银行家算法(陷在bug里出不来耽误了很多时间),参考计算机操作系统(汤子瀛) 实现过程中不涉及难度较大的算法,仅根据银行家算法的思想和步骤进行实现.以下为详细步骤 ...

  6. Memcached的基础梳理

    1 .Memcached 概念 官方解释如下: What is Memcached? Free & open source, high-performance, distributed mem ...

  7. 两百条微信小程序跳坑指南(不定时更新)

    微信小程序联盟出品 跳坑textarea<二百二十三>不显示文本及textarea相关问题集合跳坑<二百一十三> background-image无法获取本地资源图片....跳 ...

  8. Java实现简单文件过滤器

    输入路径查找该路径下的指定文件类型的文件 代码思路: 想要循环遍历文件夹下所有子文件夹,就要用到递归. 首先判断路径是否存在: 是:获取文件 判断是否文件夹: 是:调用自身,继续获取子文件夹下内容 否 ...

  9. 浅谈js中如何动态添加表头/表列/表格内容

    我想很多童鞋用js动态向表格中添加数据很熟悉,而且也觉得非常简单!是的,对于写页面的童鞋来说,最喜欢写查询的页面了,动态向表格绑定数据.用for循环就可以轻松搞定. 如果我们的业务需求有所变化,可能我 ...

  10. 【原创】07. ajax请求,解决sendRedirect 无效

    介绍: 后台基于旧代码用的Filter验证,若 Session过期,则跳转登陆页面 前台框架:EasyUI 问题: 最初后台验证不通过: 1 httpServletResponse.sendRedir ...