Revert all leading /2009 from URL Patters since this is now handled in Apache on server.
%%
%% 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'.