theoremprework ntheorem 错误

theoremprework ntheorem 错误

我已经定义

\theoremheaderfont{\normalfont\bfseries}
\theoremprework{\bigskip\hrule}
\theorempostwork{\hrule\bigskip}
\theorembodyfont{\slshape}
\newtheorem{definition}[satz]{Definition}

现在我可以写类似的东西

\begin{definition}fooBar\end{definition}

但我在定理的预备工作中遇到了奇怪的行为!LaTeX 将顶部\hrule放在一页上,将其余定义放在另一页上!参见这里我的意思是。虽然它是德语的,但你可以看到定义 1.2.7 的顶部规则在第 6 页,而其余的规则可以在第 7 页的顶部找到(我的布局中有页眉行!)。有没有人知道如何将此规则移动到与定义相同的页面没有使用\newpage仍有动态文档?

答案1

我认为这个needspace包可能会有所帮助。看看下面的代码

\documentclass{article}
\usepackage[standard,framed]{ntheorem}
\usepackage{needspace}
\theoremheaderfont{\normalfont\bfseries}
\theoremprework{\bigskip\needspace{\baselineskip}\hrule} % note this line
\theorempostwork{\hrule\needspace{\baselineskip}\bigskip} % note this line
\theorembodyfont{\slshape}
\newtheorem{mydefinition}{Definition}

\usepackage{lipsum}

\begin{document}

\begin{mydefinition}
\lipsum[1]
\end{mydefinition}

\end{document}

答案2

您还可以考虑使用框架

\usepackage{ntheorem}
\usepackage[ntheorem]{mdframed}
\theoremheaderfont{\normalfont\bfseries}
\theorembodyfont{\slshape}
\newmdtheoremenv[
  innerleftmargin=0pt,innerrightmargin=0pt,
  topline,bottomline,leftline=false,rightline=false,
  skipabove=\bigskipamount,skipbelow=\bigskipamount,
  %innertopmargin=\topsep,
  innerbottommargin=\topsep
  ]{definition}[satz]{Definition}

相关内容