如何每行排版一个子方程标签以获得复杂的输出,例如
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
以下是如何使用alignat
和eqparbox
包轻松获得相同结果。诀窍是将所有文本放在具有相同标签的对齐列中\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}