summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex/sttools/flushend.sty
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2006-01-13 00:07:56 +0000
committerKarl Berry <karl@freefriends.org>2006-01-13 00:07:56 +0000
commit90905949da34ee02fd885fc494a50360f00e296d (patch)
tree9c0b80cfc6dd9a35a268dfe3557341e496f97611 /Master/texmf-dist/tex/latex/sttools/flushend.sty
parent6ecc8cbfd257eb7f97e87528164659d6c031ba07 (diff)
sttools
git-svn-id: svn://tug.org/texlive/trunk@1351 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex/sttools/flushend.sty')
-rw-r--r--Master/texmf-dist/tex/latex/sttools/flushend.sty141
1 files changed, 141 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/latex/sttools/flushend.sty b/Master/texmf-dist/tex/latex/sttools/flushend.sty
new file mode 100644
index 00000000000..83e3186a6c6
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/sttools/flushend.sty
@@ -0,0 +1,141 @@
+%% flushend.sty
+%% Copyright 1997 Sigitas Tolu\v sis
+%% VTeX Ltd., Akademijos 4, Vilnius, Lithuania
+%% e-mail sigitas@vtex.lt
+%% http://www.vtex.lt/tex/download/macros/
+%%
+% This program can redistributed and/or modified under the terms
+% of the LaTeX Project Public License Distributed from CTAN
+% archives in directory macros/latex/base/lppl.txt; either
+% version 1 of the License, or (at your option) any later version.
+%
+% PURPOSE: Balanced columns on last page in twocolumn mode.
+%
+% SHORT DESCRIPTION:
+%
+% \flushend (loaded by default)
+% ---------
+% Switches on column balancing at last page
+%
+% \raggedend
+% ----------
+% Switches off column balancing at last page
+%
+% \atColsBreak={#1}
+% ------------------
+% Adds #1 in place of original column break (without balancing)
+% Example: \atColsBreak{\vskip-2pt}
+%
+% \showcolsendrule
+% ----------------
+% Adds rule to the bottom of columns (just for debugging)
+%
+% P.S. To stretch right column by #1 add command \vskip-#1 just before
+% command \end{document}.
+% TO shrink right column by #1 add command \vskip#1 just before
+% command \end{document}.
+% Example: \vskip-10pt
+% \end{document}
+%
+% \changes{1997/05/16}{first version}
+% \changes{1997/09/09}{support for compatibility with cuted.sty}
+% \changes{1997/10/01}{\vipersep changed to \stripsep for compatibility with cuted.sty}
+%
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{flushend}[1997/10/01]
+%
+\newbox\@aaa
+\newbox\@ccc
+\@ifundefined{@viper}{\newbox\@viper}{}
+\@ifundefined{hold@viper}{\newbox\hold@viper}{}
+\newtoks\atColsBreak \atColsBreak={}
+\newdimen\@extra@skip \@extra@skip\z@
+\newdimen\@nd@page@rule \@nd@page@rule\z@
+\def\last@outputdblcol{%
+ \if@firstcolumn
+ \global \@firstcolumnfalse
+ \global \setbox\@leftcolumn \box\@outputbox
+ \else
+ \global \@firstcolumntrue
+ \if@lastpage
+ \@tempdima\ht\@leftcolumn
+ \splittopskip\topskip\splitmaxdepth\maxdepth
+ \setbox\@tempboxa\vbox{%
+ \unvbox\@leftcolumn\setbox0\lastbox\unskip%
+ \the\atColsBreak%
+ \unvbox\@outputbox\setbox0\lastbox\unskip}%
+ \@tempdimb .5\ht\@tempboxa%
+ \loop
+ \setbox\@aaa\copy\@tempboxa%
+ \setbox\@ccc\vbox to\@tempdimb{%
+ \vsplit\@aaa to\@tempdimb\vss\vsplit\@aaa to\@tempdimb}%
+ \wlog{Extra height:\the\ht\@aaa\space when \the\@tempdimb}%
+ \ifvoid\@aaa \else \advance\@tempdimb 1pt \repeat%
+ \loop
+ \setbox\@aaa\copy\@tempboxa%
+ \setbox\@ccc\vbox to\@tempdimb{%
+ \vsplit\@aaa to\@tempdimb\vss}%
+ \wlog{(2)Left:\the\ht\@ccc\space Right:\the\ht\@aaa\space Output:\the\@tempdimb}%
+ \ifdim \ht\@ccc<\ht\@aaa \@tempdimb \the\ht\@aaa \repeat%
+ \wlog{- LAST -^^JExtra skip:\the\@extra@skip^^JLeft:\the\ht\@ccc^^JRight:\the\ht\@aaa^^JOutput:\the\@tempdimb}%
+ \setbox\@ccc\vbox to\@tempdimb{%
+ \vsplit\@tempboxa to\@tempdimb\vss}%
+ \setbox\@leftcolumn\vbox to\@tempdima{%
+ \vbox to\@tempdimb{\unvbox\@ccc}%
+ \hrule\@height\@nd@page@rule%
+ \vss}%
+ \setbox\@outputbox\vbox to\@tempdima{%
+ \vbox to\@tempdimb{\unvbox\@tempboxa\vfilneg\vskip\@extra@skip}%
+ \hrule\@height\@nd@page@rule%
+ \vss}%
+ \setbox\@outputbox \vbox {%
+ \hb@xt@\textwidth {%
+ \hb@xt@\columnwidth {%
+ \box\@leftcolumn \hss}%
+ \hfil
+ \vrule \@width\columnseprule
+ \hfil
+ \hb@xt@\columnwidth {%
+ \box\@outputbox \hss}%
+ }%
+ }%
+ \else
+ \setbox\@outputbox \vbox {%
+ \hb@xt@\textwidth {%
+ \hb@xt@\columnwidth {%
+ \box\@leftcolumn \hss}%
+ \hfil
+ \vrule \@width\columnseprule
+ \hfil
+ \hb@xt@\columnwidth {%
+ \box\@outputbox \hss}%
+ }%
+ }%
+ \fi
+ \ifvoid\hold@viper
+ \else
+ \setbox\@outputbox \vbox{\box\hold@viper\box\@outputbox}%
+ \fi
+ \@combinedblfloats
+ \@outputpage
+ \begingroup
+ \@dblfloatplacement
+ \@startdblcolumn
+ \@whilesw\if@fcolmade \fi
+ {\@outputpage
+ \@startdblcolumn}%
+ \ifvoid\@viper
+ \else
+ \global\setbox\@viper\vbox{%
+ \vskip-\stripsep\unvbox\@viper}\@viperoutput
+ \fi
+ \endgroup
+ \fi
+}
+\let\prev@enddocument\enddocument
+\newif\if@lastpage \@lastpagefalse
+\def\enddocument{\global\@lastpagetrue\let\@outputdblcol\last@outputdblcol\prev@enddocument}
+\def\raggedend{\global\let\enddocument\prev@enddocument}
+\def\flushend{\gdef\enddocument{\global\@lastpagetrue\let\@outputdblcol\last@outputdblcol\prev@enddocument}}
+\def\showcolsendrule{\global\@nd@page@rule=.4pt}
+\endinput