summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/xmltex/passivetex/nomulticol.sty
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/tex/xmltex/passivetex/nomulticol.sty')
-rw-r--r--Master/texmf-dist/tex/xmltex/passivetex/nomulticol.sty1065
1 files changed, 1065 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/xmltex/passivetex/nomulticol.sty b/Master/texmf-dist/tex/xmltex/passivetex/nomulticol.sty
new file mode 100644
index 00000000000..be1105f0fab
--- /dev/null
+++ b/Master/texmf-dist/tex/xmltex/passivetex/nomulticol.sty
@@ -0,0 +1,1065 @@
+%%
+%% This is file `nomulticol.sty',
+%% a tweak in package multicol.sty [2000/07/10 v1.5z multicolumn formatting (FMi)]
+%% Tweaked by Dirk Roorda 2003/01/09
+%%
+%% purpose: to have the \begin{multicols} \end{multicols} functionality without
+%% putting the material inside a group
+%%
+%% reason: in PassiveTeX a fo:flow is embedded in a multicols environment.
+%% But the fo:block span="all" must be able to interrupt this.
+%% However, sayin \end{multicols} just before and \begin{multicols}{N} just after
+%% does not work, because it makes the attributes, set between the start of the flow
+%% and the beginning of the block, invisible.
+%% That's why a grouping-transparent multicol setup is needed.
+%%
+%% method:
+%% providing macros \nobeginmulticols \noendmulticols that do essentially the same
+%% but do not create a group.
+%% I just removed the crucial \begingroup and \endgroup from \mult@@cols and \endmulticols.
+%% Instead of relying on the TeX group restore mechanism, I have added macros
+%% \save@mult@settings and \restore@mult@settings to mimick the grouping as far
+%% as the settings for the multicol package are concerned.
+
+%%
+%% 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
+%% 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.2
+%% 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.2 or later is part of all distributions of LaTeX
+%% version 1999/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-2000 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
+%%
+%% Frank.Mittelbach@latex-project.org
+%%
+\NeedsTeXFormat{LaTeX2e}[1997/12/01]
+\ProvidesPackage{nomulticol}
+ [2003/01/09 v1.5z multicolumn formatting (FMi)]
+%% \CheckSum{1451}
+%% \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{nomulticol}{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}
+\ProcessOptions
+
+%%
+%% Start Additions by Dirk Roorda
+%%
+
+\def\show@mult@settings{%
+ \typeout{LINEWIDTH=SAVED=\sav@linewidth; CURRENT=\the\linewidth}%
+ \typeout{COLUMNWIDTH=SAVED=\sav@columnwidth; CURRENT=\the\columnwidth}%
+ \typeout{FULL@WIDTH=SAVED=\sav@full@width; CURRENT=\the\full@width}%
+ \typeout{HSIZE=SAVED=\sav@hsize; CURRENT=\the\hsize}%
+ \typeout{VSIZE=SAVED=\sav@vsize; CURRENT=\the\vsize}%
+ \typeout{BASELINESKIP=SAVED=\sav@baselineskip; CURRENT=\the\baselineskip}%
+ \typeout{EMERGENCYSTRETCH=SAVED=\sav@emergencystretch; CURRENT=\the\emergencystretch}%
+ \typeout{PRETOLERANCE=SAVED=\sav@pretolerance; CURRENT=\the\pretolerance}%
+ \typeout{TOLERANCE=SAVED=\sav@tolerance; CURRENT=\the\tolerance}%
+ \typeout{HBADNESS=SAVED=\sav@hbadness; CURRENT=\the\hbadness}%
+ \typeout{VBADNESS=SAVED=\sav@vbadness; CURRENT=\the\vbadness}%
+ \typeout{PARSHAPE=SAVED=\sav@parshape; CURRENT=\the\parshape}%
+ \typeout{@TOTALLEFTMARGIN=SAVED=\sav@totalleftmargin; CURRENT=\the\@totalleftmargin}%
+ \typeout{MULTICOL@LEFTMARGIN=SAVED=\sav@multicol@leftmargin; CURRENT=\the\multicol@leftmargin}%
+ \typeout{@COLROOM=SAVED=\sav@colroom; CURRENT=\the\@colroom}%
+ \typeout{DOUBLECOL@NUMBER=SAVED=\sav@doublecol@number; CURRENT=\the\doublecol@number}%
+ \typeout{@TEMPDIMA=SAVED=\sav@tempdima; CURRENT=\the\@tempdima}%
+ \typeout{FOOTINS=SAVED=\sav@count@footins; CURRENT=\the\count\footins}%
+ \typeout{FOOTINS=SAVED=\sav@skip@footins; CURRENT=\the\skip\footins}%
+%
+ \typeout{COL@NUMBER=SAVED=\sav@col@number; CURRENT=\the\col@number}%
+ \typeout{PAGE@FREE=SAVED=\sav@page@free; CURRENT=\the\page@free}%
+ \typeout{@TEMPSKIPA=SAVED=\sav@tempskipa; CURRENT=\the\@tempskipa}%
+}
+
+\def\explain@mult@settings{%
+ \typeout{linewidth=\meaning\linewidth}%
+ \typeout{columnwidth=\meaning\columnwidth}%
+ \typeout{full-width=\meaning\full@width}%
+ \typeout{hsize=\meaning\hsize}%
+ \typeout{vsize=\meaning\vsize}%
+ \typeout{baselineskip=\meaning\baselineskip}%
+ \typeout{emergencystretch=\meaning\emergencystretch}%
+ \typeout{pretolerance=\meaning\pretolerance}%
+ \typeout{tolerance=\meaning\tolerance}%
+ \typeout{hbadness=\meaning\hbadness}%
+ \typeout{vbadness=\meaning\vbadness}%
+ \typeout{parshape=\meaning\parshape}%
+ \typeout{-totalleftmargin=\meaning\@totalleftmargin}%
+ \typeout{multicol-leftmargin=\meaning\multicol@leftmargin}%
+ \typeout{-colroom=\meaning\@colroom}%
+ \typeout{doublecol-number=\meaning\doublecol@number}%
+ \typeout{-tempdima=\meaning\@tempdima}%
+ \typeout{-tempskipa=\meaning\@tempskipa}%
+ \typeout{page-free=\meaning\page@free}%
+ \typeout{col-number=\meaning\col@number}%
+}
+
+\def\save@mult@settings{%
+ \xdef\sav@linewidth{\the\linewidth}%
+ \xdef\sav@columnwidth{\the\columnwidth}%
+ \xdef\sav@full@width{\the\full@width}%
+ \xdef\sav@hsize{\the\hsize}%
+ \xdef\sav@vsize{\the\vsize}%
+ \xdef\sav@baselineskip{\the\baselineskip}%
+ \xdef\sav@emergencystretch{\the\emergencystretch}%
+ \xdef\sav@pretolerance{\the\pretolerance}%
+ \xdef\sav@tolerance{\the\tolerance}%
+ \xdef\sav@hbadness{\the\hbadness}%
+ \xdef\sav@vbadness{\the\vbadness}%
+ \xdef\sav@parshape{\the\parshape}%
+ \xdef\sav@totalleftmargin{\the\@totalleftmargin}%
+ \xdef\sav@multicol@leftmargin{\the\multicol@leftmargin}%
+ \xdef\sav@colroom{\the\@colroom}%
+ \xdef\sav@doublecol@number{\the\doublecol@number}%
+ \xdef\sav@tempdima{\the\@tempdima}%
+ \xdef\sav@count@footins{\the\count\footins}%
+ \xdef\sav@skip@footins{\the\skip\footins}%
+ \global\let\sav@dblfloat\@dblfloat
+ \global\let\sav@end@dblfloat\end@dblfloat
+ \xdef\sav@output{\the\output}%
+ \global\let\sav@reserved@c\reserved@c
+%
+ \xdef\sav@col@number{\the\col@number}%
+ \xdef\sav@page@free{\the\page@free}%
+ \xdef\sav@tempskipa{\the\@tempskipa}%
+ \global\let\sav@reserved@a\reserved@a
+ \global\let\sav@reserved@b\reserved@b
+ \global\let\sav@reserved@d\reserved@d
+ \global\let\sav@let@token\@let@token
+ \global\let\sav@footnotetext\@footnotetext
+ \global\let\sav@orig@footnotetext\orig@footnotetext
+}
+
+\def\restore@mult@settings{%
+ \global\linewidth\sav@linewidth\relax
+ \global\columnwidth\sav@columnwidth\relax
+ \global\full@width\sav@full@width\relax
+ \global\hsize\sav@hsize\relax
+ \global\vsize\sav@vsize\relax
+ \global\baselineskip\sav@baselineskip\relax
+ \global\emergencystretch\sav@emergencystretch\relax
+ \global\pretolerance\sav@pretolerance\relax
+ \global\tolerance\sav@tolerance\relax
+ \global\hbadness\sav@hbadness\relax
+ \global\vbadness\sav@vbadness\relax
+ \global\parshape\sav@parshape\relax
+ \global\@totalleftmargin\sav@totalleftmargin\relax
+ \global\multicol@leftmargin\sav@multicol@leftmargin\relax
+ \global\@colroom\sav@colroom\relax
+ \global\doublecol@number\sav@doublecol@number\relax
+ \global\@tempdima\sav@tempdima\relax
+ \global\count\footins\sav@count@footins\relax
+ \global\skip\footins\sav@skip@footins\relax
+ \global\let\@dblfloat\sav@dblfloat
+ \global\let\end@dblfloat\sav@end@dblfloat
+ \global\expandafter\output\expandafter{\sav@output}%
+ \global\let\reserved@c\sav@reserved@c
+%
+ \global\col@number\sav@col@number\relax
+ \global\page@free\sav@page@free\relax
+ \global\@tempskipa\sav@tempskipa\relax
+ \global\let\reserved@a\sav@reserved@a
+ \global\let\reserved@b\sav@reserved@b
+ \global\let\reserved@d\sav@reserved@d
+ \global\let\@let@token\sav@let@token
+ \global\let\@footnotetext\sav@footnotetext
+ \global\let\orig@footnotetext\sav@orig@footnotetext
+}
+
+\def\nobeginmulticols#1{%
+\typeout{^^JSTART #1 COLUMNS}%
+ \save@mult@settings
+ \global\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}%
+ \global\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}%
+ \global\col@number10 \fi
+ \global\let\orig@footnotetext\@footnotetext
+ \long\gdef\@footnotetext##1{\begingroup
+ \columnwidth\textwidth
+ \orig@footnotetext{##1}\endgroup}%
+ \@ifnextchar[\nomult@cols{\nomult@cols[]}}
+
+\def\nomult@cols[#1]{\@ifnextchar[%
+ {\nomult@@cols{#1}}%
+ {\nomult@@cols{#1}[\premulticols]}}
+
+\def\nomult@@cols#1[#2]{%
+ \par
+ \ifinner \global\@boxedmulticolstrue
+ \else
+ \ifnum \doublecol@number>\z@
+ \global\@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
+ \global\setbox\mult@box\vbox\bgroup
+ \fi
+ \ignorespaces}
+
+\def\noendmulticols{\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@
+ \global\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
+ }%
+\typeout{^^JSTOP \the\col@number\space COLUMNS}%
+ \restore@mult@settings
+}
+
+%%
+%% End Additions by Dirk Roorda
+%%
+
+%%
+%% The following code is unmodified, except that many local
+%% statements have been globalized
+%%
+
+\newif\if@boxedmulticols
+\global\@boxedmulticolsfalse
+
+\newbox\mult@box
+
+\def\enough@room#1{%
+ \if@boxedmulticols\else
+ \par
+ \bgroup\@nobreakfalse\addpenalty\z@\egroup
+ \global\page@free\pagegoal
+ \global\advance\page@free -\pagetotal
+ \global\@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}
+
+\newif\ifmult@just@prepared
+
+\def\prepare@multicols{%
+ \global\multicol@leftmargin\@totalleftmargin
+ \global\@totalleftmargin\z@
+ \global\parshape\z@
+ \global\doublecol@number\col@number
+ \global\multiply\doublecol@number\tw@
+ \global\advance\doublecol@number\mult@rightbox
+ \if@boxedmulticols
+ \global\let\l@kept@firstmark\kept@firstmark
+ \global\let\l@kept@botmark\kept@botmark
+ \global\let\kept@firstmark\@empty
+ \global\let\kept@botmark\@empty
+ \else
+ \nointerlineskip {\global\topskip\z@\null}%
+ \global\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
+ \global\advance\@colroom-\ht\partial@page
+ \set@mult@vsize\relax
+ \global\output{\multi@column@out}%
+ \init@mult@footins
+ \reinsert@footnotes
+ \fi
+ \global\vbadness\@Mi \global\hbadness5000
+ \global\tolerance\multicoltolerance
+ \global\pretolerance\multicolpretolerance
+ \setemergencystretch\col@number\hsize
+ \set@floatcmds
+ \global\advance\baselineskip\multicolbaselineskip
+ \global\hsize\linewidth \global\advance\hsize\columnsep
+ \global\advance\hsize-\col@number\columnsep
+ \global\divide\hsize\col@number
+ \global\full@width\linewidth
+ \global\linewidth\hsize
+ \global\columnwidth\hsize
+ \global\mult@just@preparedtrue
+%\typeout{SETTING JUSTPREPARED to TRUE}%
+}
+
+\def\refreshmulticols{%
+%\typeout{REFRESH?}%
+ \ifmult@just@prepared
+%\typeout{NO, JUSTPREPARED!}%
+ \else
+%\typeout{YES}%
+ \global\multicol@leftmargin\@totalleftmargin
+ \global\@totalleftmargin\z@
+ \global\parshape\z@
+ \global\doublecol@number\col@number
+ \global\multiply\doublecol@number\tw@
+ \global\advance\doublecol@number\mult@rightbox
+ \if@boxedmulticols
+ \global\let\l@kept@firstmark\kept@firstmark
+ \global\let\l@kept@botmark\kept@botmark
+ \global\let\kept@firstmark\@empty
+ \global\let\kept@botmark\@empty
+ \else
+ \nointerlineskip {\global\topskip\z@\null}%
+ \global\advance\@colroom-\ht\partial@page
+ \set@mult@vsize\relax
+ \init@mult@footins
+ % \reinsert@footnotes
+ \fi
+ \global\vbadness\@Mi \global\hbadness5000
+ \global\tolerance\multicoltolerance
+ \global\pretolerance\multicolpretolerance
+ \setemergencystretch\col@number\hsize
+ \set@floatcmds
+ % \global\advance\baselineskip\multicolbaselineskip
+ \global\hsize\linewidth \global\advance\hsize\columnsep
+ \global\advance\hsize-\col@number\columnsep
+ \global\divide\hsize\col@number
+ \global\full@width\linewidth
+ \global\linewidth\hsize
+ \global\columnwidth\hsize
+ \global\mult@just@preparedtrue
+%\typeout{SETTING JUSTPREPARED to TRUE}%
+ \fi
+}
+
+\def\init@mult@footins{%
+ \global\multiply\count\footins\col@number
+ \global\multiply\skip \footins\col@number
+}
+
+\def\set@mult@vsize#1{%
+ \global\vsize\@colroom
+ \global\@tempdima\baselineskip
+ \global\advance\@tempdima-\topskip
+ \global\advance\vsize\@tempdima
+ \global\vsize\col@number\vsize
+ \global\advance\vsize-\@tempdima
+ #1\global\advance\vsize\c@collectmore\baselineskip}
+
+\newdimen\multicol@leftmargin
+\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
+\global\c@unbalance = 0
+\global\c@collectmore = 0
+\global\col@number = 1
+\global\multicoltolerance = 9999
+\global\multicolpretolerance = -1
+\global\premulticols = 50pt
+\global\postmulticols= 20pt
+\global\multicolsep = 12pt plus 4pt minus 3pt
+\global\multicolbaselineskip=0pt
+
+\def\process@cols#1#2{\global\count@#1\relax
+ \loop
+ #2%
+ \global\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}%
+ \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{\normalcolor\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
+ \global\mult@just@preparedfalse
+%\typeout{SETTING JUSTPREPARED TO FALSE}%
+ \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
+ \global\dimen@\@colroom
+ \global\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
+ }%
+ \global\setbox\mult@rightbox\vsplit\@cclv to\dimen@
+ \set@keptmarks
+ \ifshr@nking
+ \global\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
+ \global\let\firstmark\kept@topmark
+ \global\let\botmark\kept@topmark
+ \else
+ \global\let\firstmark\kept@firstmark
+ \global\let\botmark\kept@botmark
+ \fi
+ \global\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{%
+ \global\advance\dimen@-\skip\footins
+ \global\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
+ \PackageWarning{multicol}%
+ {Floats and marginpars not
+ allowed inside `multicols'
+ environment!
+ \@gobble}%
+ \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\global\shr@nkingtrue\@esphack}
+
+\def\flushcolumns{%
+ \@bsphack\global\shr@nkingfalse\@esphack}
+
+\def\balance@columns@out{%
+ \global\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
+ \global\setbox\mult@box\vbox{%
+ \penalty-\@M
+ \unvbox\mult@box
+ \remove@discardable@items
+ }%
+ \global\@tempdima\topskip
+ \global\splittopskip\@tempdima
+ \@plus\multicolundershoot
+ \@minus\multicolovershoot
+ \splitmaxdepth\maxdepth
+ \setbox\@tempboxa\vsplit\mult@box to\z@
+ \global\@tempdima\ht\mult@box
+ \global\advance\@tempdima\dp\mult@box
+ \global\divide\@tempdima\col@number
+ \global\count@\@tempdima
+ \global\divide\count@\baselineskip
+ \global\dimen@\count@\baselineskip
+ \global\advance\dimen@\topskip
+ \ifdim \dimen@ >\@tempdima
+ \global\advance\dimen@-\baselineskip
+ \fi
+ \global\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)}%
+ \global\dimen@\topskip
+ \fi
+ \global\vbadness\@M
+ \global\vfuzz \col@number\baselineskip
+ \global\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
+ }}%
+ \global\boxmaxdepth\maxdepth
+ \global\setbox\mult@grightbox
+ \vbox{\unvbox\mult@grightbox}%
+ \global\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@
+ \global\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
+ \global\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
+ \global\too@badtrue
+ \ifnum\c@tracingmulticols>\@ne
+ \typeout{Retry: using natural
+ height of first column!}%
+ \fi
+ \global\dimen@\ht\mult@nat@firstbox
+ \global\last@try\dimen@
+ \global\advance\dimen@-\p@
+ \fi
+ \fi
+ \iftoo@bad
+ \global\advance\dimen@\p@
+ \repeat
+ \if@boxedmulticols\else
+ \ifdim\dimen@>\@colroom
+ \global\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
+
+\global\let\@tempa\relax
+
+\@ifundefined{emergencystretch}
+ {\newdimen\emergencystretch}{}
+
+\def\setemergencystretch#1#2{%
+ \global\emergencystretch 4pt
+ \global\multiply\emergencystretch#1}
+
+\def\set@floatcmds{%
+ \global\let\@dblfloat\@dbflt
+ \gdef\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{{}{}}
+
+\global\let\kept@firstmark\@empty
+\global\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\gdef\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
+\global\c@columnbadness=10000
+
+\newcount\c@finalcolumnbadness
+\global\c@finalcolumnbadness=9999
+
+\newdimen\last@try
+\newdimen\multicolovershoot
+\global\multicolovershoot=2pt
+
+\newdimen\multicolundershoot
+\global\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
+ \global\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
+
+\global\let\interbeginmulticols\nobeginmulticols
+\global\let\interendmulticols\noendmulticols
+\endinput
+%%
+%% End of file `multicol.sty'.