Wie verhindert man einen Seitenumbruch in den letzten drei Zeilen einer Umgebung?

Wie verhindert man einen Seitenumbruch in den letzten drei Zeilen einer Umgebung?

Ich möchte eine Umgebung erstellen, deren Inhalt in den letzten drei Zeilen des letzten Absatzes keinen Seitenumbruch zulassen soll.

Wenn die letzten drei Zeilen des Textes innerhalb der Umgebung den Seitenrand erreichen, sollte der Seitenumbruch nach der vierten Zeile von unten erfolgen.

Außerhalb der Umgebung sollte das normale Verhalten der Seitenumbrüche nicht geändert werden.

Die Umgebung enthält nur normalen Text, jedoch mit vergrößertem Rand auf der linken und rechten Seite. Es können auch einige Inline-Mathematikgleichungen vorkommen, aber das sollte es auch schon sein.

\documentclass{scrartcl}

\usepackage{lipsum}

\newenvironment{env}{%
    \begin{addmargin}{2em}%
}{%
    \end{addmargin}
}%


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

\begin{env}
    \lipsum[1]
    This is just some filler text, to reach the page break.
    This is just some filler text, to reach the page break.
    This is just some filler text, to reach the page break.
    This is just some filler text, to reach the page break.
    This is just some filler text, to reach the page break.
    This is just some filler text, to reach the page break.
    This is just some filler text, to reach the page break.
    This is just some filler text, to reach the page break.
    This last lines should not be broken to the next page.
    This last lines should not be broken to the next page.
    This last lines should not be broken to the next page.
\end{env}
\end{document}

Bearbeiten:

Ich bin mir nicht sicher, ob ich klarstellen kann, was ich erreichen möchte: Normalerweise weiß ich nicht, wo genau die letzten Zeilen beginnen. Stattdessen geht es eher darum, Hurenkinder zu verhindern, aber nicht nur, dass die letzte Zeile des Absatzes auf die nächste Seite umgebrochen wird, sondern dass die letzten drei Textzeilen innerhalb der Umgebung {env}immer zusammenbleiben, entweder auf der aktuellen Seite oder auf der nächsten Seite.

Antwort1

Sie können \widowpenalties; mit verwenden

\widowpenalties 3 10000 10000 0

Sie fügen eine Strafe von 10000 zwischen den letzten drei Zeilen hinzu und keine zwischen den vorhergehenden Zeilen. Siehe auchWie vermeidet man Seitenumbrüche innerhalb von Absätzen?

\documentclass{scrartcl}

\usepackage{lipsum}

\newenvironment{env}
 {\begin{addmargin}{2em}\widowpenalties 3 10000 10000 0 }
 {\end{addmargin}}


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

\begin{env}
    \lipsum[1]
    This is just some filler text, to reach the page break.
    This is just some filler text, to reach the page break.
    This is just some filler text, to reach the page break.
    This is just some filler text, to reach the page break.
    This is just some filler text, to reach the page break.
    This is just some filler text, to reach the page break.
    This is just some filler text, to reach the page break.
    This is just some filler text, to reach the page break.
    This last lines should not be broken to the next page.
    This last lines should not be broken to the next page.
    This last lines should not be broken to the next page.
\end{env}
\end{document}

Bildbeschreibung hier eingeben

verwandte Informationen