用 Markdown 写多行公式
用 Markdown 写多行公式
Markdown 是很优秀的标记语言,目前很多平台都有带
TeX
\TeX
TEX 公式引擎(KaTeX, Mathjax 等)的 Markdown 编辑器。文章介绍使用 Typora 客户端做公式笔记,主要为多行公式的
TeX
\TeX
TEX 语法和公式识别两个问题。
简单的
LaTeX
\LaTeX
LATEX 语法就不介绍了,读者如有需要可以直接拉到文章末尾看
LaTeX
\LaTeX
LATEX 的一份入门文档,本文直接讲一下多行公式的问题:
Remak:
- CSDN 使用的是 KaTeX 引擎,本文描述的 Typora 是 MathJax 引擎,渲染有所出入:1)不支持
equation
环境,2)不支持公式编号 - 源文档: Pastebin
- Typora: Typora official webpage
行内公式和简单单行公式
行内公式:
系统状态方程 $\dot{x}=Ax$ 的解为 $x=e^Ax(0)$
渲染效果:
系统状态方程
x
˙
=
A
x
\dot{x}=Ax
x˙=Ax 的解为
x
=
e
A
x
(
0
)
x=e^Ax(0)
x=eAx(0)
简单行间公式:
系统状态方程 $\dot{x}=Ax$ 的解为
$$
x=e^Ax(0)
$$
渲染效果:
系统状态方程
x
˙
=
A
x
\dot{x}=Ax
x˙=Ax 的解为
x
=
e
A
x
(
0
)
x=e^Ax(0)
x=eAx(0)
Remark:
- 在 Typora 中,公式功能需要自行开启
- 在 Typora 中,默认是无编号,需要自行开启
多行公式
简单多行公式
用法:用两个$$
嵌套,或者使用 \begin{equation}\end{equation}
示例:
$$
f_1(x)\\ % 使用 \\ 换行
f_2(x)\label{Multi1}
% 设置 label 是为了方便引用
$$
$$
\begin{equation}
f_1(x)\\
f_2(x)\notag
% \notag 取消编号
\end{equation}
$$
渲染效果
f
1
(
x
)
f
2
(
x
)
f_1(x)\\ f_2(x)
f1(x)f2(x)
f
1
(
x
)
f
2
(
x
)
f_1(x)\\ f_2(x)
f1(x)f2(x)
Remark:
- 设置 label 可以很方便的引用公式,使用
\eqref{}
引用 \notag
可以取消编号,相应的,\tag{}
可以设置任意的标注内容
array
环境
array
环境用于简单的多行公式,比普通环境多了一个对齐选项
用法:\begin{array}{l}\end{array}
,l
为对齐方式(l
eft, r
ight, c
enter)
示例:
$$
\begin{equation}
\dot{\boldsymbol{x}}=f(\boldsymbol{x})
=\left\{
\begin{array}{ll}
f_{1}(\boldsymbol{x}) & \boldsymbol{x} \in S_{1} \\
f_{2}(\boldsymbol{x}) & \boldsymbol{x} \in S_{2}
\end{array}\right.
\end{equation}
$$
渲染效果:
x
˙
=
f
(
x
)
=
{
f
1
(
x
)
x
∈
S
1
f
2
(
x
)
x
∈
S
2
\dot{\boldsymbol{x}}=f(\boldsymbol{x}) =\left\{ \begin{array}{ll} f_{1}(\boldsymbol{x}) & \boldsymbol{x} \in S_{1} \\ f_{2}(\boldsymbol{x}) & \boldsymbol{x} \in S_{2} \end{array}\right.
x˙=f(x)={f1(x)f2(x)x∈S1x∈S2
Remark:
\left\{
和\right.
用于自适应括号大小,只需要单边括号时,另一侧括号用.
代替- 大括号在
LaTeX
\LaTeX
\
使用 array
环境中需要几列就设置几列的对齐方式,使用&
分列,\\
分行\boldsymbol{}
用于粗体数学符号array
也用于矩阵输入,但矩阵现多使用matrix
环境
aligned
环境
aligned
环境用于需要设置对齐点的多行公式
用法:\begin{aligned}\end{ailgned}
示例:
$$
\begin{equation}
\begin{aligned}
&\dot{\boldsymbol{x}}=A \boldsymbol{x}+B \boldsymbol{u}
, \quad
\boldsymbol{x}(0)=\boldsymbol{x}_{0}\\
&y=C x+D u
\end{aligned}
\end{equation}
$$
渲染效果:
x
˙
=
A
x
+
B
u
,
x
(
0
)
=
x
0
y
=
C
x
+
D
u
\begin{aligned} &\dot{\boldsymbol{x}}=A \boldsymbol{x}+B \boldsymbol{u}, \quad \boldsymbol{x}(0)=\boldsymbol{x}_{0}\\ &y=C x+D u \end{aligned}
x˙=Ax+Bu,x(0)=x0y=Cx+Du
Remark:
-
aligned
需要amsmath
宏包支持,现在大部分的引擎都会带有该宏包 -
\quad
用于生成空白间距,类似的命令有:\qquad
\,
\:
\;
(正间距)\!
(负间距) -
嵌套的
equation
环境是为了生成编号 -
在
LaTeX
\LaTeX
LATEX 中
aligned
是无法单独使用的,必须嵌套在equation
环境中,在很多其他基于TeX
\TeX
TEX 的引擎中,都默认省去了
equation
环境,任何行间公式都是当做equaiton
环境处理,所以会出现aligned
能够单独使用的情况,但是在需要编号的时候,aligned
是无法自动生成编号的,这时可以嵌套一个equation
环境来生成编号
简单宏定义
宏定义能够实现自定义算符、简化过于冗长的命令
自定义命令用法:\newcommand{\定义命令}[参数个数]{内容}
(内容中用 #1, #2, #3 … 来设置形参)
自定义算符用法:\DeclareMathOperator{\定义命令}{算符}
示例:
$$
\newcommand{\bx}{\boldsymbol{x}} \notag
\DeclareMathOperator{\sign}{sign}
$$
渲染效果:
s
i
g
n
x
,
x
\mathrm{sign}\,{x},\boldsymbol{x}
signx,x (\sign{x},\bx
)
Remark:
- 声明需在文章最开头设置
- 在 Typora 中,如果公式渲染异常,可以在编辑中找到
刷新公式
公式识别问题
Mathpix 提供
LaTeX
\LaTeX
LATEX 公式识别,准确度很高,每月 50 次免费,推荐注册可以获得 50-200 次额外次数,申请 API 可以获得每月 1000 次,日常使用是足够了。
参考文档
文章简单介绍了几个多行公式的实现,这里再贴出几个文档,以飨读者:
LaTeX
\LaTeX
LATEX 参考文档