diff options
Diffstat (limited to 'Master/texmf-dist/tex/xmltex/passivetex/nomulticol.sty')
-rw-r--r-- | Master/texmf-dist/tex/xmltex/passivetex/nomulticol.sty | 1065 |
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'. |