禁止 mdframed 中标题后的分页

禁止 mdframed 中标题后的分页

我使用 mdframed 来证明我的定理,像这样

\mdfdefinestyle{theoremstyle}{%
  %adjustable lengths
  %inner margins
  innertopmargin=\topskip,
  % outter margins
  skipabove= 0.1in,
  skipbelow= 0.1in,
  % colrs
  linecolor=red!60,
  middlelinewidth=2pt,%
  roundcorner=5pt,
  apptotikzsetting={\tikzset{mdfframetitlebackground/.append style={%
  shade,left color=white, right color=blue!20}}},
  % Title
  frametitlefont=\TheoremHeaderFont\bfseries,
  frametitlerule=true,%
  frametitlerulecolor=orange!60,
  frametitlerulewidth=2pt,
  % Miscellaneous
  nobreak=false,
}

有时定理标题后就会出现分页符。如何防止标题和内容之间的框架断裂?

编辑者:yori。我遇到了同样的问题,所以这里有一个 MWE:

\documentclass{article}

\usepackage{lipsum}
\usepackage{mdframed}
\usepackage[a4paper,margin=1.75in]{geometry}

\begin{document}
\lipsum[1-5]

\begin{mdframed}[frametitle={The title}]%
\[
x^2+y^2=z^2.
\]
\end{mdframed}

\end{document}

答案1

不满意的答案:

解决此问题的一种方法是使用以下needspace选项:

\documentclass{article}

\usepackage{lipsum}
\usepackage{mdframed}
\usepackage[a4paper,margin=1.75in]{geometry}

\begin{document}
\lipsum[1-5]

\begin{mdframed}[needspace=6em, frametitle={The title}]%
\[
x^2+y^2=z^2.
\]
\end{mdframed}

\end{document}

这告诉mdframed您将第一个分页符放置在框架内至少 6em(垂直方向)的位置。但这是一个不太令人满意的解决方案,因为它并没有真正表达意图,并且在多行标题的情况下需要手动调整。

第二种方法是模仿标题,并\nobreak在标题后添加:

\documentclass{article}

\usepackage{lipsum}
\usepackage{mdframed}
\usepackage[a4paper,margin=1.75in]{geometry}

\begin{document}
\lipsum[1-5]

\begin{mdframed}
\textbf{The title} \\ \nobreak
\[
x^2+y^2=z^2.
\]
\end{mdframed}

\end{document}

这样效果更好,但在某些情况下仍然会中断......

相关内容