project/static/proceedings/sources/ltxgrid.sty
changeset 99 30b754364bbb
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/project/static/proceedings/sources/ltxgrid.sty	Tue May 11 03:51:06 2010 +0530
@@ -0,0 +1,1984 @@
+%%
+%% This is file `ltxgrid.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% ltxgrid.dtx  (with options: `ltxgrid,ltxgrid-krn')
+%% 
+%% This is a generated file;
+%% altering it directly is inadvisable;
+%% instead, modify the original source file.
+%% See the URL in the file 00readme.txt.
+%% 
+%% Copyright notice.
+%% 
+%%    These files are distributed
+%%    WITHOUT ANY WARRANTY; without even the implied warranty of
+%%    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+%% 
+%%%  @LaTeX-file{
+%%%     filename        = "ltxgrid.dtx",
+%%%     version         = "1.0rc5",
+%%%     date            = "2001/07/26",
+%%%     time            = "12:23:00 GMT+8",
+%%%     checksum        = "4234",
+%%%     author          = "Arthur Ogawa (mailto:ogawa@teleport.com),
+%%%                        commissioned by the American Physical Society.
+%%%                        ",
+%%%     copyright       = "Copyright (C) 1999, 2000 Arthur Ogawa,
+%%%                        distributed under the terms of the
+%%%                        LaTeX Project Public License, see
+%%%                        ftp://ctan.tug.org/macros/latex/base/lppl.txt
+%%%                        ",
+%%%     address         = "Arthur Ogawa,
+%%%                        USA",
+%%%     telephone       = "",
+%%%     FAX             = "",
+%%%     email           = "ogawa@teleport.com",
+%%%     codetable       = "ISO/ASCII",
+%%%     keywords        = "latex, page grid, main vertical list",
+%%%     supported       = "yes",
+%%%     abstract        = "package to change page grid, MVL",
+%%%     docstring       = "The checksum field above generated by ltxdoc",
+%%%  }
+\NeedsTeXFormat{LaTeX2e}[1995/12/01]%
+\ProvidesFile{ltxgrid.sty}%
+ [2001/07/26 1.0rc5 page grid package]% \fileversion
+\def\package@name{ltxgrid}%
+\expandafter\PackageInfo\expandafter{\package@name}{%
+ Page grid for \protect\LaTeXe,
+ by A. Ogawa (ogawa@teleport.com)%
+}%
+\RequirePackage{ltxutil}%
+\typeout{%
+ ltxgrid: portions licensed from W. E. Baxter (web@superscript.com)%
+}%
+\newcounter{linecount}
+\def\lineloop#1{%
+ \loop
+ \ifnum\c@linecount<#1\relax
+  \global\advance\c@linecount\@ne
+  \par
+  \hb@xt@\hsize{%
+   \ifnum\c@linecount<100 0\fi\ifnum\c@linecount<10 0\fi\number\c@linecount
+   \vrule depth2.5\p@
+   \leaders\hrule\hfil
+  }%
+  \penalty\interlinepenalty
+ \repeat
+}%
+\let\@@mark\mark
+\let\@@topmark\topmark
+\let\@@firstmark\firstmark
+\let\@@botmark\botmark
+\let\@@splitfirstmark\splitfirstmark
+\let\@@splitbotmark\splitbotmark
+\def\@themark{{}{}{}{}}%
+\def\nul@mark{{}{}{}{}\@@nul}%
+\def\set@mark@netw@#1#2#3#4#5#6#7{\gdef#1{{#6}{#7}{#4}{#5}}\do@mark}%
+\def\set@marktw@#1#2#3#4#5#6{\gdef#1{{#2}{#6}{#4}{#5}}\do@mark}%
+\def\set@markthr@@#1#2#3#4#5#6{\gdef#1{{#2}{#3}{#6}{#5}}\do@mark}%
+\def\get@mark@@ne#1#2#3#4#5\@@nul{#1}%
+\def\get@mark@tw@#1#2#3#4#5\@@nul{#2}%
+\def\get@mark@thr@@#1#2#3#4#5\@@nul{#3}%
+\def\get@mark@f@ur#1#2#3#4#5\@@nul{#4}%
+\def\mark@netw@{\expandafter\set@mark@netw@\expandafter\@themark\@themark}%
+\def\marktw@{\expandafter\set@marktw@\expandafter\@themark\@themark}%
+\def\markthr@@{\expandafter\set@markthr@@\expandafter\@themark\@themark}%
+\def\do@mark{\do@@mark\@themark\nobreak@mark}%
+\def\do@@mark#1{%
+ \begingroup
+  \let@mark
+  \@@mark{#1}%
+ \endgroup
+}%
+\def\let@mark{%
+ \let\protect\@unexpandable@protect
+ \let\label\relax
+ \let\index\relax
+ \let\glossary\relax
+}%
+\def\nobreak@mark{%
+ \@if@sw\if@nobreak\fi{\@ifvmode{\nobreak}{}}{}%
+}%
+\def\mark@envir{\markthr@@}%
+\def\bot@envir{%
+ \expandafter\expandafter
+ \expandafter\get@mark@thr@@
+ \expandafter\@@botmark
+             \nul@mark
+}%
+\def\markboth{\mark@netw@}%
+\def\markright{\marktw@}%
+\def\leftmark{%
+ \expandafter\expandafter
+ \expandafter\get@mark@@ne
+ \expandafter\saved@@botmark
+             \nul@mark
+}%
+\def\rightmark{%
+ \expandafter\expandafter
+ \expandafter\get@mark@tw@
+ \expandafter\saved@@firstmark
+             \nul@mark
+}%
+\let\primitive@output\output
+\long\def\@tempa#1\@@nil{#1}%
+\toks@
+\expandafter\expandafter
+\expandafter{%
+\expandafter \@tempa
+             \the\output
+             \@@nil
+             }%
+\newtoks\output
+\output\expandafter{\the\toks@}%
+\primitive@output{\dispatch@output}%
+\def\dispatch@output{%
+ \let\par\@@par
+ \expandafter\let\expandafter\@tempa\csname output@\the\outputpenalty\endcsname
+ \outputdebug@sw{%
+  \saythe\badness
+  \saythe\outputpenalty
+  \saythe\holdinginserts
+  \say\thepagegrid
+  \saythe\pagegrid@col
+  \saythe\pagegrid@cur
+ %\say\bot@envir
+  \saythe\insertpenalties
+ %\say\@@topmark
+ %\say\saved@@topmark
+ %\say\@@firstmark
+ %\say\saved@@firstmark
+  \say\@@botmark
+ %\say\saved@@botmark
+  \saythe\pagegoal
+  \saythe\pagetotal
+  \saythe{\badness\@cclv}%
+  \expandafter\@ifx\expandafter{\csname output@-\the\execute@message@pen\endcsname\@tempa}{%
+   \say\@message@saved
+  }{%
+   \expandafter\say\csname output@\the\outputpenalty\endcsname
+  }%
+  \say\@toplist
+  \say\@botlist
+  \say\@dbltoplist
+  \say\@deferlist
+  {\tracingall\scrollmode
+   \showbox\@cclv
+   \showbox\@cclv@saved
+   \showbox\pagesofar
+   \showbox\footbox
+   \showbox\footins@saved
+   \showbox\footins
+   \showlists
+  }%
+ }{}%
+ \@ifnotrelax\@tempa{\@tempa}{\the\output}%
+}%
+\@ifxundefined{\outputdebug@sw}{%
+ \@booleanfalse\outputdebug@sw
+}{}%
+\output={\toggle@insert\output@holding\output@moving}%
+\def\output@holding{%
+\csname output@init@\bot@envir\endcsname
+\@if@exceed@pagegoal{\unvcopy\@cclv}{%
+  \setbox\z@\vbox{\unvcopy\@cclv}%
+\outputdebug@sw{{\tracingall\scrollmode\showbox\z@}}{}%
+\dimen@\ht\@cclv\advance\dimen@-\ht\z@
+\dead@cycle@repair\dimen@
+}{%
+\dead@cycle
+}%
+}%
+\def\@if@exceed@pagegoal#1{%
+ \begingroup
+  \setbox\z@\vbox{#1}%
+ \dimen@\ht\z@\advance\dimen@\dp\z@
+  \outputdebug@sw{\saythe\dimen@}{}%
+  \@ifdim{\dimen@>\pagegoal}{%
+  \setbox\z@\vbox{\@@mark{}\unvbox\z@}%
+   \splittopskip\topskip
+   \splitmaxdepth\maxdepth
+   \vbadness\@M
+   \vfuzz\maxdimen
+   \setbox\tw@\vsplit\z@ to\pagegoal
+  \outputdebug@sw{{\tracingall\scrollmode\showbox\tw@\showbox\z@}}{}%
+  \setbox\tw@\vbox{\unvbox\tw@}%
+  \@ifdim{\ht\tw@=\z@}{%
+   \ltxgrid@info{Found overly large chunk while preparing to move insertions. Attempting repairs}%
+    \aftergroup\true@sw
+  }{%
+    \aftergroup\false@sw
+  }%
+ }{%
+ \aftergroup\false@sw
+ }%
+\endgroup
+}%
+%% \item
+%%  Put down the same interrupts as for the non-trivial case above.
+\def\output@moving{%
+ \set@top@firstmark
+ \@ifnum{\outputpenalty=\do@newpage@pen}{%
+  \setbox\@cclv\vbox{%
+   \unvbox\@cclv
+   \setbox\z@\lastbox
+   \@ifdim{\ht\z@=\ht\@protection@box}{\box\lastbox}{\unskip}%
+  }%
+ }{}%
+ \@cclv@nontrivial@sw{%
+  \csname output@prep@\bot@envir \endcsname
+  \@makecol\csname output@column@\thepagegrid\endcsname
+  \protect@penalty\do@startcolumn@pen
+  \clearpage@sw{%
+   \protect@penalty\do@endpage@pen
+  }{}%
+  \csname output@post@\bot@envir \endcsname
+ }{%
+  {\setbox\z@\box\@cclv}%
+ }%
+ \set@colroom
+ \global\@mparbottom\z@
+ \global\@textfloatsheight\z@ %FIXME: this legacy LaTeX variable is set, but never queried!
+}%
+\def\@cclv@nontrivial@sw{%
+\@ifx@empty\@toplist{%
+\@ifx@empty\@botlist{%
+\@ifvoid\footins{%
+ \@ifvoid\@cclv{%
+  \false@sw
+ }{%
+\setbox\z@\vbox{\unvcopy\@cclv}%
+\@ifdim{\ht\z@=\topskip}{%
+\setbox\z@\vbox{%
+\unvbox\z@
+\setbox\z@\lastbox\dimen@\lastskip\unskip
+\@ifdim{\ht\z@=\ht\@protection@box}{%
+\advance\dimen@\ht\z@
+\@ifdim{\dimen@=\topskip}{%
+\aftergroup\true@sw
+}{%
+\aftergroup\false@sw
+}%
+}{%
+\aftergroup\false@sw
+}%
+}%
+{%
+\false@sw % Normal for \clearpage
+}{%
+\true@sw
+}%
+}{%
+\@ifdim{\ht\z@=\z@}{%
+\ltxgrid@info{Found trivial column. Discarding it}%
+\outputdebug@sw{{\tracingall\scrollmode\showbox\@cclv}}{}%
+\false@sw
+}{%
+\true@sw
+}%
+}%
+ }%
+}{%
+\true@sw
+}%
+}{%
+\true@sw
+}%
+}{%
+\true@sw
+}%
+}%
+\def\protect@penalty#1{\protection@box\penalty-#1\relax}%
+\newbox\@protection@box
+\setbox\@protection@box\vbox to1986sp{\vfil}%
+\def\protection@box{\nointerlineskip\copy\@protection@box}%
+\def\dead@cycle@repair#1{%
+\expandafter\do@@mark
+\expandafter{%
+\@@botmark
+}%
+\unvbox\@cclv
+\nointerlineskip
+\vbox to#1{\vss}%
+\@ifnum{\outputpenalty<\@M}{\penalty\outputpenalty}{}%
+}%
+\def\dead@cycle@repair@protected#1{%
+\expandafter\do@@mark
+\expandafter{%
+\@@botmark
+}%
+\begingroup
+  \unvbox\@cclv
+  \setbox\z@\lastbox % Remove protection box
+ \nointerlineskip
+  \advance#1-\ht\@protection@box
+ \vbox to#1{\vss}%
+  \protection@box % Reinsert protection box
+ \@ifnum{\outputpenalty<\@M}{\penalty\outputpenalty}{}%
+\endgroup
+}%
+\def\dead@cycle{%
+ \expandafter\do@@mark
+ \expandafter{%
+              \@@botmark
+             }%
+ \unvbox\@cclv
+ \@ifnum{\outputpenalty<\@M}{\penalty\outputpenalty}{}%
+}%
+\def\output@init@document{%
+ \@ifvoid\footbox{}{%
+  \global\advance\vsize-\ht\footbox
+  \global\advance\vsize-\dp\footbox
+ }%
+}%
+\def\output@prep@document{%
+ \@ifvoid\footbox{}{%
+  \setbox\footins\vbox{\unvbox\footbox\unvbox\footins}%
+ }%
+}%
+\def\output@post@document{}%
+\let\@opcol\@undefined
+\def\@makecol{%
+ \setbox\@outputbox\vbox{%
+  \boxmaxdepth\@maxdepth
+  \@tempdima\dp\@cclv
+  \unvbox\@cclv
+  \vskip-\@tempdima
+ }%
+ \xdef\@freelist{\@freelist\@midlist}\global\let\@midlist\@empty
+ \@combinefloats
+ \@combineinserts\@outputbox\footins
+  \set@adj@colht\dimen@
+  \count@\vbadness
+  \vbadness\@M
+  \setbox\@outputbox\vbox to\dimen@{%
+   \@texttop
+   \dimen@\dp\@outputbox
+   \unvbox\@outputbox
+   \vskip-\dimen@
+   \@textbottom
+  }%
+  \vbadness\count@
+ \global\maxdepth\@maxdepth
+}%
+\let\@makespecialcolbox\@undefined
+\def\@combineinserts#1#2{%
+ \setbox#1\vbox{%
+  \unvbox#1%
+  \vbox{%
+   \@ifvoid#2{}{%
+    \vskip\skip\footins
+    \color@begingroup
+    \normalcolor
+    \footnoterule
+    \nointerlineskip
+    \box#2%
+    \color@endgroup
+   }{}%
+  }%
+ }%
+}%
+\appdef\@floatplacement{%
+ \global\@fpmin\@fpmin
+}%
+\mathchardef\pagebreak@pen=\@M
+\expandafter\let\csname output@-\the\pagebreak@pen\endcsname\relax
+\mathchardef\do@startcolumn@pen=10005
+\@namedef{output@-\the\do@startcolumn@pen}{\do@startcolumn}%
+\def\do@startcolumn{%
+ \setbox\@cclv\vbox{\unvbox\@cclv\setbox\z@\lastbox\unskip}%
+ \clearpage@sw{\@clearfloatplacement}{\@floatplacement}%
+ \set@colroom
+ \@booleanfalse\pfloat@avail@sw
+ \begingroup
+  \@colht\@colroom
+  \@booleanfalse\float@avail@sw
+  \@tryfcolumn\test@colfloat
+  \float@avail@sw{\aftergroup\@booleantrue\aftergroup\pfloat@avail@sw}{}%
+ \endgroup
+ \fcolmade@sw{%
+  \setbox\@cclv\vbox{\unvbox\@outputbox\unvbox\@cclv}%
+  \outputpenalty-\pagebreak@pen % ask for a return visit, this time with insertions and all.
+  \dead@cycle
+ }{%
+  \begingroup
+   \let\@elt\@scolelt
+   \let\reserved@b\@deferlist\global\let\@deferlist\@empty\reserved@b
+  \endgroup
+  \clearpage@sw{%
+   \outputpenalty\@M
+  }{%
+   \outputpenalty\do@newpage@pen
+  }%
+  \dead@cycle
+ }%
+ \check@deferlist@stuck\do@startcolumn
+ \set@vsize
+}%
+\def\@scolelt#1{\def\@currbox{#1}\@addtonextcol}%
+\def\test@colfloat#1{%
+ \csname @floatselect@sw@\thepagegrid\endcsname#1{}{\@testtrue}%
+ \@if@sw\if@test\fi{}{\aftergroup\@booleantrue\aftergroup\float@avail@sw}%
+}%
+\def\@addtonextcol{%
+ \begingroup
+  \@insertfalse
+  \@setfloattypecounts
+  \csname @floatselect@sw@\thepagegrid\endcsname\@currbox{%
+   \@ifnum{\@fpstype=8 }{}{%
+     \@ifnum{\@fpstype=24 }{}{%
+       \@flsettextmin
+       \@reqcolroom \ht\@currbox
+       \advance \@reqcolroom \@textmin
+       \advance \@reqcolroom \vsize % take into account split insertions
+       \advance \@reqcolroom -\pagegoal
+       \@ifdim{\@colroom>\@reqcolroom}{%
+         \@flsetnum \@colnum
+         \@ifnum{\@colnum>\z@}{%
+            \@bitor\@currtype\@deferlist
+            \@if@sw\if@test\fi{}{%
+              \@addtotoporbot
+            }%
+         }{}%
+       }{}%
+     }%
+   }%
+  }{}%
+  \@if@sw\if@insert\fi{}{%
+    \@cons\@deferlist\@currbox
+  }%
+ \endgroup
+}%
+\mathchardef\do@startpage@pen=10006
+\@namedef{output@-\the\do@startpage@pen}{\do@startpage}%
+\def\do@startpage{%
+ \setbox\@cclv\vbox{\unvbox\@cclv\setbox\z@\lastbox\unskip}%
+ \clearpage@sw{\@clearfloatplacement}{\@dblfloatplacement}%
+ \set@colht
+ \@booleanfalse\pfloat@avail@sw
+ \begingroup
+  \@booleanfalse\float@avail@sw
+  \@tryfcolumn\test@dblfloat
+  \float@avail@sw{\aftergroup\@booleantrue\aftergroup\pfloat@avail@sw}{}%
+ \endgroup
+ \fcolmade@sw{%
+  \global\setbox\pagesofar\vbox{\unvbox\pagesofar\unvbox\@outputbox}%
+  \@combinepage
+  \@combinedblfloats
+  \@outputpage
+  \global\pagegrid@cur\@ne
+  \protect@penalty\do@startpage@pen
+ }{%
+  \begingroup
+   \@booleanfalse\float@avail@sw
+   \let\@elt\@sdblcolelt
+   \let\reserved@b\@deferlist\global\let\@deferlist\@empty\reserved@b
+  \endgroup
+  \@ifdim{\@colht=\textheight}{% No luck...
+   \pfloat@avail@sw{% ...but a float *was* available!
+    \forcefloats@sw{%
+     \ltxgrid@warn{Forced dequeueing of floats stalled}%
+    }{%
+     \ltxgrid@warn{Dequeueing of floats stalled}%
+    }%
+   }{}%
+  }{}%
+  \outputpenalty\@M
+  \dead@cycle
+ }%
+ \check@deferlist@stuck\do@startpage
+ \set@colht
+}%
+\def\@sdblcolelt#1{\def\@currbox{#1}\@addtodblcol}%
+\def\test@dblfloat#1{%
+ \@if@notdblfloat{#1}{\@testtrue}{}%
+ \@if@sw\if@test\fi{}{\aftergroup\@booleantrue\aftergroup\float@avail@sw}%
+}%
+\def\@if@notdblfloat#1{\@ifdim{\wd#1<\textwidth}}%
+\@booleanfalse\forcefloats@sw
+\def\@addtodblcol{%
+ \begingroup
+  \@if@notdblfloat{\@currbox}{%
+   \false@sw
+  }{%
+   \@setfloattypecounts
+   \@getfpsbit \tw@
+   \@bitor \@currtype \@deferlist
+   \@if@sw\if@test\fi{%
+    \false@sw
+   }{%
+    \@ifodd\@tempcnta{%
+     \aftergroup\@booleantrue\aftergroup\float@avail@sw
+     \@flsetnum \@dbltopnum
+     \@ifnum{\@dbltopnum>\z@}{%
+       \@ifdim{\@dbltoproom>\ht\@currbox}{%
+        \true@sw
+       }{%
+        \@ifnum{\@fpstype<\sixt@@n}{%
+         \begingroup
+          \advance \@dbltoproom \@textmin
+          \@ifdim{\@dbltoproom>\ht\@currbox}{%
+           \endgroup\true@sw
+          }{%
+           \endgroup\false@sw
+          }%
+        }{%
+         \false@sw
+        }%
+       }%
+     }{%
+      \false@sw
+     }%
+    }{%
+     \false@sw
+    }%
+   }%
+  }%
+  {%
+   \@tempdima -\ht\@currbox
+   \advance\@tempdima
+    -\@ifx{\@dbltoplist\@empty}{\dbltextfloatsep}{\dblfloatsep}%
+   \global \advance \@dbltoproom \@tempdima
+   \global \advance \@colht \@tempdima
+   \global \advance \@dbltopnum \m@ne
+   \@cons \@dbltoplist \@currbox
+  }{%
+   \@cons \@deferlist \@currbox
+  }%
+ \endgroup
+}%
+\def\@tryfcolumn#1{%
+  \global\@booleanfalse\fcolmade@sw
+  \@ifx@empty\@deferlist{}{%
+    \global\let\@trylist\@deferlist
+    \global\let\@failedlist\@empty
+    \begingroup
+      \dimen@\vsize\advance\dimen@-\pagegoal\@ifdim{\dimen@>\z@}{%
+       \advance\@fpmin-\dimen@
+      }{}%
+      \def\@elt{\@xtryfc#1}\@trylist
+    \endgroup
+    \fcolmade@sw{%
+      \global\setbox\@outputbox\vbox{\vskip \@fptop}%
+      \let \@elt \@wtryfc \@flsucceed
+      \global\setbox\@outputbox\vbox{\unvbox\@outputbox
+        \unskip \vskip \@fpbot
+      }%
+      \let \@elt \relax
+      \xdef\@deferlist{\@failedlist\@flfail}%
+      \xdef\@freelist{\@freelist\@flsucceed}%
+    }{}%
+  }%
+}%
+\def\@wtryfc #1{%
+  \global\setbox\@outputbox\vbox{\unvbox\@outputbox
+    \box #1\vskip\@fpsep
+  }%
+}%
+\def\@xtryfc#1#2{%
+  \@next\reserved@a\@trylist{}{}% trim \@trylist. Ugly!
+  \@currtype \count #2%
+  \divide\@currtype\@xxxii\multiply\@currtype\@xxxii
+  \@bitor \@currtype \@failedlist
+  \@testfp #2%
+  #1#2%
+  \@ifdim{\ht #2>\@colht   }{\@testtrue}{}%
+  \@if@sw\if@test\fi{%
+   \@cons\@failedlist #2%
+  }{%
+   \begingroup
+     \gdef\@flsucceed{\@elt #2}%
+     \global\let\@flfail\@empty
+     \@tempdima\ht #2%
+     \def \@elt {\@ztryfc#1}\@trylist
+     \@ifdim{\@tempdima >\@fpmin}{%
+       \global\@booleantrue\fcolmade@sw
+     }{%
+       \@cons\@failedlist #2%
+     }%
+   \endgroup
+   \fcolmade@sw{%
+     \let \@elt \@gobble
+   }{}%
+  }%
+}%
+\def\@ztryfc #1#2{%
+  \@tempcnta \count#2%
+  \divide\@tempcnta\@xxxii\multiply\@tempcnta\@xxxii
+  \@bitor \@tempcnta {\@failedlist \@flfail}%
+  \@testfp #2%
+  #1#2%
+  \@tempdimb\@tempdima
+  \advance\@tempdimb \ht#2\advance\@tempdimb\@fpsep
+  \@ifdim{\@tempdimb >\@colht}{%
+    \@testtrue
+  }{}%
+  \@if@sw\if@test\fi{%
+    \@cons\@flfail #2%
+  }{%
+    \@cons\@flsucceed #2%
+    \@tempdima\@tempdimb
+  }%
+}%
+\def\newpage@prep{%
+  \if@noskipsec
+    \ifx \@nodocument\relax
+      \leavevmode
+      \global \@noskipsecfalse
+    \fi
+  \fi
+  \if@inlabel
+    \leavevmode
+    \global \@inlabelfalse
+  \fi
+  \if@nobreak \@nobreakfalse \everypar{}\fi
+  \par
+}%
+\def \newpage {%
+ \newpage@prep
+ \do@output@MVL{%
+  \vfil
+  \penalty-\pagebreak@pen
+ }%
+}%
+\def\clearpage{%
+ \newpage@prep
+ \do@output@MVL{%
+  \vfil
+  \penalty-\pagebreak@pen
+  \global\@booleantrue\clearpage@sw
+  \protect@penalty\do@startcolumn@pen
+  \protect@penalty\do@endpage@pen
+ }%
+ \do@output@MVL{%
+  \global\@booleanfalse\clearpage@sw
+ }%
+}%
+\def\cleardoublepage{%
+ \clearpage
+ \@if@sw\if@twoside\fi{%
+  \@ifodd\c@page{}{%
+   \null\clearpage
+  }%
+ }{}%
+}%
+\@booleanfalse\clearpage@sw
+\mathchardef\do@endpage@pen=10007
+\@namedef{output@-\the\do@endpage@pen}{%
+ \csname end@column@\thepagegrid\endcsname
+}%
+\mathchardef\do@newpage@pen=10001
+\expandafter\let\csname output@-\the\do@newpage@pen\endcsname\relax
+\def\@clearfloatplacement{%
+ \global\@topnum     \maxdimen % \c@topnumber
+ \global\@toproom    \maxdimen % \topfraction\@colht
+ \global\@botnum     \maxdimen % \c@bottomnumber
+ \global\@botroom    \maxdimen % \bottomfraction\@colht
+ \global\@colnum     \maxdimen % \c@totalnumber
+ \global\@dbltopnum  \maxdimen % \c@dbltopnumber
+ \global\@dbltoproom \maxdimen % \dbltopfraction\@colht
+ \global\@textmin    \z@       % \@colht\advance \@textmin -\@dbltoproom
+ \global\@fpmin      \z@       % \dblfloatpagefraction\textheight
+ \let\@testfp\@gobble
+ \appdef\@setfloattypecounts{\@fpstype16\advance\@fpstype\m@ne}%
+}%
+\let\@doclearpage\@undefined
+\let\@makefcolumn\@undefined
+\def\clr@top@firstmark{%
+ \global\let\saved@@topmark\@undefined
+ \global\let\saved@@firstmark\@empty
+ \global\let\saved@@botmark\@empty
+}%
+\clr@top@firstmark
+\def\set@top@firstmark{%
+ \@ifxundefined\saved@@topmark{\expandafter\gdef\expandafter\saved@@topmark\expandafter{\@@topmark}}{}%
+ \@if@empty\saved@@firstmark{\expandafter\gdef\expandafter\saved@@firstmark\expandafter{\@@firstmark}}{}%
+ \@if@empty\@@botmark{}{\expandafter\gdef\expandafter\saved@@botmark\expandafter{\@@botmark}}%
+}%
+\appdef\@outputpage{%
+ \clr@top@firstmark
+}%
+\def\@float#1{%
+ \@ifnextchar[{%}]{%Brace-matching klootch
+  \@yfloat\width@float{#1}%
+ }{%
+  \@ifxundefined@cs{fps@#1}{%
+   \edef\reserved@a{\noexpand\@yfloat\noexpand\width@float{#1}[\csname fps@\endcsname]}\reserved@a
+  }{%
+   \edef\reserved@a{\noexpand\@yfloat\noexpand\width@float{#1}[\csname fps@#1\endcsname]}\reserved@a
+  }%
+ }%
+}%
+\def\@dblfloat#1{%
+ \@ifnum{\pagegrid@col=\@ne}{%
+  \@float{#1}%
+ }{%
+  \@ifnextchar[{%}]{%Brace-matching klootch
+   \@yfloat\widthd@float{#1}%
+  }{%
+   \@ifxundefined@cs{fpsd@#1}{%
+    \edef\reserved@a{\noexpand\@yfloat\noexpand\widthd@float{#1}[\csname fpsd@\endcsname]}\reserved@a
+   }{%
+    \edef\reserved@a{\noexpand\@yfloat\noexpand\widthd@float{#1}[\csname fpsd@#1\endcsname]}\reserved@a
+   }%
+  }%
+ }%
+}%
+\def\@yfloat#1#2[#3]{%
+ \@xfloat{#2}[#3]%
+ \hsize#1\linewidth\hsize
+ \minipagefootnote@init
+}%
+\def\fps@{tbp}%
+\def\fpsd@{tp}%
+\def\width@float{\columnwidth}%
+\def\widthd@float{\textwidth}%
+\def\end@float{%
+ \end@@float{%
+  \check@currbox@count
+ }%
+}%
+\def\end@dblfloat{%
+ \@ifnum{\pagegrid@col=\@ne}{%
+  \end@float
+ }{%
+  \end@@float{%
+   \@boxfpsbit\@currbox{1}\@ifodd\@tempcnta{\global\advance\count\@currbox\m@ne}{}%
+   \@boxfpsbit\@currbox{4}\@ifodd\@tempcnta{\global\advance\count\@currbox-4\relax}{}%
+   \global\wd\@currbox\textwidth % Klootch
+   \check@currbox@count
+  }%
+ }%
+}%
+\def\end@@float#1{%
+ \minipagefootnote@here
+ \@endfloatbox
+ #1%
+ \@ifnum{\@floatpenalty <\z@}{%
+  \@largefloatcheck
+  \@cons\@currlist\@currbox
+  \@ifnum{\@floatpenalty <-\@Mii}{%
+   \do@output@cclv{\@add@float}%
+  }{%
+   \vadjust{\do@output@cclv{\@add@float}}%
+   \@Esphack
+  }%
+ }{}%
+}%
+\def\check@currbox@count{%
+ \@ifnum{\count\@currbox>\z@}{%
+\count@\count\@currbox\divide\count@\sixt@@n\multiply\count@\sixt@@n
+\@tempcnta\count\@currbox\advance\@tempcnta-\count@
+\@ifnum{\@tempcnta=\z@}{%
+   \ltxgrid@warn{Float cannot be placed}%
+}{}%
+ }{%
+  % Is a \marginpar
+ }%
+}%
+\providecommand\minipagefootnote@init{}%
+\providecommand\minipagefootnote@here{}%
+\let\@specialoutput\@undefined
+\def\@add@float{%
+ \@pageht\ht\@cclv\@pagedp\dp\@cclv
+ \unvbox\@cclv
+ \@next\@currbox\@currlist{%
+  \csname @floatselect@sw@\thepagegrid\endcsname\@currbox{%
+   \@ifnum{\count\@currbox>\z@}{%
+    \advance \@pageht \@pagedp
+    \advance \@pageht \vsize \advance \@pageht -\pagegoal % do not assume \holdinginserts is cleared!
+    \@addtocurcol % Commit an h float
+  }{%
+   \@addmarginpar
+  }%
+  }{%
+   \@resethfps
+   \@cons\@deferlist\@currbox
+  }%
+ }{\@latexbug}%
+ \@ifnum{\outputpenalty<\z@}{%
+  \@if@sw\if@nobreak\fi{%
+   \nobreak
+  }{%
+   \addpenalty \interlinepenalty
+  }%
+ }{}%
+ \set@vsize
+}%
+\let\@reinserts\@undefined
+\def \@addtocurcol {%
+   \@insertfalse
+   \@setfloattypecounts
+   \ifnum \@fpstype=8
+   \else
+     \ifnum \@fpstype=24
+     \else
+       \@flsettextmin
+       \advance \@textmin \@textfloatsheight
+       \@reqcolroom \@pageht
+       \ifdim \@textmin>\@reqcolroom
+         \@reqcolroom \@textmin
+       \fi
+       \advance \@reqcolroom \ht\@currbox
+       \ifdim \@colroom>\@reqcolroom
+         \@flsetnum \@colnum
+         \ifnum \@colnum>\z@
+           \@bitor\@currtype\@deferlist
+           \if@test
+           \else
+             \@bitor\@currtype\@botlist
+             \if@test
+               \@addtobot
+             \else
+               \ifodd \count\@currbox
+                 \advance \@reqcolroom \intextsep
+                 \ifdim \@colroom>\@reqcolroom
+                   \global \advance \@colnum \m@ne
+                   \global \advance \@textfloatsheight \ht\@currbox
+                   \global \advance \@textfloatsheight 2\intextsep
+                   \@cons \@midlist \@currbox
+                   \if@nobreak
+                     \nobreak
+                     \@nobreakfalse
+                     \everypar{}%
+                   \else
+                     \addpenalty \interlinepenalty
+                   \fi
+                   \vskip \intextsep
+                   \unvbox\@currbox %AO
+                   \penalty\interlinepenalty
+                   \vskip\intextsep
+                   \ifnum\outputpenalty <-\@Mii \vskip -\parskip\fi
+                   \outputpenalty \z@
+                   \@inserttrue
+                 \fi
+               \fi
+               \if@insert
+               \else
+                 \@addtotoporbot
+               \fi
+             \fi
+           \fi
+         \fi
+       \fi
+     \fi
+   \fi
+   \if@insert
+   \else
+     \@resethfps
+     \@cons\@deferlist\@currbox
+   \fi
+}%
+\@twocolumnfalse
+\let\@twocolumntrue\@twocolumnfalse
+\def\@addmarginpar{%
+ \@next\@marbox\@currlist{%
+  \@cons\@freelist\@marbox\@cons\@freelist\@currbox
+ }\@latexbug
+ \setbox\@marbox\hb@xt@\columnwidth{%
+  \csname @addmarginpar@\thepagegrid\endcsname{%
+   \hskip-\marginparsep\hskip-\marginparwidth
+   \box\@currbox
+  }{%
+   \hskip\columnwidth\hskip\marginparsep
+   \box\@marbox
+  }%
+  \hss
+ }%
+ \setbox\z@\box\@currbox
+    \@tempdima\@mparbottom
+    \advance\@tempdima -\@pageht
+    \advance\@tempdima\ht\@marbox
+ \@ifdim{\@tempdima >\z@}{%
+   \@latex@warning@no@line {Marginpar on page \thepage\space moved}%
+ }{%
+   \@tempdima\z@
+ }%
+    \global\@mparbottom\@pageht
+    \global\advance\@mparbottom\@tempdima
+    \global\advance\@mparbottom\dp\@marbox
+    \global\advance\@mparbottom\marginparpush
+    \advance\@tempdima -\ht\@marbox
+    \global\setbox \@marbox
+                   \vbox {\vskip \@tempdima
+                          \box \@marbox}%
+    \global \ht\@marbox \z@
+    \global \dp\@marbox \z@
+    \kern -\@pagedp
+    \nointerlineskip
+  \box\@marbox
+    \nointerlineskip
+    \hbox{\vrule \@height\z@ \@width\z@ \@depth\@pagedp}%
+}%
+\newenvironment{turnpage}{%
+ \def\width@float{\textheight}%
+ \def\widthd@float{\textheight}%
+ \appdef\@endfloatbox{%
+  \@ifxundefined\@currbox{%
+   \ltxgrid@warn{Cannot rotate! Not a float}%
+  }{%
+   \setbox\@currbox\vbox to\textwidth{\vfil\unvbox\@currbox\vfil}%
+   \global\setbox\@currbox\vbox{\rotatebox{90}{\box\@currbox}}%
+  }%
+ }%
+}{%
+}%
+\def\rotatebox@dummy#1#2{%
+ \ltxgrid@warn{You must load the graphics or graphicx package in order to use the turnpage environment}%
+ #2%
+}%
+\AtBeginDocument{%
+ \@ifxundefined\rotatebox{\let\rotatebox\rotatebox@dummy}{}%
+}%
+\@namedef{output@-1073741824}{%"40000000
+ \deadcycles\z@
+ \setbox\z@\box\@cclv
+}%
+\mathchardef\save@column@pen=10016
+\@namedef{output@-\the\save@column@pen}{\save@column}%
+\let \@cclv@saved \@holdpg
+\let \@holdpg \@undefined
+\def\save@column{%
+ \@ifvoid\@cclv@saved{%
+\set@top@firstmark
+\global\@topmark@saved\expandafter{\@@topmark}%
+ }{}%
+\global\setbox\@cclv@saved\vbox{%
+  \@ifvoid\@cclv@saved{}{%
+ \unvbox\@cclv@saved
+ \marry@baselines
+}%
+\unvbox\@cclv
+\lose@breaks
+\setbox\z@\lastbox
+}%
+}%
+\newtoks\@topmark@saved
+\def\prep@cclv{%
+ \setbox\z@\box\@cclv
+ \setbox\@cclv\box\@cclv@saved
+ \vbadness\@M
+}%
+\mathchardef\save@column@insert@pen=10017
+\@namedef{output@-\the\save@column@insert@pen}{\toggle@insert\savecolumn@holding\savecolumn@moving}%
+\def\savecolumn@holding{%
+\@if@exceed@pagegoal{\unvcopy\@cclv\setbox\z@\lastbox}{%
+  \setbox\z@\vbox{\unvcopy\@cclv\setbox\z@\lastbox}%
+  \outputdebug@sw{{\tracingall\scrollmode\showbox\z@}}{}%
+\dimen@\ht\@cclv\advance\dimen@-\ht\z@
+\dead@cycle@repair@protected\dimen@
+}{%
+\dead@cycle
+}%
+}%
+\def\savecolumn@moving{%
+ \@cclv@nontrivial@sw{%
+  \save@column
+ }{%
+  {\setbox\z@\box\@cclv}%
+ }%
+\@ifvoid\footins{}{%
+\outputdebug@sw{{\tracingall\scrollmode\showbox\footins}}{}%
+\global\setbox\footins@saved\vbox{\unvbox\footins@saved\marry@baselines\unvbox\footins}%
+\protect@penalty\save@column@insert@pen
+}%
+}%
+\newbox\footins@saved
+\mathchardef\save@message@pen=10018
+\@namedef{output@-\the\save@message@pen}{\save@message}%
+\def\save@message{%
+ \setbox\z@\box\@cclv %FIXME: what if \box\@cclv is not empty?
+ \toks@\expandafter{\@@firstmark}%
+ \expandafter\gdef\expandafter\@message@saved\expandafter{\the\toks@}%
+ \expandafter\do@@mark\expandafter{\the\@topmark@saved}%
+}%
+\gdef\@message@saved{}%
+\mathchardef\execute@message@pen=10019
+\@namedef{output@-\the\execute@message@pen}{\@message@saved}%
+\def\execute@message{%
+ \@execute@message\save@column@pen %Implicit #2
+}%
+\def\execute@message@insert#1{%
+ \@execute@message\save@column@insert@pen{\setbox\footins\box\footins@saved#1}%
+}%
+\long\def\@execute@message#1#2{%
+ \begingroup
+  \dimen@\prevdepth\@ifdim{\dimen@<\z@}{\dimen@\z@}{}%
+  \setbox\z@\vbox{%
+   \protect@penalty#1%
+   \protection@box
+   \toks@{\prep@cclv#2}%
+   \@@mark{\the\toks@}%
+   \penalty-\save@message@pen
+   \setbox\z@\null\dp\z@\dimen@\ht\z@-\dimen@
+   \nointerlineskip\box\z@
+   \penalty-\execute@message@pen
+  }\unvbox\z@
+ \endgroup
+}%
+\def\do@output@cclv{\execute@message}%
+\def\do@output@MVL#1{%
+ \@ifvmode{%
+  \begingroup\execute@message{\unvbox\@cclv#1}\endgroup
+ }{%
+  \@ifhmode{%
+   \vadjust{\execute@message{\unvbox\@cclv#1}}%
+  }{%
+   \@latexerr{\string\do@output@MVL\space cannot be executed in this mode!}\@eha
+  }%
+ }%
+}%
+\def\lose@breaks{%
+ \loopwhile{%
+  \count@\lastpenalty
+  \@ifnum{\count@=\@M}{% 10000 is a TeX magic number!
+   \unpenalty\true@sw
+  }{%
+   \false@sw
+  }%
+ }%
+}%
+\def\removestuff{\do@output@MVL{\unskip\unpenalty}}%
+\def\removephantombox{%
+ \vadjust{%
+  \execute@message{%
+   \unvbox\@cclv
+   \setbox\z@\lastbox
+   \unskip
+   \unskip
+   \unpenalty
+   \penalty\predisplaypenalty
+   \vskip\abovedisplayskip
+  }%
+ }%
+}%
+\def\addstuff#1#2{\edef\@tempa{\noexpand\do@output@MVL{\noexpand\@addstuff{#1}{#2}}}\@tempa}%
+\def\@addstuff#1#2{%
+ \skip@\lastskip\unskip
+ \count@\lastpenalty\unpenalty
+ \@if@empty{#1}{}{\penalty#1\relax}%
+ \@ifnum{\count@=\z@}{}{\penalty\count@}%
+ \vskip\skip@
+ \@if@empty{#2}{}{\vskip#2\relax}%
+}%
+\def\replacestuff#1#2{\edef\@tempa{\noexpand\do@output@MVL{\noexpand\@replacestuff{#1}{#2}}}\@tempa}%
+\def\@replacestuff#1#2{%
+ \skip@\lastskip\unskip
+ \count@\lastpenalty\unpenalty
+ \@if@empty{#1}{}{%
+ \@ifnum{\count@>\@M}{}{%
+   \@ifnum{\count@=\z@}{\count@=#1\relax}{%
+    \@ifnum{\count@<#1\relax}{}{%
+     \count@=#1\relax
+    }%
+   }%
+ }%
+ }%
+ \@ifnum{\count@=\z@}{}{\penalty\count@}%
+ \@if@empty{#2}{}{%
+  \@tempskipa#2\relax
+  \@ifdim{\z@>\@tempskipa}{%
+   \advance\skip@-\@tempskipa
+  }{%
+   \@ifdim{\skip@>\@tempskipa}{}{%
+    \skip@\@tempskipa
+   }%
+  }%
+ }%
+ \vskip\skip@
+}%
+\def\move@insertions{\global\holdinginserts\z@}%
+\def\hold@insertions{\global\holdinginserts\@ne}%
+\hold@insertions
+\def\move@insert@sw{\@ifnum{\holdinginserts=\z@}}%
+\def\toggle@insert#1#2{%
+ \@ifnum{\holdinginserts=\z@}{\hold@insertions#2}{\move@insertions#1}%
+}%
+\def\do@columngrid#1#2{%
+ \par
+ \expandafter\let\expandafter\@tempa\csname open@column@#1\endcsname
+ \@ifx{\relax\@tempa}{%
+  \ltxgrid@warn{Unknown page grid #1. No action taken}%
+ }{%
+  \do@output@MVL{\start@column{#1}{#2}}%
+ }%
+}%
+\def\start@column#1#2{%
+ \def\@tempa{#1}\@ifx{\@tempa\thepagegrid}{%
+  \ltxgrid@info{Already in page grid \thepagegrid. No action taken}%
+ }{%
+  \expandafter\execute@message@insert
+  \expandafter{%
+               \csname shut@column@\thepagegrid\expandafter\endcsname
+               \csname open@column@#1\endcsname{#2}%
+               \set@vsize
+             }%
+ }%
+}%
+\def\thepagegrid{one}%
+\newbox\pagesofar
+\newbox\footbox
+\newcommand\onecolumngrid{\do@columngrid{one}{\@ne}}%
+\let\onecolumn\@undefined
+\def\open@column@one#1{%
+ \unvbox\pagesofar
+ \gdef\thepagegrid{one}%
+ \global\pagegrid@col#1%
+ \global\pagegrid@cur\@ne
+ \set@colht
+ \set@column@hsize\pagegrid@col
+}%
+\def\shut@column@one{%
+ \@makecol
+ \global\setbox\pagesofar\vbox{\unvbox\@outputbox\recover@footins}%
+ \set@colht
+}%
+\def\float@column@one{%
+ \@makecol
+ \@outputpage
+}%
+\def\end@column@one{%
+ \unvbox\@cclv\setbox\z@\lastbox
+ \protect@penalty\do@newpage@pen
+}%
+\def\output@column@one{%
+ \@outputpage
+}%
+\def\@addmarginpar@one{%
+ \@if@sw\if@mparswitch\fi{%
+  \@ifodd\c@page{\false@sw}{\true@sw}%
+ }{\false@sw}{%
+  \@if@sw\if@reversemargin\fi{\false@sw}{\true@sw}%
+ }{%
+  \@if@sw\if@reversemargin\fi{\true@sw}{\false@sw}%
+ }%
+}%
+\def\@floatselect@sw@one#1{\true@sw}%
+\def\onecolumngrid@push{%
+ \do@output@MVL{%
+  \@ifnum{\pagegrid@col=\@ne}{%
+   \global\let\restorecolumngrid\@empty
+  }{%
+   \xdef\restorecolumngrid{%
+    \noexpand\start@column{\thepagegrid}{\the\pagegrid@col}%
+   }%
+   \start@column{one}{\@ne}%
+  }%
+ }%
+}%
+\def\onecolumngrid@pop{%
+ \do@output@MVL{\restorecolumngrid}%
+}%
+\newcommand\twocolumngrid{\do@columngrid{mlt}{\tw@}}%
+\let\twocolumn\@undefined
+\let\@topnewpage\@undefined
+\def\open@column@mlt#1{%
+ \gdef\thepagegrid{mlt}%
+ \global\pagegrid@col#1%
+ \global\pagegrid@cur\@ne
+ \set@column@hsize\pagegrid@col
+ \set@colht
+}%
+\def\shut@column@mlt{%
+ \@cclv@nontrivial@sw{%
+\@makecol
+\@ifnum{\pagegrid@cur<\pagegrid@col}{%
+\expandafter\global\expandafter\setbox\csname col@\the\pagegrid@cur\endcsname\box\@outputbox
+\global\advance\pagegrid@cur\@ne
+}{}%
+ }{%
+  {\setbox\z@\box\@cclv}%
+ }%
+\@ifnum{\pagegrid@cur>\@ne}{%
+\csname balance@\the\pagegrid@col\endcsname
+\grid@column{}%
+\@combinepage
+\@combinedblfloats
+\global\setbox\pagesofar\box\@outputbox
+ }{}%
+ \set@colht
+}%
+\def\float@column@mlt{%
+  \@combinepage
+  \@combinedblfloats
+  \@outputpage
+  \global\pagegrid@cur\@ne
+  \protect@penalty\do@startpage@pen
+}%
+\def\end@column@mlt{%
+ \@ifx@empty\@toplist{%
+  \@ifx@empty\@botlist{%
+   \@ifx@empty\@dbltoplist{%
+    \@ifx@empty\@deferlist{%
+     \@ifnum{\pagegrid@cur=\@ne}{%
+      \false@sw
+     }{%
+      \true@sw
+     }%
+    }{%
+     \true@sw
+    }%
+   }{%
+    \true@sw
+   }%
+  }{%
+   \true@sw
+  }%
+ }{%
+  \true@sw
+ }%
+ % true = kick out a column and try again
+ {%
+  \@cclv@nontrivial@sw{%
+   \unvbox\@cclv\setbox\z@\lastbox
+  }{%
+   \unvbox\@cclv\setbox\z@\lastbox\unskip\null
+  }%
+  \protect@penalty\do@newpage@pen
+  \protect@penalty\do@endpage@pen
+ }{%
+  \unvbox\@cclv\setbox\z@\lastbox
+ }%
+}%
+\def\output@column@mlt{%
+ \@ifnum{\pagegrid@cur<\pagegrid@col}{%
+  \expandafter\global\expandafter\setbox\csname col@\the\pagegrid@cur\endcsname\box\@outputbox
+  \global\advance\pagegrid@cur\@ne
+ }{%
+  \set@adj@colht\dimen@
+  \grid@column{}%{\dimen@}%
+  \@combinepage
+  \@combinedblfloats
+  \@outputpage
+  \global\pagegrid@cur\@ne
+  \protect@penalty\do@startpage@pen
+ }%
+}%
+\let\@outputdblcol\@undefined
+\def\@floatselect@sw@mlt#1{\@if@notdblfloat{#1}}%
+\def\@addmarginpar@mlt{% emits a boolean
+ \@ifnum{\pagegrid@cur=\@ne}%
+}%
+\let\pagegrid@cur\col@number
+\let\col@number\@undefined
+\newcount\pagegrid@col
+\pagegrid@cur\@ne
+\expandafter\let\csname col@\the\pagegrid@cur\endcsname\@leftcolumn
+\let\@leftcolumn\@undefined
+\pagegrid@col\tw@
+\def\pagegrid@init{%
+ \advance\pagegrid@cur\@ne
+ \@ifnum{\pagegrid@cur<\pagegrid@col}{%
+  \csname newbox\expandafter\endcsname\csname col@\the\pagegrid@cur\endcsname
+  \pagegrid@init
+ }{%
+ }%
+}%
+\appdef\class@documenthook{%
+ \pagegrid@init
+}%
+\def\grid@column#1{%
+ \global\setbox\@outputbox\vbox{%
+  \hb@xt@\textwidth{%
+   \vrule\@height\z@\@width\z@\@if@empty{#1}{}{\@depth#1}%
+   \pagegrid@cur\@ne
+   \append@column
+   \box@column\@outputbox
+  }%
+  \vskip\z@skip % FIXME: page depth!
+ }%
+}%
+\def\append@column{%
+ \@ifnum{\pagegrid@cur<\pagegrid@col}{%
+  \expandafter\box@column\csname col@\the\pagegrid@cur\endcsname
+  \hfil
+  \vrule \@width\columnseprule
+  \hfil
+  \advance\pagegrid@cur\@ne
+  \append@column
+ }{%
+ }%
+}%
+\def\box@column#1{%
+ \raise\topskip
+ \hb@xt@\columnwidth{%
+  \dimen@\ht#1\@ifdim{\dimen@>\@colht}{\dimen@\@colht}{}%
+  \count@\vbadness\vbadness\@M
+  \dimen@ii\vfuzz\vfuzz\maxdimen
+  \outputdebug@sw{\saythe\@colht\saythe\dimen@}{}%
+  \vtop to\dimen@
+  {\hrule\@height\z@
+   \unvbox#1%
+   \raggedcolumn@skip
+  }%
+  \vfuzz\dimen@ii
+  \vbadness\count@
+  \hss
+ }%
+}%
+\def\marry@baselines{%
+ \vskip\marry@skip\relax
+}%
+\gdef\marry@skip{\z@skip}%
+\def\set@marry@skip{%
+\begingroup
+  \skip@\baselineskip\advance\skip@-\topskip
+  \@ifdim{\skip@>\z@}{%
+   \xdef\marry@skip{\the\skip@}%
+  }{}%
+ \endgroup
+}%
+\AtBeginDocument{%
+ \@ifxundefined\raggedcolumn@sw{\@booleanfalse\raggedcolumn@sw}{}%
+}%
+\def\raggedcolumn@skip{%
+ \vskip\z@\raggedcolumn@sw{\@plus.0001fil\@minus.0001fil}{}\relax
+}%
+\def\@combinepage{%
+ \@ifvoid\pagesofar{}{%
+  \setbox\@outputbox\vbox{%
+   \unvbox\pagesofar
+   \marry@baselines
+   \unvbox\@outputbox
+  }%
+ }%
+ \@ifvoid\footbox{}{%
+  \setbox\@outputbox\vbox{%
+   \unvbox\@outputbox
+   \marry@baselines
+   \unvbox\footbox
+  }%
+ }%
+}%
+\def\@combinedblfloats{%
+ \@ifx@empty\@dbltoplist{}{%
+  \setbox\@tempboxa\vbox{}%
+  \let\@elt\@comdblflelt\@dbltoplist
+  \let\@elt\relax\xdef\@freelist{\@freelist\@dbltoplist}%
+  \global\let\@dbltoplist\@empty
+  \setbox\@outputbox\vbox{%
+   %\boxmaxdepth\maxdepth   %% probably not needed, CAR
+   \unvbox\@tempboxa\unskip
+   \@ifnum{\@dbltopnum>\m@ne}{\dblfigrule}{}%FIXME: how is \@dbltopnum maintained?
+   \vskip\dbltextfloatsep
+   \unvbox\@outputbox
+  }%
+ }%
+}%
+\def\set@column@hsize#1{%
+ \pagegrid@col#1%
+ \global\columnwidth\textwidth
+ \global\advance\columnwidth\columnsep
+ \global\divide\columnwidth\pagegrid@col
+ \global\advance\columnwidth-\columnsep
+ \global\hsize\columnwidth
+ \global\linewidth\columnwidth
+ \skip@\baselineskip\advance\skip@-\topskip
+ \@ifnum{\pagegrid@col>\@ne}{\set@marry@skip}{}%
+}%
+\def\set@colht{%
+ \set@adj@textheight\@colht
+ \global\let\enlarge@colroom\@empty
+ \set@colroom
+}%
+\def\set@adj@textheight#1{%
+ #1\textheight
+ \def\@elt{\adj@page#1}%
+ \@booleantrue\firsttime@sw\@dbltoplist
+ \let\@elt\relax
+ \global#1#1\relax
+ \outputdebug@sw{\saythe#1}{}%
+}%
+\def\set@colroom{%
+ \set@adj@colht\@colroom
+ \@if@empty\enlarge@colroom{}{%
+  \global\advance\@colroom\enlarge@colroom\relax
+ }%
+ \outputdebug@sw{\saythe\@colroom}{}%
+ \@ifdim{\@colroom>\topskip}{}{%
+  \ltxgrid@info{Not enough room: \string\@colroom=\the\@colroom; increasing to \the\topskip}%
+  \@colroom\topskip
+ }%
+ \global\@colroom\@colroom
+ \set@vsize
+}%
+\def\set@vsize{%
+ \global\vsize\@colroom
+ \outputdebug@sw{\saythe\vsize}{}%
+}%
+\def\set@adj@colht#1{%
+ #1\@colht
+ \@ifvoid\pagesofar{}{%
+  \advance#1-\ht\pagesofar\advance#1-\dp\pagesofar
+ }%
+ \@ifvoid\footbox{}{%
+  \advance#1-\ht\footbox\advance#1-\dp\footbox
+ }%
+ \def\@elt{\adj@column#1}%
+ \@booleantrue\firsttime@sw\@toplist
+ \@booleantrue\firsttime@sw\@botlist
+ \let\@elt\relax
+ \outputdebug@sw{\saythe#1}{}%
+}%
+\def\adj@column#1#2{%
+ \advance#1-\ht#2%
+ \advance#1-\firsttime@sw{\textfloatsep\@booleanfalse\firsttime@sw}{\floatsep}%
+}%
+\def\adj@page#1#2{%
+ \advance#1-\ht#2%
+ \advance#1-\firsttime@sw{\dbltextfloatsep\@booleanfalse\firsttime@sw}{\dblfloatsep}%
+}%
+\appdef\@outputpage{%
+ \set@colht          % FIXME: needed?
+ \@floatplacement    % FIXME: needed?
+ \@dblfloatplacement % FIXME: needed?
+}%
+\@namedef{balance@2}{%
+ \expandafter\balance@two\csname col@1\endcsname\@outputbox
+ % Avoid a bug by preventing a restore when leaving this group
+ \global\setbox\csname col@1\endcsname\box\csname col@1\endcsname
+ \@ifvoid\footbox{}{%
+  \global\setbox\footbox\vbox{%
+   \setbox\z@\box\@tempboxa
+   \let\recover@footins\relax
+   \balance@two\footbox\@tempboxa
+   \hb@xt@\textwidth{\box\footbox\hfil\box\@tempboxa}%
+  }%
+ }%
+}%
+\def\balance@two#1#2{%
+\outputdebug@sw{{\tracingall\scrollmode\showbox#1\showbox#2}}{}%
+ \setbox\@ne\vbox{%
+  \@ifvoid#1{}{%
+   \unvcopy#1\recover@footins
+   \@ifvoid#2{}{\marry@baselines}%
+  }%
+  \@ifvoid#2{}{%
+   \unvcopy#2\recover@footins
+  }%
+ }%
+ \dimen@\ht\@ne\divide\dimen@\tw@
+ \dimen@i\dimen@
+ \vbadness\@M
+ \vfuzz\maxdimen
+ \loopwhile{%
+  \dimen@i=.5\dimen@i
+  \outputdebug@sw{\saythe\dimen@\saythe\dimen@i\saythe\dimen@ii}{}%
+  \setbox\z@\copy\@ne\setbox\tw@\vsplit\z@ to\dimen@
+  \setbox\z@ \vbox{%
+   \unvcopy\z@
+   \setbox\z@\vbox{\unvbox\z@ \setbox\z@\lastbox\aftergroup\vskip\aftergroup-\expandafter}\the\dp\z@\relax
+  }%
+  \setbox\tw@\vbox{%
+   \unvcopy\tw@
+   \setbox\z@\vbox{\unvbox\tw@\setbox\z@\lastbox\aftergroup\vskip\aftergroup-\expandafter}\the\dp\z@\relax
+  }%
+  \dimen@ii\ht\tw@\advance\dimen@ii-\ht\z@
+  \@ifdim{\dimen@i>.5\p@}{%
+   \advance\dimen@\@ifdim{\dimen@ii<\z@}{}{-}\dimen@i
+   \true@sw
+  }{%
+   \@ifdim{\dimen@ii<\z@}{%
+    \advance\dimen@\tw@\dimen@i
+    \true@sw
+   }{%
+    \false@sw
+   }%
+  }%
+ }%
+ \outputdebug@sw{\saythe\dimen@\saythe\dimen@i\saythe\dimen@ii}{}%
+\@ifdim{\ht\z@=\z@}{%
+\@ifdim{\ht\tw@=\z@}{%
+\true@sw
+}{%
+\false@sw
+}%
+}{%
+\true@sw
+}%
+{%
+}{%
+\ltxgrid@info{Unsatifactorily balanced columns: giving up}%
+\setbox\tw@\box#1%
+\setbox\z@ \box#2%
+}%
+ \setbox\tw@\vbox{\unvbox\tw@\vskip\z@skip}%
+ \setbox\z@ \vbox{\unvbox\z@ \vskip\z@skip}%
+ \set@colroom
+\dimen@\ht\z@\@ifdim{\dimen@<\ht\tw@}{\dimen@\ht\tw@}{}%
+\@ifdim{\dimen@>\@colroom}{\dimen@\@colroom}{}%
+ \outputdebug@sw{\saythe{\ht\z@}\saythe{\ht\tw@}\saythe\@colroom\saythe\dimen@}{}%
+\setbox#1\vbox to\dimen@{\unvbox\tw@\unskip\raggedcolumn@skip}%
+\setbox#2\vbox to\dimen@{\unvbox\z@ \unskip\raggedcolumn@skip}%
+\outputdebug@sw{{\tracingall\scrollmode\showbox#1\showbox#2}}{}%
+}%
+\def\recover@footins{%
+ \skip\z@ \lastskip\unskip
+ \skip\@ne\lastskip\unskip
+ \setbox\z@\lastbox
+ \@ifvbox\z@{%
+\setbox\z@\vbox{%
+\unvbox\z@
+\setbox\z@\lastbox
+\@ifvoid\z@{}{%
+\global\setbox\footbox\vbox{%
+ \unvbox\footbox
+     \@ifvbox\z@{%
+   \unvbox\z@
+  }{%
+   \box\z@
+  }%
+}%
+}%
+}%
+ }{}%
+ \outputdebug@sw{{\tracingall\scrollmode\showbox\footbox}}{}%
+}%
+\prepdef\@begindocumenthook{%
+ \open@column@one\@ne
+ \set@colht
+ \@floatplacement
+ \@dblfloatplacement
+}%
+\def\longtable@longtable{%
+ \par
+ \ifx\multicols\@undefined\else\ifnum\col@number>\@ne\@twocolumntrue\fi\fi
+ \if@twocolumn\LT@err{longtable not in 1-column mode}\@ehc\fi
+ \begingroup
+ \@ifnextchar[\LT@array{\LT@array[x]}%
+}%
+\def\longtable@new{%
+ \par
+  \@ifnextchar[\LT@array{\LT@array[x]}%
+}%
+\def\endlongtable@longtable{%
+  \crcr
+  \noalign{%
+    \let\LT@entry\LT@entry@chop
+    \xdef\LT@save@row{\LT@save@row}}%
+  \LT@echunk
+  \LT@start
+  \unvbox\z@
+  \LT@get@widths
+  \if@filesw
+    {\let\LT@entry\LT@entry@write\immediate\write\@auxout{%
+      \gdef\expandafter\noexpand
+        \csname LT@\romannumeral\c@LT@tables\endcsname
+          {\LT@save@row}}}%
+  \fi
+  \ifx\LT@save@row\LT@@save@row
+  \else
+    \LT@warn{Column \@width s have changed\MessageBreak
+             in table \thetable}%
+    \LT@final@warn
+  \fi
+  \endgraf\penalty -\LT@end@pen
+  \endgroup
+  \global\@mparbottom\z@
+  \pagegoal\vsize
+  \endgraf\penalty\z@\addvspace\LTpost
+  \ifvoid\footins\else\insert\footins{}\fi
+}%
+\def\endlongtable@new{%
+  \crcr
+  \noalign{%
+   \let\LT@entry\LT@entry@chop
+   \xdef\LT@save@row{\LT@save@row}%
+  }%
+  \LT@echunk
+  \LT@start
+  \unvbox\z@
+  \LT@get@widths
+  \@if@sw\if@filesw\fi{%
+   {%
+    \let\LT@entry\LT@entry@write
+    \immediate\write\@auxout{%
+     \gdef\expandafter\noexpand\csname LT@\romannumeral\c@LT@tables\endcsname
+     {\LT@save@row}%
+    }%
+   }%
+  }{}%
+  \@ifx\LT@save@row\LT@@save@row{}{%
+   \LT@warn{%
+    Column \@width s have changed\MessageBreak in table \thetable
+   }\LT@final@warn
+  }%
+  \endgraf
+  \nobreak
+  \box\@ifvoid\LT@lastfoot{\LT@foot}{\LT@lastfoot}%
+ \global\@mparbottom\z@
+ \endgraf
+ \LT@post
+}%
+\def\LT@start@longtable{%
+ \let\LT@start\endgraf
+ \endgraf
+ \penalty\z@
+ \vskip\LTpre
+ \dimen@\pagetotal
+ \advance\dimen@ \ht\ifvoid\LT@firsthead\LT@head\else\LT@firsthead\fi
+ \advance\dimen@ \dp\ifvoid\LT@firsthead\LT@head\else\LT@firsthead\fi
+ \advance\dimen@ \ht\LT@foot
+ \dimen@ii\vfuzz\vfuzz\maxdimen
+   \setbox\tw@\copy\z@
+   \setbox\tw@\vsplit\tw@ to \ht\@arstrutbox
+   \setbox\tw@\vbox{\unvbox\tw@}%
+ \vfuzz\dimen@ii
+ \advance\dimen@ \ht
+       \ifdim\ht\@arstrutbox>\ht\tw@\@arstrutbox\else\tw@\fi
+ \advance\dimen@\dp
+       \ifdim\dp\@arstrutbox>\dp\tw@\@arstrutbox\else\tw@\fi
+ \advance\dimen@ -\pagegoal
+ \ifdim \dimen@>\z@\vfil\break\fi
+     \global\@colroom\@colht
+ \ifvoid\LT@foot\else
+   \advance\vsize-\ht\LT@foot
+   \global\advance\@colroom-\ht\LT@foot
+   \dimen@\pagegoal\advance\dimen@-\ht\LT@foot\pagegoal\dimen@
+   \maxdepth\z@
+ \fi
+ \ifvoid\LT@firsthead\copy\LT@head\else\box\LT@firsthead\fi
+ \output{\LT@output}%
+}%
+\def\LT@start@new{%
+ \let\LT@start\endgraf
+ \endgraf
+ \markthr@@{}%
+ \LT@pre
+ \@ifvoid\LT@firsthead{\LT@top}{\box\LT@firsthead\nobreak}%
+ \mark@envir{longtable}%
+}%
+\def\LT@end@hd@ft@longtable#1{%
+ \LT@echunk
+ \ifx\LT@start\endgraf
+  \LT@err{Longtable head or foot not at start of table}{Increase LTchunksize}%
+ \fi
+ \setbox#1\box\z@
+ \LT@get@widths\LT@bchunk
+}%
+\def\LT@end@hd@ft@new#1{%
+ \LT@echunk
+ \@ifx{\LT@start\endgraf}{%
+  \LT@err{Longtable head or foot not at start of table}{Increase LTchunksize}%
+ }%
+ \global\setbox#1\box\z@
+ \LT@get@widths
+ \LT@bchunk
+}%
+\def\LT@array@longtable[#1]#2{%
+  \refstepcounter{table}\stepcounter{LT@tables}%
+  \if l#1%
+    \LTleft\z@ \LTright\fill
+  \else\if r#1%
+    \LTleft\fill \LTright\z@
+  \else\if c#1%
+    \LTleft\fill \LTright\fill
+  \fi\fi\fi
+  \let\LT@mcol\multicolumn
+  \let\LT@@tabarray\@tabarray
+  \let\LT@@hl\hline
+  \def\@tabarray{%
+    \let\hline\LT@@hl
+    \LT@@tabarray}%
+  \let\\\LT@tabularcr\let\tabularnewline\\%
+  \def\newpage{\noalign{\break}}%
+  \def\pagebreak{\noalign{\ifnum`}=0\fi\@testopt{\LT@no@pgbk-}4}%
+  \def\nopagebreak{\noalign{\ifnum`}=0\fi\@testopt\LT@no@pgbk4}%
+  \let\hline\LT@hline \let\kill\LT@kill\let\caption\LT@caption
+  \@tempdima\ht\strutbox
+  \let\@endpbox\LT@endpbox
+  \ifx\extrarowheight\@undefined
+    \let\@acol\@tabacol
+    \let\@classz\@tabclassz \let\@classiv\@tabclassiv
+    \def\@startpbox{\vtop\LT@startpbox}%
+    \let\@@startpbox\@startpbox
+    \let\@@endpbox\@endpbox
+    \let\LT@LL@FM@cr\@tabularcr
+  \else
+    \advance\@tempdima\extrarowheight
+    \col@sep\tabcolsep
+    \let\@startpbox\LT@startpbox\let\LT@LL@FM@cr\@arraycr
+  \fi
+  \setbox\@arstrutbox\hbox{\vrule
+    \@height \arraystretch \@tempdima
+    \@depth \arraystretch \dp \strutbox
+    \@width \z@}%
+  \let\@sharp##\let\protect\relax
+   \begingroup
+    \@mkpream{#2}%
+    \xdef\LT@bchunk{%
+       \global\advance\c@LT@chunks\@ne
+       \global\LT@rows\z@\setbox\z@\vbox\bgroup
+       \LT@setprevdepth
+       \tabskip\LTleft\halign to\hsize\bgroup
+      \tabskip\z@ \@arstrut \@preamble \tabskip\LTright \cr}%
+  \endgroup
+  \expandafter\LT@nofcols\LT@bchunk&\LT@nofcols
+  \LT@make@row
+  \m@th\let\par\@empty
+  \everycr{}\lineskip\z@\baselineskip\z@
+  \LT@bchunk
+}%
+\def\LT@LR@l{\LTleft\z@   \LTright\fill}%
+\def\LT@LR@r{\LTleft\fill \LTright\z@  }%
+\def\LT@LR@c{\LTleft\fill \LTright\fill}%
+\def\LT@array@new[#1]#2{%
+ \refstepcounter{table}\stepcounter{LT@tables}%
+ \table@hook
+ \LTleft\fill \LTright\fill
+ \csname LT@LR@#1\endcsname
+ \let\LT@mcol\multicolumn
+ \let\LT@@hl\hline
+ \prepdef\@tabarray{\let\hline\LT@@hl}%
+ \let\\\LT@tabularcr
+ \let\tabularnewline\\%
+ \def\newpage{\noalign{\break}}%
+ \def\pagebreak{\noalign{\ifnum`}=0\fi\@testopt{\LT@no@pgbk-}4}%
+ \def\nopagebreak{\noalign{\ifnum`}=0\fi\@testopt\LT@no@pgbk4}%
+ \let\hline\LT@hline
+ \let\kill\LT@kill
+ \let\caption\LT@caption
+ \@tempdima\ht\strutbox
+ \let\@endpbox\LT@endpbox
+ \@ifxundefined\extrarowheight{%
+  \let\@acol\@tabacol
+  \let\@classz\@tabclassz
+  \let\@classiv\@tabclassiv
+  \def\@startpbox{\vtop\LT@startpbox}%
+  \let\@@startpbox\@startpbox
+  \let\@@endpbox\@endpbox
+  \let\LT@LL@FM@cr\@tabularcr
+ }{%
+  \advance\@tempdima\extrarowheight
+  \col@sep\tabcolsep
+  \let\@startpbox\LT@startpbox
+  \let\LT@LL@FM@cr\@arraycr
+ }%
+ \let\@acoll\@tabacoll
+ \let\@acolr\@tabacolr
+ \let\@acol\@tabacol
+ \setbox\@arstrutbox\hbox{%
+  \vrule
+  \@height \arraystretch \@tempdima
+  \@depth \arraystretch \dp \strutbox
+  \@width \z@
+ }%
+ \let\@sharp##%
+ \let\protect\relax
+ \begingroup
+  \@mkpream{#2}%
+  \@mkpream@relax
+  \edef\@preamble{\@preamble}%
+  \prepdef\@preamble{%
+   \global\advance\c@LT@chunks\@ne
+   \global\LT@rows\z@
+   \setbox\z@\vbox\bgroup
+    \LT@setprevdepth
+    \tabskip\LTleft
+    \halign to\hsize\bgroup
+     \tabskip\z@
+     \@arstrut
+  }%
+  \appdef\@preamble{%
+     \tabskip\LTright
+     \cr
+  }%
+  \global\let\LT@bchunk\@preamble
+ \endgroup
+ \expandafter\LT@nofcols\LT@bchunk&\LT@nofcols
+ \LT@make@row
+ \m@th
+ \let\par\@empty
+ \everycr{}%
+ \lineskip\z@
+ \baselineskip\z@
+ \LT@bchunk
+}%
+\appdef\table@hook{}%
+%% Note that it is not enough to define the environment itself; we also have to create the corresponding
+%% \cmd\output\ routine procedures, which provide for continued footers and headers
+%% (the very feature of \env{longtable} requiring support in the output routine).
+%% This same consideration would arise in defining any syntactic extension to \env{longtable}, because
+%% the environment name itself is exposed in the output routine.
+\def\switch@longtable{%
+ \@ifpackageloaded{longtable}{%
+  \@ifx{\longtable\longtable@longtable}{%
+   \@ifx{\endlongtable\endlongtable@longtable}{%
+    \@ifx{\LT@start\LT@start@longtable}{%
+     \@ifx{\LT@end@hd@ft\LT@end@hd@ft@longtable}{%
+      \@ifx{\LT@array\LT@array@longtable}{%
+       \true@sw
+      }{\false@sw}%
+     }{\false@sw}%
+    }{\false@sw}%
+   }{\false@sw}%
+  }{\false@sw}%
+  {%
+   \class@info{Patching longtable package}%
+  }{%
+   \class@info{Patching unrecognized longtable package. (Proceeding with fingers crossed)}%
+  }%
+  \let\longtable\longtable@new
+  \let\endlongtable\endlongtable@new
+  \let\LT@start\LT@start@new
+  \let\LT@end@hd@ft\LT@end@hd@ft@new
+  \let\LT@array\LT@array@new
+  \newenvironment{longtable*}{%
+   \onecolumngrid@push
+   \longtable
+  }{%
+   \endlongtable
+   \onecolumngrid@pop
+  }%
+ }{}%
+}%
+\def\LT@pre{\penalty\z@\vskip\LTpre}%
+\def\LT@bot{\nobreak\copy\LT@foot\vfil}%
+\def\LT@top{\copy\LT@head\nobreak}%
+\def\LT@post{\penalty\z@\addvspace\LTpost\mark@envir{\curr@envir}}%
+\def\LT@adj{%
+ \setbox\z@\vbox{\null}\dimen@-\ht\z@
+ \setbox\z@\vbox{\unvbox\z@\LT@bot}\advance\dimen@\ht\z@
+ \global\advance\vsize-\dimen@
+}%
+\def\output@init@longtable{\LT@adj}%
+\def\output@prep@longtable{\setbox\@cclv\vbox{\unvbox\@cclv\LT@bot}}%
+\def\output@post@longtable{\LT@top}%
+\let\output@init@theindex\@empty
+\let\output@prep@theindex\@empty
+\def\output@post@theindex{%
+ \@ifodd\c@page{}{%
+  \@ifnum{\pagegrid@cur=\@ne}{% we have the leftmost column of a verso page
+   % insert the current top-level continued head
+  }%
+ }%
+}%
+\def\check@aux{\do@output@MVL{\do@check@aux}}%
+\def\check@deferlist@stuck#1{%
+ \@ifx{\@deferlist@postshipout\@empty}{}{%
+  \@ifx{\@deferlist@postshipout\@deferlist}{%
+   \@fltstk
+   \clearpage@sw{%
+    \ltxgrid@warn{Deferred float stuck during \string\clearpage\space processing}%
+   }{%
+    \force@deferlist@stuck#1%
+   }%
+  }{%
+   %Successfully committed float(s)
+  }%
+  \global\let\@deferlist@postshipout\@empty
+ }%
+}%
+\def\@fltstk{%
+ \@latex@warning{A float is stuck (cannot be placed without \string\clearpage)}%
+}%
+\appdef\@outputpage{%
+ \global\let\@deferlist@postshipout\@deferlist
+}%
+\def\@next#1#2{%
+ \@ifx{#2\@empty}{\false@sw}{%
+  \expandafter\@xnext#2\@@#1#2%
+  \true@sw
+ }%
+}%
+\def\@xnext\@elt#1#2\@@#3#4{%
+ \def#3{#1}%
+ \gdef#4{#2}%
+ \def\@tempa{#4}\def\@tempb{\@freelist}%
+ \@ifx{\@tempa\@tempb}{%
+  \@ifx{#4\@empty}{%
+   \force@deferlist@empty%{Float register pool exhausted}%
+  }{}%
+ }{}%
+}%
+\def\force@deferlist@stuck#1{%
+\force@deferlist@sw{%
+  \@booleantrue\clearpage@sw
+  \@booleantrue\forcefloats@sw
+  #1%
+}{%
+}%
+}%
+\def\force@deferlist@empty{%
+ \force@deferlist@sw{%
+  \penalty-\pagebreak@pen
+  \protect@penalty\do@forcecolumn@pen
+ }{%
+ }%
+}%
+\@booleanfalse\force@deferlist@sw
+\mathchardef\do@forcecolumn@pen=10009
+\@namedef{output@-\the\do@forcecolumn@pen}{\do@forcecolumn}%
+\def\do@forcecolumn{%
+ \@booleantrue\clearpage@sw
+ \@booleantrue\forcefloats@sw
+ \do@startcolumn
+}%
+\def\enlargethispage{%
+\@ifstar{%
+\@enlargethispage{}%
+}{%
+\@enlargethispage{}%
+}%
+}%
+\def\@enlargethispage#1#2{%
+ \begingroup
+  \dimen@#2\relax
+  \edef\@tempa{#1}%
+  \edef\@tempa{\noexpand\@@enlargethispage{\@tempa}{\the\dimen@}}%
+  \expandafter\do@output@MVL\expandafter{\@tempa}%
+ \endgroup
+}%
+\def\@@enlargethispage#1#2{%
+ \def\@tempa{one}%
+ \@ifx{\thepagegrid\@tempa}{%
+  \true@sw
+ }{%
+  \def\@tempa{mlt}%
+  \@ifx{\thepagegrid\@tempa}{%
+   \@ifnum{\pagegrid@cur=\@ne}{% OK to adjust this page
+    \gdef\enlarge@colroom{#2}%
+    \true@sw
+   }{% Can only adjust this column; give up
+    \ltxgrid@warn{Too late to enlarge this page; move the command to the first column.}%
+    \false@sw
+   }%
+  }{% Unknown page grid
+   \ltxgrid@warn{Unable to enlarge a page of this kind.}%
+   \false@sw
+  }%
+ }%
+ {%
+  \class@info{Enlarging page \thepage\space by #2}%
+  \global\advance\@colroom#2\relax
+  \set@vsize
+ }{%
+  % Could not adjust this page
+ }%
+}%
+\let\enlarge@colroom\@empty
+\let\@kludgeins\@undefined
+\@booleantrue\textheight@sw
+\prepdef\@outputpage{%
+ \textheight@sw{%
+  \count@\vbadness\vbadness\@M
+  \dimen@\vfuzz\vfuzz\maxdimen
+  \setbox\@outputbox\vbox to\textheight{\unvbox\@outputbox}%
+  \vfuzz\dimen@
+  \vbadness\count@
+ }{}%
+}%
+\def\ltxgrid@info{%
+ \ltxgrid@info@sw{\class@info}{\@gobble}%
+}%
+\@booleanfalse\ltxgrid@info@sw
+\def\ltxgrid@warn{%
+ \ltxgrid@warn@sw{\class@warn}{\@gobble}%
+}%
+\@booleantrue\ltxgrid@warn@sw
+\endinput
+%%
+%% End of file `ltxgrid.sty'.