
Если вы будете так любезны, скомпилируйте этот документ 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}