3

The centered, yet left-aligned aspect of \begin{array}{lll} ... \end{array} is what I usually go with to give a list of conditions. My only problem with it, is that it is not breakable, so I try to replace it with \begin{align}... \end{align}-like environments.

The closest result I get is with \begin{flalign*} ...\end{flalign*}. Then I can use \allowdisplaybreaks[2]. But I generally have to play around with &'s to get the "look" I want.

Is there a cleaner way to achieve a breakable left-aligned array-like environment?

Below is a concrete example, comparing the result with both array and flalign.

(Also, as a side question, is it me, or are there some irregularities in the vertical spacing in the flalign version: namely there is more vertical spacing between line 5 and line 6, than between others, because of the subscript at the end of line 6. If so, can I avoid that?)

Thanks for reading!

\documentclass[draft,11pt]{article}
\sloppy

\usepackage{amsmath,amssymb}


\newcommand{\labarrow}[1]{\ensuremath{\overset{#1}{\rightarrow} }}
\newcommand{\N}{\ensuremath{\mathsf{N}}}
\newcommand{\diam}[1]{\ensuremath{\langle #1 \rangle}}
\newcommand{\da}{\mathopen{\downarrow}}
\newcommand{\model}{\mathbb{M}}
\newcommand{\logic}[1]{\textsf{#1}}


\allowdisplaybreaks[2]

\begin{document}



$$
\begin{array}{lll}
\model,w,g \models x & \textup{ iff } & g(x)=w\\
\model,w,g \models \logic{turn}_i & \textup{ iff } & \rho(x)=i\\
\model,w,g \models @_x \phi & \textup{ iff } & g(x)\in|\model| \textup{ and }         \model,g(x),g\models\phi\\
\model,w,g \models \da x.\phi & \textup{ iff } & \model,w,g[g(x):=w]\models\phi\\
\model,w,g \models [!\N_i]\phi & \textup{ iff } & {\model|_{\N_i(w)}},w,g \models \phi\\
\model,w,g \models \diam{\alpha}\phi & \textup{ iff } & \textup{there exists some }v\textup{ with }(w,v)\in||\alpha||^\model\\ & &\textup{and }\model,v,g \models \phi
\end{array}
$$




\begin{flalign*}
&&&\model,w,g \models x && \textup{ iff } && g(x)=w&&\\
&&&\model,w,g \models \logic{turn}_i && \textup{ iff } && \rho(x)=i&&\\
&&&\model,w,g \models @_x \phi && \textup{ iff } && g(x)\in|\model| \textup{ and } \model,g(x),g\models\phi&&\\
&&&\model,w,g \models \da x.\phi && \textup{ iff } && \model,w,g[g(x):=w]\models\phi&&\\
&&&\model,w,g \models [!\N_i]\phi && \textup{ iff } && {\model|_{\N_i(w)}},w,g \models \phi&&\\
&&&\model,w,g \models \diam{\alpha}\phi && \textup{ iff } && \textup{there exists some }v\textup{ with }(w,v)\in||\alpha||^\model&&\\ 
&&& && &&\textup{and }\model,v,g \models \phi&
\end{flalign*}





\end{document}
4

You want alignat rather than flalign. Note the tabular used for splitting the last item into two lines, so that no page break is taken here and the vertical spacing is better.

\documentclass[draft,11pt]{article}
\usepackage[pass,showframe]{geometry} % just to show page frames
\setlength{\textheight}{5cm} % just to induce a page break
\usepackage{lipsum} % for some text

\usepackage{amsmath,amssymb}

\newcommand{\labarrow}[1]{\overset{#1}{\rightarrow}}
\newcommand{\N}{\mathsf{N}}
\newcommand{\diam}[1]{\langle #1 \rangle}
\newcommand{\da}{\mathopen{\downarrow}}
\newcommand{\model}{\mathbb{M}}
\newcommand{\logic}[1]{\textsf{#1}}

% for the ``iff'' separator
\newcommand{\eiff}{\hspace{1.5em}\textup{iff}\hspace{1.5em}} % adjust the amount

\allowdisplaybreaks[2]

\begin{document}

\lipsum*[2]
\begin{alignat*}{3}
&\model,w,g \models x                 && \eiff &&
  g(x)=w \\
&\model,w,g \models \logic{turn}_i    && \eiff &&
  \rho(x)=i \\
&\model,w,g \models @_x \phi          && \eiff &&
  g(x)\in|\model| \textup{ and } \model,g(x),g\models\phi \\
&\model,w,g \models \da x.\phi        && \eiff &&
  \model,w,g[g(x):=w]\models\phi \\
&\model,w,g \models [!\N_i]\phi       && \eiff &&
  {\model|_{\N_i(w)}},w,g \models \phi \\
&\model,w,g \models \diam{\alpha}\phi && \eiff &&
  \begin{tabular}[t]{@{}l@{}}
  there exists some $v$ with $(w,v)\in||\alpha||^\model$ \\
  and $\model,v,g \models \phi$
  \end{tabular}
\end{alignat*}

\end{document}

enter image description here

| improve this answer | |
4

I would suggest alignat. Consider

\begin{alignat*}{3}
   &xx &\quad& yy &\quad& zz \\
   &pp && qq && rr
\end{alignat*}

Then each piece of mathematics will be left aligned in its column, and the space between the columns will be given by \quad. You could adjust this spacing by using other spacing commands, \hspace{1em} will be the same as one quad.

Sample output

\documentclass[draft,11pt]{article}

\usepackage{amsmath,amssymb}

\newcommand{\labarrow}[1]{\ensuremath{\overset{#1}{\rightarrow} }}
\newcommand{\N}{\ensuremath{\mathsf{N}}}
\newcommand{\diam}[1]{\ensuremath{\langle #1 \rangle}}
\newcommand{\da}{\mathopen{\downarrow}}
\newcommand{\model}{\mathbb{M}}
\newcommand{\logic}[1]{\textsf{#1}}

\allowdisplaybreaks[2]

\begin{document}

\begin{alignat*}{3}
&\model,w,g \models x &\quad& \textup{ iff } &\quad& g(x)=w\\
&\model,w,g \models \logic{turn}_i && \textup{ iff } && \rho(x)=i\\
&\model,w,g \models @_x \phi && \textup{ iff } && g(x)\in|\model| \textup{ and } \model,g(x),g\models\phi\\
&\model,w,g \models \da x.\phi && \textup{ iff } && \model,w,g[g(x):=w]\models\phi\\
&\model,w,g \models [!\N_i]\phi && \textup{ iff } && {\model|_{\N_i(w)}},w,g \models \phi\\
&\model,w,g \models \diam{\alpha}\phi && \textup{ iff } && \textup{there exists some }v\textup{ with }(w,v)\in||\alpha||^\model\\ 
& && &&\textup{and }\model,v,g \models \phi
\end{alignat*}

\end{document}
| improve this answer | |

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.