mdframed está causando alinhamento incorreto na parte inferior das páginas

mdframed está causando alinhamento incorreto na parte inferior das páginas

Se você pudesse compilar este documento 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}

Você descobrirá que as partes inferiores das páginas 2 e 3 estão desalinhadas da seguinte forma:

páginas desalinhadas

Questões:

  1. O espaço entre o parágrafo e o quadro na página 3 não deveria se expandir de forma que a parte inferior se alinhasse? Por que isso não acontece?

  2. Como você adicionaria um espaço flexível (zero, mais algo flexível, se necessário, assim como para espaçamento de parágrafo) acima da caixa mdframed também? Isso colocaria menos pressão no espaço entre os parágrafos, supondo que eu resolva a questão 1 acima.

Responder1

Por motivos que não entendo, mdframedgera a primeira caixa (dividida) de forma que a parte inferior da página fique irregular, independentemente de \raggedbottomou \flushbottom(padrão com book) estar configurado.

Você pode obter um comportamento mais normal com os seguintes patches:

\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

Como eu realmente não sei o que isso pretende alcançar, provavelmente quebrará alguma coisa, mas pelo menos a parte inferior da página está alinhada agora ;-)

O espaço acima da mdframedcaixa é configurado com skipabove, então você obtém cola flexível

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

exemplo

informação relacionada