13

I'm looking for something synonymous to tabbing, but for math mode.

I read that alignat* should do the trick, but this behaves differently it seems. For example:

\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}

The second line appears to be right aligned, whereas I would like the & markers to be aligned with each other and then all text left aligned (like in tabbing).

Is anyone able to fix this code, or suggest an alternative.

1

1 Answer 1

7

As per Math indentation environment, the alignat provides multiple rl align pairs. Since your second alignment is intended to be l aligned, you need to use a double &&. The first & skips over the r aligned column of the rl align pair:

enter image description here

Notes:

  • The align environment also provides multiple rl alignment pairs. However, the alignat does not insert additional space that the align environment does between the rl alignment pairs. So, for cases where a separation is required between the alignment points with the alignat environment those would need to be inserted manually.
  • An alternative is to use the array environment. But one does need to be careful to remove inter column spacing using @{}, and to ensure that the relational or binary operators have the correct spacing by using {} to make TeX think that there is an element on the other side of the operator. This produces results identical to the above.

Code:

\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}
2
  • 1
    Thanks for your answer. Is there an environment that aligns all cells left? There must be. Sep 10, 2012 at 21:21
  • @vext01: You could use the array environment, but have to be careful about math spacing issues. I'll add an example. Sep 11, 2012 at 3:56

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .