From dce0ff5a005e417ac63aafe94583124544bfada3 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Fri, 4 Sep 2009 01:05:22 +0000 Subject: needspace update (3sep09) git-svn-id: svn://tug.org/texlive/trunk@15072 c570f23f-e606-0410-a88d-b1316a301751 --- .../texmf-dist/tex/latex/needspace/needspace.sty | 80 ++++++++++++++++++++++ 1 file changed, 80 insertions(+) create mode 100644 Master/texmf-dist/tex/latex/needspace/needspace.sty (limited to 'Master/texmf-dist/tex/latex/needspace') diff --git a/Master/texmf-dist/tex/latex/needspace/needspace.sty b/Master/texmf-dist/tex/latex/needspace/needspace.sty new file mode 100644 index 00000000000..ee286352e8e --- /dev/null +++ b/Master/texmf-dist/tex/latex/needspace/needspace.sty @@ -0,0 +1,80 @@ +% needspace.sty +% +% Provides commands to reserve space at the bottom of a page. If there +% is not enough space on the current page (column) a new page (column) +% is started. +% +% Author: Peter Wilson, Herries Press +% Maintainer: Will Robertson (will dot robertson at latex-project dot org) +% Copyright 1996--2003 Peter Wilson +% Released under the LaTeX Project Public License +% +% +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{needspace}[2009/09/03 v1.3b reserve vertical space] + +\newcommand{\needspace}[1]{\begingroup\setlength{\dimen@}{#1}% + \vskip\z@\@plus\dimen@ \penalty -100\vskip\z@\@plus -\dimen@ + \vskip\dimen@ \penalty 9999\vskip -\dimen@\endgroup} + +\newcommand{\Needspace}{\@ifstar{\@sneedsp@}{\@needsp@}} + +\newcommand{\@sneedsp@}[1]{\par \penalty-100\begingroup + \setlength{\dimen@}{#1}% + \dimen@ii\pagegoal \advance\dimen@ii-\pagetotal + \ifdim \dimen@>\dimen@ii + \break + \fi\endgroup} + +\newcommand{\@needsp@}[1]{\par \penalty-100\begingroup + \setlength{\dimen@}{#1}% + \dimen@ii\pagegoal \advance\dimen@ii-\pagetotal + \ifdim \dimen@>\dimen@ii + \ifdim \dimen@ii>\z@ + \vfil + \fi + \break + \fi\endgroup} + +\endinput + +% Example uses: +% +% ... previous text.\par +% \needspace{5\baselineskip} % need next 5 lines on a single page/column +% The next five lines ... +% +% \Needspace*{4\baselineskip} % need 4 lines kept on same page +% The major principles are: +% \begin{itemize} +% \item ... +% +% +% The \needspace macro reserves an APPROXIMATE amount of space (depending +% on what penalties are in effect) but is efficient and normally adequate. +% A short page will be ragged bottom even if \flushbottom is in +% effect. +% +% \Needspace is less efficient but reserves the requested space. It +% should only be used between paragraphs. Short pages produced by +% \Needspace{} will be ragged bottom but short pages produced by +% \Needspace*{} will be flush bottom if \flushbottom is in effect. +% +% Changes v1.3b (2009/09/03) +% New maintainer (Will Robertson) +% +% Changes v1.3a (2003/02/18) +% At the suggestion of Donald Arseneau (private emails) changed guts of +% \needspace from +% ... \vskip\z@\@plus\dimen@\pagebreak[3]\vskip\z@\@plus-\dimen@\endgroup} +% +% Changes v1.3 (2003/02/07) +% Added \Needspace (an extended version of postings by Donald Arseneau +% to comp.text.tex e.g., in November 1993, August 1995, September 1997, ...) +% +% Changes v1.2 (2002/09/11) +% At the suggestion of Robin Fairbairns, added use of \dimen@ to capture +% the argument so that calc package commands can be used in the argument. +% +% +% -- cgit v1.2.3