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\flushbottombook

您可以使用以下補丁獲得更正常的行為:

\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}

例子

相關內容