【写作工具】用Katex打出常见矩阵

  起因是前几天在做线性代数的博客笔记时,碰到了许多用Katex写矩阵的需要。因为许多功能尝试了不少时间才完成实现,于是准备及时做一个备忘录,以便于以后的公式写作。 Katex的官方手册参照


基本


有两种方法来实现矩阵的拼写,一种是使用 matrix环境(矩阵),另一种是使用array环境(数组)。array 的灵活性比matrix要更高一些。

方法 展示
\begin{matrix} a & b \\ c & d \end{matrix} a b c d \begin{matrix} a & b \\ c & d \end{matrix} acbd
\begin{array}{cc} a & b \\ c & d \end{array} a b c d \begin{array}{cc} a & b \\ c & d \end{array} acbd

两种方式均以 & 作为同一行列元素的分割,用 \ \ 作为不同行的分割。 array的第二个大括号填入需要的列数,如有两列就填入cc,也可不填。


括号

可在matrix前加上不同的 前缀 来匹配不同的括号,无前缀时无括号。

前缀 展示
\begin{bmatrix} & \end{bmatrix} 方括号 [ ] \begin{bmatrix} & \end{bmatrix} []
\begin{Bmatrix} & \end{Bmatrix} 大括号 { } \begin{Bmatrix} & \end{Bmatrix} { }
\begin{pmatrix} & \end{pmatrix} 圆括号 ( ) \begin{pmatrix} & \end{pmatrix} ()
\begin{vmatrix} & \end{vmatrix} 行列式 ∣ ∣ \begin{vmatrix} & \end{vmatrix}
\begin{Vmatrix} & \end{Vmatrix} 范数 ∥ ∥ \begin{Vmatrix} & \end{Vmatrix}

对于array而言,则需另在其两侧添加相应的 标记符号\left 和 \right ,来匹配相应的括号形式。如

\left[ \begin{
    
    array}{
    
    cc} a & b \\ c & d  \end{
    
    array}\right]

[ a b c d ] \left[ \begin{array}{cc} a & b \\ c & d \end{array} \right] [acbd]
由此可见,灵活性的提高也以复杂度的提高为代价。对于一般性的矩阵,matrix 能更简便地满足使用需求。如果不想使用标记符号来添加括号,也可以把array视为matix环境下的一个元素。即

\begin{
    
    bmatrix} \begin{
    
    array}{
    
    cc} a & b \\ c & d  \end{
    
    array}\end{
    
    bmatrix}

[ a b c d ] \begin{bmatrix} \begin{array}{cc} a & b \\ c & d \end{array}\end{bmatrix} [acbd]


分割线

在array环境中,能方便地添加水平分割线和竖直分割线。

[ 1 2 3 4 5 6 7 8 9 ] \left[ \begin{array}{c:c|c} 1 & 2 & 3 \\ \hline 4 & 5 & 6 \\ \hdashline 7 & 8 & 9 \end{array} \right] 147258369
其中c表示列之间的分隔,用 :来表示竖虚线, 用 | 来表示竖实线。\ \ 表示行之间的分隔, 用 \hline 来表示横实线,用 \hdashline 来表示虚横线

\left[
	\begin{
    
    array}{
    
    c:c|c}
	1 & 2 & 3 \\
	\hline
	4 & 5  & 6 \\
	\hdashline
	7 & 8 & 9
	\end{
    
    array}
\right] 

省略号

对于大型矩阵,经常有用省略号去略写矩阵元素的需求,如这样一个循环矩阵的例子

\begin{
    
    bmatrix}
		c_{
    
    0}&c_{
    
    n-1}&c_{
    
    n-2}&\cdots &c_{
    
    1}\\
		c_{
    
    1}&c_{
    
    0}&c_{
    
    n-1} &  \cdots &c_{
    
    2}\\
		c_{
    
    2}&c_{
    
    1}&c_{
    
    0}&\cdots  &c_3 \\
		\vdots &\vdots& \vdots&\ddots &\vdots \\
		c_{
    
    n-1}&c_{
    
    n-2}&c_{
    
    n-3}&\dots &c_{
    
    0}
\end{
    
    bmatrix}

[ c 0 c n − 1 c n − 2 … c 1 c 1 c 0 c n − 1 ⋯ c 2 c 2 c 1 c 0 ⋯ c 3 ⋮ ⋮ ⋮ ⋱ ⋮ c n − 1 c n − 2 c n − 3 … c 0 ] \begin{bmatrix} c_{0}&c_{n-1}&c_{n-2}&\dots &c_{1}\\ c_{1}&c_{0}&c_{n-1} & \cdots &c_{2}\\ c_{2}&c_{1}&c_{0}&\cdots &c_3 \\ \vdots &\vdots& \vdots&\ddots &\vdots \\ c_{n-1}&c_{n-2}&c_{n-3}&\dots &c_{0} \end{bmatrix} c0c1c2cn1cn1c0c1cn2cn2cn1c0cn3c1c2c3c0
列出常用的四种省略号,注意反斜向方向无一般性的命令支持(\iddots命令需相应宏包支持),可直接复制相应的Unicode字符 ⋰ 实现。

扫描二维码关注公众号,回复: 16437134 查看本文章
省略号 展示
水平方向 \cdots ⋯ \cdots
竖直方向 \vdots ⋮ \vdots
斜向方向 \ddots ⋱ \ddots
(特)反斜向方向 直接复制 ⋰ ⋰

