![mdframed 导致页面底部对齐错误](https://linux22.com/image/254738/mdframed%20%E5%AF%BC%E8%87%B4%E9%A1%B5%E9%9D%A2%E5%BA%95%E9%83%A8%E5%AF%B9%E9%BD%90%E9%94%99%E8%AF%AF.png)
如果您愿意编译此 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页的底部未对齐,如下所示:
问题:
第 3 页的段落与框架之间的间距不应该扩大到底部对齐吗?为什么没有发生这种情况?
如何在 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}