通过以下 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*}
实际上,只有第二列中最宽的条目需要填充,但在每个条目上指定它更容易。
“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}
您拥有royalign
和royalign*
;您可以检查间距是否正是您在参数中指定的。
答案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}