diff options
author | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
---|---|---|
committer | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
commit | e0c6872cf40896c7be36b11dcc744620f10adf1d (patch) | |
tree | 60335e10d2f4354b0674ec22d7b53f0f8abee672 /info/examples/tip/ivpyr.tip |
Initial commit
Diffstat (limited to 'info/examples/tip/ivpyr.tip')
-rw-r--r-- | info/examples/tip/ivpyr.tip | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/info/examples/tip/ivpyr.tip b/info/examples/tip/ivpyr.tip new file mode 100644 index 0000000000..86bd1a78bc --- /dev/null +++ b/info/examples/tip/ivpyr.tip @@ -0,0 +1,67 @@ +% 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 |