Предотвращение разрывов страниц после списков

Предотвращение разрывов страниц после списков

Как предотвратить разрыв страницы после внутреннего списка, если сразу за ним следует конец внешнего списка?

Разрывы страниц в других местах обоих списков должны быть разрешены.

МВЭ

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

решение1

Чтобы предотвратить разрыв страницы после внутреннего списка, когда за ним сразу следует конец внешнего списка, можно использовать команду \filbreakпосле внутреннего списка и перед текстом, который следует за ним. \filbreakКоманда поощряет разрыв страницы в этой точке, предотвращая разрыв между внутренним и внешним списками. Вот обновленная версия вашего 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}

В этом примере я добавил \filbreakпосле \endlistкоманды в listbокружении. Это поможет предотвратить разрыв страницы после внутреннего списка, когда за ним сразу следует конец внешнего списка.

введите описание изображения здесь

Связанный контент