mdframed 包 + align 提供额外的垂直空间

mdframed 包 + align 提供额外的垂直空间

我想我可能偶然发现了 mdframed 包中的一个错误。我有一个 mdframed 环境,其中只有一个 align 环境。请考虑这个最小工作示例:

\documentclass[11pt]{article}

\usepackage{amsmath}
\usepackage{mdframed}
\usepackage{blindtext}

\begin{document}
\blindtext \\ \blindtext \\ \blindtext 

\begin{mdframed}
\begin{align*}
x^2 + y^2 = z^2 \\
x^2 + y^2 = z^2 \\
x^2 + y^2 = z^2 \\
x^2 + y^2 = z^2 \\
x^2 + y^2 = z^2 \\
x^2 + y^2 = z^2
\end{align*}
\end{mdframed}

\end{document}

输出结果如下:

如您所见,\begin{mdframed} 命令在页面底部发出。由于 align 不可分割,因此整个框架加上内容将放置在下一页,这绝对是预料之中的。但是,在 mdframed 环境内的底部出现了额外的垂直空白,因此 mdframed 环境比应有的高度高得多。

通过一些实验,我认为额外的空白量与上一页剩余的垂直空间量大约相同,这意味着 mdframed 的高度可能是应有高度的两倍。

有办法解决这个问题吗?

答案1

默认情况下,环境align不是可分割材料。因此,您会遇到产生这种不必要空间的循环。不过,目前我正在努力修复。我想我会在周末上传新版本(受 Nicolas Markey 启发)。

要使用当前版本修复此问题,请使用以下示例,该示例使用命令\allowdisplaybreaks使对齐可分割。

\documentclass[11pt]{article}

\usepackage{amsmath}

\usepackage{mdframed}
\usepackage{blindtext}

\begin{document}
\blindtext \\ \blindtext \\ \blindtext 

\allowdisplaybreaks
\begin{mdframed}
\rule{\linewidth}{0pt}
\begin{align*}
x^2 + y^2 = z^2 \\
x^2 + y^2 = z^2 \\
x^2 + y^2 = z^2 \\
x^2 + y^2 = z^2 \\
x^2 + y^2 = z^2 \\
x^2 + y^2 = z^2
\end{align*}
\end{mdframed}

\end{document}

在此处输入图片描述

相关内容