有点相关多行对齐会产生多余的空间、内部有多余的空间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}