【写作工具】用Katex打出常见矩阵
起因是前几天在做线性代数的博客笔记时,碰到了许多用Katex写矩阵的需要。因为许多功能尝试了不少时间才完成实现,于是准备及时做一个备忘录,以便于以后的公式写作。 Katex的官方手册参照
基本
有两种方法来实现矩阵的拼写,一种是使用 matrix环境(矩阵),另一种是使用array环境(数组)。array 的灵活性比matrix要更高一些。
方法 | 展示 |
---|---|
\begin{matrix} a & b \\ c & d \end{matrix}
|
abcd\begin{matrix} a & b \\ c & d \end{matrix}acbd |
\begin{array}{cc} a & b \\ c & d \end{array}
|
abcd\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]
[abcd]\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}
[abcd]\begin{bmatrix} \begin{array}{cc} a & b \\ c & d \end{array}\end{bmatrix} [acbd]
分割线
在array环境中,能方便地添加水平分割线和竖直分割线。
[123456789]\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 \\\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} ⎣⎡c0c1c2⋮cn−1cn−1c0c1⋮cn−2cn−2cn−1c0⋮cn−3…⋯⋯⋱…c1c2c3⋮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} ⎣⎡a11a220Ib11b21b12b22⎦⎤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} [acbd]
这些命令应该足够完成 矩阵中特定元素彼此的标记区分。其中完整的颜色关键词参见 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{这是一个在右边的注记} [acbd]}这是一个在右边的注记
对于上下的标注,使用 /overbrace 和 /underbrace 即可。
\overbrace{\begin{bmatrix}
a & b \\
c & d
\end{bmatrix}}^{这是一个在上面的注记}
[abcd]⏞这是一个在上面的注记\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}
[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} ⎣⎡a11a220Ib11b21b12b22⎦⎤}这是个普通矩阵
【写作工具】用Katex打出常见矩阵相关推荐
- 十大战略工具(1)——波士顿矩阵
序 .接下来十天会日更一个战略法则工具 .分别是波士顿矩阵 .MECE 法则 .波特五力模型 .SCQA架构 .通用电气矩阵 .正态分布&幂律分布 .PEST模型 .平衡记分卡 .SWOT分析 ...
- 在 Windows 上拥有舒适的码字体验,12 款 Markdown 写作工具推荐
在 Windows 上拥有舒适的码字体验,12 款 Markdown 写作工具推荐 Eric_hong 2017年12月05日 292 46 少数派上关于写作工具的介绍已经成为热门的内容之一,ma ...
- 正版Scrivener 3 论文/小说写作工具神器软件
一款非常优秀的写作软件,提供了各种写作辅助功能,如标注多个文档.概述介绍.全屏幕编辑.快照等,能够轻松.便捷的辅助作者从作品构思.搜集资料.组织结构.增删修改到排版输出的整个写作流程. 作为一个专业的 ...
- typora最好用的主题_谁是我心中最好的写作工具?
MWeb 和 Ulysses 是两款优秀的 Markdown 笔记写作类软件.也是我现在 Mac 里的两款写作软件.但是我并不喜欢同时使用两个功能非常相似的软件.所以最近也在 MWeb 和 Ulyss ...
- 写作工具_4种加快数据科学写作速度的工具
写作工具 I've been writing about data science on Medium for just over two years. Writing, in particular, ...
- 让你惊叹的 Markdown 写作工具推荐
这是一个系列,记录我前端开发常用的代码,小常识,有些是参考网上代码,(讲的可能有点烂,求不要打脸,嘤嘤嘤~~)送给那些需要的人.可以相互交流,喜欢的加我吧. Wx: Lxp911221 第一 Typo ...
- AI智能润色改写,伪原创写作工具,毕业论文必备工具
小伙伴们注意:公众号的推送机制不再按照时间前后推送了,微信公众号信息流乱序.君哥建议大家把科技毒瘤君公众号置顶(设为星标⭐),以便第一时间看到推送,非常感谢~,方法如下图: 推荐几款伪原创写作工具,功 ...
- Markdown | 最具有效率的写作工具一次性掌握
我们平常在网站或者自媒体写作的时候,经常是我们在word或者记事本中写出来,然后复制粘贴到网站或者是自媒体平台发出来,发表后还是干巴巴的一堆文字,阅读体验很差,阅读量也低的可怜.其实很多情况是不是你文 ...
- 百度ai智能写作工具-百度ai自动写文章
百度AI智能写作工具:让创作更快捷.高效! 在当今竞争激烈的文化创意市场中,创作一篇高质量的文章需要投入大量时间和精力.然而,有了百度AI智能写作工具,创作变得更快捷.高效了. 百度AI智能写作工具采 ...
最新文章
- 人工智能 机器学习系列 2:代价函数
- 七牛云的存储对象的地区改变之后
- RS233通信协议与osi七层模型中的物理层,数据链路层的对比
- [云炬看世界]个人站长
- XCTF-高手进阶区:unserialize3
- Linux脚本双引号字符去除,shell命令去除字符串里双引号
- [HDU4635] Strongly connected
- go语言的struct
- 想用好大数据,你需要先了解这些事
- 浅谈OA办公系统与钉钉的区别
- kali linux 入侵教程,kali linux 入侵wordpress! wpscan工具使用方法!
- 如何将一个应用添加开机启动项
- 解决在Filter中读取Request中的流后,后续controller或restful接口中无法获取流的问题
- (150)FPGA面试题-Verilog实现2的幂次方乘法运算
- python面试项目案例
- 组战队,赢iPhone啦!
- centos中redis设置密码
- java使用knn实现mnist_java使用knn实现mnist - 百度学术
- 记录:remote: You are not allowed to push code to this project...【亲测有效】
- 浏览器上的Cookies有什么用?超级浏览器防关联如何实现?
热门文章
- GlusterFS概述
- MySQL单机并发量_mysql百万并发量-MySQL集群能支持100万个并发请求吗
- 区块链常见共识机制简介
- vue3 编译报 ESLint: ‘defineProps‘ is not defined no-undef 错误问题
- pythondis功能_python中dis的用法
- 小型温控系统c语言程序,pid算法温度控制c语言程序 - 全文
- HTML+CSS+JS实现轮播效果
- java生成二维码并导入excel中
- Diskman 重建分区表 (小莫)
- 蓝桥杯试题:Fibonacci数列