带有数组环境的子方程标签

带有数组环境的子方程标签

如何每行排版一个子方程标签以获得复杂的输出,例如

x   = y   if my   weird aligned text  (1a)
y   = x^2         fancy               (1b)
z^3 = z      your dull                (1c)

我知道类似的问题已经被问过好几次了,但几乎所有的答案都建议使用 AMSalign环境。然而,我需要原始环境的完整格式灵活性array

\begin{equation}
  \begin{array}{<weird formatting with @{..} and p{..}>}
      <weird stuff with several &'s>
  \end{array}
\end{equation}

array建议用任何其他不提供完整且易于配置的环境进行替换,这array可能对于上述示例来说已经足够好了,并且可能在许多其他情况下有所帮助,但对于这个一般性问题却没有有效的答案。

答案1

以下是如何使用alignateqparbox包轻松获得相同结果。诀窍是将所有文本放在具有相同标签的对齐列中\eqmakebox。共享相同标签的所有框的宽度将为其中最宽的框的宽度。

\documentclass{article}
\usepackage{mathtools, eqparbox}%
\newcommand{\eqbox}[2][]{\eqmakebox[#1][l]{\mbox{#2~}}}

\begin{document}

\begin{subequations}
  \begin{alignat}{7}
      & x &   & = y & \qquad\text{if } &   & \eqbox[T1]{my} &   & \eqbox[T2]{weird} &   & \text{aligned } &   & \text{text} \\
    & y &  &  = x² &  &  &  &  & \eqbox[T2]{fancy}\\
    & z³ &  & =  z &  &  & \eqbox[T1]{your} &  & \eqbox[T2]{dull}
  \end{alignat}
\end{subequations}

\end{document}

enter image description here

相关内容