如何在对齐环境中减少列之间的间距

如何在对齐环境中减少列之间的间距

通过以下 MWE,我有 2 列:

\documentclass[12pt, a4paper]{scrartcl}
\usepackage{amsmath}
\begin{document}
\begin{align*}
4   &= 4 && \text{yes}\\
0   &= 0 && \text{no}\\
1+1 &= 2 && \text{maybe}
\end{align*}
\end{document}

但我想控制两列之间的 hspace,可能只需对整体调用一个命令align,而不是对每一行调用一个命令。

答案1

您可以使用可以alignat完全控制对齐的环境:

\begin{alignat*}{2}
4   &= 4\qquad && \text{yes}\\
0   &= 0\qquad && \text{no}\\
1+1 &= 2\qquad && \text{maybe}
\end{alignat*}

enter image description here

实际上,只有第二列中最宽的条目需要填充,但在每个条目上指定它更容易。

“2”指的是您需要的“左侧-右侧”组的数量。

更通用的解决方案是定义一个新的环境:

\documentclass[a4paper]{article}
\usepackage{amsmath}
\usepackage{environ}
\makeatletter
\newdimen\royalignsep@
\def\royalign@preamble{%
   &\hfil
    \strut@
    \setboxz@h{\@lign$\m@th\displaystyle{##}$}%
    \ifmeasuring@\savefieldlength@\fi
    \set@field
    \tabskip\z@skip
   &\setboxz@h{\@lign$\m@th\displaystyle{{}##}$}%
    \ifmeasuring@\savefieldlength@\fi
    \set@field
    \hfil
    \tabskip\royalignsep@
}
\NewEnviron{royalign}[1]{%
  \royalignsep@=#1\let\align@preamble=\royalign@preamble
  \begin{align}\BODY\end{align}}
\NewEnviron{royalign*}[1]{%
  \royalignsep@=#1\let\align@preamble=\royalign@preamble
  \begin{align*}\BODY\end{align*}}
\makeatother
\pagestyle{empty}
\begin{document}

\begin{royalign*}{1cm}
4   &= 4 & 1+3+5 &= 9\\
0   &= 0 & 2+1   &= 3\\
1+1 &= 2 & 1     &= 1
\end{royalign*}
\end{document}

您拥有royalignroyalign*;您可以检查间距是否正是您在参数中指定的。

答案2

xalignat如果可以保持对齐,则使用旧环境

\documentclass[12pt, a4paper]{scrartcl}
\usepackage{amsmath}
\begin{document}
\begin{xalignat*}
4   &= 4 && \text{yes}\\
0   &= 0 && \text{no}\\
1+1 &= 2 && \text{maybe}
\end{xalignat*}
\end{document}

相关内容