进阶

学会括号、分割线、省略号后基本就能处理大多数的矩阵拼写,但有时还会面临一些特殊的应用,如分块和标注。


分块

利用 矩阵嵌套 的想法,我们能打出矩阵与其子矩阵间的层级关系。


[ a 11 a 22 I 0 b 11 b 12 b 21 b 22 ] 4 × 4 \begin{bmatrix} \begin{matrix} a_{11} & \\ & a_{22} \end{matrix} & \LARGE{I} \\ \LARGE{0} & \begin{matrix} b_{11} & b_{12} \\ b_{21} & b_{22} \end{matrix} \\ \end{bmatrix}_{4 \times 4} a11a220Ib11b21b12b22 4×4
对于这个 4 × 4 4 \times 4 4×4的矩阵而言,左上角是一个对角阵,左下角是一个 0 0 0矩阵,右上角是一个单位阵 I I I,右下角是一个普通的矩阵。

\begin{
    
    bmatrix} 
\begin{
    
    matrix} a_{
    
    11} & \\  & a_{
    
    22} \end{
    
    matrix} &  \Large{
    
    I}  \\
    \Large{
    
    0}    & \begin{
    
    matrix} b_{
    
    11} & b_{
    
    12} \\ b_{
    
    21} & b_{
    
    22} \end{
    
    matrix}    \\
\end{
    
    bmatrix}_{
    
    4 \times 4}

由于用了放大的字母来表示子矩阵,故索引常见放大字体的层次关系(从最大到正常)如下

大小 展示
\Huge{AB} A B \Huge{AB} AB
\huge{AB} A B \huge{AB} AB
\LARGE{AB} A B \LARGE{AB} AB
\Large{AB} A B \Large{AB} AB
\large{AB} A B \large{AB} AB
\normalsize{AB} A B \normalsize{AB} AB

标注

可以用 \textcolor 来区别颜色,或用 \colorbox 来区别高亮色彩,两者可以彼此嵌套使用。也可以用 \boxed 命令框选一个元素。

 \begin{
    
    bmatrix}
 \textcolor{
    
    red}{
    
    a} & \colorbox{
    
    aqua}{
    
    b} \\
 \textcolor{
    
    lime}{
    
    \colorbox{
    
    yellow}{
    
    c}} &\boxed{
    
    d}
 \end{
    
    bmatrix}

[ a b c d ] \begin{bmatrix} \textcolor{red}{a} & \colorbox{aqua}{b} \\ \textcolor{lime}{\colorbox{yellow}{c}} &\boxed{d} \end{bmatrix} [acbd]
这些命令应该足够完成 矩阵中特定元素彼此的标记区分。其中完整的颜色关键词参见 Color keywords,将一些常用的颜色截图如下
颜色

还有一种场景需要我们在矩阵的旁边加上必要的注记。左右的注记是比较简单的,继续沿用 \left 和 \right 即可。

\left.\begin{
    
    bmatrix}
a & b \\
c & d
\end{
    
    bmatrix}\right\} \tiny{
    
    这是一个在右边的注记}

[ a b c d ] } 这是一个在右边的注记 \left.\begin{bmatrix} a & b \\ c & d \end{bmatrix}\right\} \tiny{这是一个在右边的注记} [acbd]}这是一个在右边的注记

对于上下的标注,使用 /overbrace 和 /underbrace 即可。

\overbrace{
    
    \begin{
    
    bmatrix}
a & b \\
c & d
\end{
    
    bmatrix}}^{
    
    这是一个在上面的注记}

[ a b c d ] ⏞ 这是一个在上面的注记 \overbrace{\begin{bmatrix} a & b \\ c & d \end{bmatrix}}^{这是一个在上面的注记} [acbd] 这是一个在上面的注记
看得出来,注记是对整个矩阵进行的。因此对矩阵的部分进行标注时,可以借鉴分块矩阵的实现思路,将其类比成对子矩阵的标注。

\begin{
    
    bmatrix} 
\begin{
    
    matrix} a_{
    
    11} & \\  & a_{
    
    22} \end{
    
    matrix} &  \LARGE{
    
    I}  \\
    \LARGE{
    
    0}    & \begin{
    
    matrix} b_{
    
    11} & b_{
    
    12} \\ b_{
    
    21} & b_{
    
    22} \end{
    
    matrix} \\
\end{
    
    bmatrix} 
\begin{
    
    matrix} \\ \\ 
\left.\begin{
    
    matrix} \end{
    
    matrix}\right\}\tiny{
    
    这是个普通矩阵}
\end{
    
    matrix}

[ a 11 a 22 I 0 b 11 b 12 b 21 b 22 ] } 这是个普通矩阵 \begin{bmatrix} \begin{matrix} a_{11} & \\ & a_{22} \end{matrix} & \LARGE{I} \\ \LARGE{0} & \begin{matrix} b_{11} & b_{12} \\ b_{21} & b_{22} \end{matrix} \\ \end{bmatrix} \begin{matrix} \\ \\ \left.\begin{matrix} \end{matrix}\right\}\tiny{这是个普通矩阵} \end{matrix} a11a220Ib11b21b12b22 }这是个普通矩阵

猜你喜欢

转载自blog.csdn.net/weixin_47305073/article/details/126364404
今日推荐