[Tex/LaTex] How to prevent breaks in a custom environment

environmentspage-breaking

I have a custom example environment:

\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}}

This works fine, except if there is a bad page break:

enter image description here

It's ok to break this environment (in fact it is necessary as some examples are very long), but I would like to force LaTeX to keep the title with some text (lets say at least two lines or a complete table / image). How can I get that?

Complete minimal example

\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}

Best Answer

\item is very complex. Replacing \item[] with \par\nobreak inserts a similarly-spaced (vertical) break yet allows control over the page breaking:

\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}
Related Question