% This macro source file is from the four volume series % "TeX in Practice" by Stephan von Bechtolsheim, published % 1993 by Springer-Verlag, New York. % Copyright 1993 Stephan von Bechtolsheim. % No warranty or liability is assumed. % This macro may be copied freely if no fees other than % media cost or shipping charges are charged and as long % as this copyright and the following source code itself % is not changed. Please see the series for further information. % % Version: 1.0 % Date: May 1, 1993 % % % This source code is documented in 27.1.9.1, p. III-417. % Original source in file "macros7.TEX", starting line 1022. \wlog{L: "ivpyr.tip" ["macros7.TEX," l. 1022, p. III-417]}% % This file DOES belong to format "texip." \InputD{futlet.tip} \InputD{list-mac.tip} \InputD{wtolist.tip} \catcode`\@ = 11 \newdimen\@MaximumCurrentLineWidth \newdimen\@LineWidthLastLine \newdimen\@LineWidthMinDiff \newbox\@IPCurrentLineBox \newbox\@IPCurrentLineBoxTry \def\InvertedPyramid #1#2#3{% \WordsToTeXList{\IVList}#3\EndWordsToTeXList \def\LineLengthList{#1}% \@LineWidthLastLine = 0pt \@LineWidthMinDiff = #2 \CarOfList{\IVList}{\@IVListTemp} \DropFirstElementOfList{\IVList} \setbox\@IPCurrentLineBox = \hbox{\@IVListTemp}% \CarOfList{\LineLengthList}{\@IVListTemp}% \@MaximumCurrentLineWidth = \@IVListTemp \DropFirstElementOfList{\LineLengthList}% \ForEveryListElement{\IVList}{\@IVListTypeset}% \ifvoid\@IPCurrentLineBox \errmessage{\string\InvertedPyramid: empty \string\@IPCurrentLineBox}% \else \centerline{\box\@IPCurrentLineBox}% \fi } \def\@IVListTypeset #1{% \setbox\@IPCurrentLineBoxTry = \hbox{\copy\@IPCurrentLineBox \space#1}% \ifdim\wd\@IPCurrentLineBoxTry < \@MaximumCurrentLineWidth \setbox\@IPCurrentLineBox = \box\@IPCurrentLineBoxTry \else \@LineWidthLastLine = \wd\@IPCurrentLineBox \centerline{\box\@IPCurrentLineBox}% \setbox\@IPCurrentLineBox = \hbox{#1}% \CarOfList{\LineLengthList}{\@IVListTemp}% \@MaximumCurrentLineWidth = \@IVListTemp \DropFirstElementOfList{\LineLengthList}% \dimen0 = \@LineWidthLastLine \advance\dimen0 by -\@MaximumCurrentLineWidth \ifdim\dimen0 < \@LineWidthMinDiff \@MaximumCurrentLineWidth = \@LineWidthLastLine \advance\@MaximumCurrentLineWidth by -\@LineWidthMinDiff \fi \fi } \catcode`\@ = 12