带 mdframed 的可拉伸垂直跳跃

带 mdframed 的可拉伸垂直跳跃

我创建了一个基于mdframed的定理环境,如下所示:

\newmdtheoremenv[outerlinewidth=0pt,
leftmargin=0pt,rightmargin=0pt,
innerleftmargin=4pt,outermargin=0pt,
innermargin=0pt,innerrightmargin=4pt,
innerbottommargin=2pt,innertopmargin=3pt,
skipbelow=1.5ex plus2pt minus2pt,
skipabove=1.5ex plus2pt minus2pt]{theoreme}[dummy]{Théorème}

我认为,在需要时,框架前后可以进行弹性垂直拉伸。奇怪的是,\flushbottom当框架跨页面拆分时,该选项会被忽略,如下所示:

在此处输入图片描述

是否有 mdframed 选项可以处理此问题?

建议的 MWE 如下:

\documentclass[11pt,fleqn]{book}
\usepackage{lipsum}
\usepackage{amsmath,amsthm}
\usepackage[framemethod=tikz]{mdframed}
\usepackage[showframe,top=3.2cm,bottom=3.2cm,left=3.25cm,right=3.25cm,headsep=12pt,a4paper]{geometry}
\theoremstyle{plain}
\newmdtheoremenv[backgroundcolor=red!10,%
innerbottommargin=2pt,innertopmargin=3pt,%
skipbelow=1.5ex plus2pt minus2pt,%
skipabove=1.5ex plus2pt minus2pt,linecolor=red!50]{theorem}{Theorem}
\begin{document}
\chapter{Title}
\lipsum[1-3]
\begin{theorem}\lipsum[1-2]
\end{theorem}
\end{document}

答案1

在换行符前添加一个可伸缩空格似乎可以解决问题。这可以通过以下选项完成:

 beforebreak={\vspace{0pt plus 1filll}}

弹性较小的填充物会被吞掉。下面的例子给出了

第 1 页底部

在第 1 页底部,以及

第 2 页底部

在第 2 页的底部。

\documentclass[11pt,fleqn]{book}

\usepackage{lipsum}

\usepackage{amsmath,amsthm}

\usepackage[framemethod=tikz]{mdframed}

\usepackage[showframe,top=3.2cm,bottom=3.2cm,left=3.25cm,right=3.25cm,headsep=12pt,a4paper]{geometry}

\theoremstyle{plain}
\newmdtheoremenv[backgroundcolor=red!10,%
innerbottommargin=2pt,innertopmargin=3pt,%
skipbelow=1.5ex plus2pt minus2pt,%
skipabove=1.5ex plus 2pt minus2pt,
beforebreak={\vspace{0pt plus 1filll}},
linecolor=red!50]{theorem}{Theorem}

\begin{document}

\chapter{Title}

\lipsum[1-3]

\begin{theorem}
  \lipsum[1-2]
\end{theorem}

\lipsum[4-6]

\begin{theorem}
  \lipsum[7-8]
\end{theorem}

\end{document}

相关内容