[Tex/LaTex] Difference between \newpage and \vfill\eject

page-breaking

I think I understand the difference between newpage and pagebreak.

My question mostly comes out os curiosity. I came across this way to get a new page: \vfill\eject. What is the difference between this and just \newpage (or \pagebreak). Does it have an advantage?

Best Answer

There is a big difference between \newpage and \vfill\eject.

  • Definition of \newpage in LaTeX

    % latex.ltx, line 6342:
    \def \newpage {%
      \if@noskipsec
        \ifx \@nodocument\relax
          \leavevmode
          \global \@noskipsecfalse
        \fi
      \fi
      \if@inlabel
        \leavevmode
        \global \@inlabelfalse
      \fi
      \if@nobreak \@nobreakfalse \everypar{}\fi
      \par
      \vfil
      \penalty -\@M}
    
  • Definition of \eject in Plain TeX

    % plain.tex, line 558:
    \def\break{\penalty-\@M}
    
    % plain.tex, line 564:
    \def\eject{\par\break}
    

LaTeX tries first to catch problems with \everypar; if \newpage is given in sectional titles or immediately after or else in lists, some countermeasures are taken.

After this the working is almost identical, but you can notice that \newpage issues \vfil, because of how it deals with \flushbottom and \raggedbottom. Both constructions end with \penalty-10000 that forces a page break.