我经常需要一个显示环境,让我能够轻松地在同一行中显示等距表达式,并且连续行上的内容与第一行上的内容以相同的 x 坐标为中心显示。我可以像这样获得我想要的效果:
\begin{align*}
x+y && e^{2 \pi i} && \sigma
\\
\text{First} && \text{Second} && \text{Third}
\end{align*}
但它并不完美,因为“列”看起来是右对齐的,而不是居中的。
当然,我可以使用数组轻松实现这一点。但是我必须自己设置列之间的间距,对齐环境会自动为我完成。我只是想知道是否有任何标准数学环境可以做到这一点。我希望能够像这样编码:
\begin{myenvironment*}
x+y & e^{2 \pi i} & \sigma
\\
\text{First} & \text{Second} & \text{Third}
\end{myenvironment*}
答案1
对于等距列(不同于等宽列),您可以将内容放在固定宽度tabular*
环境中:
\documentclass{article}
\usepackage{lipsum,array,amsmath}
\begin{document}
\lipsum[1]
\newcolumntype{E}{@{}c@{}}% begin-/end-column definitions
\noindent\begin{tabular*}{\textwidth}{@{\extracolsep{\fill}}E*{3}{>{$}c<{$}}E}
& x+y & e^{2 \pi i} & \sigma & \\& \text{First} & \text{Second} & \text{Third} &
\end{tabular*}
\lipsum[2]
\end{document}
我定义了一种新的列类型E
,仅用作第一列/最后一列的间隔。此外,添加的添加@{\extracolsep{\fill}}
会在每列之前/之后延伸,以均匀地分隔开\textwidth
。使用*{3}{>{$}c<{$}}
允许 3 个类似定义的列(居中c
并在数学模式下排版$...$
)。
当然,这需要您知道要排版多少列,因为您正在使用环境tabular*
。虽然这不太明显,但您可能希望在环境周围添加\renewcommand{\tabcolsep}{0pt}
并限定范围,以消除列类型造成的间距。例如代码{...}
tabular*
E
\newcolumntype{E}{@{}c@{}}% begin-/end-column definitions
{\renewcommand{\tabcolsep}{0pt}% No \tabcolsep
\noindent\begin{tabular*}{\textwidth}{@{\extracolsep{\fill}}E*{3}{>{$}c<{$}}E}
& x+y & e^{2 \pi i} & \sigma & \\ & \text{First} & \text{Second} & \text{Third} &
\end{tabular*}}
\noindent\begin{tabular*}{\textwidth}{@{\extracolsep{\fill}}E*{3}{>{$}c<{$}}E}
& x+y & e^{2 \pi i} & \sigma & \\& \text{First} & \text{Second} & \text{Third} &
\end{tabular*}
产生这种边际差异