Verhindern von Seitenumbrüchen nach Listen

Verhindern von Seitenumbrüchen nach Listen

Wie kann ich einen Seitenumbruch nach einer inneren Liste verhindern, wenn unmittelbar darauf das Ende einer äußeren Liste folgt?

Seitenumbrüche an anderen Stellen innerhalb beider Listen sollten zulässig sein.

MWE

\documentclass[twocolumn]{article}
\usepackage{lipsum}
\newenvironment{lista}{%
  \list{}{}%
    \item\relax
}{%
    Prevent page break before here.
  \endlist
}
\newenvironment{listb}{%
  \list{}{}%
    \item\relax
}{%
  \endlist
}
\begin{document}
\vspace*{7.5cm plus 1cm}
\begin{lista}
  \begin{listb}
    \lipsum[4]
  \end{listb}
  Permit page break before here.
  \begin{listb}
    \lipsum[4]
  \end{listb}
\end{lista}
\end{document}

Antwort1

Um einen Seitenumbruch nach einer inneren Liste zu verhindern, wenn unmittelbar darauf das Ende einer äußeren Liste folgt, können Sie den \filbreakBefehl nach der inneren Liste und vor dem darauf folgenden Text verwenden. Der \filbreakBefehl fordert an dieser Stelle einen Seitenumbruch an und verhindert so einen Umbruch zwischen der inneren und der äußeren Liste. Hier ist eine aktualisierte Version Ihres MWE:

\documentclass[twocolumn]{article}
\usepackage{lipsum}

\newenvironment{lista}{%
  \list{}{}%
    \item\relax
}{%
    Prevent page break before here.
  \endlist
}
\newenvironment{listb}{%
  \list{}{}%
    \item\relax
}{%
  \endlist\filbreak % Use \filbreak to prevent a page break after the inner list
}

\begin{document}
\vspace*{7.5cm plus 1cm}
\begin{lista}
  \begin{listb}
    \lipsum[4]
  \end{listb}
  \lipsum[1-2] % This text follows the inner list
\end{lista}
\end{document}

In diesem Beispiel habe ich \filbreaknach dem \endlistBefehl in der listbUmgebung hinzugefügt. Dadurch wird ein Seitenumbruch nach der inneren Liste vermieden, wenn unmittelbar darauf das Ende der äußeren Liste folgt.

Bildbeschreibung hier eingeben

verwandte Informationen