我想我可能偶然发现了 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}