右对齐环境的正确对齐的正确空间是多少?

右对齐环境的正确对齐的正确空间是多少?

如果希尔伯特生活在 TeX 时代,他可能会这样说:

没有人可以把我们从AMS创造的天堂中驱逐出去。

eqnarray而这个天堂的一个方面就是利用壮丽的align环境(及其兄弟姐妹)摆脱暴政。

该环境的一个特点align是,它只需要对齐字符,例如,

\begin{align*}
x &= y + z \\
a &= b + c
\end{align*}

所有的空间都是正好

只是偶尔我想将事物与关系符号的另一侧对齐。但自动间距不起作用:

\documentclass{article}
\usepackage{amsmath}

\begin{document}

\[
  x = y + z
\]

\begin{align*}
x &= y + z
\end{align*}

\begin{align*}
x =& y + z 
\end{align*}

\end{document}

错位对齐

显然,我只需添加适量的空间即可。但同样明显的是,需要添加的空间量也应该适量。它是什么?

答案1

为了理解为什么缺少空格,我们需要了解 TeX 如何处理公式以及它在对象之间插入什么间距。

首先,TeX 将公式分解为一系列数学原子,可分为十三种类型

Ord Op Bin Rel 打开 关闭 Punct Inner
上方 下方 Acc Rad Vcent

第二行中的原子实际上被认为是奥德原子间距。例如,$a+b=c$变为序列

秩序 宾秩序 相关秩序

然后 TeX 根据下表插入空格,其中行和列用数字索引:0 =奥德, 1 =操作, 2 =垃圾桶, 3 =相对, 4 =打开, 5 =关闭, 6 =,我=

在此处输入图片描述

(该表格取自我的论文“TeX 和 LaTeX 中的数学符号”,ArsTeXnica 8(2009),第 7-24 页;这是 TeXbook 中类似表格的完整版本)。你在行中找到左边的原子,在列中找到右边的原子;然后你找到的数字被解释为

  • 0= 没有空格
  • 1= 稀薄空间 ( \thinmuskip)
  • 2= 中等空间 ( \medmuskip)
  • 3= 粗空格 ( \thickmuskip)
  • *= 不可能的组合

如果数字在括号中,则仅当公式(或子公式)最终以显示或文本样式排版时才会插入空格,而不会以下标/上标样式排版。

另一个例子:公式$(a+b)\cdot c=ac+bc$变成

打开订单 仓位订单 关闭订单 仓位订单 相对订单 订单 仓位订单 订单

子公式是括号内的任何内容;它最终被视为奥德原子。


如何align猜测正确的间距?当你输入

\begin{align*}
a &= b+c
\end{align*}

LaTeX 基本上使用以下模板将其转换为对齐:

\hfil $\displaystyle #$ & $\displaystyle {}#$ \hfil

其中#表示单元格的实际内容。因此,第一列右对齐,第二列左对齐,但是空子公式总是添加在实际内容之前。因此,右列中排版的公式是$\displaystyle {}=b+c$读作

Ord Rel Ord Bin Ord

并且间距刚刚好。

同样的情况也会发生

\begin{align*}
a ={}& b+c \\
a=\mskip\thickmuskip & b+c
\end{align*}

注意明确的间距命令(或规则)不会出现在原子列表中,而是与自动提供的间距一起插入。

\mskip\thinmuskip\mskip\medmuskip和的缩写分别\mskip\thickmuskip\, \: \;\!是 fo 的缩写\mskip-\thinmuskip(可以方便地删除自动添加的细空格)。

可以强制将单个符号或子公式视为上述原子类型之一,方法是将其作为参数提供给

\mathord \mathop \mathbin \mathrel \mathopen \mathclose \mathpunct \mathinner

通过添加一个空的子公式,您可以让 TeX 完成它该做的工作,而不需要记住该表。好吧,当我们最终挠头,问那个该死的空间从哪里来或没有出现时,该表在某些棘手的情况下会派上用场。

在此处输入图片描述

相关内容