%%
%% This is file `parcolumns.sty',
%% generated with the docstrip utility.
%%
%% The original source files were:
%%
%% parcolumns.dtx  (with options: `package')
%% 
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{parcolumns}
   [2004/11/25 v1.2 Typeset multiple parallel columns]
\RequirePackage{processkv}[2004/08/05]
\newcount\pc@columnctr
\newcount\pc@columncount
\newif\ifpc@rulebetween
\newtoks\pc@everypar
\def\pc@boolkey#1#2{%
\edef\@tempa{#2}%
\edef\@tempb{false}%
\ifx\@tempa\@tempb%
\csname #1false\endcsname%
\else%
\csname #1true\endcsname%
\fi%
}
\define@key{parcolumns}{distance}{%
\@tempdimc#1\relax%
}
\define@key{parcolumns}{rulebetween}[true]{%
\pc@boolkey{pc@rulebetween}{#1}%
}
\define@key{parcolumns}{nofirstindent}[true]{%
\pc@boolkey{@tempswa}{#1}%
\if@tempswa\pc@everypar{{\setbox\z@\lastbox}\everypar{}}\fi%
}
\define@key{parcolumns}{sloppy}[true]{%
\pc@boolkey{@tempswa}{#1}%
\if@tempswa%
\hbadness\@M%
\tolerance\@M%
\fi%
}
\define@key{parcolumns}{sloppyspaces}[true]{%
\pc@boolkey{@tempswa}{#1}%
\if@tempswa%
\spaceskip.3333em\@plus1em %
\fi%
}
\define@key{parcolumns}{colwidths}{%
\toks@{#1}%
}
\newenvironment{parcolumns}[2][]{%
\pc@rulebetweenfalse%
\@tempswafalse%
\@tempdimc2em\relax%
\toks@{}%
\setkeys{parcolumns}{#1}%
\pc@columncount#2 %
\pc@columnctr\z@%
\pc@alloccolumns%
\pc@setcolumnwidths%
\endgraf%
\@nobreakfalse%
\global\everypar{}%
}{%
\colplacechunks%
\endgraf%
\global\clubpenalty\@clubpenalty%
\@doendpe%
}
\newcommand{\colchunk}{\@testopt\colchunk@{}}%
\long\def\colchunk@[#1]#{%
\ifx\\#1\\%
\advance\pc@columnctr\@ne%
\else%
\pc@columnctr#1\relax%
\fi%
\ifnum\pc@columnctr>\pc@columncount%
\PackageError{parcolumns}{The column \number\pc@columnctr\space%
is too large}{Only \number\pc@columncount\space columns are%
\space allowed.}
\pc@columnctr\pc@columncount%
\fi%
\clubpenalty\z@%
\interlinepenalty\z@%
\displaywidowpenalty\z@%
\widowpenalty\z@%
\brokenpenalty\z@%
\everypar\expandafter{\the\pc@everypar}%
\afterassignment\pc@setcolumnwidth%
\expandafter\setbox\csname pc@column@\number\pc@columnctr\endcsname%
\vbox%
}
\newcommand{\colplacechunks}{%
\ifnum\pc@columnctr>\z@%
\pc@placeboxes%
\pc@columnctr\z@%
\pc@everypar{}%
\fi%
}
\def\pc@placeboxes{%
\global\let\@tempa\relax%
\count@\z@%
\hb@xt@\linewidth{%
\vfuzz30ex %
\vbadness\@M%
\splittopskip\z@skip%
\loop\ifnum\count@<\pc@columncount%
\advance\count@\@ne%
\expandafter\ifvoid\csname pc@column@\number\count@%
\endcsname%
\hskip\csname pc@column@width@\number\count@\endcsname%
\else%
\expandafter\setbox\expandafter\@tempboxa\expandafter%
\vsplit\csname pc@column@\number\count@\endcsname%
to \dp\strutbox%
\vbox{\unvbox\@tempboxa}%
\fi%
\expandafter\ifvoid\csname pc@column@\number\count@%
\endcsname\else%
\global\let\@tempa\pc@placeboxes%
\fi%
\ifnum\count@<\pc@columncount%
\strut%
\hfill%
\ifpc@rulebetween%
\vrule%
\hfill%
\fi%
\fi%
\repeat%
}%
\@tempa%
}
\def\pc@alloccolumns{%
\count@\z@%
\loop\ifnum\count@<\pc@columncount%
\advance\count@\@ne%
\@ifundefined{pc@column@\number\count@}{%
\expandafter\newbox\csname pc@column@\number\count@%
\endcsname%
\expandafter\newdimen\csname pc@column@width@\number%
\count@\endcsname%
}{%
\setbox0\box\csname pc@column@\number\count@\endcsname%
\csname pc@column@width@\number\count@\endcsname\z@%
}%
\repeat%
}
\def\pc@setcolumnwidths{%
\expandafter\processkeyvalues\expandafter{\the\toks@}%
\pc@setsinglecolwidth%
\@tempdima\z@%
\@tempcnta\z@%
\count@\z@%
\loop\ifnum\count@<\pc@columncount%
\advance\count@\@ne%
\@tempdimb\csname pc@column@width@\number\count@\endcsname%
\advance\@tempdima\@tempdimb%
\ifnum\@tempdimb=\z@%
\advance\@tempcnta\@ne%
\else%
\PackageInfo{parcolumns}{Width of column \number\count@%
\space set to \the\@tempdimb}
\fi%
\repeat%
\ifnum\@tempcnta>\z@%
\@tempdimb\@tempdimc%
\multiply\@tempdimb\pc@columncount%
\advance\@tempdimb-\@tempdimc%
\advance\@tempdimb\@tempdima%
\@tempdima\linewidth%
\advance\@tempdima-\@tempdimb%
\divide\@tempdima\@tempcnta%
\count@\z@%
\loop\ifnum\count@<\pc@columncount%
\advance\count@\@ne%
\ifnum\csname pc@column@width@\number\count@\endcsname=\z@%
\csname pc@column@width@\number\count@\endcsname\@tempdima%
\PackageInfo{parcolumns}{Width of column \number\count@%
\space calculated as \the\@tempdima}
\fi%
\repeat%
\fi%
}
\def\pc@setsinglecolwidth#1#2{%
\@ifundefined{pc@column@width@\number#1}{
\PackageError{parcolumns}{`#1' is not a valid column number!}%
{\@ehc}%
}{%
\csname pc@column@width@\number#1\endcsname=#2\relax%
}%
}
\def\pc@setcolumnwidth{%
\hsize\csname pc@column@width@\number\pc@columnctr\endcsname%
\linewidth\hsize%
\leavevmode%
}
\endinput
%%
%% End of file `parcolumns.sty'.
