Annotation of OpenXM/doc/ascm2001p/flushend.sty, Revision 1.1
1.1 ! noro 1: %$OpenXM$
! 2:
! 3: %% flushend.sty
! 4: %% Copyright 1997 Sigitas Tolu\v sis
! 5: %% VTeX Ltd., Akademijos 4, Vilnius, Lithuania
! 6: %% e-mail sigitas@vtex.lt
! 7: %% http://www.vtex.lt/tex/download/macros/
! 8: %%
! 9: %% This program can redistributed and/or modified under the terms
! 10: %% of the LaTeX Project Public License Distributed from CTAN
! 11: %% archives in directory macros/latex/base/lppl.txt; either
! 12: %% version 1 of the License, or (at your option) any later version.
! 13: %%
! 14: %% PURPOSE: Balanced columns on last page in twocolumn mode.
! 15: %%
! 16: %% SHORT DESCRIPTION:
! 17: %%
! 18: %% \flushend (loaded by default)
! 19: %% ---------
! 20: %% Switches on column balancing at last page
! 21: %%
! 22: %% \raggedend
! 23: %% ----------
! 24: %% Switches off column balancing at last page
! 25: %%
! 26: %% \atColsBreak={#1}
! 27: %% ------------------
! 28: %% Adds #1 in place of original column break (without balancing)
! 29: %% Example: \atColsBreak{\vskip-2pt}
! 30: %%
! 31: %% \showcolsendrule
! 32: %% ----------------
! 33: %% Adds rule to the bottom of columns (just for debugging)
! 34: %%
! 35: %% P.S. To stretch right column by #1 add command \vskip-#1 just before
! 36: %% command \end{document}.
! 37: %% TO shrink right column by #1 add command \vskip#1 just before
! 38: %% command \end{document}.
! 39: %% Example: \vskip-10pt
! 40: %% \end{document}
! 41: %%
! 42: %% \changes{1997/05/16}{first version}
! 43: %% \changes{1997/09/09}{support for compatibility with cuted.sty}
! 44: %% \changes{1997/10/01}{\vipersep changed to \stripsep for
! 45: %% compatibility with cuted.sty}
! 46: %%
! 47: \NeedsTeXFormat{LaTeX2e}
! 48: \ProvidesPackage{flushend}[1997/10/01]
! 49: \newbox\@aaa
! 50: \newbox\@ccc
! 51: \@ifundefined{@viper}{\newbox\@viper}{}
! 52: \@ifundefined{hold@viper}{\newbox\hold@viper}{}
! 53: \newtoks\atColsBreak \atColsBreak={}
! 54: \newdimen\@extra@skip \@extra@skip\z@
! 55: \newdimen\@nd@page@rule \@nd@page@rule\z@
! 56: \def\last@outputdblcol{%
! 57: \if@firstcolumn
! 58: \global \@firstcolumnfalse
! 59: \global \setbox\@leftcolumn \box\@outputbox
! 60: \else
! 61: \global \@firstcolumntrue
! 62: \if@lastpage
! 63: \@tempdima\ht\@leftcolumn
! 64: \splittopskip\topskip\splitmaxdepth\maxdepth
! 65: \setbox\@tempboxa\vbox{%
! 66: \unvbox\@leftcolumn\setbox0\lastbox\unskip%
! 67: \the\atColsBreak%
! 68: \unvbox\@outputbox\setbox0\lastbox\unskip}%
! 69: \@tempdimb .5\ht\@tempboxa%
! 70: \loop
! 71: \setbox\@aaa\copy\@tempboxa%
! 72: \setbox\@ccc\vbox to\@tempdimb{%
! 73: \vsplit\@aaa to\@tempdimb\vss%
! 74: \vsplit\@aaa to\@tempdimb}%
! 75: \wlog{Extra height:\the\ht\@aaa\space when \the\@tempdimb}%
! 76: \ifvoid\@aaa \else \advance\@tempdimb 1pt \repeat%
! 77: \loop
! 78: \setbox\@aaa\copy\@tempboxa%
! 79: \setbox\@ccc\vbox to\@tempdimb{%
! 80: \vsplit\@aaa to\@tempdimb\vss}%
! 81: \wlog{(2)Left:\the\ht\@ccc\space
! 82: Right:\the\ht\@aaa\space Output:\the\@tempdimb}%
! 83: \ifdim \ht\@ccc<\ht\@aaa \@tempdimb \the\ht\@aaa \repeat%
! 84: \wlog{- LAST -^^J
! 85: Extra skip:\the\@extra@skip^^J
! 86: Left:\the\ht\@ccc^^JRight:\the\ht\@aaa^^J
! 87: Output:\the\@tempdimb}%
! 88: \setbox\@ccc\vbox to\@tempdimb{%
! 89: \vsplit\@tempboxa to\@tempdimb\vss}%
! 90: \setbox\@leftcolumn\vbox to\@tempdima{%
! 91: \vbox to\@tempdimb{\unvbox\@ccc}%
! 92: \hrule\@height\@nd@page@rule%
! 93: \vss}%
! 94: \setbox\@outputbox\vbox to\@tempdima{%
! 95: \vbox to\@tempdimb{\unvbox\@tempboxa\vfilneg%
! 96: \vskip\@extra@skip}%
! 97: \hrule\@height\@nd@page@rule%
! 98: \vss}%
! 99: \setbox\@outputbox \vbox {%
! 100: \hb@xt@\textwidth {%
! 101: \hb@xt@\columnwidth {%
! 102: \box\@leftcolumn \hss}%
! 103: \hfil
! 104: \vrule \@width\columnseprule
! 105: \hfil
! 106: \hb@xt@\columnwidth {%
! 107: \box\@outputbox \hss}%
! 108: }%
! 109: }%
! 110: \else
! 111: \setbox\@outputbox \vbox {%
! 112: \hb@xt@\textwidth {%
! 113: \hb@xt@\columnwidth {%
! 114: \box\@leftcolumn \hss}%
! 115: \hfil
! 116: \vrule \@width\columnseprule
! 117: \hfil
! 118: \hb@xt@\columnwidth {%
! 119: \box\@outputbox \hss}%
! 120: }%
! 121: }%
! 122: \fi
! 123: \ifvoid\hold@viper
! 124: \else
! 125: \setbox\@outputbox \vbox{\box\hold@viper\box\@outputbox}%
! 126: \fi
! 127: \@combinedblfloats
! 128: \@outputpage
! 129: \begingroup
! 130: \@dblfloatplacement
! 131: \@startdblcolumn
! 132: \@whilesw\if@fcolmade \fi
! 133: {\@outputpage
! 134: \@startdblcolumn}%
! 135: \ifvoid\@viper
! 136: \else
! 137: \global\setbox\@viper\vbox{%
! 138: \vskip-\stripsep\unvbox\@viper}\@viperoutput
! 139: \fi
! 140: \endgroup
! 141: \fi
! 142: }
! 143: \let\prev@enddocument\enddocument
! 144: \newif\if@lastpage \@lastpagefalse
! 145: \def\enddocument{%
! 146: \global\@lastpagetrue%
! 147: \let\@outputdblcol\last@outputdblcol%
! 148: \prev@enddocument%
! 149: }
! 150: \def\raggedend{%
! 151: \global\let\enddocument\prev@enddocument%
! 152: }
! 153: \def\flushend{%
! 154: \gdef\enddocument{%
! 155: \global\@lastpagetrue%
! 156: \let\@outputdblcol\last@outputdblcol%
! 157: \prev@enddocument%
! 158: }
! 159: }
! 160: \def\showcolsendrule{\global\@nd@page@rule=.4pt}
! 161: \endinput
! 162: %%
! 163: %% End of file `flushend.sty'.
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>