干净、易破坏的左对齐数组类环境

干净、易破坏的左对齐数组类环境

我通常使用居中但左对齐的方式\begin{array}{lll} ... \end{array}来列出条件。我唯一的问题是它不可破坏,所以我尝试用\begin{align}... \end{align}类似 - 的环境来替换它。

我得到的最接近的结果是\begin{flalign*} ...\end{flalign*}。然后我可以使用\allowdisplaybreaks[2]。但我通常必须摆弄&才能获得我想要的“外观”。

有没有更简洁的方法来实现可破坏的左对齐数组环境?

array下面是一个具体的例子,将和的结果进行比较flalign

(另外,顺便问一下,是我的问题,还是该flalign版本的垂直间距存在一些不规则之处:即第 5 行和第 6 行之间的垂直间距比其他行之间的垂直间距更大,这是因为第 6 行末尾有下标。如果是这样,我可以避免这种情况吗?)

谢谢阅读!

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

答案1

您想要的是alignat而不是flalign。请注意,tabular用于将最后一项拆分为两行,这样这里就不会分页,并且垂直间距更好。

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

在此处输入图片描述

答案2

我建议alignat。考虑一下

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

然后,每个数学部分将在其列中左对齐,列之间的间距将由 给出\quad。您可以使用其他间距命令调整此间距,\hspace{1em}将与一个四边形相同。

示例输出

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

相关内容