mdframed 导致页面底部对齐错误

mdframed 导致页面底部对齐错误

如果您愿意编译此 LaTeX 文档:

\documentclass[a4paper,11pt]{book}

\usepackage[paper=a4paper,twoside=true,lmargin=4cm,
rmargin=4cm,bindingoffset=0cm]{geometry}

\usepackage{mdframed,lipsum,kantlipsum}
\mdfsetup{font=\small}

\begin{document}
\kant[1-8]


\begin{mdframed}
\kant[1-5]
\end{mdframed}

\end{document}

您会发现第2页和第3页的底部未对齐,如下所示:

页面错位

问题:

  1. 第 3 页的段落与框架之间的间距不应该扩大到底部对齐吗?为什么没有发生这种情况?

  2. 如何在 mdframed 框上方添加一个灵活的(零,如果需要的话,加上一些灵活的,就像段落间距一样)空间?如果我解决了上面的问题 1,那么段落之间的空间压力就会减小。

答案1

由于我无法理解的原因,mdframed无论配置了\raggedbottom\flushbottom(默认为),输出第一个(拆分)框的方式都会使页面底部参差不齐。book

您可以使用以下补丁获得更正常的行为:

\usepackage{mdframed}

\makeatletter

\patchcmd\mdf@put@frame@i{\hrule \@height\z@ \@width\hsize\vfill}{}{}{}
\patchcmd\mdf@put@frame@i{\hrule \@height\z@ \@width\hsize\vfill}{}{}{}
\patchcmd\mdf@put@frame@i{\hrule \@height\z@ \@width\hsize\vfill}{}{}{}

\makeatother

因为我真的不知道这是为了实现什么,这可能会破坏一些东西,但至少,页面底部现在是对齐的;-)

盒子上方的空间mdframed配置有skipabove,因此您可以通过

\mdfsetup{font=\small,skipabove=\parskip}

例子

相关内容