diff options
Diffstat (limited to 'Master/texmf-dist/tex/latex/sttools/cuted.sty')
-rw-r--r-- | Master/texmf-dist/tex/latex/sttools/cuted.sty | 1016 |
1 files changed, 565 insertions, 451 deletions
diff --git a/Master/texmf-dist/tex/latex/sttools/cuted.sty b/Master/texmf-dist/tex/latex/sttools/cuted.sty index 972720acffb..86ca9ae9b73 100644 --- a/Master/texmf-dist/tex/latex/sttools/cuted.sty +++ b/Master/texmf-dist/tex/latex/sttools/cuted.sty @@ -6,9 +6,8 @@ %% %% cuted.dtx (with options: `package') %% -%% Copyright (C) 1997-2012 by Sigitas Tolu\v{s}is <sigitas@vtex.lt> -%% VTeX Ltd., Akademijos 4, Vilnius, Lithuania -%% http://www.vtex.lt/tex/download/macros/ +%% Copyright (C) 1997-2021 by Sigitas Tolu\v{s}is <sigitas@vtex.lt> +%% UAB VTeX, Mokslininkų 2A, LT-08412 Vilnius, Lithuania %% -------------------------------------------------------------------------- %% This work may be distributed and/or modified under the %% conditions of the LaTeX Project Public License, either version 1.3 @@ -22,419 +21,527 @@ %% \NeedsTeXFormat{LaTeX2e}[1999/12/01] \ProvidesPackage{cuted} - [2012/10/04 v1.5 Mixing onecolumn and twocolumn modes] -\def\on@stripcols@break{\hbox{}} -\DeclareOption{unskipbreak}{\gdef\on@stripcols@break{\unskip}} -\newif\if@flushend@auto@baselineskip -\DeclareOption{autobase}{\global\@flushend@auto@baselineskiptrue} + [2021/10/04 v2.0 Mixing onecolumn and twocolumn modes] + +\newif\if@right@column@spread \@right@column@spreadtrue +\newif\if@right@column@shrink \@right@column@shrinktrue +\newif\if@left@column@spread \@left@column@spreadtrue +\newif\if@left@column@shrink \@left@column@shrinktrue +\newif\ifcuted@@debug \cuted@@debugfalse + +\DeclareOption{spread}{% + \global\@left@column@spreadtrue + \global\@right@column@spreadtrue + } +\DeclareOption{nospread}{% + \global\@left@column@spreadfalse + \global\@right@column@spreadfalse + } +\DeclareOption{lspread}{\global\@left@column@spreadtrue} +\DeclareOption{nolspread}{\global\@left@column@spreadfalse} +\DeclareOption{rspread}{\global\@right@column@spreadtrue} +\DeclareOption{norspread}{\global\@right@column@spreadfalse} + +\DeclareOption{shrink}{% + \global\@left@column@shrinktrue + \global\@right@column@shrinktrue + } +\DeclareOption{noshrink}{% + \global\@left@column@shrinkfalse + \global\@right@column@shrinkfalse + } +\DeclareOption{lshrink}{\global\@left@column@shrinktrue} +\DeclareOption{nolshrink}{\global\@left@column@shrinkfalse} +\DeclareOption{rshrink}{\global\@right@column@shrinktrue} +\DeclareOption{norshrink}{\global\@right@column@shrinkfalse} + +\DeclareOption{debug}{\global\cuted@@debugtrue} +\DeclareOption{nodebug}{\global\cutted@@debugfalse} + \ProcessOptions +\newif\if@lastviper \@lastviperfalse \newtoks\At@ViperColsBreak \At@ViperColsBreak{} +\newtoks\preCutedStrip \preCutedStrip{} +\newtoks\postCutedStrip \postCutedStrip{} +\newbox\cuted@@tempbox@a +\newbox\cuted@@tempbox@c +\newbox\cuted@@tempbox@var +\@ifundefined{hold@viper} + {\newbox\hold@viper}{} +\@ifundefined{@viper} + {\newbox\@viper}{} +\newbox\cuted@@varbox@a +\newbox\cuted@@varbox@c +\newdimen\cuted@@tempdim@spread +\newdimen\cuted@@tempdim@a +\newdimen\cuted@@tempdim@b +\newdimen\ht@hold@viper +\newdimen\ht@viper +\newdimen\var@@pagediscards@ht \var@@pagediscards@ht=\z@ +\@ifundefined{stripsep} + {\newskip\stripsep \stripsep 15\p@ plus 2\p@ minus 2\p@}{} +\newcount\viper@penalty +\mathchardef\@Mv=10005 +\def\cuted@@column@badness{101} +\def\cuted@@page@rule{\z@} +\savingvdiscards=\@ne + +\def\cuted@@wlog@debug#1{\ifcuted@@debug \wlog{#1}\fi} + +\def\set@split@topskip@to#1{% + \splittopskip=#1\relax + \vfuzz=\maxdimen + \vbadness=\maxdimen + } + \def\oldcolsbreak#1{\global\At@ViperColsBreak{#1}} -\def\viper@top@hook{\splittopskip0pt plus 2pt} -\newbox\v@aaa -\newbox\v@ccc -\@ifundefined{lastskip@a}{\newskip\lastskip@a}{} -\@ifundefined{lastskip@b}{\newskip\lastskip@b}{} -\@ifundefined{lastskip@d}{\newskip\lastskip@d}{} -\@ifundefined{lastbox@a}{\newbox\lastbox@a}{} -\@ifundefined{stripsep}{\newskip\stripsep \stripsep 15pt plus 2pt minus 2pt}{} +\def\on@stripcols@break{% + %% + %% adds original vertical page break skip + %% + \begingroup + \setbox\cuted@@tempbox@var\vbox{\pagediscards}% + \ifvoid\cuted@@tempbox@var + \else + \global\var@@pagediscards@ht=\ht\cuted@@tempbox@var + \global\advance\var@@pagediscards@ht by\dp\cuted@@tempbox@var + \fi + \endgroup + \ifdim\var@@pagediscards@ht=\z@ + \else + \vskip\var@@pagediscards@ht + \fi + } -\@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 + \if@firstcolumn + \global\@firstcolumnfalse + \global\setbox\@leftcolumn\copy\@outputbox + \splitmaxdepth\maxdimen + \vbadness\maxdimen + \setbox\@outputbox\vbox{\unvbox\@outputbox\unskip}% + \setbox\@outputbox\vsplit\@outputbox to\maxdimen + \toks@\expandafter{\topmark}% + \xdef\@firstcoltopmark{\the\toks@}% + \toks@\expandafter{\splitfirstmark}% + \xdef\@firstcolfirstmark{\the\toks@}% + \ifx\@firstcolfirstmark\@empty + \global\let\@setmarks\relax + \else + \gdef\@setmarks{% + \let\firstmark\@firstcolfirstmark + \let\topmark\@firstcoltopmark + }% + \fi \else - \setbox\@outputbox \vbox to\textheight{% - \box\hold@viper - \box\@outputbox - \vss - }% + \global\@firstcolumntrue + \setbox\@outputbox\vbox{% + \hb@xt@\textwidth{% + \hb@xt@\columnwidth{\box\@leftcolumn \hss}% + \hfil + {\normalcolor\vrule \@width\columnseprule}% + \hfil + \hb@xt@\columnwidth{\box\@outputbox \hss}% + }% + }% + \ifvoid\hold@viper + \else + \setbox\@outputbox\vbox to\textheight{% + \box\hold@viper + \box\@outputbox + \vss + }% + \fi + \@combinedblfloats + \@setmarks + \@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 - \@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% + \ifinner + \@parmoderr + \viper@penalty\z@ + \else + \viper@penalty=-\@Mv + \fi + \global\setbox\@viper\vbox\bgroup \hsize\textwidth \@parboxrestore - \col@number \@ne + \col@number=\@ne \vrule height\topskip width\z@ depth\z@ - } + } \def\endstrip{% \egroup - \ifnum\viper@penalty <-\@Mii - \penalty -\@Miv - \ifvmode - \@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 - \else - \par - \penalty-\@Mv\relax - \noindent - \fi + \ifnum\viper@penalty<-\@Mii + \penalty-\@Miv + \ifvmode + \@tempdima\prevdepth + \vbox{}% + \prevdepth\@tempdima + \penalty-\@Mv\relax + \else + \par + \penalty-\@Mv + \noindent + \fi \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 - } + \global\setbox\@holdpg\vbox{% + \unvbox\@holdpg + \unvbox\@cclv + \setbox\@tempboxa\lastbox + \unskip + }% + \@pagedp=\dp\@holdpg + \@pageht=\ht\@holdpg + \ifvoid\@viper + \else + \advance\@pageht by\@pagedp + \ifvoid\footins + \else + \advance\@pageht by\ht\footins + \advance\@pageht by\skip\footins + \advance\@pageht by\dp\footins + \fi + \ifvbox\@kludgeins + \ifdim\wd\@kludgeins=\z@ + \advance\@pageht by\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=-\@Mv - \@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 + \ifnum\outputpenalty>-\@Mii + \@doclearpage + \else + \ifnum\outputpenalty<-\@Miii + \ifnum\outputpenalty<-\@MM \deadcycles \z@ \fi + \ifnum\outputpenalty=-\@Mv + \@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 by\ht\footins + \advance\@pageht by\skip\footins + \advance\@pageht by\dp\footins + \fi + \ifvbox\@kludgeins + \ifdim\wd\@kludgeins=\z@ + \advance\@pageht by\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{\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@ +\def\@addviper{% + \@insertfalse + \def\var@@thecol@num{2}% + \if@firstcolumn + \def\var@@thecol@num{1}% + \@reqcolroom=.5\@pageht + \ht@viper=\@reqcolroom + \advance\@reqcolroom by\ht\@viper + \advance\@reqcolroom by\stripsep + \else + \@reqcolroom=\@colht + \advance\@reqcolroom by\@pageht + \ht@viper.5\@reqcolroom + \@reqcolroom=\ht@viper + \advance\@reqcolroom by\ht\@viper + \advance\@reqcolroom by\stripsep + \global\setbox\@holdpg\vbox{% + \setbox\cuted@@tempbox@a\vbox{% + \aftergroup\unvbox + \unvcopy\@leftcolumn + \unskip\unkern\unpenalty + \setbox\@tempboxa\lastbox + \ifdim\dimexpr\ht\@tempboxa+\wd\@tempboxa+\dp\@tempboxa>\z@ + %% keeps lastbox + \aftergroup\@leftcolumn + \else + %% removes lastbox + \aftergroup\cuted@@tempbox@a + \fi + }% + \unskip\unkern\unpenalty + \on@stripcols@break + \the\At@ViperColsBreak + \unvbox\@holdpg + }% + \global\At@ViperColsBreak{}% + \ht@viper=.5\ht\@holdpg + \ifdim\ht@viper>\@colht + \ht@viper=\@colht + \fi + \fi + %% + %% calculations for breaking + %% + \ifvoid\hold@viper + \ht@hold@viper=\z@ + \else + \ht@hold@viper=\ht\hold@viper + \fi + \cuted@@tempdim@b\ht@viper + \set@split@topskip@to\topskip + \loop + \xdef\saved@tempdimb{\the\cuted@@tempdim@b}% + \setbox\cuted@@varbox@a\copy\@holdpg + \setbox\cuted@@tempbox@a\vsplit\cuted@@varbox@a to\cuted@@tempdim@b + %% set leftcolumn boxes + \setbox\cuted@@tempbox@c\vbox{\unvbox\cuted@@tempbox@a}% + \setbox\cuted@@tempbox@a\vbox to\cuted@@tempdim@b{\unvcopy\cuted@@tempbox@c}% + \xdef\var@@leftcolumn@badness{\the\badness}% + %% set rightcolumn boxes + \setbox\cuted@@varbox@c\vbox{\unvbox\cuted@@varbox@a}% + \setbox\cuted@@varbox@a\vbox to\cuted@@tempdim@b{\unvcopy\cuted@@varbox@c}% + \xdef\var@@rightcolumn@badness{\the\badness}% + %% analyzing split goodness + \cuted@@tempdim@spread=\ht\cuted@@tempbox@c + \advance\cuted@@tempdim@spread by\dp\cuted@@tempbox@c + \advance\cuted@@tempdim@spread by-\ht\cuted@@varbox@c + \advance\cuted@@tempdim@spread by-\dp\cuted@@varbox@c + \cuted@@wlog@debug{CUTED [-----]% + ^^JLeft: \the\ht\cuted@@tempbox@c + +\the\dp\cuted@@tempbox@c\space/\var@@leftcolumn@badness + ^^JRight: \the\ht\cuted@@varbox@c + +\the\dp\cuted@@varbox@c\space/\var@@rightcolumn@badness + ^^JSplit: \the\cuted@@tempdim@b + ^^JExtra height: \the\cuted@@tempdim@spread + }% + \ifnum\var@@leftcolumn@badness<\cuted@@column@badness + \ifnum\var@@rightcolumn@badness<\cuted@@column@badness + \cuted@@tempdim@spread=\z@ + \fi + \fi + \ifdim\cuted@@tempdim@spread<\z@ + \if@left@column@spread + \if@right@column@shrink + \ifdim\dimexpr\cuted@@tempdim@spread+\pageshrink>\z@ + \cuted@@tempdim@a=\dimexpr\ht\cuted@@tempbox@c-0.5\cuted@@tempdim@spread\relax + \else + \cuted@@tempdim@a=-\dimexpr\cuted@@tempdim@spread+.5\pageshrink\relax + \fi + \setbox\cuted@@varbox@a\vbox to\cuted@@tempdim@a{\unvcopy\cuted@@tempbox@c}% + \ifnum\badness<\cuted@@column@badness + \cuted@@tempdim@b=\cuted@@tempdim@a + \cuted@@tempdim@spread=\z@ + \fi + \cuted@@wlog@debug{CUTED [leftcolumn badness]: \number\badness\space on \the\cuted@@tempdim@a}% + \setbox\cuted@@varbox@a\vbox to\cuted@@tempdim@a{\unvcopy\cuted@@varbox@c}% + \cuted@@wlog@debug{CUTED [rightcolumn badness]: \number\badness\space on \the\cuted@@tempdim@a}% + \else + \setbox\cuted@@varbox@a\vbox to\ht\cuted@@varbox@c{% + \unvcopy\cuted@@tempbox@c }% - \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@ + \ifnum\badness<\cuted@@column@badness + \@tempdimb=\ht\cuted@@varbox@c + \cuted@@tempdim@spread=\z@ + \fi + \cuted@@wlog@debug{CUTED [leftcolumn badness]: \number\badness on \the\ht\cuted@@varbox@c}% + \setbox\cuted@@varbox@a\vbox to\ht\cuted@@varbox@c{% + \unvcopy\cuted@@varbox@c }% - \@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 + \cuted@@wlog@debug{CUTED [rightcolumn badness]: \number\badness on \the\ht\cuted@@varbox@c}% + \fi + \else + \if@right@column@shrink + \ifdim\dimexpr\cuted@@tempdim@spread+\pageshrink<\z@ + \else + \cuted@@tempdim@b=\ht\cuted@@tempbox@c + \cuted@@tempdim@spread=\z@ + \fi + \fi + \fi + \else + \ifdim\cuted@@tempdim@spread>\z@ + \ifdim\dimexpr\@tempdimb+\p@\relax>\@colht + \cuted@@tempdim@b=\@colht + \cuted@@tempdim@spread=\z@ + \fi + \fi + \fi + \ifdim\cuted@@tempdim@spread<\z@ + \advance\cuted@@tempdim@b 1\p@ + \repeat + \wlog{CUTED [- LAST -]% + ^^JExtra skip:\the\cuted@@tempdim@spread + ^^JLeft:\the\ht\cuted@@tempbox@c/\the\dp\cuted@@tempbox@c + ^^JRight:\the\ht\cuted@@varbox@c/\the\dp\cuted@@varbox@c + ^^JSplit: \saved@tempdimb + ^^JOutput:\the\cuted@@tempdim@b + ^^JPageshrink: \the\pageshrink + ^^JPagestretch: \the\pagestretch + ^^J@colht:\the\@colht + }% + %% + %% final construction of the cuted page above strip + %% + \setbox\cuted@@tempbox@c\vsplit\@holdpg to\saved@tempdimb + \setbox\cuted@@tempbox@a\vbox to\cuted@@tempdim@b{% + \cuted@@tempdim@a=\dimexpr + \cuted@@tempdim@b-\ht\cuted@@tempbox@c + \relax + \cuted@@tempdim@spread=\dp\cuted@@tempbox@c + \unvbox\cuted@@tempbox@c + \ifdim\cuted@@tempdim@spread>\dp\strutbox \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 + \vskip-\cuted@@tempdim@spread \fi - \fi - \else - \@insertfalse - \@reqcolroom\@colht - \advance\@reqcolroom \@pageht - \ht@viper.5\@reqcolroom - \@reqcolroom\ht@viper - \advance \@reqcolroom \ht\@viper - \advance \@reqcolroom \stripsep - \if@flushend@auto@baselineskip - \setbox\@tempboxa\vbox{\unvcopy\@leftcolumn - \global\lastskip@d\lastskip - \global\lastskip@b\lastskip - \loop - \global\lastskip@a\lastskip@b - \unskip\unpenalty - \global\lastskip@b\lastskip - \global\advance\lastskip@d by\lastskip - \ifdim\lastskip@b=-\lastskip@a - \global\advance\lastskip@d by-\lastskip - \else - \repeat - \ifdim\lastskip@b=-\lastskip@a - \ifdim\lastskip@b=\z@ - \setbox\lastbox@a\lastbox - \global\advance\lastskip@d by\ht\lastbox@a - \global\advance\lastskip@d by\lastskip - \unskip\unpenalty - \setbox\lastbox@a\lastbox - \global\advance\lastskip@d by\dp\lastbox@a + \prevdepth\z@ + \hrule\@height\cuted@@page@rule width\textwidth + \vskip-\cuted@@page@rule + \ifdim\cuted@@tempdim@a>\z@ + \if@left@column@spread \else - \global\lastskip@d\lastskip - \global\advance\lastskip@d by\topskip + \vss \fi - \fi - \global\advance\lastskip@d by-\topskip - }% - \ifdim\ht\@holdpg>\@colht - \global\setbox\@holdpg\vbox{\unvbox\@leftcolumn\unskip\unpenalty - \par\eject - \vbox to \@colht{\unvbox\@holdpg\unskip}% - }% - \else - \global\setbox\@holdpg\vbox{% - \unvbox\@leftcolumn\unskip\unpenalty - \vskip\lastskip@d - \the\At@ViperColsBreak - \unvbox\@holdpg - \unskip - }% - \fi - \else - \global\setbox\@holdpg\vbox{% - \unvbox\@leftcolumn - \setbox\@tempboxa\lastbox - \on@stripcols@break - \the\At@ViperColsBreak - \unvbox\@holdpg - }% - \fi - \global\At@ViperColsBreak{}% - \ht@viper .5\ht\@holdpg - \ifdim \ht@viper>\@colht - \ht@viper \@colht - \fi - \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 + \else + \ifdim\cuted@@tempdim@a<\z@ + \if@left@column@shrink + \else + \vss + \fi + \fi + \fi + }% + \wlog{CUTED [output]: \the\cuted@@tempdim@b + ^^JCUTED [leftcolumn badness]: \number\badness + }% + \setbox\cuted@@varbox@a\vbox to\cuted@@tempdim@b{% + \cuted@@tempdim@a=\dimexpr + \cuted@@tempdim@b-\ht\@holdpg + \relax + \unvbox\@holdpg + \ifdim\cuted@@tempdim@a>\z@ + \if@right@column@spread + \else \vss - \vsplit\v@aaa to\@tempdimb + \fi + \else + \ifdim\cuted@@tempdim@a<\z@ + \if@right@column@shrink + \else + \vss + \fi + \fi + \fi + }% + \wlog{CUTED [rightcolumn badness]: \number\badness}% + \setbox\cuted@@tempbox@var\vbox{% + \hb@xt@\textwidth{% + \hb@xt@\columnwidth{% + \vbox to\ht@viper{\box\cuted@@tempbox@a\vss}% + \hss }% - \wlog{Extra height:\the\ht\v@aaa\space when \the\@tempdimb}% - \ifvoid\v@aaa - \else - \advance\@tempdimb 1\p@ - \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{\box\v@ccc\vss} \hss}% \hfil - \vrule \@width\columnseprule + {\normalcolor\vrule \@width\columnseprule}% \hfil - \hb@xt@\columnwidth {\vbox to\ht@viper{\box\@holdpg\vss} \hss}% + \hb@xt@\columnwidth{% + \vbox to\ht@viper{\box\cuted@@varbox@a\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@ - }% + %% + %% finalize cuted page + %% + \ifvoid\hold@viper + \global\setbox\hold@viper\vbox{% + \unvbox\cuted@@tempbox@var + \penalty\interlinepenalty + \vskip\stripsep + \the\preCutedStrip + \ifnum\outputpenalty<-\@Mii + \vskip -\parskip + \fi + \outputpenalty\z@ + }% + \else + \global\setbox\hold@viper\vbox{% + \unvbox\hold@viper + \cuted@@tempbox@var + \penalty\interlinepenalty + \vskip\stripsep + \the\preCutedStrip + \ifnum\outputpenalty<-\@Mii + \vskip -\parskip + \fi + \outputpenalty\z@ + }% + \fi + \ifdim\@colht>\@reqcolroom + \global\setbox\hold@viper\vbox{% + \unvbox\hold@viper + \box\@viper + \penalty\interlinepenalty + \the\postCutedStrip + \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 + \advance\ht@hold@viper by-\ht\hold@viper + \global\advance\@colht by\ht@hold@viper + \ifdim\@colht<2.5\baselineskip \@latex@warning@no@line {Optional argument of \noexpand\twocolumn - too tall on page \thepage (2 stulpelis)}% + too tall on page \thepage (\var@@thecol@num column)}% \@emptycol \if@firstcolumn \else @@ -442,17 +549,17 @@ \fi \global\@lastvipertrue \else - \global \vsize \@colht - \global \@colroom \@colht - \check@floats - \ifdim\@tempdima>\z@ - \global\advance\@colroom by-\@tempdima + \global\vsize\@colht + \global\@colroom\@colht + \check@floats\cuted@@tempdim@a + \ifdim\cuted@@tempdim@a>\z@ + \global\advance\@colroom by-\cuted@@tempdim@a \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)}% + \global\@colroom1\p@ + \ifdim\cuted@@tempdim@a>\@colht + \@latex@warning@no@line{TOP and/or BOT FLOAT's + to large on \thepage (\var@@thecol@num column)}% \fi \@emptycol \if@firstcolumn @@ -462,73 +569,80 @@ \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 - \csname viper@top@hook\endcsname - \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 + \fi + \if@insert + \else + \advance\ht@hold@viper by-\ht\hold@viper + \global\advance\@colht by\ht@hold@viper + \global\setbox\hold@viper\vbox{% + \unvbox\hold@viper + \set@split@topskip@to{\z@ plus2\p@}% + \vsplit\@viper to\@colht + \vss + }% + \vbox{}% + \global\@firstcolumnfalse + \newpage + \fi } -\def\ht@comflelt#1{% - \setbox\@tempboxa\vbox{\copy #1\vskip\floatsep}% - \global\advance\@tempdima by\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 +\def\check@floats#1{% + \begingroup + \global#1\z@ + \def\@elt##1{% + \setbox\@tempboxa\vbox{\copy #1\vskip\floatsep}% + \global\advance##1 by\ht\@tempboxa + }% + \ifx\@toplist\@empty \else \@toplist \fi + \ifx\@botlist\@empty \else \@botlist \fi + \endgroup + } +\output{% + \let\par\@@par + \ifnum\outputpenalty<-\@M + \@specialoutput \else - \global \vsize \@colroom + \@makecol + \@opcol + \@startcolumn + \@whilesw\if@fcolmade\fi + {\@opcol \@startcolumn}% \fi - \else - \ifnum\outputpenalty<-100005 - \global \vsize \maxdimen + \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 - \global \vsize \@colroom + \ifnum\outputpenalty<-\@Mv + \global\vsize\maxdimen + \else + \global\vsize\@colroom + \fi \fi - \fi - } + } +\ifcuted@@debug + \xdef\cuted@@page@rule{.4\p@} +\else + \xdef\cuted@@page@rule{\z@} +\fi \endinput %% %% End of file `cuted.sty'. |