多行环境在表格中使用时会产生过多的垂直空间

多行环境在表格中使用时会产生过多的垂直空间

我想将表格中的公式分成两行。使用multlined环境似乎不错。但表格中的公式在两行之间出现很大的垂直空间。所需的结果应该像表格下的公式一样。

在此处输入图片描述

\documentclass{article}
\usepackage{fullpage}
\usepackage[utf8]{inputenc}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{comment}
\usepackage{braket}
\usepackage{mathtools}

\begin{document}


\begin{tabular}{|c|c|}
\hline
$a=b$ & $c=d$ \\\hline
$x=y$ & $\begin{multlined}
    1+2+3+4+5+6\\
    +7+8+9+10+11=z
\end{multlined}$\\\hline
\end{tabular}

$\begin{multlined}
    1+2+3+4+5+6\\
    +7+8+9+10+11=z
\end{multlined}$

\end{document}

答案1

解决方案

这是 mathtools 包作者已知的一个错误。

以下是 mathtools 文档“多行环境”部分中所述的内容:

错误 1:如果在数组或导数(例如矩阵变体)中使用,多行线无法按预期工作。实现在第一个多行线行后包含一条“不可见”的线,在数组内部,此线不再“不可见”,因为数组将 \baselineskip 设置为零。目前我们没有针对此问题的一般解决方法。

错误 2:[...] 我们添加了一个可以添加到的钩子(\MultlinedHook)。[...]

他们还提出了修复 Bug 1 的代码:

\usepackage{mathtools,etoolbox}
\newlength\Normalbaselineskip
\setlength\Normalbaselineskip{\baselineskip}
\appto\MultlinedHook{\setlength\baselineskip{\Normalbaselineskip}}

我尝试了一下并且它确实修复了该错误。

我的想法

尽管如此,我强烈建议避免这种结构。使用单个美元符号意味着排队方程,这与多行环境中所需的结果相反。

享受 !

答案2

一些替代方案:

在此处输入图片描述

\documentclass{article}
\usepackage{amsmath}

\begin{document}

\[\begin{array}{|c|c|}
\hline
a=b & c=d \\\hline
x=y & \begin{aligned}
    1+2+3+4+5+6\\
    +7+8+9+10+11=z
\end{aligned}\\\hline
\end{array}\]

\[\begin{array}{|c|c|}
\hline
a=b & c=d \\\hline
x=y & \begin{aligned}
    1&+2+3+4+5+6\\
    &+7+8+9+10+11=z
\end{aligned}\\\hline
\end{array}\]

\[\begin{array}{|c|c|}
\hline
a=b & c=d \\\hline
x=y & \multicolumn{1}{|l|}{1+2+3+4+5+6}\\
    & \multicolumn{1}{|r|}{+7+8+9+10+11=z}\\\hline
\end{array}\]

\end{document}

相关内容