[Tex/LaTex] How to prevent a page break before an itemize or enumerate list? (continued)

#enumerateitemizelistspage-breakingspacing

My question is essentially the same as How to prevent a page break before an itemize list?. First, I don't undestand how the proposed solution (\par\nobreak\@afterheading) works. Why doesn't just \par\nobreak work? \nobreak should put there impossible penalty to pagebreak at the following glue. What does \@afterheading do?

Another thing is that it seems that the solution consumes the space between the paragraph and itemize environment. Minimal example showing the problem follows.

\documentclass[12pt, a4paper]{article}

\makeatletter
\newcommand*{\NoBreakPar}{\par\nobreak\@afterheading}
\makeatother

\begin{document}
    Let's see the following list:\NoBreakPar
    \begin{itemize}
        \item First.
        \item Second.
        \item Third.
    \end{itemize}
\end{document}

Best Answer

\documentclass[12pt, a4paper]{article}
\usepackage{blindtext}

\begin{document}

\blindtext[3]

Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Etiam lobor-
tis facilisis sem. Nullam nec mi et neque pharetra sollicitudin. Praesent
imperdiet mi nec ante. Donec ullamcorper, felis non sodales commodo, lec-
tus velit ultrices augue, a dignissim nibh lectus placerat pede. Vivamus
nunc nunc, molestie ut, ultricies vel, semper in, velit. Ut porttitor.

\begin{samepage}

Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Etiam lobor-
tis facilisis sem. Nullam nec mi et neque pharetra sollicitudin. Praesent
imperdiet mi nec ante.

    \begin{itemize}
        \item First.
        \item Second.
        \item Third.
    \end{itemize}

\end{samepage}

\end{document}