latex phantom:占位不显示让公式对齐

更新于

latex phantom 的作用是:把括号里的内容按原样排一遍、占住它的宽度和高度,但不画出来。\phantom{-} 就是一个看不见、却和负号一样宽的空位。它有两个变体:\hphantom 只占宽度、高度记为零,\vphantom 只占高度和深度、宽度记为零。三者都是 LaTeX 内核命令,不用加载宏包,数学模式和正文里都能用。

速查表:占位与相关命令 11 条

命令 占宽度 占高度 / 深度 典型用途
\phantom{x} 是 是 矩阵列里补一个看不见的负号
\hphantom{x} 是 否 只要横向空位,不想撑高行距
\vphantom{x} 否 是 让两段公式高度一致
\smash{x} 是 否(画出来) 与 vphantom 相反:画出来但不占高度
\mathstrut 否 与圆括号同高 相当于 \vphantom{(}
\phantom{-}3 负号宽 是 让正数与负数右端对齐
{}_{\phantom{1}} 下标宽 是 给张量指标留空位
\sqrt{\vphantom{b}a} 否 与 b 同高 让两个根号一样高
\left.\vphantom{\frac{a}{b}}\right\} 否 与分式同高 单边大括号有了参照高度
\quad 1 em 固定 否 固定空白,对照用
\hspace{2em} 指定长度 否 固定空白,对照用

后两行是固定宽度的空白,放在这里是为了对比:phantom 的宽度随内容变,空白命令的宽度是写死的。

例一:矩阵里正负数对不齐

pmatrix 的每一列默认居中。同一列里有 −2 和 3 时,3 与 −2 居中对齐,数字末端差出半个负号宽,看起来参差不齐。给正数前面补一个看不见的负号,整列就按数字对齐了:

\begin{pmatrix} -2 & \phantom{-}1 \\ \phantom{-}3 & -4 \\ -1 & \phantom{-}5 \end{pmatrix}

补的位置只看同一列:第一列 3 前面补,第二列 1 和 5 前面都补,本来就带负号的格子不用动。列里全是正数或全是负数时不用补。

四个占位命令是否显示、占宽度与高度对照

未补与补上占位负号的两个三行两列矩阵对照

例二至例四:指标、根号与填空横线

例二:上下标错开排

张量或混合指标要求上标、下标左右错开,不能叠在同一竖线上。写成 T^{\mu}_{\nu} 时 μ 和 ν 会上下对齐;用 phantom 给对方留出空位,就能排成先上后下:

T^{\mu\phantom{\nu}}_{\phantom{\mu}\nu}

读法是:上标位置写 μ 再空出一个 ν 宽,下标位置先空出一个 μ 宽再写 ν。于是 ν 落在 μ 的右下方。

同样的思路可以补齐一串下标:a_{1}、a_{12} 排在一列时,给短的那个补 \phantom{2},下标末端就对齐了。

张量 T 的上下指标对齐与错开两种排法

例三:两个根号高度不一致

\sqrt{a}+\sqrt{b} 里,b 有上伸部分,第二个根号会比第一个高一点。给第一个根号里加 \vphantom{b},两者就一样高,且不多占横向位置:

\sqrt{\vphantom{b}a}+\sqrt{b}

例四:正文里留填空横线

phantom 在正文里同样有效。出试卷时,填空题的横线长度常常要和答案差不多,又不能把答案印出来。把答案放进 phantom,再套一层下划线:

方程的解为 x = \underline{\phantom{0.375}}。

横线正好是「0.375」这几个字符的宽度。做答案卷时,把同一处的 phantom 去掉,横线长度不变,答案就出现在横线上,两份卷子的版面完全一致。

常见错误

  1. 用 \quad 代替 \phantom{-}:10pt 正文里 quad 宽 10pt,负号只有约 7.8pt,补出来的空位多了一截,列会往另一边歪。
  2. 需要只占宽度却用了 \phantom:占位内容很高(比如一个分式)时会把整行撑高,改用 \hphantom。
  3. \smash 与 \vphantom 弄反:smash 是「画出来、不算高度」,vphantom 是「不画、只算高度」,两者常配合使用而不是互换。

两组根号:不占位与用vphantom占位后的高度对照

挑占位命令前只问一句:缺的是宽度还是高度。矩阵那例删掉或补回负号,第一列怎么移动一目了然。

延伸阅读

  • LaTeX数学命令:120 个常用命令按 10 类整理的速查
  • LaTeX转OMML兼容性:复杂命令转成 Word 公式前先做小样验证
  • latex dagger:厄米共轭与转置共轭的写法

常见问题

和空格命令有什么不同?
空格命令留出的宽度是固定的,比如 quad 恒等于一个 em,不管旁边写的是什么。phantom 留出的宽度正好等于括号里那段内容排出来的宽度,还带着它的高度和深度,所以拿负号、数字或一个下标去占位时,空出来的位置和真写上去分毫不差,对齐更准。