矩阵、分段函数与对齐
矩阵与分段函数是数学排版中两个高频但结构特殊的场景:矩阵需要列对齐与自适应定界符,分段函数需要垂直堆叠与大括号。它们各自有专门的环境,掌握后能免去大量手工调整。本文覆盖矩阵环境家族、分段函数、通用二维对齐三个主题,并给出高频错误的对照修复表。三个主题共享同一套底层思想:把二维结构与定界符交给环境,你只写内容。
一、矩阵环境家族
数学宏包提供的矩阵环境把定界符选择交给环境名,写法极其规整:列用分隔符,行用换行符。这与「先写矩阵再手动加括号」的传统做法形成鲜明对比,也是语义化设计最直观的例子之一。
| 环境 | 定界符 | 典型用途 |
|---|---|---|
| 无定界版 | 无 | 自己加定界符或作为子块 |
| 圆括号版 | 圆括号 | 一般矩阵 |
| 方括号版 | 方括号 | 方阵、区间 |
| 花括号版 | 花括号 | 集合枚举 |
| 竖线版 | 竖线 | 行列式 |
| 双竖线版 | 双竖线 | 范数矩阵 |
| 行内小矩阵 | 无 | 行内小尺寸矩阵 |
业界还有一套扩展矩阵环境,支持给矩阵加边框、在某些行后加横线(类似表格的线)等进阶排版。这些扩展属于较新的宏包功能,行为细节以官方文档为准。日常论文用上面七个标准环境足够,扩展功能等真有需求再查——工具链的克制与排版风格的克制是同一种美德。
标准写法如下:
\documentclass{ctexart}
\usepackage{amsmath}
\begin{document}
\begin{equation}
A = \begin{pmatrix}
1 & 2 & 3 \\
4 & 5 & 6
\end{pmatrix},
\det B = \begin{vmatrix}
1 & 2 \\
3 & 4
\end{vmatrix}
\end{equation}
\end{document}
进阶技巧有三:省略号用横点、竖点、斜点命令表示矩阵内容省略;行内小矩阵有专门环境;分块矩阵直接把圆括号矩阵嵌套进另一矩阵的单元即可。
省略号的方向不是随便选的:横点省略行内元素,竖点省略列内元素,斜点省略对角线。三者配合能把「任意维矩阵」写得简洁准确。常见错误是全用横点,导致读者无法分辨省略的是行还是列——细节虽小,数学表达的正确性全在这类区分上。
分块矩阵的嵌套写法值得专门提醒:外层矩阵的某个单元里直接放一个完整的圆括号矩阵,编译时定界符大小会自动分级呈现层级感。这是矩阵环境比手工排版的又一处优势:嵌套间距与定界符粗细都有默认安排,不用操心撞线。初学者第一次写分块矩阵容易漏掉单元间的分隔符,养成「每个单元写完先补分隔符再写下一个」的习惯即可。
二、分段函数
分段函数的排版要素是:左侧大括号、右对齐的条件、自动调整的括号高度。专门环境把这三件事一次完成。
\begin{equation}
f(x) = \begin{cases}
x^2, & x > 0 \\
-x, & x \leq 0
\end{cases}
\end{equation}
写法规律:对齐标记前是函数表达式,标记后是条件,条件部分自动右对齐。初学者常犯的错是把逗号写在对齐标记后面,导致表达式与条件之间出现空洞。正确做法是逗号紧贴表达式。
分段函数环境的另一处省心之处是左大括号自动伸缩:无论你写两行还是五行,括号高度永远贴合内容。若手工用伸缩命令实现同样效果,换行处会报错——伸缩命令不能跨行,这就是分段环境存在的直接理由。理解了「环境=跨行的伸缩定界」,本文几个环境的设计逻辑就全通了。
复杂条件(分段条件本身含公式)可以继续嵌套分段环境或改用右括号版本。若对齐间距不满意,环境内还允许用字宽间隔手调。
分段函数的语义层面也值得注意:每行的条件必须互斥且覆盖全集,这是数学要求而非排版要求。但排版能帮你自查——若两行条件写成了重叠区间,编译出来的版式看起来就会「哪里不对」却说不清。把分段函数逐行读一遍核对互斥性,是交稿前值得做的一次低成本检查。
分段函数还能充当「优雅的分类讨论」排版器:把冗长的「当……时」文字叙述压缩成一屏看清的结构。数学写作中但凡出现连续的三段分类,都值得考虑改写成分段函数——读者的认知负担会显著下降,这是排版服务于理解的实例,也是数学写作者应有的自觉。
三、通用二维结构环境
底层二维结构环境常与自动伸缩定界配合实现非标准排版,例如方程组的大括号或自定义版式。它必须指定列格式:对齐字母控制对齐,竖线控制分隔线。
\[
\left\{
\begin{array}{r@{\quad}l}
x + y &= 3 \\
x - y &= 1
\end{array}
\right.
\]
这里的特殊列间插入表示在两列之间固定宽度,而不是默认的列间距。底层环境与表格环境的区别在于它只用于数学模式,列间距由专门长度参数控制(默认较窄)。修改行距倍数是让矩阵行距变宽松的正规做法。
数学模式里的列格式语法与正文表格几乎一致,这是设计上的延续。但注意:底层二维环境本身不带定界符,需要手工配合左右伸缩命令——这意味着它比语义化环境更容易在伸缩命令的配对上出错(单边括号要用空标记补位,见数学模式一章)。只有语义环境确实无法表达你的版式时才动用它。
| 列格式符 | 含义 |
|---|---|
| 左中右对齐 | 指定对齐方式 |
| 特殊列间 | 列间插入内容,吃掉默认间距 |
| 竖线 | 竖向分隔线 |
| 重复格式 | 重复若干次该格式 |
四、对齐工具的横向对比
三种环境的适用边界有时会模糊,下表按「要什么效果」给出选择建议。
| 需求 | 首选环境 |
|---|---|
| 标准矩阵 | 圆括号或方括号矩阵环境 |
| 行列式 | 竖线矩阵环境 |
| 分段函数 | 分段函数环境 |
| 方程组大括号 | 大括号加底层二维环境 |
| 公式按符号对齐 | 对齐环境(见多行公式一章) |
| 纯文字二维对齐 | 表格环境(见表格一章) |
通用原则:优先用语义化环境,底层环境只在语义环境无法表达定制需求时使用,因为前者自动处理了定界符大小与间距。
这条原则的深层原因是维护成本:语义环境写出来的源码可读性高,三个月后回来改公式,你能一眼看懂结构;底层环境堆砌的定制代码,自己都会怀疑是不是别人写的。写作中坚持「能用高级环境就不用底层」,能把精力留给真正需要的定制。
五、常见错误与日志关键词
排错集中在三类问题上,日志关键词具有明确指向。与对齐环境一样,这类报错大多看关键词就能定位,属于多行结构里最「讲道理」的一类。
| 日志关键词 | 根因 | 修法 |
|---|---|---|
| 对齐标记错位 | 行内对齐标记数量不一致 | 数好每行标记个数 |
| 多余括号 | 行末换行漏写或错写 | 检查换行 |
| 未定义命令 | 未加载数学宏包 | 导言区加载 |
| 定界符大小异常 | 手工排矩阵没用语义环境 | 换用矩阵环境 |
学完矩阵与分段函数,数学排版的主干就齐了。最后一个常见需求是定理与证明的排版,见「定理环境」一章;写作素材与公式片段的沉淀方法见本站Obsidian 指南,公式批量校对可参考正则表达式。
六、一段综合练习
把本文的环境集合在一段代码里集中过一遍,能快速检验掌握程度:
| 结构 | 你应当选 |
|---|---|
| 三行三列普通矩阵 | 圆括号矩阵环境 |
| 二阶行列式 | 竖线矩阵环境 |
| 带条件的分段函数 | 分段函数环境 |
| 四元方程组加大括号 | 底层二维环境配伸缩定界 |
| 行内提到二阶小矩阵 | 行内小矩阵环境 |
逐项写下命令再对照本文小节,错的地方就是你的薄弱点。矩阵类环境的共同点极高:会一个就会全部,本质都是「列分隔、行换行、定界符交给环境名」。分段函数与方程组看似不同,核心同样是「二维结构加条件对齐」。把这两个共性看穿,数学排版就没有新东西了。
最后的建议是建立自己的公式片段库:矩阵骨架、分段函数骨架各存一份,写新文档时复制改内容,比每回从头敲快得多。片段库的整理方式见本站Obsidian 指南的模板章节——这个习惯一旦养成,收益会贯穿你整个写作生涯。
