Intertext 导致 align* 环境中的水平盒子过满

Intertext 导致 align* 环境中的水平盒子过满
\documentclass{article}
\usepackage{mathtools}
\begin{document}
        \begin{align*}
        a & =b & & \text{if }         
                        \begin{dcases*}
                        x = 2 \\
                        \shortintertext{and}
                        y = 3
                        \end{dcases*}\\
        a & = c & & \text{ elswhere}
        \end{align*}
\end{document}

正如预期的那样,

在此处输入图片描述

但它会导致

段落中的 \hbox 过满(53.86888pt 太宽)

看起来命令shortintertext是有罪的,这种用法不恰当吗?

答案1

命令\intertext\shortintertext仅应用于中断完整显示环境(alignalignatflalign),以保持两组分离的公式之间的对齐。

这两个命令都会排版一个与对齐范围外的值一样宽的框\linewidth。因此收到警告并不奇怪Overfull \hbox

您只需要\text;间距将与您滥用 获得的间距完全相同\shortintertext,但当然没有警告。

下面,对两个输入进行比较。

\documentclass{article}
\usepackage{mathtools}

\begin{document}

\begin{align*}
a & =b & &
  \text{if }         
  \begin{dcases*}
  x = 2 \\
  \text{and}\\
  y = 3
  \end{dcases*}\\
a & = c & & \text{elsewhere}
\end{align*}

\begin{align*}
a & =b & &
  \text{if }         
  \begin{dcases*}
  x = 2 \\
  \shortintertext{and}
  y = 3
  \end{dcases*}\\
a & = c & & \text{elsewhere}
\end{align*}

\end{document}

在此处输入图片描述

请注意,\shortintertext由于隐含的宽框,版本被一直​​推到左边。

如果你想减少两列之间的间隙,可以使用alignat*,例如

\begin{alignat*}{2}
a & =b &\quad &
  \text{if }         
  \begin{dcases*}
  x = 2 \\
  \text{and}\\
  y = 3
  \end{dcases*}\\
a & = c & & \text{elsewhere}
\end{alignat*}

在此处输入图片描述

相关内容