如何防止自定义环境中断?

如何防止自定义环境中断?

我有一个自定义示例环境:

\newcounter{examplecounter}
\renewcommand{\theexamplecounter}{\arabic{examplecounter}}
\newenvironment{Beispiel}[1][]{%
\goodbreak%
\refstepcounter{examplecounter}%
\begin{list}{}{\setlength{\rightmargin}{\leftmargin}}%
\item[{\textbf{Beispiel~\theexamplecounter:}}]#1\item[]}{%
\end{list}}

这种方法很有效,除非出现错误的分页符:

在此处输入图片描述

打破这个环境是可以的(事实上这是必要的,因为有些例子很长),但我想强制 LaTeX 保留标题和一些文本(比如至少两行或完整的表格/图像)。我该怎么做?

完成最小示例

\documentclass[a4paper]{scrartcl}
\usepackage{blindtext}

\newcounter{examplecounter}
\renewcommand{\theexamplecounter}{\arabic{examplecounter}}
\newenvironment{Beispiel}[1][]{%
\goodbreak%
\refstepcounter{examplecounter}%
\begin{list}{}{\setlength{\rightmargin}{\leftmargin}}%
\item[{\textbf{Beispiel~\theexamplecounter:}}]#1\item[]}{%
\end{list}}

\begin{document}
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla quam 
elit, vestibulum nec facilisis at, condimentum id enim. Sed iaculis 
lacinia quam, vel accumsan eros tempor in. Integer ipsum metus, 
accumsan sit amet commodo a, egestas vitae sem. Mauris ut orci ut 
dolor viverra convallis nec a erat. Aenean consequat elit vel eros 
fermentum vestibulum id at ipsum. In vitae orci mauris, et rhoncus 
odio. Pellentesque habitant morbi tristique senectus et netus et 
malesuada fames ac turpis egestas.

\blindtext[4]

\begin{Beispiel}[A title]
\begin{tabular}{ccc}
    1 & 2 & 3\\
    4 & 5 & 6\\
    7 & 8 & 9
  \end{tabular}
\end{Beispiel}
\end{document}

答案1

\item非常复杂。\item[]用替换\par\nobreak会插入间距相似的(垂直)分页符,但允许控制分页:

\newenvironment{Beispiel}[1][]
  {% \begin{Beispiel}[<title>]
  \goodbreak%
  \refstepcounter{examplecounter}%
  \begin{list}{}{\setlength{\rightmargin}{\leftmargin}}%
    \item[{\textbf{Beispiel~\theexamplecounter:}}]#1\par\nobreak}%
  {\end{list}}% \end{Beispiel}

答案2

一种方法是利用minipage环境。

\begin{minipage}{\textwidth}
\begin{Beispiel}[A title]
\begin{tabular}{ccc}
    1 & 2 & 3\\
    4 & 5 & 6\\
    7 & 8 & 9
  \end{tabular}
\end{Beispiel}
\end{minipage}

相关内容