summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2011-09-17 23:01:07 +0000
committerKarl Berry <karl@freefriends.org>2011-09-17 23:01:07 +0000
commitf12dd7727abc99394ce4f9a397a6929c341bdb67 (patch)
treef318964040ba0e58593c842de37f329ec46c49b9 /Master/texmf-dist/tex/latex
parent4c3d942ca695f11236ecee35e9ac3cbe3c28d452 (diff)
new latex package paracol (17sep11)
git-svn-id: svn://tug.org/texlive/trunk@23995 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex')
-rw-r--r--Master/texmf-dist/tex/latex/paracol/paracol.sty795
1 files changed, 795 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/latex/paracol/paracol.sty b/Master/texmf-dist/tex/latex/paracol/paracol.sty
new file mode 100644
index 00000000000..3239839b8ba
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/paracol/paracol.sty
@@ -0,0 +1,795 @@
+% Style file `paracol
+% Copyright (C) 2005-2011
+% Hiroshi Nakashima <h.nakashima@DOMAIN; DOMAIN=media.kyoto-u.ac.jp>
+% (Kyoto University)
+% This program can be 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 any later version.
+
+\NeedsTeXFormat{LaTeX2e}[1994/12/01]
+\ProvidesPackage{paracol}[2011/09/16 v0.91 ]
+
+\newcount\pcol@currcol
+\newcount\pcol@nextcol
+\newcount\pcol@ncol
+\newcount\pcol@page
+\newcount\pcol@maxpage
+\newcount\pcol@basepage
+\newif\ifpcol@textonly
+\newif\ifpcol@sync
+\newif\ifpcol@clear
+\newif\ifpcol@stopoutput
+\newdimen\pcol@prevdepth
+\newdimen\pcol@colht
+\newskip\pcol@topskip
+
+\def\pcol@output{\let\par\@@par
+ \ifnum\outputpenalty<-\@M
+ \pcol@specialoutput
+ \else
+ \@makecol
+ \pcol@opcol
+ \pcol@startcolumn
+ \@whilesw\if@fcolmade\fi{\pcol@opcol \pcol@startcolumn}%
+ \fi
+ \ifnum\outputpenalty>-\@Miv
+ \ifdim\@colroom<1.5\baselineskip
+ \ifdim\@colroom<\textheight
+ \@latex@warning@no@line{Text page \thepage\space
+ contains only floats}%
+ \@emptycol
+ \else
+ \global\vsize\@colroom
+ \fi
+ \else
+ \global\vsize\@colroom
+ \fi
+ \else
+ \global\vsize\maxdimen
+ \fi}
+
+
+
+\def\pcol@ovf{%
+ \PackageError{paracol}{Too many unprocessed columns/floats}\@ehb}
+\def\pcol@opcol{%
+ \@next\@currbox\@freelist{\global\setbox\@currbox\box\@outputbox}\pcol@ovf
+ \expandafter\@cons\csname pcol@shipped\number\pcol@currcol\endcsname\@currbox
+ \ifnum\pcol@currcol=\z@ \pcol@setpageno \fi
+ \pcol@nextpage
+ \pcol@checkshipped
+ \if@tempswa \pcol@outputpage\z@ \fi
+ \global\@colht\textheight
+ \ifnum\pcol@page>\pcol@maxpage \pcol@startpage
+ \else \pcol@getcurrpage
+ \fi
+ \pcol@floatplacement}
+
+\def\pcol@checkshipped{\@tempswatrue
+ \@tempcnta\z@ \@whilenum\@tempcnta<\pcol@ncol\do{%
+ \expandafter\ifx\csname pcol@shipped\number\@tempcnta\endcsname\@empty
+ \@tempswafalse \fi
+ \advance\@tempcnta\@ne}}
+
+\def\pcol@getcurrpinfo#1{%
+ \edef#1{\expandafter\@cdr\pcol@currpage\@nil}%
+ \pcol@getpinfo#1}
+
+\def\pcol@setpageno{\begingroup
+ \@tempcnta\pcol@page \advance\@tempcnta-\pcol@basepage
+ \edef\reserved@a{\pcol@pages\pcol@currpage}%
+ \global\let\pcol@pages\@empty \global\let\pcol@currpage\@empty
+ \let\@elt\pcol@setpnoelt \reserved@a
+ \endgroup}
+\def\pcol@setpnoelt#1{%
+ {\let\@elt\relax \xdef\pcol@pages{\pcol@pages\pcol@currpage}}%
+ \pcol@textonlytrue
+ \ifnum#1<\z@ \gdef\pcol@currpage{\@elt{#1}}%
+ \else\ifnum#1>\@cclv \gdef\pcol@currpage{\@elt{#1}}%
+ \else \gdef\pcol@currpage{\@elt#1}\pcol@textonlyfalse
+ \fi\fi
+ \ifnum\@tempcnta>\z@\else
+ \ifpcol@textonly \pcol@settextpage
+ \else \global\count#1\c@page
+ \fi
+ \advance\c@page\@ne
+ \fi
+ \advance\@tempcnta\m@ne}
+\def\pcol@nextpage{\begingroup
+ \@tempcnta\pcol@page \advance\@tempcnta-\pcol@basepage
+ \@tempswatrue
+ \let\@elt\pcol@nextpelt \pcol@pages\pcol@currpage
+ \global\advance\pcol@page\@ne
+ \endgroup}
+\def\pcol@nextpelt#1{%
+ \ifnum\@tempcnta<\z@
+ \ifnum#1<\z@ \@tempswafalse
+ \else\ifnum#1>\@cclv \@tempswafalse
+ \else\ifdim\dimen#1<\z@
+ \if@tempswa \global\advance\pcol@page\@ne \fi
+ \else \@tempswafalse
+ \fi\fi\fi
+ \fi
+ \advance\@tempcnta\m@ne}
+\def\pcol@getcurrpage{\begingroup
+ \@tempcnta\pcol@page \advance\@tempcnta-\pcol@basepage
+ \let\@elt\pcol@getpelt \pcol@pages\pcol@currpage
+ \endgroup}
+\def\pcol@getpelt#1{%
+ \ifnum\@tempcnta=\z@
+ \pcol@getpinfo{#1}{\global\c@page}{\global\@colht}{\global\topskip}\fi
+ \advance\@tempcnta\m@ne}
+
+\def\pcol@getpinfo#1#2#3#4{\count@#1\relax \pcol@textonlytrue
+ \ifnum\count@>\@cclv
+ \advance\count@-\@cclvi #2\count@ #3\textheight #4\pcol@topskip
+ \else\ifnum\count@<\z@
+ #2\count@ #3\textheight #4\pcol@topskip
+ \else #2\count\count@ #3\dimen\count@ #4\skip\count@ \pcol@textonlyfalse
+ \fi\fi}
+\def\pcol@settextpage{\begingroup
+ \@tempcnta\c@page
+ \ifnum\@tempcnta<\z@\else \advance\@tempcnta\@cclvi \fi
+ \let\@elt\relax \xdef\pcol@currpage{\@elt{\number\@tempcnta}}
+ \endgroup}
+
+\def\pcol@startpage{%
+ \global\pcol@maxpage\pcol@page
+ \ifx\pcol@currpage\@empty\else
+ \pcol@getcurrpinfo\@currbox{\global\c@page}\@tempdima\@tempskipa
+ \stepcounter{page}%
+ \fi
+ \global\@colht\textheight
+ \global\topskip\pcol@topskip
+ \xdef\pcol@pages{\pcol@pages\pcol@currpage}%
+ \@dblfloatplacement
+ \@tryfcolumn\@dbldeferlist
+ \@whilesw\if@fcolmade\fi{%
+ \@next\@currbox\@freelist{%
+ \global\setbox\@currbox\box\@outputbox}\pcol@ovf
+ \global\count\@currbox\c@page
+ \global\dimen\@currbox-\maxdimen
+ \global\skip\@currbox\pcol@topskip
+ \@cons\pcol@pages\@currbox
+ \stepcounter{page}%
+ \global\advance\pcol@page\@ne \global\pcol@maxpage\pcol@page
+ \@tryfcolumn\@dbldeferlist}%
+ \begingroup
+ \let\reserved@b\@dbldeferlist
+ \global\let\@dbldeferlist\@empty
+ \let\@elt\@sdblcolelt
+ \reserved@b
+ \endgroup
+ \ifx\@dbltoplist\@empty
+ \pcol@settextpage
+ \else
+ \setbox\@tempboxa\vbox{}%
+ \begingroup
+ \let\@elt\@comdblflelt
+ \@dbltoplist
+ \let\@elt\relax
+ \xdef\@freelist{\@freelist\@dbltoplist}%
+ \global\let\@dbltoplist\@empty
+ \@next\@currbox\@freelist{%
+ \global\setbox\@currbox\vbox{%
+ \unvbox\@tempboxa \vskip-\dblfloatsep \dblfigrule
+ \vskip\dbltextfloatsep}}%
+ \pcol@ovf
+ \global\count\@currbox\c@page
+ \global\dimen\@currbox\@colht
+ \global\skip\@currbox\pcol@topskip
+ \xdef\pcol@currpage{\@elt\@currbox}%
+ \endgroup
+ \fi
+}
+
+
+\def\pcol@outputpage#1{\begingroup
+ \def\@elt{\pcol@outputelt#1}\@tempswatrue \pcol@stopoutputfalse
+ \let\reserved@b\pcol@pages \gdef\pcol@pages{}%
+ \reserved@b
+ \endgroup}
+\def\pcol@outputelt#1#2{%
+ \setbox\@outputbox\box\voidb@x
+ \def\@currbox{#2}%
+ \pcol@getpinfo\@currbox\c@page\@tempdima\@tempskipa
+ \ifdim\@tempdima<\z@
+ \ifpcol@stopoutput
+ \@cons\pcol@pages\@currbox
+ \else
+ \setbox\@outputbox\box\@currbox
+ \@cons\@freelist\@currbox
+ \fi
+ \else\if@tempswa
+ \ifnum#1=\z@ \@tempswafalse \fi
+ \setbox\@outputbox\vbox to\textheight{%
+ \ifpcol@textonly\else
+ \@cons\@freelist\@currbox
+ \unvbox\@currbox
+ \fi
+ \hb@xt@\textwidth{%
+ \let\pcol@hfil\relax
+ \@tempcnta\z@ \@whilenum\@tempcnta<\pcol@ncol\do{%
+ \expandafter\@next\expandafter\@currbox
+ \csname pcol@shipped\number\@tempcnta\endcsname
+ \relax{\let\@currbox\voidb@x}%
+ \ifvoid\@currbox\else \@cons\@freelist\@currbox \fi
+ \pcol@hfil \hb@xt@\columnwidth{\box\@currbox\hss}%
+ \let\pcol@hfil\hfil
+ \advance\@tempcnta\@ne}}}%
+ \else
+ \pcol@stopoutputtrue
+ \ifpcol@textonly
+ \@cons\pcol@pages{{\@currbox}}
+ \else
+ \@cons\pcol@pages\@currbox
+ \fi
+ \fi\fi
+ \ifvoid\@outputbox\else
+ \@outputpage \global\advance\pcol@basepage\@ne
+ \fi}
+
+\def\pcol@startcolumn{%
+ \global\@colroom\@colht
+ \@tryfcolumn\@deferlist
+ \if@fcolmade\else \pcol@trynextcolumn \fi
+}
+\def\pcol@trynextcolumn{\begingroup
+ \let\reserved@b\@deferlist
+ \global\let\@deferlist\@empty
+ \let\@elt\@scolelt
+ \reserved@b
+ \endgroup}
+
+
+
+\let\pcol@latex@specialoutput\@specialoutput
+\def\pcol@op@start{-10010}
+\def\pcol@op@switch{-10011}
+\def\pcol@op@flush{-10012}
+\def\pcol@op@clear{-10013}
+\def\pcol@op@end{-10014}
+\def\pcol@specialoutput{%
+ \ifnum\outputpenalty=\pcol@op@start\relax
+ \let\reserved@a\pcol@output@start
+ \else\ifnum\outputpenalty=\pcol@op@switch\relax
+ \let\reserved@a\pcol@output@switch
+ \else\ifnum\outputpenalty=\pcol@op@flush\relax
+ \let\reserved@a\pcol@output@flush
+ \else\ifnum\outputpenalty=\pcol@op@clear\relax
+ \let\reserved@a\pcol@output@clear
+ \else\ifnum\outputpenalty=\pcol@op@end\relax
+ \let\reserved@a\pcol@output@end
+ \else \let\reserved@a\pcol@latex@specialoutput
+ \fi\fi\fi\fi\fi
+ \ifx\reserved@a\pcol@latex@specialoutput\else
+ \global\setbox\@holdpg\vbox{\unvbox\@holdpg \unvbox\@cclv
+ \setbox\@tempboxa\lastbox \unskip}%
+ \outputpenalty-\@M
+ \fi
+ \reserved@a}
+
+\def\pcol@output@start{%
+ \pcol@makenormalcol
+ \global\advance\@colht-\ht\@outputbox
+ \global\advance\@colht-\dp\@outputbox
+ \global\@colroom\@colht
+ \@next\@currbox\@freelist{\global\setbox\@currbox\box\@outputbox}\pcol@ovf
+ \global\count\@currbox\c@page \global\dimen\@currbox\@colht
+ \@tempdima\dp\@currbox \@tempskipa\z@
+ \ifdim\ht\@currbox=\z@ \ifdim\dp\@currbox=\z@
+ \@tempskipa\topskip
+ \fi\fi
+ \global\skip\@currbox\@tempskipa \global\topskip\@tempskipa
+ \xdef\pcol@currpage{\@elt\@currbox}\global\let\pcol@pages\@empty
+ \global\pcol@page\z@ \global\pcol@maxpage\z@ \global\pcol@basepage\z@
+ \global\let\@dbldeferlist\@deferlist
+ \global\let\@deferlist\@empty
+ \pcol@floatplacement
+% may fix begin
+ \pcol@currcol\z@ \@whilenum\pcol@currcol<\pcol@ncol\do{%
+ \@next\@currbox\@freelist{\global\setbox\@currbox\vbox{%
+ \ifdim\topskip=\z@ \hrule\@height\z@\@width\z@
+% \kern-\@tempdima
+ \fi}}
+% may fix end
+ \pcol@ovf
+ \pcol@setcurrcolnf
+ \global\count\@currbox\z@
+ \global\dimen\@currbox\@colroom
+ \advance\pcol@currcol\@ne}%
+ \global\pcol@currcol\z@
+ \pcol@getcurrcol
+ \@cons\@freelist\@currbox
+ \unvbox\@currbox}
+
+\def\pcol@makenormalcol{%
+ \ifvoid\footins \setbox\@outputbox\box\@holdpg
+ \else
+ \setbox\@outputbox\vbox{
+ \boxmaxdepth\@maxdepth
+ \unvbox\@holdpg
+ \vskip\skip\footins
+ \color@begingroup
+ \normalcolor
+ \footnoterule
+ \unvbox\footins
+ \color@endgroup}%
+ \fi
+ \let\@elt\relax
+ \xdef\@freelist{\@freelist\@midlist}%
+ \global\let\@midlist\@empty
+ \@combinefloats}
+
+\def\pcol@floatplacement{%
+ \global\@mparbottom\z@ \global\@textfloatsheight\z@
+ \@floatplacement}
+
+
+
+\def\pcol@output@switch{%
+ \@next\@currbox\@freelist{\global\setbox\@currbox\box\@holdpg}\pcol@ovf
+ \ifvoid\footins
+ \def\pcol@currfoot{\voidb@x}%
+ \else
+ \@next\pcol@currfoot\@freelist{%
+ \global\setbox\pcol@currfoot\box\footins
+ \global\count\pcol@currfoot\count\footins
+ \global\dimen\pcol@currfoot\dimen\footins
+ \global\skip\pcol@currfoot\skip\footins}\pcol@ovf
+ \fi
+ \ifnum\pcol@currcol=\z@ \pcol@setpageno \fi
+ \pcol@setcurrcol
+ \global\count\@currbox\pcol@page
+ \global\dimen\@currbox\@colroom
+ \@tempswafalse
+ \ifpcol@sync
+ \@tempswatrue
+ \if@nobreak
+ \@temptokena\everypar
+ \pcol@currcol\z@ \@whilenum\pcol@currcol<\pcol@ncol\do{%
+ \pcol@getcurrcol \@nobreaktrue
+ \everypar\@temptokena
+ \pcol@setcurrcol
+ \advance\pcol@currcol\@ne}%
+ \fi\fi
+ \ifpcol@clear \@tempswatrue \fi
+ \if@tempswa \pcol@sync \fi
+ \ifpcol@clear\else \pcol@restartcolumn \fi}
+
+\def\pcol@restartcolumn{%
+ \global\pcol@currcol\pcol@nextcol
+ \pcol@getcurrcol
+ \global\pcol@page\count\@currbox
+ \global\@colroom\dimen\@currbox
+ \@cons\@freelist\@currbox
+ \pcol@getcurrpage
+ \ifvoid\pcol@currfoot\else
+ \insert\footins{\unvbox\pcol@currfoot}\@cons\@freelist\pcol@currfoot
+ \fi
+ \unvbox\@currbox
+ \if@nobreak \nobreak \else \addpenalty\interlinepenalty \fi}
+
+\def\pcol@getcurrcol{%
+ \expandafter\expandafter\expandafter\pcol@igetcurrcol
+ \csname pcol@col\number\pcol@currcol\endcsname}
+\def\pcol@igetcurrcol#1#2#3#4#5#6#7#8{%
+ \def\@currbox{#1}\def\pcol@currfoot{#2}\global\pcol@prevdepth#3sp\relax
+ \gdef\@toplist{#4}\gdef\@midlist{#5}\gdef\@botlist{#6}\gdef\@deferlist{#7}%
+ \pcol@iigetcurrcol#8}
+\def\pcol@iigetcurrcol#1#2#3#4#5#6#7#8#9{%
+ \global\@textfloatsheight#1sp\relax \global\@mparbottom#2sp\relax
+ \global\@topnum#3\relax \global\@toproom#4sp\relax
+ \global\@botnum#5\relax \global\@botroom#6sp\relax
+ \global\@colnum#7\relax
+ \global\@afterindentfalse \@nobreaktrue
+ \ifcase#8
+ \@nobreakfalse \or
+ \global\@afterindenttrue \else
+ \relax
+ \fi
+ \global\everypar{#9}}
+\def\pcol@setcurrcol{{\let\@elt\relax
+ \@tempcnta\if@nobreak\if@afterindent\@ne\else\tw@\fi\else\z@\fi
+ \expandafter\xdef\csname pcol@col\number\pcol@currcol\endcsname{%
+ {\@currbox}{\pcol@currfoot}{\number\pcol@prevdepth}%
+ {\@toplist}{\@midlist}{\@botlist}{\@deferlist}%
+ {{\number\@textfloatsheight}{\number\@mparbottom}%
+ {\number\@topnum}{\number\@toproom}{\number\@botnum}{\number\@botroom}%
+ {\number\@colnum}{\number\@tempcnta}{\the\everypar}}}}}
+\def\pcol@setcurrcolnf{\def\pcol@currfoot{\voidb@x}\pcol@setcurrcol}
+\def\pcol@getcurrfoot{%
+ \ifvoid\pcol@currfoot \global\setbox\footins\box\voidb@x
+ \else
+ \global\setbox\footins\box\pcol@currfoot
+ \global\count\footins\count\pcol@currfoot
+ \global\dimen\footins\dimen\pcol@currfoot
+ \global\skip\footins\skip\pcol@currfoot
+ \fi}
+
+
+
+\def\pcol@sync{%
+ \pcol@currcol\z@ \@whilenum\pcol@currcol<\pcol@ncol\do\pcol@flushcolumn
+ \pcol@outputpage\@ne
+ \pcol@getcurrpinfo\@currbox{\global\c@page}{\global\@colht}{\global\topskip}%
+ \@tempdima-\maxdimen \@tempdimb-\maxdimen \pcol@colht-\maxdimen
+ \pcol@currcol\z@ \@whilenum\pcol@currcol<\pcol@ncol\do\pcol@measurecolumn
+ \ifdim\@tempdima<\z@\else
+ \advance\@tempdimb\@tempdima
+ \@tempswafalse
+ \ifdim\@tempdimb<\@colht \ifpcol@clear\else
+ \@tempswatrue
+ \fi\fi
+ \pcol@currcol\z@ \@whilenum\pcol@currcol<\pcol@ncol\do\pcol@synccolumn
+ \fi
+ \global\pcol@syncfalse}
+
+\def\pcol@flushcolumn{%
+ \pcol@getcurrcol
+ \ifnum\count\@currbox<\pcol@maxpage
+ \pcol@page\count\@currbox
+ \setbox\@cclv\box\@currbox
+ \pcol@getcurrfoot
+ \ifvoid\pcol@currfoot\else \@cons\@freelist\pcol@currfoot \fi
+ \pcol@getcurrpage
+ \@makecol
+ \global\setbox\@currbox\box\@outputbox
+ \expandafter\@cons\csname pcol@shipped\number\pcol@currcol\endcsname
+ \@currbox
+ \advance\pcol@page\@ne
+ \ifx\@deferlist\@empty\else
+ \@whilenum\pcol@page<\pcol@maxpage\do{%
+ \pcol@getcurrpage
+ \@makefcolumn\@deferlist
+ \if@fcolmade
+ \@next\@currbox\@freelist{\global\setbox\@currbox\box\@outputbox}%
+ \pcol@ovf
+ \expandafter\@cons
+ \csname pcol@shipped\number\pcol@currcol\endcsname\@currbox
+ \fi
+ \advance\pcol@page\@ne}%
+ \fi
+ \@next\@currbox\@freelist{\global\setbox\@currbox\vbox{}}\pcol@ovf
+ \pcol@floatplacement \global\@colroom\@colht
+ \ifx\@deferlist\@empty\else
+ \pcol@getcurrpage \global\@colroom\@colht
+ \pcol@trynextcolumn
+ \fi
+ \pcol@setcurrcolnf
+ \global\count\@currbox\pcol@page
+ \global\dimen\@currbox\@colroom
+ \fi %\ifnum\count\@currbox<\pcol@maxpage
+ \advance\pcol@currcol\@ne}
+
+\def\pcol@magicpenalty{12345}
+\def\pcol@measurecolumn{%
+ \pcol@getcurrcol
+ \@tempswatrue
+ \setbox\@tempboxa\vbox{\penalty\pcol@magicpenalty
+ \unvcopy\@currbox \xdef\@gtempa{\number\lastpenalty}}%
+ \ifnum\@gtempa=\pcol@magicpenalty\relax \ifvoid\pcol@currfoot
+ \ifx\@toplist\@empty \ifx\@botlist\@empty
+ \@tempswafalse \skip\@currbox\z@ \pcol@prevdepth\z@ \pcol@setcurrcol
+ \fi\fi\fi\fi
+ \if@tempswa
+ \dimen@ii\ht\@currbox \advance\dimen@ii\dp\@currbox
+% must fix begin
+ \ifnum\@gtempa=\pcol@magicpenalty\relax
+ \global\setbox\@currbox\vbox{\hrule\@height\z@ \kern-\topskip}
+ \pcol@prevdepth\z@ \pcol@setcurrcol
+ \fi
+% must fix end
+ \dimen@\z@ \pcol@addflhd\@toplist\topfigrule
+ \skip\@currbox\dimen@ \advance\dimen@ii\dimen@
+ \ifdim\dimen@ii>\@tempdima
+ \@tempdima\dimen@ii \@tempdimc\pcol@prevdepth \fi
+ \ifvoid\pcol@currfoot \dimen@\z@
+ \else
+ \dimen@\ht\pcol@currfoot \advance\dimen@\dp\pcol@currfoot
+ \advance\dimen@\skip\pcol@currfoot
+ \fi
+ \pcol@addflhd\@botlist\botfigrule
+ \ifdim\dimen@>\@tempdimb \@tempdimb\dimen@ \fi
+ \advance\dimen@\dimen@ii
+ \ifdim\dimen@>\pcol@colht
+ \pcol@colht\dimen@
+ \@pagedp\pcol@prevdepth
+ \ifvoid\pcol@currfoot\else \@pagedp\dp\pcol@currfoot \fi
+ \ifx\@botlist\@empty\else \@pagedp\z@ \fi
+ \fi
+ \fi %\if@tempswa
+ \advance\pcol@currcol\@ne}
+\def\pcol@addflhd#1#2{\ifx#1\@empty\else
+ \let\@elt\pcol@hdflelt
+ #1\advance\dimen@-\floatsep \advance\dimen@\textfloatsep
+ \setbox\@tempboxa\vbox{#2}\advance\dimen@\ht\@tempboxa
+ \let\@elt\relax
+ \fi}
+\def\pcol@hdflelt#1{\advance\dimen@\ht#1\advance\dimen@\dp#1%
+ \advance\dimen@\floatsep}
+
+\def\pcol@synccolumn{%
+ \pcol@getcurrcol
+ \if@tempswa
+ \@tempdimb\@tempdima \advance\@tempdimb-\@tempdimc
+ \advance\@tempdimb\pcol@prevdepth \advance\@tempdimb-\skip\@currbox
+ \global\setbox\@currbox\vbox{\vbox to\@tempdimb{\unvbox\@currbox \vfil}}%
+ \else
+ \global\setbox\@currbox\vbox{\unvbox\@currbox \vfill \penalty-\@M}%
+ \fi
+ \global\@topnum\z@ \pcol@setcurrcol
+ \advance\pcol@currcol\@ne}
+
+
+
+\def\pcol@output@end{%
+ \pcol@makelastpage\pcol@colht
+ \@tempswafalse
+ \if@fcolmade
+ \setbox\@outputbox\vbox to\textheight{\unvbox\@outputbox \vfil}%
+ \@outputpage %\c@page=OK
+ \pcol@flushfloats
+ \global\pcol@prevdepth\z@
+ \@tempswatrue
+ \else\ifdim\pcol@colht<\z@
+ \unvbox\@outputbox
+ \global\pcol@prevdepth\z@
+ \else
+ \topskip\z@ \box\@outputbox
+ \global\pcol@prevdepth\@pagedp %\c@page=OK
+ \fi\fi
+ \pcol@currcol\z@ \@whilenum\pcol@currcol<\pcol@ncol\do{%
+ \pcol@getcurrcol \@cons\@freelist\@currbox
+ \advance\pcol@currcol\@ne}%
+ \global\@colht\textheight
+ \global\@colroom\textheight
+ \global\let\@deferlist\@dbldeferlist \gdef\@dbldeferlist{}%
+ \pcol@floatplacement
+ \if@tempswa \@startcolumn \fi}
+
+\def\pcol@output@flush{%
+ \pcol@makelastpage\@colht
+ \setbox\@outputbox\vbox to\textheight{\unvbox\@outputbox}%
+ \@outputpage %\c@page=OK
+ \global\@colht\textheight
+ \pcol@freshpage}
+
+\def\pcol@output@clear{%
+ \pcol@makelastpage\@colht
+ \setbox\@outputbox\vbox to\textheight{\unvbox\@outputbox}%
+ \@outputpage %\c@page=OK
+ \global\advance\pcol@page\@ne
+ \pcol@flushfloats %\c@page=OK
+ \global\@colht\textheight
+ \begingroup
+ \@dblfloatplacement
+ \@makefcolumn\@dbldeferlist
+ \@whilesw\if@fcolmade\fi{\@outputpage
+ \@makefcolumn\@dbldeferlist}%
+ \endgroup %\c@page=OK
+ \pcol@freshpage}
+
+\def\pcol@makelastpage#1{%
+ \pcol@cleartrue \pcol@output@switch \pcol@clearfalse
+ \pcol@getcurrpinfo\@currbox{\global\c@page}{\global\@colht}\@tempskipa
+ \global\@fcolmadefalse
+ \setbox\@outputbox\vbox{%
+ \ifpcol@textonly\else
+ \@cons\@freelist\@currbox
+ \unvbox\@currbox
+ \fi
+ \ifdim#1<\z@
+ \pcol@currcol\z@ \@whilenum\pcol@currcol<\pcol@ncol\do{%
+ \pcol@getcurrcol
+ \ifx\@deferlist\@empty\else \global\@fcolmadetrue \fi
+ \advance\pcol@currcol\@ne}%
+ \else
+ \hb@xt@\textwidth{%
+ \let\pcol@hfil\relax \@colht#1\relax
+ \pcol@currcol\z@ \@whilenum\pcol@currcol<\pcol@ncol\do{%
+ \pcol@getcurrcol
+ \ifx\@deferlist\@empty\else \global\@fcolmadetrue \fi
+ \ifvoid\pcol@currfoot\else \@cons\@freelist\pcol@currfoot \fi
+ \setbox\@cclv\box\@currbox
+ \pcol@getcurrfoot
+ \@makecol
+ \pcol@hfil \hb@xt@\columnwidth{\box\@outputbox\hss}%
+ \let\pcol@hfil\hfil
+ \pcol@setcurrcolnf
+ \advance\pcol@currcol\@ne}}
+ \fi}}
+
+\def\pcol@flushfloats{%
+ \@whilesw\if@fcolmade\fi{%
+ \setbox\@outputbox\vbox{\hb@xt@\textwidth{%
+ \let\pcol@hfil\relax
+ \@tempswafalse
+ \pcol@currcol\z@ \@whilenum\pcol@currcol<\pcol@ncol\do{%
+ \pcol@getcurrcol
+ \@makefcolumn\@deferlist
+ \pcol@hfil \hb@xt@\columnwidth{\if@fcolmade \box\@outputbox \fi \hss}%
+ \ifx\@deferlist\@empty\else \@tempswatrue \fi
+ \let\pcol@hfil\hfil
+ \pcol@setcurrcolnf
+ \advance\pcol@currcol\@ne}%
+ \global\@fcolmadefalse
+ \if@tempswa \global\@fcolmadetrue \fi}}%
+ \@outputpage}}
+
+\def\pcol@freshpage{%
+ \global\pcol@page\z@ \global\pcol@maxpage\z@ \global\pcol@basepage\z@
+ \gdef\pcol@pages{}\gdef\pcol@currpage{}%
+ \pcol@startpage \pcol@colht\@colht
+ \pcol@currcol\z@ \@whilenum\pcol@currcol<\pcol@ncol\do{%
+ \pcol@getcurrcol \pcol@page\z@ \@colroom\pcol@colht
+ \pcol@getcurrpage
+ \pcol@floatplacement
+ \pcol@startcolumn
+ \@whilesw\if@fcolmade\fi{\pcol@opcol \pcol@startcolumn}%
+ \global\setbox\@currbox\vbox{}%
+ \global\count\@currbox\pcol@page \global\dimen\@currbox\@colroom
+ \pcol@setcurrcolnf
+ \advance\pcol@currcol\@ne}%
+ \global\pcol@currcol\pcol@nextcol
+ \pcol@restartcolumn}
+
+
+
+\def\pcol@invokeoutput#1{%
+ \penalty-\@Miv \@tempdima\prevdepth \vbox{}%
+ \global\pcol@prevdepth\@tempdima \penalty#1\relax
+ \prevdepth\pcol@prevdepth}
+
+\def\paracol#1{\par
+ \global\pcol@ncol#1\relax
+ \global\columnwidth\textwidth
+ \@tempdima\columnsep \multiply\@tempdima\pcol@ncol
+ \advance\@tempdima-\columnsep
+ \global\advance\columnwidth-\@tempdima \global\divide\columnwidth\pcol@ncol
+ \global\hsize\columnwidth \global\linewidth\columnwidth
+ \global\@twocolumntrue \global\@firstcolumntrue \col@number\pcol@ncol
+ \global\let\pcol@counters\cl@@ckpt
+ \let\@elt\pcol@remctrelt \pcol@gcounters
+ \let\@elt\pcol@thectrelt \pcol@counters
+ \let\@elt\relax
+ \let\clearpage\pcol@clearpage \pcol@topskip\topskip
+ \pcol@currcol\z@ \@whilenum\pcol@currcol<\pcol@ncol\do{%
+ \expandafter\gdef\csname pcol@shipped\number\pcol@currcol\endcsname{}%
+ \pcol@savecounters \advance\pcol@currcol\@ne}%
+ \output{\pcol@output}%
+ \pcol@invokeoutput\pcol@op@start
+ \pcol@nextcol\z@
+ \def\column{\pcol@defcolumn\nthcolumn{0}}
+ \@namedef{column*}{\pcol@defcolumn\@nameuse{nthcolumn*}{0}}
+ \@ifnextchar[%]
+ \pcol@mctext\relax}
+
+\def\pcol@gcounters{\@elt{page}}
+\def\pcol@remctrelt#1{%
+ \expandafter\let\expandafter\reserved@a\csname cl@#1\endcsname
+ \expandafter\let\csname pcol@cl@#1\endcsname\reserved@a
+ \expandafter\ifx\csname c@#1\endcsname\c@page\else
+ \@namedef{cl@#1}{\pcol@stepcounter{#1}}%
+ \fi
+ \def\reserved@a{#1}\let\reserved@b\pcol@counters
+ \global\let\pcol@counters\@empty
+ {\let\@elt\pcol@iremctrelt \reserved@b}}
+\def\pcol@iremctrelt#1{%
+ \def\reserved@b{#1}%
+ \ifx\reserved@a\reserved@b\else \@cons\pcol@counters{{#1}}\fi}
+\def\pcol@thectrelt#1{%
+ \expandafter\let\expandafter\reserved@a\csname the#1\endcsname
+ \expandafter\let\csname pcol@thectr@#1\endcsname\reserved@a
+ \expandafter\let\expandafter\reserved@a\csname pcol@thectr@#10\endcsname
+ \ifx\reserved@a\relax\else
+ \expandafter\let\csname the#1\endcsname\reserved@a
+ \fi}
+
+\def\pcol@mctext[#1]{%
+ \@tempcnta\pcol@nextcol\relax
+ \global\pcol@synctrue \pcol@nextcol\z@
+ \pcol@switchcol
+ \begingroup
+ \hsize\textwidth \col@number\@ne #1\par
+ \expandafter\global\expandafter\everypar\expandafter{\the\everypar}%
+ \endgroup
+ \pcol@nextcol\@tempcnta \global\pcol@synctrue \pcol@switchcol}
+
+\def\pcol@switchcol{%
+ \pcol@savecounters
+ \pcol@invokeoutput\pcol@op@switch
+ \ifnum\pcol@currcol=\z@ \global\@firstcolumntrue
+ \else \global\@firstcolumnfalse
+ \fi
+ \let\@elt\pcol@setctrelt
+ \csname pcol@counters\number\pcol@currcol\endcsname
+ \let\@elt\relax}
+
+\def\pcol@savecounters{\begingroup
+ \global\let\@gtempa\@empty
+ \let\@elt\pcol@savectrelt \pcol@counters
+ \let\@elt\relax
+ \expandafter\xdef\csname pcol@counters\number\pcol@currcol\endcsname{%
+ \@gtempa}%
+ \endgroup}
+\def\pcol@savectrelt#1{\@cons\@gtempa{{#1}{\number\csname c@#1\endcsname}}}
+
+\def\pcol@setctrelt#1#2{%
+ \setcounter{#1}{#2}%
+ \expandafter\ifx\csname pcol@thectr@#1\number\pcol@currcol\endcsname\relax
+ \expandafter\let\expandafter\reserved@a\csname pcol@thectr@#1\endcsname
+ \else
+ \expandafter\let\expandafter\reserved@a
+ \csname pcol@thectr@#1\number\pcol@currcol\endcsname
+ \fi
+ \expandafter\let\csname the#1\endcsname\reserved@a}
+
+\def\pcol@stepcounter#1{\begingroup
+ \let\@elt\@stpelt \csname pcol@cl@#1\endcsname
+ \pcol@currcol\z@ \@whilenum\pcol@currcol<\pcol@ncol\do{%
+ \let\@elt\pcol@stpldelt \csname pcol@counters\number\pcol@currcol\endcsname
+ \let\@elt\pcol@stpclelt \csname pcol@cl@#1\endcsname
+ \pcol@savecounters
+ \advance\pcol@currcol\@ne}%
+ \endgroup}
+\def\pcol@stpldelt#1#2{\csname c@#1\endcsname#2\relax}
+\def\pcol@stpclelt#1{\csname c@#1\endcsname\z@}
+
+\def\definethecounter#1#2#3{\@namedef{pcol@thectr@#1#2}{#3}}
+\def\globalcounter#1{\@cons\pcol@gcounters{{#1}}}
+
+\def\endparacol{\par
+ \pcol@nextcol\z@ \pcol@switchcol
+ \pcol@invokeoutput\pcol@op@end
+ \global\columnwidth\textwidth
+ \global\hsize\columnwidth
+ \global\linewidth\columnwidth
+ \global\@twocolumnfalse
+ \global\topskip\pcol@topskip}
+
+\def\switchcolumn{\par
+ \@tempcnta\pcol@currcol \advance\@tempcnta\@ne
+ \ifnum\@tempcnta<\pcol@ncol\else \@tempcnta\z@ \fi
+ \@ifnextchar[%]
+ \pcol@switchcolumn{\pcol@switchcolumn[\@tempcnta]}}
+\def\pcol@switchcolumn[#1]{%
+ \pcol@nextcol#1\relax
+ \ifnum#1<\pcol@ncol\else
+ \PackageError{paracol}{%
+ Column number \number#1 must be less than\number\pcol@ncol}\@eha
+ \pcol@nextcol\z@
+ \fi
+ \@ifstar\pcol@iswitchcolumn\pcol@switchcol}
+\def\pcol@iswitchcolumn{%
+ \global\pcol@synctrue
+ \@ifnextchar[%]
+ \pcol@mctext\pcol@switchcol}
+
+\def\pcol@defcolumn{%
+ \gdef\column{\switchcolumn\relax}%
+ \global\@namedef{column*}{\switchcolumn*}}
+\def\nthcolumn#1{\switchcolumn[#1]\relax}
+\@namedef{nthcolumn*}#1{\switchcolumn[#1]*}
+\def\leftcolumn{\switchcolumn[0]\relax}
+\@namedef{leftcolumn*}{\switchcolumn[0]*}
+\def\rightcolumn{\switchcolumn[1]\relax}
+\@namedef{rightcolumn*}{\switchcolumn[1]*}
+
+\let\endcolumn\par
+\expandafter\let\csname endcolumn*\endcsname\par
+\let\endnthcolumn\par
+\expandafter\let\csname endnthcolumn*\endcsname\par
+\let\endleftcolumn\par
+\expandafter\let\csname endleftcolumn*\endcsname\par
+\let\endrightcolumn\par
+\expandafter\let\csname endrightcolumn*\endcsname\par
+
+\def\flushpage{\par
+ \pcol@nextcol\pcol@currcol
+ \pcol@invokeoutput\pcol@op@flush}
+\def\pcol@clearpage{\par
+ \pcol@nextcol\pcol@currcol
+ \pcol@invokeoutput\pcol@op@clear}
+