![theoremprework ntheorem 错误](https://linux22.com/image/239438/theoremprework%20ntheorem%20%E9%94%99%E8%AF%AF.png)
我已经定义
\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}