From 90905949da34ee02fd885fc494a50360f00e296d Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Fri, 13 Jan 2006 00:07:56 +0000 Subject: sttools git-svn-id: svn://tug.org/texlive/trunk@1351 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-dist/tex/latex/sttools/cuted.sty | 474 ++++++++++++++++++++++++++ 1 file changed, 474 insertions(+) create mode 100644 Master/texmf-dist/tex/latex/sttools/cuted.sty (limited to 'Master/texmf-dist/tex/latex/sttools/cuted.sty') diff --git a/Master/texmf-dist/tex/latex/sttools/cuted.sty b/Master/texmf-dist/tex/latex/sttools/cuted.sty new file mode 100644 index 00000000000..3b60c518455 --- /dev/null +++ b/Master/texmf-dist/tex/latex/sttools/cuted.sty @@ -0,0 +1,474 @@ +%% cuted.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: Insert some onecolumn material in full-width on double-column page. +% +% SHORT DESCRIPTION: +% +% It is denoted to place some material in full-width at any place +% on double-column page (\twocolumn mode). The part of material +% can be placed on the next page. Existing text is placed +% under inserted material in two columns (it is reformatted). +% +% Provides new environment: +% +% \begin{strip} ... \end{strip} +% ----------------------------- +% +% Puts \vbox{...} in full-width on double-column page. +% Adds \stripsep glue before and after +% (By default \stripsep=15pt plus2pt minus 2pt). +% It can be problems with floats and footnotes. In the case of +% problems with footnotes it is possible to correct the situation +% using commands \footnotemark and \footnotetext. +% +% Provides new command: +% \oldcolsbreak{#1} +% +% Adds #1 in place of original column break if strip is placed +% on the right column. +% +% \changes{1997/09/02}{improved column balancing} +% \changes{1997/09/03}{float control for \@colroom setting} +% \changes{1997/09/04}{improved \@colroom setting} +% \changes{1997/09/05}{checking for \@viper and \hold@viper} +% \changes{1997/09/09}{compatibility with flushend.sty} +% \changes{1997/09/22}{improved \output ir \@specialoutput} +% \changes{1997/10/01}{improved \output ir \@addviper} +% +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{cuted}[1997/10/01] +% +\newtoks\At@ViperColsBreak \At@ViperColsBreak{} +\def\oldcolsbreak#1{\global\At@ViperColsBreak{#1}} +\newbox\v@aaa +\newbox\v@ccc +\@ifundefined{stripsep}{\newskip\stripsep\stripsep 15pt plus 2pt minus 2pt}{} +% +\@ifundefined{@viper}{\newbox\@viper}{} +\newif\if@lastviper \@lastviperfalse +\def\@outputdblcol{% + \if@firstcolumn + \global \@firstcolumnfalse + \global \setbox\@leftcolumn \box\@outputbox + \else + \global \@firstcolumntrue + \setbox\@outputbox \vbox {% + \hb@xt@\textwidth {% + \hb@xt@\columnwidth {% + \box\@leftcolumn \hss}% + \hfil + \vrule \@width\columnseprule + \hfil + \hb@xt@\columnwidth {% + \box\@outputbox \hss}% + }% + }% + \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 +} +\mathchardef\@Mv=10005 +\newcount\viper@penalty +\def\strip{% + \ifinner + \@parmoderr\viper@penalty\z@ + \else + \viper@penalty=-\@Mv\relax + \fi + \global \setbox\@viper\vbox\bgroup% + \hsize\textwidth + \@parboxrestore + \col@number \@ne + \vrule height\topskip width0pt depth0pt +} +\def\endstrip{% + \egroup + \ifnum\viper@penalty <-\@Mii + \penalty -\@Miv + \@tempdima\prevdepth %% saving and restoring \prevdepth added + \vbox{}% %% 26 May 87 to prevent extra vertical + \prevdepth \@tempdima %% space when used in vertical mode + \penalty-\@Mv\relax + \fi +} +\gdef\@viperoutput{% + \global \setbox\@holdpg \vbox{% + \unvbox\@holdpg + \unvbox\@cclv + \setbox\@tempboxa \lastbox + \unskip + }% + \@pagedp \dp\@holdpg + \@pageht \ht\@holdpg + \ifvoid\@viper\else + \advance \@pageht \@pagedp + \ifvoid\footins \else + \advance \@pageht \ht\footins + \advance \@pageht \skip\footins + \advance \@pageht \dp\footins + \fi + \ifvbox \@kludgeins + \ifdim \wd\@kludgeins=\z@ + \advance \@pageht \ht\@kludgeins + \fi + \fi + \@reinserts + \@addviper + \fi +} +\gdef\@specialoutput{% + \ifnum \outputpenalty>-\@Mii + \@doclearpage + \else + \ifnum \outputpenalty<-\@Miii + \ifnum \outputpenalty<-\@MM \deadcycles \z@ \fi + \ifnum \outputpenalty=-10005 + \@viperoutput + \ifnum \outputpenalty<\z@ + \if@nobreak + \else + \addpenalty \interlinepenalty + \fi + \fi + \else + \global \setbox\@holdpg \vbox {\unvbox\@cclv}% + \fi + \else + \global \setbox\@holdpg \vbox{% + \unvbox\@holdpg + \unvbox\@cclv + \setbox\@tempboxa \lastbox + \unskip + }% + \@pagedp \dp\@holdpg + \@pageht \ht\@holdpg + \unvbox \@holdpg + \@next\@currbox\@currlist{% + \ifnum \count\@currbox>\z@ + \advance \@pageht \@pagedp + \ifvoid\footins \else + \advance \@pageht \ht\footins + \advance \@pageht \skip\footins + \advance \@pageht \dp\footins + \fi + \ifvbox \@kludgeins + \ifdim \wd\@kludgeins=\z@ + \advance \@pageht \ht\@kludgeins + \fi + \fi + \@reinserts + \@addtocurcol + \else + \@reinserts + \@addmarginpar + \fi + }\@latexbug + \ifnum \outputpenalty<\z@ + \if@nobreak + \else + \addpenalty \interlinepenalty + \fi + \fi + \fi + \fi +} +\@ifundefined{hold@viper}{\newbox\hold@viper}{} +\newdimen\ht@viper +\def \@addviper {% + \if@firstcolumn + \@insertfalse + \@reqcolroom .5\@pageht + \ht@viper\@reqcolroom + \advance \@reqcolroom \ht\@viper + \advance \@reqcolroom \stripsep + \ifvoid\hold@viper\@tempdima=\z@\else\@tempdima\ht\hold@viper\fi +% + \@tempdimb \ht@viper + \loop + \setbox\v@aaa\copy\@holdpg + \setbox\v@ccc\vbox to\@tempdimb{% + \vsplit\v@aaa to\@tempdimb\vss\vsplit\v@aaa to\@tempdimb}% + \wlog{Extra height:\the\ht\v@aaa\space when \the\@tempdimb}% + \ifvoid\v@aaa \else \advance\@tempdimb 1pt \repeat% + \loop + \setbox\v@aaa\copy\@holdpg + \setbox\v@ccc\vbox to\@tempdimb{% + \vsplit\v@aaa to\@tempdimb\vss}% + \wlog{(2)Left:\the\ht\v@ccc\space Right:\the\ht\v@aaa\space Output:\the\@tempdimb}% + \ifdim \ht\v@ccc<\ht\v@aaa \@tempdimb \the\ht\v@aaa \repeat% + \wlog{- LAST -^^JLeft:\the\ht\v@ccc^^JRight:\the\ht\v@aaa^^JOutput:\the\@tempdimb}% + \setbox\v@ccc\vbox to\@tempdimb{% + \vsplit\@holdpg to\@tempdimb\vss}% +% + \setbox\@tempboxa \vbox {% + \hb@xt@\textwidth {% + \hb@xt@\columnwidth {% +% \vbox to\ht@viper{\vsplit\@holdpg to\ht@viper\vss} \hss}% + \vbox to\ht@viper{\box\v@ccc\vss} \hss}% + \hfil + \vrule \@width\columnseprule + \hfil + \hb@xt@\columnwidth {% + \vbox to\ht@viper{\box\@holdpg\vss} \hss}% + }% + }% + \ifvoid\hold@viper + \global\setbox\hold@viper \vbox {% + \unvbox\@tempboxa + \penalty\interlinepenalty + \vskip\stripsep + \ifnum\outputpenalty <-\@Mii \vskip -\parskip\fi + \outputpenalty \z@ + }% + \else + \global\setbox\hold@viper \vbox {% + \unvbox\hold@viper + \unvbox\@tempboxa + \penalty\interlinepenalty + \vskip\stripsep + \ifnum\outputpenalty <-\@Mii \vskip -\parskip\fi + \outputpenalty \z@ + }% + \fi + \ifdim \@colroom>\@reqcolroom + \global\setbox\hold@viper \vbox {% + \unvbox\hold@viper + \box\@viper + \penalty\interlinepenalty + \vskip\stripsep + \ifnum\outputpenalty <-\@Mii \vskip -\parskip\fi + \outputpenalty \z@ + }% + \@inserttrue + \advance\@tempdima by-\ht\hold@viper + \global \advance \@colht \@tempdima + \ifdim \@colht<2.5\baselineskip + \@latex@warning@no@line {Optional argument of \noexpand\twocolumn + too tall on page \thepage (1 stulpelis)}% + \@emptycol + \if@firstcolumn + \else + \@emptycol + \fi + \global\@lastvipertrue + \else + \global \vsize \@colht + \global \@colroom \@colht + \check@floats + \ifdim\@tempdima>\z@ + \global\advance\@colroom by-\@tempdima + \fi + \ifdim\@colroom<\z@ + \global\@colroom 1pt + \ifdim\@tempdima>\@colht + \@latex@warning@no@line {TOP ir/ar BOT FLOAT's + netelpa lape \thepage (1 stulpelis)}% + \fi + \@emptycol + \if@firstcolumn + \else + \@emptycol + \fi + \global\@lastvipertrue + \fi + \fi + \fi + \else + \@insertfalse + \@reqcolroom\@colht + \advance\@reqcolroom \@pageht + \ht@viper.5\@reqcolroom + \@reqcolroom\ht@viper + \advance \@reqcolroom \ht\@viper + \advance \@reqcolroom \stripsep + \global\setbox\@holdpg\vbox{\unvbox\@leftcolumn + \setbox\@tempboxa\lastbox\unskip\the\At@ViperColsBreak\unvbox\@holdpg}% + \global\At@ViperColsBreak{}% + \ht@viper .5\ht\@holdpg + \ifvoid\hold@viper\@tempdima=\z@\else\@tempdima\ht\hold@viper\fi +% + \@tempdimb \ht@viper + \loop + \setbox\v@aaa\copy\@holdpg + \setbox\v@ccc\vbox to\@tempdimb{% + \vsplit\v@aaa to\@tempdimb\vss\vsplit\v@aaa to\@tempdimb}% + \wlog{Extra height:\the\ht\v@aaa\space when \the\@tempdimb}% + \ifvoid\v@aaa \else \advance\@tempdimb 1pt \repeat% + \loop + \setbox\v@aaa\copy\@holdpg + \setbox\v@ccc\vbox to\@tempdimb{% + \vsplit\v@aaa to\@tempdimb\vss}% + \wlog{(2)Left:\the\ht\v@ccc\space Right:\the\ht\v@aaa\space Output:\the\@tempdimb}% + \ifdim \ht\v@ccc<\ht\v@aaa \@tempdimb \the\ht\v@aaa \repeat% + \wlog{- LAST -^^JLeft:\the\ht\v@ccc^^JRight:\the\ht\v@aaa^^JOutput:\the\@tempdimb}% + \setbox\v@ccc\vbox to\@tempdimb{% + \vsplit\@holdpg to\@tempdimb\vss}% +% + \setbox\@tempboxa\vbox{% + \hb@xt@\textwidth {% + \hb@xt@\columnwidth {% +% \vbox to\ht@viper{\vsplit\@holdpg to \ht@viper\vss} \hss}% + \vbox to\ht@viper{\box\v@ccc\vss} \hss}% + \hfil + \vrule \@width\columnseprule + \hfil + \hb@xt@\columnwidth {% + \vbox to\ht@viper{\box\@holdpg\vss} \hss}% + }% + }% + \ifvoid\hold@viper + \global\setbox\hold@viper \vbox {% + \unvbox\@tempboxa + \penalty\interlinepenalty + \vskip\stripsep + \ifnum\outputpenalty <-\@Mii \vskip -\parskip\fi + \outputpenalty \z@ + }% + \else + \global\setbox\hold@viper \vbox {% + \unvbox\hold@viper + \unvbox\@tempboxa + \penalty\interlinepenalty + \vskip\stripsep + \ifnum\outputpenalty <-\@Mii \vskip -\parskip\fi + \outputpenalty \z@ + }% + \fi + \ifdim \@colht>\@reqcolroom + \global\setbox\hold@viper \vbox {% + \unvbox\hold@viper + \box\@viper + \penalty\interlinepenalty + \vskip\stripsep + \ifnum\outputpenalty <-\@Mii \vskip -\parskip\fi + \outputpenalty \z@ + }% + \@inserttrue + \global\@firstcolumntrue + \advance\@tempdima by-\ht\hold@viper + \global \advance \@colht \@tempdima + \ifdim \@colht<2.5\baselineskip + \@latex@warning@no@line {Optional argument of \noexpand\twocolumn + too tall on page \thepage (2 stulpelis)}% + \@emptycol + \if@firstcolumn + \else + \@emptycol + \fi + \global\@lastvipertrue + \else + \global \vsize \@colht + \global \@colroom \@colht + \check@floats + \ifdim\@tempdima>\z@ + \global\advance\@colroom by-\@tempdima + \fi + \ifdim\@colroom<\z@ + \global\@colroom 1pt + \ifdim\@tempdima>\@colht + \@latex@warning@no@line {TOP ir/ar BOT FLOAT's + netelpa lape \thepage (2 stulpelis)}% + \fi + \@emptycol + \if@firstcolumn + \else + \@emptycol + \fi + \global\@lastvipertrue + \fi + \fi + \fi + \fi + \if@insert + \else + \advance\@tempdima by-\ht\hold@viper + \global \advance \@colht \@tempdima + \global\setbox\hold@viper \vbox {% + \unvbox\hold@viper + \vsplit\@viper to \@colht + \vss + }% + \vbox{}% + \global\@firstcolumnfalse + \newpage + \fi +} + +\def \check@floats {% + \global\@tempdima\z@ + \let \@elt \ht@comflelt + \ifx \@toplist\@empty \else\@toplist \fi + \ifx \@botlist\@empty \else\@botlist \fi +} +\def\ht@comflelt#1{\setbox\@tempboxa\vbox{\copy #1\vskip\floatsep}% +\global\advance\@tempdima\ht\@tempboxa} + +\output {% + \let \par \@@par + \ifnum \outputpenalty<-\@M + \@specialoutput + \else + \@makecol + \@opcol + \@startcolumn + \@whilesw \if@fcolmade \fi + {% + \@opcol\@startcolumn}% + \fi + \ifnum \outputpenalty>-\@Miv + \ifdim \@colroom<1.5\baselineskip + \ifdim \@colroom<\textheight + \@latex@warning@no@line {Text page \thepage\space + contains only floats}% + \if@lastviper\else\@emptycol\fi + \if@twocolumn + \if@firstcolumn + \else + \@emptycol + \fi + \fi + \global\@lastviperfalse + \else + \global \vsize \@colroom + \fi + \else + \global \vsize \@colroom + \fi + \else + \ifnum\outputpenalty<-100005 + \global \vsize \maxdimen + \else + \global \vsize \@colroom + \fi + \fi +} +\endinput + + + + -- cgit v1.2.3