\ifx\endBlock\undefined \def\block{\begingroup% \def\endblock{\egroup\endgroup}% \vbox\bgroup}% \long\def\Block{\begingroup% \def\endBlock{\unskip\egroup\endgroup}% \pagebreak[2]\vspace*{\parskip}\vbox\bgroup% \par\noindent\ignorespaces} \long\def\IBlock{\begingroup% \def\endIBlock{\unskip\egroup\endgroup}% \pagebreak[2]\vspace*{\parskip}\vbox\bgroup\par\ignorespaces} \def\need#1{\ifhmode\unskip\par\fi \penalty-100 \begingroup % preserve \dimen@, \dimen@i \ifdim\prevdepth>\maxdepth \dimen@i\maxdepth \else \dimen@i\prevdepth\fi \kern-\dimen@i \dimen@\pagegoal \advance\dimen@-\pagetotal % space left \ifdim #1>\dimen@ \vfill\eject\typeout{WARNING- EJECT BY NEED} \fi \kern\dimen@i \endgroup} \def\lneed#1{\need{#1\baselineskip}} % \begin{block} ... \end{block} delimite un bloc qui restera, % si possible, sur une seule page. \long\def\TBlock{\begingroup% \def\endTBlock{\unskip\egroup\endgroup}% \pagebreak[2]\vspace*{\parskip}\vtop\bgroup% \par\noindent\ignorespaces} \else \typeout{block.sty already loaded} \fi