我正在寻找与 同义的东西tabbing
,但用于数学模式。
我读到这alignat*
应该可以解决问题,但这似乎表现不同。例如:
\documentclass{article}
\usepackage{amsmath}
\begin{document}
\begin{alignat*}{2}
S_4^{t} &= \{&\langle rdi, r12, rax' \rangle \mid \langle rdi, r12, rax \rangle \in S_4~\wedge \\
&& rax' = \{ rax \mid rax > 0 \} \}\\
\end{alignat*}
\end{document}
第二行看起来是右对齐的,而我希望标记&
彼此对齐,然后所有文本左对齐(如tabbing
)。
有人可以修复此代码,或者建议替代方案吗?
答案1
按照数学缩进环境,alignat
提供了多个rl
对齐对。由于您的第二个对齐旨在l
对齐,因此您需要使用双 &&。第一个 & 跳过对齐对r
的对齐列rl
:
笔记:
- 该
align
环境还提供多个rl
比对。然而alignat
,不是align
在对齐对之间插入环境所占的额外空间rl
。因此,对于需要在对齐点与环境之间留出间隔的情况,alignat
需要手动插入这些间隔。 - 另一种方法是使用
array
环境。但需要小心使用 删除列间距@{}
,并使用 确保关系运算符或二元运算符具有正确的间距,{}
以使 TeX 认为运算符另一侧有一个元素。这会产生与上述相同的结果。
代码:
\documentclass{article}
\usepackage{amsmath}
\begin{document}
\begin{alignat*}{3}
S_4^{t} &= \{&&\langle rdi, r12, rax' \rangle \mid \langle rdi, r12, rax \rangle \in S_4~\wedge \\
& &&rax' = \{ rax \mid rax > 0 \} \}
\end{alignat*}
\[\begin{array}{l@{}l@{}l}
S_4^{t} &{}= \{&\langle rdi, r12, rax' \rangle \mid \langle rdi, r12, rax \rangle \in S_4~\wedge \\
& &rax' = \{ rax \mid rax > 0 \} \} \\
\end{array}\]
\end{document}