我通常使用居中但左对齐的方式\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}