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

基本

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

方法 展示
\begin{matrix} a & b \\ c & d \end{matrix} abcd\begin{matrix} a & b \\ c & d \end{matrix}ac​bd​
\begin{array}{cc} a & b \\ c & d \end{array} abcd\begin{array}{cc} a & b \\ c & d \end{array}ac​bd​

两种方式均以 & 作为同一行列元素的分割,用 \ \ 作为不同行的分割。 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]

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

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

[abcd]\begin{bmatrix} \begin{array}{cc} a & b \\ c & d \end{array}\end{bmatrix} [ac​bd​​]

分割线

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

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

\left[\begin{array}{c:c|c}1 & 2 & 3 \\\hline4 & 5  & 6 \\\hdashline7 & 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}

[c0cn−1cn−2…c1c1c0cn−1⋯c2c2c1c0⋯c3⋮⋮⋮⋱⋮cn−1cn−2cn−3…c0]\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} ⎣⎡​c0​c1​c2​⋮cn−1​​cn−1​c0​c1​⋮cn−2​​cn−2​cn−1​c0​⋮cn−3​​…⋯⋯⋱…​c1​c2​c3​⋮c0​​⎦⎤​
列出常用的四种省略号,注意反斜向方向无一般性的命令支持(\iddots命令需相应宏包支持),可直接复制相应的Unicode字符 ⋰ 实现。

省略号 展示
水平方向 \cdots ⋯\cdots⋯
竖直方向 \vdots ⋮\vdots⋮
斜向方向 \ddots ⋱\ddots⋱
(特)反斜向方向 直接复制 ⋰⋰⋰

进阶

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

分块

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

[a11a22I0b11b12b21b22]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} ⎣⎡​a11​​a22​​0​Ib11​b21​​b12​b22​​​⎦⎤​4×4​
对于这个4×44 \times 44×4的矩阵而言,左上角是一个对角阵,左下角是一个000矩阵,右上角是一个单位阵III,右下角是一个普通的矩阵。

\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} AB\Huge{AB}AB
\huge{AB} AB\huge{AB}AB
\LARGE{AB} AB\LARGE{AB}AB
\Large{AB} AB\Large{AB}AB
\large{AB} AB\large{AB}AB
\normalsize{AB} AB\normalsize{AB}AB

标注

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

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

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

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

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

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

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

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

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

\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}

[a11a22I0b11b12b21b22]}这是个普通矩阵\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} ⎣⎡​a11​​a22​​0​Ib11​b21​​b12​b22​​​⎦⎤​}这是个普通矩阵​

【写作工具】用Katex打出常见矩阵相关推荐

  1. 十大战略工具(1)——波士顿矩阵

    序 .接下来十天会日更一个战略法则工具 .分别是波士顿矩阵 .MECE 法则 .波特五力模型 .SCQA架构 .通用电气矩阵 .正态分布&幂律分布 .PEST模型 .平衡记分卡 .SWOT分析 ...

  2. 在 Windows 上拥有舒适的码字体验,12 款 Markdown 写作工具推荐

    在 Windows 上拥有舒适的码字体验,12 款 Markdown 写作工具推荐 Eric_hong 2017年12月05日  292  46 少数派上关于写作工具的介绍已经成为热门的内容之一,ma ...

  3. 正版Scrivener 3 论文/小说写作工具神器软件

    一款非常优秀的写作软件,提供了各种写作辅助功能,如标注多个文档.概述介绍.全屏幕编辑.快照等,能够轻松.便捷的辅助作者从作品构思.搜集资料.组织结构.增删修改到排版输出的整个写作流程. 作为一个专业的 ...

  4. typora最好用的主题_谁是我心中最好的写作工具?

    MWeb 和 Ulysses 是两款优秀的 Markdown 笔记写作类软件.也是我现在 Mac 里的两款写作软件.但是我并不喜欢同时使用两个功能非常相似的软件.所以最近也在 MWeb 和 Ulyss ...

  5. 写作工具_4种加快数据科学写作速度的工具

    写作工具 I've been writing about data science on Medium for just over two years. Writing, in particular, ...

  6. 让你惊叹的 Markdown 写作工具推荐

    这是一个系列,记录我前端开发常用的代码,小常识,有些是参考网上代码,(讲的可能有点烂,求不要打脸,嘤嘤嘤~~)送给那些需要的人.可以相互交流,喜欢的加我吧. Wx: Lxp911221 第一 Typo ...

  7. AI智能润色改写,伪原创写作工具,毕业论文必备工具

    小伙伴们注意:公众号的推送机制不再按照时间前后推送了,微信公众号信息流乱序.君哥建议大家把科技毒瘤君公众号置顶(设为星标⭐),以便第一时间看到推送,非常感谢~,方法如下图: 推荐几款伪原创写作工具,功 ...

  8. Markdown | 最具有效率的写作工具一次性掌握

    我们平常在网站或者自媒体写作的时候,经常是我们在word或者记事本中写出来,然后复制粘贴到网站或者是自媒体平台发出来,发表后还是干巴巴的一堆文字,阅读体验很差,阅读量也低的可怜.其实很多情况是不是你文 ...

  9. 百度ai智能写作工具-百度ai自动写文章

    百度AI智能写作工具:让创作更快捷.高效! 在当今竞争激烈的文化创意市场中,创作一篇高质量的文章需要投入大量时间和精力.然而,有了百度AI智能写作工具,创作变得更快捷.高效了. 百度AI智能写作工具采 ...

最新文章

  1. 人工智能 机器学习系列 2:代价函数
  2. 七牛云的存储对象的地区改变之后
  3. RS233通信协议与osi七层模型中的物理层,数据链路层的对比
  4. [云炬看世界]个人站长
  5. XCTF-高手进阶区:unserialize3
  6. Linux脚本双引号字符去除,shell命令去除字符串里双引号
  7. [HDU4635] Strongly connected
  8. go语言的struct
  9. 想用好大数据,你需要先了解这些事
  10. 浅谈OA办公系统与钉钉的区别
  11. kali linux 入侵教程,kali linux 入侵wordpress! wpscan工具使用方法!
  12. 如何将一个应用添加开机启动项
  13. 解决在Filter中读取Request中的流后,后续controller或restful接口中无法获取流的问题
  14. (150)FPGA面试题-Verilog实现2的幂次方乘法运算
  15. python面试项目案例
  16. 组战队,赢iPhone啦!
  17. centos中redis设置密码
  18. java使用knn实现mnist_java使用knn实现mnist - 百度学术
  19. 记录:remote: You are not allowed to push code to this project...【亲测有效】
  20. 浏览器上的Cookies有什么用?超级浏览器防关联如何实现?

热门文章

  1. GlusterFS概述
  2. MySQL单机并发量_mysql百万并发量-MySQL集群能支持100万个并发请求吗
  3. 区块链常见共识机制简介
  4. vue3 编译报 ESLint: ‘defineProps‘ is not defined no-undef 错误问题
  5. pythondis功能_python中dis的用法
  6. 小型温控系统c语言程序,pid算法温度控制c语言程序 - 全文
  7. HTML+CSS+JS实现轮播效果
  8. java生成二维码并导入excel中
  9. Diskman 重建分区表 (小莫)
  10. 蓝桥杯试题:Fibonacci数列