home *** CD-ROM | disk | FTP | other *** search
- %%
- %% This is file `multicol.sty', generated
- %% on <1994/8/18> with the docstrip utility (2.2h).
- %%
- %% The original source files were:
- %%
- %% multicol.dtx (with options: `package,badness,check,marktrace')
- %%
- %% IMPORTANT NOTICE:
- %% This file is part of the `tools' bundle
- %% in the LaTeX2e distribution.
- %%
- %% You are not allowed to distribute this file.
- %% For distribution of the original source see
- %% the copyright notice in the source file, and
- %% in the file readme.txt distributed with the
- %% tools bundle.
- %%
- \def\fileversion{v1.5g}
- \def\filedate{1994/06/07}
- \def\docdate {1994/05/28}
- %% \CheckSum{1293}
- %% \CharacterTable
- %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
- %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
- %% Digits \0\1\2\3\4\5\6\7\8\9
- %% Exclamation \! Double quote \" Hash (number) \#
- %% Dollar \$ Percent \% Ampersand \&
- %% Acute accent \' Left paren \( Right paren \)
- %% Asterisk \* Plus \+ Comma \,
- %% Minus \- Point \. Solidus \/
- %% Colon \: Semicolon \; Less than \<
- %% Equals \= Greater than \> Question mark \?
- %% Commercial at \@ Left bracket \[ Backslash \\
- %% Right bracket \] Circumflex \^ Underscore \_
- %% Grave accent \` Left brace \{ Vertical bar \|
- %% Right brace \} Tilde \~}
- %%
- %% Package `multicol' to use with LaTeX2e
- %% Copyright (C) 1989-1994 Frank Mittelbach, all rights reserved.
- %%
- %%
- %% In addition to the general distribution terms for this `tools'
- %% bundle, which are specified in readme.txt, this package, multicol,
- %% is distributed subject to the following condition:
- %%
- %% ** The use of this package as a standard part of a commercial
- %% ** application is not allowed without the explicit permission of the
- %% ** author of this package. Such commercial usage will be subject to
- %% ** the payment of a licence fee. The size of this fee is to be
- %% ** determined, in each instance, by the commercial user, depending on
- %% ** his judgement of the value of the code for his application.
- %%
- %% Note that the above condition does not apply to non-commercial use of
- %% this package, or to the use of this package in a commercial
- %% environment for `individual' tasks rather than as a standard part of
- %% a commercial application. In these cases the General Terms, as
- %% specified in readme.txt, apply.
- %%
- \NeedsTeXFormat{LaTeX2e}
- \ProvidesPackage{multicol}[\filedate\space
- \fileversion\space multicolum formatting]
- \DeclareOption{twocolumn}
- {\PackageWarning{multicol}{May not work
- with a twocolumn layout}}
- \newcount\c@tracingmulticols
- \DeclareOption{errorshow}
- {\c@tracingmulticols\z@}
- \DeclareOption{infoshow}
- {\c@tracingmulticols\@ne}
- \DeclareOption{balancingshow}
- {\c@tracingmulticols\tw@}
- \DeclareOption{markshow}
- {\c@tracingmulticols\thr@@}
- \DeclareOption{debugshow}
- {\c@tracingmulticols5\relax}
- \ProcessOptions
- \def\multicols#1{\col@number#1\relax
- \ifnum\col@number<\tw@
- \PackageWarning{multicol}%
- {Using `\number\col@number'
- columns doesn't seem a good idea.^^J
- I therefore use two columns instead}%
- \col@number\tw@ \fi
- \ifnum\col@number>10
- \PackageError{multicol}%
- {Too many columns}%
- {Current implementation doesn't
- support more than 10 columns.%
- \MessageBreak
- I therefore use 10 columns instead}%
- \col@number10 \fi
- \@ifnextchar[\mult@cols{\mult@cols[]}}
- \def\mult@cols[#1]{\@ifnextchar[%
- {\mult@@cols{#1}}%
- {\mult@@cols{#1}[\premulticols]}}
- \def\mult@@cols#1[#2]{%
- \par
- \ifinner \@boxedmulticolstrue
- \else
- \ifnum \doublecol@number>\z@
- \@boxedmulticolstrue
- \fi
- \fi
- \mult@info\z@
- {Starting environment with
- \the\col@number\space columns%
- \if@boxedmulticols\MessageBreak
- (boxed mode)\fi
- }%
- \enough@room{#2}%
- {#1\par}\addvspace\multicolsep
- \begingroup
- \prepare@multicols
- \if@boxedmulticols
- \setbox\mult@box\vbox\bgroup
- \fi
- \ignorespaces}
- \newif\if@boxedmulticols
- \@boxedmulticolsfalse
- \newbox\mult@box
- \def\enough@room#1{%
- \if@boxedmulticols\else
- \par
- \bgroup\@nobreakfalse\addpenalty\z@\egroup
- \page@free \pagegoal
- \advance \page@free -\pagetotal
- \@tempskipa#1\relax
- \mult@info\z@
- {Current page:\MessageBreak
- height=%
- \the\pagegoal: used \the\pagetotal
- \space -> free=\the\page@free
- \MessageBreak
- needed \the\@tempskipa
- \space(for #1)}%
- \ifdim \page@free <#1\newpage \fi
- \fi}
- \def\prepare@multicols{%
- \multicol@leftmargin\@totalleftmargin
- \@totalleftmargin\z@
- \parshape\z@
- \doublecol@number\col@number
- \multiply\doublecol@number\tw@
- \advance\doublecol@number\mult@rightbox
- \if@boxedmulticols
- \let\l@kept@firstmark\kept@firstmark
- \let\l@kept@botmark\kept@botmark
- \global\let\kept@firstmark\@empty
- \global\let\kept@botmark\@empty
- \else
- \nointerlineskip {\topskip\z@\null}%
- \output{%
- \global\setbox\partial@page\vbox
- {%
- \ifvoid\partial@page\else
- \PackageError{multicol}%
- {Error saving partial page}%
- {The part of the page before
- the multicols environment was
- nearly full with^^Jthe result
- that starting the environment
- will produce an overfull
- page. Some^^Jtext may be lost!
- Please increase \premulticols
- either generally or for this%
- ^^Jenvironment by specifying a
- suitable value in the second
- optional argument to^^Jthe
- multicols environment.}
- \unvbox\partial@page
- \box\last@line
- \fi
- \unvbox\@cclv
- \global\setbox\last@line\lastbox
- }%
- \prep@keptmarks
- \global\let\kept@topmark\firstmark
- }\eject
- \advance\@colroom-\ht\partial@page
- \set@mult@vsize\relax
- \output{\multi@column@out}%
- \init@mult@footins
- \reinsert@footnotes
- \fi
- \vbadness\@Mi \hbadness5000
- \tolerance\multicoltolerance
- \pretolerance\multicolpretolerance
- \setemergencystretch\col@number\hsize
- \set@floatcmds
- \advance\baselineskip\multicolbaselineskip
- \hsize\linewidth \advance\hsize\columnsep
- \advance\hsize-\col@number\columnsep
- \divide\hsize\col@number
- \full@width\linewidth
- \linewidth\hsize
- }
- \def\init@mult@footins{%
- \multiply\count\footins\col@number
- \multiply\skip \footins\col@number
- }
- \def\set@mult@vsize#1{%
- \vsize\@colroom
- \@tempdima\baselineskip
- \advance\@tempdima-\topskip
- \advance\vsize\@tempdima
- \vsize\col@number\vsize
- \advance\vsize-\@tempdima
- #1\advance\vsize
- \c@collectmore\baselineskip}
- \newdimen\multicol@leftmargin
- \def\endmulticols{\par
- \if@boxedmulticols
- \egroup
- \balance@columns
- \return@nonemptymark{first}%
- \kept@firstmark
- \return@nonemptymark{bot}%
- \kept@botmark
- \page@sofar
- \global\let\kept@firstmark
- \l@kept@firstmark
- \global\let\kept@botmark
- \l@kept@botmark
- \mult@info\tw@
- {Restore kept marks to\MessageBreak
- first: \meaning\kept@firstmark
- \MessageBreak bot\space\space:
- \meaning\kept@botmark }%
- \else
- \penalty\z@
- \output{\balance@columns@out}\eject
- \ifvbox\partial@page
- \unvbox\partial@page\fi
- \global\let\kept@firstmark\@empty
- \global\let\kept@botmark\@empty
- \mult@info\tw@
- {Make kept marks empty}%
- \fi
- \@checkend{multicols}%
- \endgroup
- \if@boxedmulticols\else
- \reinsert@footnotes
- \fi
- \global\c@unbalance\z@
- \enough@room\postmulticols
- \addvspace\multicolsep
- \mult@info\z@
- {Ending environment
- \if@boxedmulticols
- \space(boxed mode)\fi
- }}
- \newcount\c@unbalance
- \newcount\c@collectmore
- \newcount\doublecol@number
- \newcount\multicoltolerance
- \newcount\multicolpretolerance
- \newdimen\full@width
- \newdimen\page@free
- \newdimen\premulticols
- \newdimen\postmulticols
- \newskip\multicolsep
- \newskip\multicolbaselineskip
- \newbox\partial@page
- \newbox\last@line
- \c@unbalance = 0
- \c@collectmore = 0
- \col@number = 1
- \multicoltolerance = 9999
- \multicolpretolerance = -1
- \premulticols = 50pt
- \postmulticols= 20pt
- \multicolsep = 12pt plus 4pt minus 3pt
- \multicolbaselineskip=0pt
- \def\process@cols#1#2{\count@#1\relax
- \loop
- #2%
- \advance\count@\tw@
- \ifnum\count@<\doublecol@number
- \repeat}
- \def\page@sofar{%
- \process@cols\mult@rightbox
- {\wd\count@\hsize}%
- \mult@info\z@
- {Column spec:\MessageBreak
- (\the\multicol@leftmargin\space -->
- \the\full@width\space = \the\hsize
- \space x \the\col@number)%
- }%
- \ifvmode\else\errmessage{Multicol Error}\fi
- \moveright\multicol@leftmargin
- \hbox to\full@width{%
- \process@cols\mult@gfirstbox{\box\count@
- \hss\vrule\@width\columnseprule\hss}%
- \box\mult@rightbox
- \rlap{\phantom p}%
- }%
- }
- \def\reinsert@footnotes{\ifvoid\footins\else
- \insert\footins{}\fi}
- \def\multi@column@out{%
- \ifnum\outputpenalty <-\@M
- \speci@ls \else
- \splittopskip\topskip
- \splitmaxdepth\maxdepth
- \dimen@\@colroom
- \divide\skip\footins\col@number
- \ifvoid\footins \else
- \leave@mult@footins
- \fi
- \process@cols\mult@gfirstbox{%
- \setbox\count@
- \vsplit\@cclv to\dimen@
- \set@keptmarks
- \ifshr@nking
- \setbox\count@
- \vbox to\dimen@
- {\unvbox\count@\vfill}%
- \fi
- }%
- \setbox\mult@rightbox
- \vsplit\@cclv to\dimen@
- \set@keptmarks
- \ifshr@nking
- \setbox\mult@rightbox\vbox to\dimen@
- {\unvbox\mult@rightbox\vfill}%
- \fi
- \ifvoid\@cclv \else
- \unvbox\@cclv
- \penalty\outputpenalty
- \ifvoid\footins\else
- \PackageWarning{multicol}%
- {I moved some lines to
- the next page.\MessageBreak
- Footnotes on page
- \thepage\space might be wrong}%
- \fi
- \ifnum \c@tracingmulticols>\thr@@
- \hrule\allowbreak \fi
- \fi
- \ifx\@empty\kept@firstmark
- \let\firstmark\kept@topmark
- \let\botmark\kept@topmark
- \else
- \let\firstmark\kept@firstmark
- \let\botmark\kept@botmark
- \fi
- \let\topmark\kept@topmark
- \mult@info\tw@
- {Use kept top mark:\MessageBreak
- \meaning\kept@topmark
- \MessageBreak
- Use kept first mark:\MessageBreak
- \meaning\kept@firstmark
- \MessageBreak
- Use kept bot mark:\MessageBreak
- \meaning\kept@botmark
- \MessageBreak
- Produce first mark:\MessageBreak
- \meaning\firstmark
- \MessageBreak
- Produce bot mark:\MessageBreak
- \meaning\botmark
- \@gobbletwo}%
- \setbox\@cclv\vbox{\unvbox\partial@page
- \page@sofar}%
- \@makecol\@outputpage
- \global\let\kept@topmark\botmark
- \global\let\kept@firstmark\@empty
- \global\let\kept@botmark\@empty
- \mult@info\tw@
- {(Re)Init top mark:\MessageBreak
- \meaning\kept@topmark
- \@gobbletwo}%
- \global\@colroom\@colht
- \process@deferreds
- \@whilesw\if@fcolmade\fi{\@outputpage
- \global\@colroom\@colht
- \process@deferreds}%
- \mult@info\@ne
- {Colroom:\MessageBreak
- \the\@colht\space
- after float space removed
- = \the\@colroom \@gobble}%
- \set@mult@vsize \global
- \fi}
- \def\leave@mult@footins{%
- \advance\dimen@-\skip\footins
- \advance\dimen@-\ht\footins
- }
- \def\speci@ls{%
- \ifnum\outputpenalty <-\@Mi
- \PackageWarning{multicol}%
- {Floats and marginpars not
- allowed inside `multicols'
- environment!
- \@gobble}%
- \unvbox\@cclv\reinsert@footnotes
- \xdef\@freelist{\@freelist\@currlist}%
- \gdef\@currlist{}%
- \else \@doclearpage \fi
- }
- \def\process@deferreds{%
- \@floatplacement
- \@tryfcolumn\@deferlist
- \if@fcolmade\else
- \begingroup
- \let\@tempb\@deferlist
- \gdef\@deferlist{}%
- \let\@elt\@scolelt
- \@tempb \endgroup
- \fi}
- \newif\ifshr@nking
- \def\raggedcolumns{%
- \@bsphack\shr@nkingtrue\@esphack}
- \def\flushcolumns{%
- \@bsphack\shr@nkingfalse\@esphack}
- \def\balance@columns@out{%
- \setbox\mult@box\vbox{\unvbox\@cclv}%
- \balance@columns
- \global\vsize\@colroom
- \global\advance\vsize\ht\partial@page
- \unvbox\partial@page
- \return@nonemptymark{first}\kept@firstmark
- \return@nonemptymark{bot}\kept@botmark
- \page@sofar
- \penalty\z@
- }
- \def\balance@columns{%
- \setbox\mult@box\vbox{%
- \penalty-\@M
- \unvbox\mult@box
- \remove@discardable@items
- }%
- \get@keptmarks\mult@box
- \@tempdima\topskip
- \splittopskip\@tempdima
- \@plus\multicolundershoot
- \@minus\multicolovershoot
- \splitmaxdepth\maxdepth
- \setbox\@tempboxa\vsplit\mult@box to\z@
- \@tempdima\ht\mult@box
- \advance\@tempdima\dp\mult@box
- \divide\@tempdima\col@number
- \count@\@tempdima
- \divide\count@\baselineskip
- \dimen@\count@\baselineskip
- \advance\dimen@\topskip
- \ifdim \dimen@ >\@tempdima
- \advance\dimen@-\baselineskip
- \fi
- \advance\dimen@\c@unbalance\baselineskip
- \mult@info\@ne
- {Balance columns\on@line:
- \ifnum\c@unbalance=\z@\else
- (off balance=\number\c@unbalance)\fi
- \@gobbletwo}%
- \ifnum\dimen@<\topskip
- \mult@info\@ne
- {Start value
- \the\dimen@ \space ->
- \the\topskip \space (corrected)}%
- \dimen@\topskip
- \fi
- \vbadness\@M
- \vfuzz \col@number\baselineskip
- \last@try-\p@
- \loop
- {\process@cols\mult@grightbox
- {\global\setbox\count@
- \box\voidb@x}}%
- \global\setbox\mult@grightbox
- \copy\mult@box
- \global\too@badfalse
- {\process@cols\mult@firstbox{%
- \global\setbox\count@
- \vsplit\mult@grightbox to\dimen@
- \ifnum\c@tracingmulticols>\@ne
- \@tempcnta\count@
- \advance\@tempcnta-\mult@grightbox
- \divide\@tempcnta \tw@
- \message{^^JColumn
- \number\@tempcnta\space
- badness: \the\badness\space}%
- \fi
- \ifnum\badness>\c@columnbadness
- \ifnum\c@tracingmulticols>\@ne
- \message{too bad
- (>\the\c@columnbadness)}%
- \fi
- \global\too@badtrue
- \fi
- }}%
- \boxmaxdepth\maxdepth
- \global\setbox\mult@grightbox
- \vbox{\unvbox\mult@grightbox}%
- \setbox\mult@nat@firstbox
- \vbox{\unvcopy\mult@firstbox}%
- \ifnum\c@tracingmulticols>\@ne
- \message{^^JFirst column
- = \the\dimen@\space
- (\the\ht\mult@nat@firstbox)}\fi
- \ifshr@nking
- \global\setbox\mult@firstbox
- \copy\mult@nat@firstbox
- \fi
- \ifnum\c@tracingmulticols>\@ne
- \message{<> last column =
- \the\ht\mult@grightbox^^J}%
- \fi
- \ifdim\ht\mult@grightbox >\dimen@
- \too@badtrue
- \else
- \global\setbox\mult@grightbox
- \vbox to\dimen@
- {\unvbox\mult@grightbox}%
- \ifnum\c@tracingmulticols>\@ne
- \message{Final badness:
- \the\badness}%
- \fi
- \ifnum\badness>\c@finalcolumnbadness
- \global\setbox\mult@grightbox
- \vbox to\dimen@
- {\unvbox\mult@grightbox\vfill}%
- \ifnum\c@tracingmulticols>\@ne
- \message{ setting natural
- (> \the\c@finalcolumnbadness)}%
- \fi
- \fi
- \fi
- \ifdim\ht\mult@nat@firstbox<\dimen@
- \ifdim\ht\mult@nat@firstbox>\last@try
- \too@badtrue
- \dimen@\ht\mult@nat@firstbox
- \last@try\dimen@
- \advance\dimen@-\p@
- \fi
- \fi
- \iftoo@bad
- \advance\dimen@\p@
- \repeat
- \dimen@\ht\mult@firstbox
- \ifdim\dimen@>\@colroom
- \dimen@\@colroom
- \fi
- \process@cols\mult@rightbox
- {\@tempcnta\count@
- \advance\@tempcnta\@ne
- \setbox\count@\vbox to\dimen@
- {%
- \vskip \z@
- \@plus-\multicolundershoot
- \@minus-\multicolovershoot
- \unvbox\@tempcnta
- \ifshr@nking\vfill\fi}}%
- }
- \newbox\mult@rightbox
- \newbox\mult@grightbox
- \newbox\mult@gfirstbox
- \newbox\mult@firstbox
- \newbox\@tempa\newbox\@tempa
- \newbox\@tempa\newbox\@tempa
- \newbox\@tempa\newbox\@tempa
- \newbox\@tempa\newbox\@tempa
- \newbox\@tempa\newbox\@tempa
- \newbox\@tempa\newbox\@tempa
- \newbox\@tempa\newbox\@tempa
- \newbox\@tempa\newbox\@tempa
- \newbox\@tempa
- \let\@tempa\relax
- \@ifundefined{emergencystretch}
- {\newdimen\emergencystretch}{}
- \def\setemergencystretch#1#2{%
- \emergencystretch 4pt
- \multiply\emergencystretch#1}
-
- \def\set@floatcmds{%
- \let\@dblfloat\@dbflt
- \def\end@dblfloat{\par
- \vskip\z@
- \color@endgroup
- \outer@nobreak
- \egroup
- \ifnum\@floatpenalty<\z@
- \@cons\@deferlist\@currbox
- \fi
- \ifnum\@floatpenalty=-\@Mii
- \@Esphack
- \fi}}
- \def\kept@topmark{{}{}}
- \let\kept@firstmark\@empty
- \let\kept@botmark\@empty
- \def\return@nonemptymark#1#2{%
- \ifx#2\@empty
- \else
- \mult@info\tw@
- {Returned #1 mark:\MessageBreak
- \meaning#2}%
- \toks@\expandafter{#2}%
- \mark{\the\toks@}%
- \nobreak
- \fi}
- \def\get@keptmarks#1{%
- \begingroup
- \vbadness\@M
- \setbox#1\copy#1%
- \setbox#1\vsplit#1to\maxdimen
- \set@keptmarks
- \endgroup
- }
- \def\set@keptmarks{%
- \ifx\kept@firstmark\@empty
- \expandafter\gdef\expandafter
- \kept@firstmark
- \expandafter{\splitfirstmark}%
- \ifx\kept@firstmark\@empty\else
- \mult@info\tw@
- {Set kept first mark:\MessageBreak
- \meaning\kept@firstmark%
- \@gobbletwo}%
- \fi
- \fi
- \expandafter\def\expandafter\@tempa
- \expandafter{\splitbotmark}%
- \ifx\@tempa\@empty\else
- \global\let\kept@botmark\@tempa
- \mult@info\tw@
- {Set kept bot mark:\MessageBreak
- \meaning\kept@botmark%
- \@gobbletwo}%
- \fi}%
- \def\prep@keptmarks{%
- \if@boxedmulticols \else
- \get@keptmarks\partial@page
- \fi}
- \def\remove@discardable@items{%
- \unskip\unpenalty\unkern
- \unskip\unpenalty\unkern
- \unskip\unpenalty\unkern
- \unskip\unpenalty\unkern
- }
- \newif\iftoo@bad
- \newcount\c@columnbadness
- \c@columnbadness=10000
- \newcount\c@finalcolumnbadness
- \c@finalcolumnbadness=9999
-
- \newdimen\last@try
-
- \newdimen\multicolovershoot
- \multicolovershoot=2pt
- \newdimen\multicolundershoot
- \multicolundershoot=2pt
- \newbox\mult@nat@firstbox
- \def\mult@info#1#2{%
- \ifnum\c@tracingmulticols>#1%
- \GenericWarning
- {(multicol)\@spaces\@spaces}%
- {Package multicol: #2}%
- \fi
- }
-
- \endinput
- %%
- %% End of file `multicol.sty'.
-