%%
%% This is file `cuted.sty',
%% generated with the docstrip utility.
%%
%% The original source files were:
%%
%% cuted.dtx  (with options: `package')
%% 
%% IMPORTANT NOTICE:
%% 
%% For the copyright see the source file.
%% 
%% Any modified versions of this file must be renamed
%% with new filenames distinct from cuted.sty.
%% 
%% For distribution of the original source see the terms
%% for copying and modification in the file cuted.dtx.
%% 
%% This generated file may be distributed as long as the
%% original source files, as listed above, are part of the
%% same distribution. (The sources need not necessarily be
%% in the same archive or directory.)
%% 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/
%% --------------------------------------------------------------------------
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
%% of this license or (at your option) any later version.
%% The latest version of this license is in
%%   http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
%%
%% PURPOSE:   Insert some onecolumn material in full-width on double-column page.
%%
\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}
\ProcessOptions

\newtoks\At@ViperColsBreak \At@ViperColsBreak{}
\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}{}

\@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 to\textheight{%
                             \box\hold@viper
                             \box\@outputbox
                             \vss
                             }%
    \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 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
    \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=-\@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
   \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@
                        }%
     \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
      \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
            \else
              \global\lastskip@d\lastskip
              \global\advance\lastskip@d by\topskip
            \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
                \vss
                \vsplit\v@aaa to\@tempdimb
                }%
       \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
            \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
                                       \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
    }
\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
    \else
      \global \vsize \@colroom
    \fi
  \else
    \ifnum\outputpenalty<-100005
      \global \vsize \maxdimen
    \else
      \global \vsize \@colroom
    \fi
  \fi
  }
\endinput
%%
%% End of file `cuted.sty'.
