对齐省略元素的集合

对齐省略元素的集合

我想排版省略元素的集合,以便其余元素与原始集合中的元素很好地对齐。以下是我尝试的:

\documentclass{article}
\usepackage{amsmath}
\begin{document}
An array environment does the alignment well, but has a lot of horizontal space between consecutive terms:
\[
\begin{array}{rclllll}
S & = & \{n_1, & n_2, & n_3, & n_4, & \ldots\} \\
T & = & \{     & n_2, & n_3, & n_4, & \ldots\} \\
U & = & \{     & n_2, &      & n_4, & \ldots\}
\end{array}
\]
An align environment with phantoms has much nicer spacing but doesn't align the consecutive terms and commas too well:
\begin{align*}
S & = \{n_1, n_2, n_3, n_4, \ldots\}, \\
T & = \{\phantom{n_1,} n_2, n_3, n_4, \ldots\}, \\
U & = \{\phantom{n_1,} n_2, \phantom{n_3,} n_4, \ldots\},
\end{align*}
Notice for instance that the $n$'s and the closing set bracket move ever so slightly left.
\end{document}

输出

答案1

您可以将列间距设置为零并提供空原子,以强制 TeX 添加自动间距。

\documentclass{article}
\usepackage{amsmath}
\usepackage{array} % <--- addition!

\begin{document}

An array environment does the alignment well,
\[
\setlength{\arraycolsep}{0pt}
\begin{array}{ r >{{}}c<{{}} r<{\,} *{5}{l<{{}}} }
S & = & \{ & n_1, & n_2, & n_3, & n_4, & \dots\} \\
T & = & \{ &      & n_2, & n_3, & n_4, & \dots\} \\
U & = & \{ &      & n_2, &      & n_4, & \dots\}
\end{array}
\]

\end{document}

我在左括号后添加了以下内容\,,以平衡末尾点后的空间。

在此处输入图片描述

也可以用 来抑制列间距@{},但在这个应用程序中,将默认间距设置为零更容易,因为分配将是数学显示的本地空间。

如果删除<{\,}并使用\ldots,输出将是

在此处输入图片描述

您判断一下自己是否喜欢这种方式。

答案2

\phantom措施所谓的自然的通过将物体放入盒子中\hbox并测量该盒子的尺寸来测量其高度/深度/宽度,而 TeX 通常不会按照其自然尺寸排版物体,而是会收缩/拉伸一些粘合以使物体很好地融入其周围环境。
\hbox意味着限制水平模式作为排版/测量的起点,而在 TeX 中,有些物体的行为在所有六种可能模式下都不相同(限制水平模式、水平模式、限制垂直模式、垂直模式、数学模式、显示数学模式)。

在您的场景中\phantom,将事物放入\hbox意味着通过受限水平模式拦截周围的数学模式。从数学模式材料到受限水平模式材料的过渡处的水平间距通常与两个事物之间的水平间距不同,这两个事物都以数学模式设置,而不会触发两者之间的模式更改。
\phantom会检测并因此在其内部\hbox切换到调用时有效的模式。但\phantom不会检测它创建的空白空间边界处是否有东西在检测到的周围模式下排版。
因此,\phantom没有考虑从数学模式材料到受限水平模式的转换是否会影响水平间距,并且如果“幻影”的东西没有被“幻影化”而只是排版而中间没有模式变化,则不会发生这种情况。
这就是导致您的场景中某些东西被“幻影化”的行与这些东西未被“幻影化”的行之间的水平间距存在差异的原因。

在下面的例子中,提供了一个命令,该命令在与测量\nophantom相同的条件下排版/旨在排版事物。\phantom

请注意,下面的示例并非旨在解决您的问题。

egreg 的答案中已经提供了解决方案,并且 egreg 提供的代码比下面的示例提供了更好的排版结果。

下面的例子旨在说明测量事物的方式\phantom

\documentclass{article}
\usepackage{amsmath}

\makeatletter
\newcommand\nophantom[1]{%
  \begingroup\def\finph@nt{\box\z@}\phantom{#1}\endgroup
}%
\makeatother

\begin{document}
An align environment with \verb|\phantom| and \verb|\nophantom| where consecutive terms and commas are aligned:
\begin{align*}
S & = \{\,\nophantom{n_1,{}}\nophantom{n_2,{}}\nophantom{n_3,{}}\nophantom{n_4,{}}\ldots{}\},\\
T & = \{\,\phantom{n_1,{}}\nophantom{n_2,{}}\nophantom{n_3,{}}\nophantom{n_4,{}}\ldots{}\},\\
U & = \{\,\phantom{n_1,{}}\nophantom{n_2,{}}\phantom{n_3,{}}\nophantom{n_4,{}}\ldots{}\},
\end{align*}

It is intended only to illustraste how \verb|\phantom|'s measuring works. E.g., getting some spacing behind commas via \verb|{}| is not funny at all with this approach.

\end{document}

在此处输入图片描述

相关内容