在 multline*、gather* 或 align* 中对齐会产生多余的空间

在 multline*、gather* 或 align* 中对齐会产生多余的空间

有点相关多行对齐会产生多余的空间、内部有多余的空间multline*gather*或者align*其内容包含aligned至少两列。即,pdflatex使用

\documentclass{article}
\pagestyle{empty} 
\usepackage{mathtools}
\begin{document}
\begin{multline*}
  (
    \begin{aligned}[c]
      &\text{an arbitrarily complex formula}
    \end{aligned}
  )
\end{multline*}
\end{document}

在环境内容aligned和右括号之间产生空格:

输出

\hbox向控制台报告未满情况。

谁是罪魁祸首?该怎么办?换句话说,这个空间从何而来,如何以不同于\mskip-19mu手动添加一些硬编码负空间(如)的方式摆脱它?当然,你可能会说

\documentclass{article}
\pagestyle{empty} 
\usepackage{mathtools}
\begin{document}
\begin{multline*}
  (
    \begin{alignedat}[c]{1}
      &\text{an arbitrarily complex formula}
    \end{alignedat}
    )
  \end{multline*}
\end{document}

并删除空格:

输出

但是,\hbox原来的问题以及不足之处align仍然存在。

答案1

空间是总是生成的aligned,并且嵌入其中并不重要。你的例子可以简化为

\documentclass{article}
\usepackage{amsmath}

\begin{document}

$(\begin{aligned} a&=b \end{aligned})$

\end{document}

在此处输入图片描述

额外的空间通常不会被注意到,但当这样使用时就不会被注意到。当人们看到如何定义时,特别是在生成内部前导码的位置时aligned,效果是可以预料的:aligned\halign

        \ialign\bgroup
           &\column@plus
            \hfil
            \strut@
            $\m@th\displaystyle{##}$%
            \tabskip\z@skip
           &\column@plus
            $\m@th\displaystyle{{}##}$%
            \hfil
            \tabskip\alignsep@
            \crcr

\tabskip\alignsep@结尾处可以清楚地看到。基本上,aligned生成列对,按显示样式排版;

  • 第一列右对齐,
  • \tabskip\z@skip没有中间的水平空间,因为
  • 第二列左对齐,开头有一个空原子,
  • 宽度的水平空间\alignsep@

最后一个空格是为了能够排版任意数量的列对而付出的代价。

如果要精确控制空间,请使用alignedat

的值\alignsep@通常设置为\minalignsep,我们可以看到它的作用:

\documentclass{article}
\usepackage{amsmath}

\begin{document}

$(\begin{alignedat}{1} a&=b \end{alignedat})$

$(\begin{aligned} a&=b \end{aligned})$

$(\displaystyle a=b\hspace{\minalignsep})$

\end{document}

在此处输入图片描述

相关内容