123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854 |
- %%
- %% This is file `multicol.sty',
- %% generated with the docstrip utility.
- %%
- %% The original source files were:
- %%
- %% multicol.dtx (with options: `package,badness,check,marktrace,nobalance,colbreak')
- %%
- %% This is a generated file.
- %%
- %% Copyright 1993 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003
- %% The LaTeX3 Project and any individual authors listed elsewhere
- %% in this file.
- %%
- %% This file was generated from file(s) of the Standard LaTeX `Tools Bundle'.
- %% --------------------------------------------------------------------------
- %%
- %% It 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 2003/12/01 or later.
- %%
- %% This file may only be distributed together with a copy of the LaTeX
- %% `Tools Bundle'. You may however distribute the LaTeX `Tools Bundle'
- %% without such generated files.
- %%
- %% The list of all files belonging to the LaTeX `Tools Bundle' is
- %% given in the file `manifest.txt'.
- %%
- %% Package `multicol' to use with LaTeX2e
- %% Copyright 1989-2003 Frank Mittelbach
- %%
- %% In addition to the terms of LPPL any distributed version
- %% (unchanged or modified) of multicol has to keep the statement
- %% about the moral obligation for using multicol. In case of major
- %% changes where this would not be appropriate the author of the
- %% changed version should contact the copyright holder.
- %%
- %%
- %% Moral obligation for using multicol:
- %% ------------------------------------
- %%
- %% Users of multicol who wish to include or use multicol or a modified
- %% version in a proprietary and commercially market product are asked
- %% under certain conditions (see below) for the payment of a license
- %% fee. The size of this fee is to be determined, in each instance,
- %% by the commercial user, depending on his/her judgment of the value of
- %% multicol for his/her product.
- %%
- %%
- %% The conditions for this are as follows:
- %%
- %% The producer of a proprietary and commercially market product
- %% that involves typesetting using multicol is asked to determine
- %% the value of a license fee for using multicol if
- %%
- %% - the product is a document and the producer has decided to
- %% include multicol to typeset (parts of) the document or has
- %% directed the author of the document to include multicol (for
- %% example, by providing a class file to be used by the author)
- %%
- %% - the product is a LaTeX class or package that includes multicol
- %%
- %%
- %% There is no moral obligation in case
- %%
- %% - the product is a document but producer has not directed
- %% the author to include multicol (in that case the moral obligation
- %% lies with the author of the document)
- %%
- %% - the product does not involve typesetting, e.g., consists, for
- %% example, of distributing multicol and its documentation.
- %%
- %% - the product is not proprietary, i.e., is made available as free
- %% software itself (which doesn't prohibit its commercial marketing)
- %%
- %% - multicol is used for non-commercial purposes
- %%
- %%
- %% Determinating a license fee might result in a license fee of zero
- %% (i.e., no payment) in case a producer has determined that the use
- %% of multicol has no enhancing effect on the product. This is a
- %% plausible scenario, i.e., in the above two cases the producer is
- %% only asked to evaluate the value of multicol for the product
- %% not for the payment of a license fee per se (which might or might
- %% not follow from this evaluation).
- %%
- %% The license fee, if any, can be payed either to the LaTeX3 fund
- %% (see ltx3info.txt in the base LaTeX distribution) or to the author of
- %% the program who can be contacted at
- %%
- %% [email protected]
- %%
- \NeedsTeXFormat{LaTeX2e}[1997/12/01]
- \ProvidesPackage{multicol}
- [2004/02/14 v1.6e multicolumn formatting (FMi)]
- %% \CheckSum{1561}
- %% \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 \~}
- %%
- \DeclareOption{twocolumn}
- {\PackageWarning{multicol}{May not work
- with the twocolumn option}}
- \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}
- \let\mc@gridwarn\maxdimen
- \DeclareOption{grid}{\def\mc@gridwarn{\maxdepth}}
- \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
- \ifx\@footnotetext\mult@footnotetext\else
- \let\orig@footnotetext\@footnotetext
- \let\@footnotetext\mult@footnotetext
- \fi
- \@ifnextchar[\mult@cols{\mult@cols[]}}
- \long\def\mult@footnotetext#1{\begingroup
- \columnwidth\textwidth
- \orig@footnotetext{#1}\endgroup}
- \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
- \ifdim \prevdepth = -\@m\p@
- \else
- \@tempcnta\prevdepth
- \@tempcntb\baselineskip
- \divide\@tempcnta\@tempcntb
- \advance\@tempcnta\@ne
- \dimen@\prevdepth
- \advance\dimen@ -\@tempcnta\baselineskip
- \advance\dimen@ \topskip
- \kern-\dimen@
- \fi
- \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
- \columnwidth\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
- \advance\vsize\col@number\baselineskip
- #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
- \ifdim\pagegoal=\maxdimen
- \ifvoid\colbreak@box\else
- \mult@info\@ne{Re-adding forced
- break(s) for splitting}%
- \unvbox\colbreak@box\fi
- \fi
- \penalty\z@
- \prevdepth\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
- \global\c@unbalance\z@
- \if@boxedmulticols\else
- \reinsert@footnotes
- \ifdim \pagegoal=\maxdimen
- \global\vsize\@colroom
- \else
- \enough@room\postmulticols
- \fi
- \fi
- \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
- {\ifvoid\count@
- \setbox\count@\hbox to\hsize{}%
- \else
- \wd\count@\hsize
- \fi}%
- \count@\col@number \advance\count@\m@ne
- \mult@info\z@
- {Column spec: \the\full@width\space = indent
- + columns + sep =\MessageBreak
- \the\multicol@leftmargin\space
- + \the\col@number\space
- x \the\hsize\space
- + \the\count@\space
- x \the\columnsep
- }%
- \ifvmode\else\errmessage{Multicol Error}\fi
- \nointerlineskip
- \setbox\z@\hbox{p}\global\dimen\tw@\dp\z@
- \moveright\multicol@leftmargin
- \hbox to\full@width{%
- \process@cols\mult@gfirstbox{%
- \ifdim\dp\count@>\dimen\tw@
- \global\dimen\tw@\dp\count@ \fi
- \box\count@
- \hss{\normalcolor\vrule
- \@width\columnseprule}\hss}%
- \ifdim\dp\mult@rightbox>\dimen\tw@
- \global\dimen\tw@\dp\mult@rightbox \fi
- \box\mult@rightbox
- \rlap{\phantom p}%
- }%
- \kern-\dimen\tw@
- \ifdim\dimen\tw@ = \mc@gridwarn
- \PackageWarning{multicol}%
- {Very deep columns!\MessageBreak
- Grid alignment might be broken}%
- \fi
- }
- \def\reinsert@footnotes{\ifvoid\footins\else
- \insert\footins{}\fi}
- \def\multi@column@out{%
- \ifnum\outputpenalty <-\@M
- \speci@ls \else
- \ifvoid\colbreak@box\else
- \mult@info\@ne{Re-adding forced
- break(s) for splitting}%
- \setbox\@cclv\vbox{%
- \unvbox\colbreak@box
- \penalty-\@Mv\unvbox\@cclv}%
- \fi
- \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
- \ifnum \outputpenalty<-\@MM
- \PackageError{multicol}{Document end
- inside multicols environment}\@ehd
- \@specialoutput
- \else
- \ifnum\outputpenalty = -\@Mv
- \mult@info\@ne{Forced column
- break seen}%
- \global\advance\vsize-\pagetotal
- \global\setbox\colbreak@box
- \vbox{\ifvoid\colbreak@box
- \else
- \unvbox\colbreak@box
- \penalty-\@Mv
- \fi
- \unvbox\@cclv}
- \reinsert@footnotes
- \else
- \PackageWarningNoLine{multicol}%
- {Floats and marginpars not
- allowed inside `multicols'
- environment!}
- \unvbox\@cclv\reinsert@footnotes
- \xdef\@freelist{\@freelist\@currlist}%
- \gdef\@currlist{}%
- \fi
- \fi
- \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{%
- \ifvoid\colbreak@box\else
- \unvbox\colbreak@box\break
- \mult@info\@ne{Re-adding
- forced break(s) in balancing}%
- \fi
- \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{%
- \get@keptmarks\mult@box
- \setbox\mult@box\vbox{%
- \penalty-\@M
- \unvbox\mult@box
- \remove@discardable@items
- }%
- \@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
- \ifnum\c@tracingmulticols>\@ne
- \message{<> last column =
- \the\ht\mult@grightbox^^J}%
- \fi
- \ifdim\ht\mult@grightbox >\dimen@
- \too@badtrue
- \ifnum\c@tracingmulticols>\@ne
- \typeout{Rejected: last
- column too large!}%
- \fi
- \else
- \setbox\@tempboxa
- \copy\mult@grightbox
- \setbox\z@\vsplit\@tempboxa to\maxdimen
- \ifvoid\@tempboxa
- \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
- \else
- \too@badtrue
- \ifnum\c@tracingmulticols>\@ne
- \typeout{Rejected: unprocessed
- forced break(s) in last column!}%
- \fi
- \fi
- \fi
- \ifdim\ht\mult@nat@firstbox<\dimen@
- \ifdim\ht\mult@nat@firstbox>\last@try
- \too@badtrue
- \ifnum\c@tracingmulticols>\@ne
- \typeout{Retry: using natural
- height of first column!}%
- \fi
- \dimen@\ht\mult@nat@firstbox
- \last@try\dimen@
- \advance\dimen@-\p@
- \fi
- \fi
- \iftoo@bad
- \advance\dimen@\p@
- \repeat
- \if@boxedmulticols\else
- \ifdim\dimen@>\@colroom
- \dimen@\@colroom
- \fi
- \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@
- \egroup
- \color@endbox
- \@largefloatcheck
- \outer@nobreak
- \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
- \newdimen\multicolundershoot
- \multicolovershoot=0pt
- \multicolundershoot=2pt
- \newbox\mult@nat@firstbox
- \def\mult@info#1#2{%
- \ifnum\c@tracingmulticols>#1%
- \GenericWarning
- {(multicol)\@spaces\@spaces}%
- {Package multicol: #2}%
- \fi
- }
- \@namedef{multicols*}{%
- \ifinner
- \PackageWarning{multicol}%
- {multicols* inside a box does
- not make sense.\MessageBreak
- Going to balance anyway}%
- \else
- \let\balance@columns@out
- \multi@column@out
- \fi
- \begin{multicols}
- }
- \@namedef{endmulticols*}{\vfill
- \end{multicols}}
- \mathchardef\@Mv=10005
- \def\columnbreak{%
- \ifnum\col@number<\tw@
- \PackageError{multicol}%
- {\noexpand\columnbreak outside multicols}%
- {This command can only be used within
- a multicols or multicols* environment.}%
- \else
- \ifvmode
- \penalty -\@Mv\relax
- \else
- \@bsphack
- \vadjust{\penalty -\@Mv\relax}%
- \@esphack
- \fi
- \fi}
- \newbox\colbreak@box
- \endinput
- %%
- %% End of file `multicol.sty'.
|