2755 lines
72 KiBLFS
TeX
2755 lines
72 KiBLFS
TeX
%%
|
|
%% This is file `ltxgrid.sty',
|
|
%% generated with the docstrip utility.
|
|
%%
|
|
%% The original source files were:
|
|
%%
|
|
%% ltxgrid.dtx (with options: `package,kernel')
|
|
%%
|
|
%% This is a generated file;
|
|
%% altering it directly is inadvisable;
|
|
%% instead, modify the original source file.
|
|
%% See the URL in the file README-LTXGRID.tex.
|
|
%%
|
|
%% License
|
|
%% You may distribute this file under the conditions of the
|
|
%% LaTeX Project Public License 1.3c or later
|
|
%% (http://www.latex-project.org/lppl.txt).
|
|
%%
|
|
%% This file is distributed WITHOUT ANY WARRANTY;
|
|
%% without even the implied warranty of MERCHANTABILITY
|
|
%% or FITNESS FOR A PARTICULAR PURPOSE.
|
|
%%
|
|
%%% @LaTeX-file{
|
|
%%% filename = "ltxgrid.dtx",
|
|
%%% version = "4.2f",
|
|
%%% date = "2022/06/05",
|
|
%%% author = "Arthur Ogawa (mailto:arthur_ogawa at sbcglobal.net),
|
|
%%% Phelype Oleinik (mailto:phelype.oleinik at latex-project.org),
|
|
%%% commissioned by the American Physical Society.
|
|
%%% ",
|
|
%%% copyright = "Copyright (C) 1999, 2009 Arthur Ogawa,
|
|
%%% distributed under the terms of the
|
|
%%% LaTeX Project Public License 1.3c, see
|
|
%%% ftp://ctan.tug.org/macros/latex/base/lppl.txt
|
|
%%% ",
|
|
%%% address = "Arthur Ogawa,
|
|
%%% USA",
|
|
%%% telephone = "",
|
|
%%% FAX = "",
|
|
%%% email = "mailto colon arthur_ogawa at sbcglobal.net",
|
|
%%% codetable = "ISO/ASCII",
|
|
%%% keywords = "latex, page grid, main vertical list",
|
|
%%% supported = "yes",
|
|
%%% abstract = "package to change page grid, MVL",
|
|
%%% }
|
|
\NeedsTeXFormat{LaTeX2e}[1995/12/01]%
|
|
\ProvidesFile{%
|
|
ltxgrid%
|
|
.sty%
|
|
}%
|
|
[2022/06/05 4.2f page grid package (portions licensed from W. E. Baxter web at superscript.com)]% \fileversion
|
|
\def\package@name{ltxgrid}%
|
|
\expandafter\PackageInfo\expandafter{\package@name}{%
|
|
Page grid for \protect\LaTeXe,
|
|
by A. Ogawa (arthur_ogawa at sbcglobal.net)%
|
|
}%
|
|
\RequirePackage{ltxutil}%
|
|
\newcounter{linecount}
|
|
\def\loop@line#1#2{%
|
|
\par
|
|
\hb@xt@\hsize{%
|
|
\global\advance#1\@ne
|
|
\edef\@tempa{\@ifnum{100>#1}{0}{}\@ifnum{10>#1}{0}{}\number#1}%
|
|
\@tempa\edef\@tempa{\special{line:\@tempa}}\@tempa
|
|
\vrule depth2.5\p@#2\leaders\hrule\hfil
|
|
}%
|
|
}%
|
|
\def\lineloop#1{%
|
|
\loopwhile{\loop@line\c@linecount{}\@ifnum{#1>\c@linecount}}%
|
|
}%
|
|
\def\linefoot#1{%
|
|
\loop@line\c@linecount{%
|
|
\footnote{%
|
|
#1\special{foot:#1}\vrule depth2.5\p@\leaders\hrule\hfill
|
|
}%
|
|
}%
|
|
}%
|
|
\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\primitive@output
|
|
\@@nil
|
|
}%
|
|
\newtoks\output@latex
|
|
\output@latex\expandafter{\the\toks@}%
|
|
\let\output\output@latex
|
|
\primitive@output{\dispatch@output}%
|
|
\def\dispatch@output{%
|
|
\let\par\@@par
|
|
\expandafter\let\expandafter\output@procedure\csname output@\the\outputpenalty\endcsname
|
|
\@ifnotrelax\output@procedure{}{%
|
|
\expandafter\def\expandafter\output@procedure\expandafter{\the\output@latex}%
|
|
}%
|
|
\expandafter\@ifx\expandafter{\csname output@-\the\execute@message@pen\endcsname\output@procedure}{%
|
|
\let\output@procedure\@message@saved
|
|
}{}%
|
|
\ltxgrid@info@sw{\class@info{\string\dispatch@output}\say\output@procedure\saythe\holdinginserts}{}%
|
|
\outputdebug@sw{\output@debug}{}%
|
|
\output@procedure
|
|
}%
|
|
\def\set@output@procedure#1#2{%
|
|
\count@\outputpenalty\advance\count@-#2%
|
|
\expandafter\let\expandafter#1\csname output@\the\count@\endcsname
|
|
}%
|
|
\def\output@debug{%
|
|
\def\@tempa{\save@message}%
|
|
\@ifx{\output@procedure\@tempa}{%
|
|
\true@sw
|
|
}{%
|
|
\@ifnum{\outputpenalty=-\save@column@insert@pen}{%
|
|
\@ifnum{\holdinginserts>\z@}%
|
|
}{%
|
|
\false@sw
|
|
}%
|
|
}%
|
|
{}{\output@debug@}%
|
|
}%
|
|
\def\output@debug@{%
|
|
\saythe\outputpenalty
|
|
\saythe\interlinepenalty
|
|
\saythe\brokenpenalty
|
|
\saythe\clubpenalty
|
|
\saythe\widowpenalty
|
|
\saythe\displaywidowpenalty
|
|
\saythe\predisplaypenalty
|
|
\saythe\interdisplaylinepenalty
|
|
\saythe\postdisplaypenalty
|
|
\saythe\badness
|
|
\say\thepagegrid
|
|
\saythe\pagegrid@col
|
|
\saythe\pagegrid@cur
|
|
\saythe\insertpenalties
|
|
\say\@@botmark
|
|
\saythe\pagegoal
|
|
\saythe\pagetotal
|
|
\saythe{\badness\@cclv}%
|
|
\say\@toplist
|
|
\say\@botlist
|
|
\say\@dbltoplist
|
|
\say\@deferlist
|
|
\trace@scroll{%
|
|
\showbox\@cclv
|
|
\showbox\@cclv@saved
|
|
\showbox\pagesofar
|
|
\showbox\csname col@1\endcsname
|
|
\showbox\footsofar
|
|
\showbox\footins
|
|
\showbox\footins@saved
|
|
\showlists
|
|
}%
|
|
}%
|
|
\@ifxundefined{\outputdebug@sw}{%
|
|
\@booleanfalse\outputdebug@sw
|
|
}{}%
|
|
\def\trace@scroll#1{\begingroup\showboxbreadth\maxdimen\showboxdepth\maxdimen\scrollmode#1\endgroup}%
|
|
\def\trace@box#1{\trace@scroll{\showbox#1}}%
|
|
\prepdef\@outputpage{\@outputpage@head}%
|
|
\let\@outputpage@head\@empty
|
|
\appdef\@outputpage{\@outputpage@tail}%
|
|
\let\@outputpage@tail\@empty
|
|
\def\show@box@size#1#2{%
|
|
\show@box@size@sw{%
|
|
\begingroup
|
|
\setbox\z@\vbox{\unvcopy#2\hrule}%
|
|
\class@info{Show box size: #1^^J%
|
|
(\the\ht\z@\space X \the\wd\z@)
|
|
\the\c@page\space\space\the\pagegrid@cur\space\the\pagegrid@col
|
|
}%
|
|
\endgroup
|
|
}{}%
|
|
}%
|
|
\def\show@text@box@size{%
|
|
\show@box@size{Text column}\@outputbox
|
|
\tally@box@size@sw{%
|
|
\@ifdim{\wd\@outputbox>\z@}{%
|
|
\dimen@\ht\@outputbox\divide\dimen@\@twopowerfourteen
|
|
\advance\dimen@-\dp\csname box@size@\the\pagegrid@col\endcsname
|
|
\@ifdim{\dimen@>\z@}{%
|
|
\advance\dimen@ \ht\csname box@size@\the\pagegrid@col\endcsname
|
|
\global\ht\csname box@size@\the\pagegrid@col\endcsname\dimen@
|
|
\show@box@size@sw{%
|
|
\class@info{Column: \the\dimen@}%
|
|
}{}%
|
|
}{}%
|
|
}{}%
|
|
\global\dp\csname box@size@\the\pagegrid@col\endcsname\z@
|
|
}{}%
|
|
}%
|
|
\def\show@pagesofar@size{%
|
|
\show@box@size{Page so far}\pagesofar
|
|
\dimen@\ht\pagesofar\divide\dimen@\@twopowerfourteen
|
|
\global\dp\csname box@size@1\endcsname\dimen@
|
|
\show@box@size@sw{%
|
|
\class@info{Pagesofar: \the\dimen@}%
|
|
}{}%
|
|
}%
|
|
\@booleanfalse\tally@box@size@sw
|
|
\@booleanfalse\show@box@size@sw
|
|
\expandafter\newbox\csname box@size@1\endcsname
|
|
\expandafter\setbox\csname box@size@1\endcsname\hbox{}%
|
|
\expandafter\newbox\csname box@size@2\endcsname
|
|
\expandafter\setbox\csname box@size@2\endcsname\hbox{}%
|
|
\def\total@text{%
|
|
\@tempdima\the\ht\csname box@size@2\endcsname\divide\@tempdima\@twopowertwo\@tempcnta\@tempdima
|
|
\@tempdimb\the\ht\csname box@size@1\endcsname\divide\@tempdimb\@twopowertwo\@tempcntb\@tempdimb
|
|
\class@info{Total text: Column(\the\@tempcnta pt), Page(\the\@tempcntb pt)}%
|
|
}%
|
|
\def\natural@output{\toggle@insert{\output@holding}{\output@moving}}%
|
|
\output@latex{\natural@output}%
|
|
\def\output@holding{%
|
|
\csname output@init@\bot@envir\endcsname
|
|
\@if@exceed@pagegoal{\unvcopy\@cclv}{%
|
|
\setbox\z@\vbox{\unvcopy\@cclv}%
|
|
\outputdebug@sw{\trace@box\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{\trace@scroll{\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
|
|
}%
|
|
\def\output@moving{%
|
|
\set@top@firstmark
|
|
\@ifnum{\outputpenalty=\do@newpage@pen}{%
|
|
\setbox\@cclv\vbox{%
|
|
\unvbox\@cclv
|
|
\remove@lastbox
|
|
\@ifdim{\ht\z@=\ht\@protection@box}{\box\lastbox}{\unskip}%
|
|
}%
|
|
}{}%
|
|
\@cclv@nontrivial@sw{%
|
|
\expandafter\output@do@prep\csname output@prep@\bot@envir \endcsname
|
|
\@makecolumn\true@sw
|
|
\expandafter\output@column@do\csname output@column@\thepagegrid\endcsname
|
|
\protect@penalty\do@startcolumn@pen
|
|
\clearpage@sw{%
|
|
\protect@penalty\do@endpage@pen
|
|
}{}%
|
|
\expandafter\let\expandafter\output@post@\csname output@post@\bot@envir \endcsname
|
|
\outputdebug@sw{\say\output@post@}{}%
|
|
\@ifx{\output@post@\relax}{\output@post@document}{\output@post@}%
|
|
}{%
|
|
\void@cclv
|
|
}%
|
|
\set@colht
|
|
\global\@mparbottom\z@
|
|
\global\@textfloatsheight\z@
|
|
}%
|
|
\def\output@do@prep#1{%
|
|
\outputdebug@sw{\class@info{Prep: \string#1}}{}%
|
|
\@ifx{#1\relax}{\output@prep@document}{#1}%
|
|
}%
|
|
\def\output@column@do#1{%
|
|
\outputdebug@sw{\class@info{Output column: \string#1}}{}%
|
|
\@ifx{#1\relax}{\output@column@one}{#1}%
|
|
}%
|
|
\def\void@cclv{\begingroup\setbox\z@\box\@cclv\endgroup}%
|
|
\def\remove@lastbox{\setbox\z@\lastbox}%
|
|
\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\bgroup
|
|
\unvbox\z@
|
|
\remove@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
|
|
}%
|
|
\egroup
|
|
{%
|
|
\false@sw
|
|
}{%
|
|
\true@sw
|
|
}%
|
|
}{%
|
|
\@ifdim{\ht\z@=\z@}{%
|
|
\ltxgrid@info{Found trivial column. Discarding it}%
|
|
\outputdebug@sw{\trace@box\@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
|
|
\remove@lastbox
|
|
\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{%
|
|
\ltxgrid@info@sw{\class@info{\string\output@init@document}}{}%
|
|
\global\vsize\vsize
|
|
}%
|
|
\def\output@prep@document{%
|
|
\ltxgrid@foot@info@sw{\class@info{\string\output@prep@document}\trace@scroll{\showbox\footins\showbox\footsofar}}{}%
|
|
\@ifvoid\footsofar{%
|
|
}{%
|
|
\global\setbox\footins\vbox\bgroup
|
|
\unvbox\footsofar
|
|
\@ifvoid\footins{}{%
|
|
\marry@baselines
|
|
\unvbox\footins
|
|
}%
|
|
\egroup
|
|
\ltxgrid@foot@info@sw{\trace@box\footins}{}%
|
|
}%
|
|
}%
|
|
\def\output@post@document{}%
|
|
\let\@opcol\@undefined
|
|
\def\@makecolumn#1{%
|
|
\ltxgrid@foot@info@sw{\class@info{\string\@makecolumn\string#1}}{}%
|
|
\setbox\@outputbox\vbox\bgroup
|
|
\boxmaxdepth\@maxdepth
|
|
\@tempdima\dp\@cclv
|
|
\unvbox\@cclv
|
|
\vskip-\@tempdima
|
|
\egroup
|
|
\xdef\@freelist{\@freelist\@midlist}\global\let\@midlist\@empty
|
|
\show@text@box@size
|
|
\@combinefloats
|
|
#1{%
|
|
\@combineinserts\@outputbox\footins
|
|
}{%
|
|
\combine@foot@inserts\footsofar\footins
|
|
}%
|
|
\set@adj@colht\dimen@
|
|
\count@\vbadness
|
|
\vbadness\@M
|
|
\setbox\@outputbox\vbox to\dimen@\bgroup
|
|
\@texttop
|
|
\dimen@\dp\@outputbox
|
|
\unvbox\@outputbox
|
|
\vskip-\dimen@
|
|
\@textbottom
|
|
\egroup
|
|
\vbadness\count@
|
|
\global\maxdepth\@maxdepth
|
|
}%
|
|
\let\@makespecialcolbox\@undefined
|
|
\def\@combineinserts#1#2{%
|
|
\ltxgrid@foot@info@sw{\class@info{\string\@combineinserts\string#1\string#2}\trace@box#2}{}%
|
|
\setbox#1\vbox\bgroup
|
|
\unvbox#1%
|
|
\@ifvoid{#2}{}{%
|
|
\dimen@\ht#2\advance\dimen@\dp#2\advance\dimen@\skip#2%
|
|
\show@box@size{Combining inserts}#2%
|
|
\vskip\skip#2%
|
|
\setbox\z@\vbox{\footnoterule}\dimen@i\ht\z@
|
|
\color@begingroup
|
|
\normalcolor
|
|
\cleaders\box\z@\vskip\dimen@i\kern-\dimen@i
|
|
\csname combine@insert@\the\pagegrid@col\endcsname#2%
|
|
\color@endgroup
|
|
\kern-\dimen@\kern\dimen@
|
|
}%
|
|
\egroup
|
|
\ltxgrid@foot@info@sw{\trace@box#1}{}%
|
|
}%
|
|
\def\combine@insert@tw@#1{%
|
|
\compose@footnotes@two#1\@ifvbox{#1}{\unvbox}{\box}#1%
|
|
}%
|
|
\def\combine@insert@@ne#1{%
|
|
\compose@footnotes@one#1\@ifvbox{#1}{\unvbox}{\box}#1%
|
|
}%
|
|
\def\twocolumn@grid@setup{%
|
|
\expandafter\let\csname combine@insert@1\endcsname\combine@insert@tw@
|
|
\expandafter\let\csname combine@insert@2\endcsname\combine@insert@@ne
|
|
}%
|
|
\def\onecolumn@grid@setup{%
|
|
\expandafter\let\csname combine@insert@1\endcsname\combine@insert@@ne
|
|
\expandafter\let\csname combine@insert@2\endcsname\combine@insert@@ne
|
|
}%
|
|
\let\columngrid@setup\onecolumn@grid@setup
|
|
\columngrid@setup
|
|
\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\remove@lastbox\unskip}%
|
|
\clearpage@sw{\@clearfloatplacement}{\@floatplacement}%
|
|
\set@colht
|
|
\@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
|
|
\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\remove@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}%
|
|
\@output@combined@page
|
|
}{%
|
|
\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\@output@combined@page{%
|
|
\@combinepage\true@sw
|
|
\@combinedblfloats
|
|
\@outputpage
|
|
\global\pagegrid@cur\@ne
|
|
\protect@penalty\do@startpage@pen
|
|
}%
|
|
\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
|
|
\global\@toproom \maxdimen
|
|
\global\@botnum \maxdimen
|
|
\global\@botroom \maxdimen
|
|
\global\@colnum \maxdimen
|
|
\global\@dbltopnum \maxdimen
|
|
\global\@dbltoproom \maxdimen
|
|
\global\@textmin \z@
|
|
\global\@fpmin \z@
|
|
\let\@testfp\@gobble
|
|
\appdef\@setfloattypecounts{\@fpstype16\advance\@fpstype\m@ne}%
|
|
}%
|
|
\let\@doclearpage\@undefined
|
|
\let\@makefcolumn\@undefined
|
|
\let\@makecol\@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@tail{%
|
|
\clr@top@firstmark
|
|
}%
|
|
\def\@float#1{%
|
|
\@ifnextchar[{%
|
|
\@yfloat\width@float{#1}%
|
|
}{%
|
|
\@ifxundefined@cs{fps@#1}{}{\expandafter\let\expandafter\fps@\csname fps@#1\endcsname}%
|
|
\expandafter\@argswap\expandafter{\expandafter[\fps@]}{\@yfloat\width@float{#1}}%
|
|
}%
|
|
}%
|
|
\def\@dblfloat#1{%
|
|
\@ifnum{\pagegrid@col=\@ne}{%
|
|
\@float{#1}%
|
|
}{%
|
|
\@ifnextchar[{%
|
|
\@yfloat\widthd@float{#1}%
|
|
}{%
|
|
\@ifxundefined@cs{fpsd@#1}{}{\expandafter\let\expandafter\fpsd@\csname fpsd@#1\endcsname}%
|
|
\expandafter\@argswap\expandafter{\expandafter[\fpsd@]}{\@yfloat\widthd@float{#1}}%
|
|
}%
|
|
}%
|
|
}%
|
|
\def\@yfloat#1#2[#3]{%
|
|
\@xfloat{#2}[#3]%
|
|
\hsize#1\linewidth\hsize
|
|
\let\set@footnotewidth\@empty
|
|
\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{%
|
|
\@iffpsbit\@ne{\global\advance\count\@currbox\m@ne}{}%
|
|
\@iffpsbit\f@ur{\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
|
|
}%
|
|
}{}%
|
|
}%
|
|
\newcommand\float@end@float{%
|
|
\@endfloatbox
|
|
\global\setbox\@currbox\float@makebox\columnwidth
|
|
\let\@endfloatbox\relax
|
|
\end@float
|
|
}%
|
|
\newcommand\float@end@ltx{%
|
|
\end@@float{%
|
|
\global\setbox\@currbox\float@makebox\columnwidth
|
|
\check@currbox@count
|
|
}%
|
|
}%
|
|
\newcommand\newfloat@float[3]{%
|
|
\@namedef{ext@#1}{#3} %!
|
|
\let\float@do=\relax
|
|
\xdef\@tempa{\noexpand\float@exts{\the\float@exts \float@do{#3}}}%
|
|
\@tempa
|
|
\floatplacement{#1}{#2}%
|
|
\@ifundefined{fname@#1}{\floatname{#1}{#1}}{} %!
|
|
\expandafter\edef\csname ftype@#1\endcsname{\value{float@type}}%
|
|
\addtocounter{float@type}{\value{float@type}} %!
|
|
\restylefloat{#1}%
|
|
\expandafter\edef\csname fnum@#1\endcsname{%
|
|
\expandafter\noexpand\csname fname@#1\endcsname{} %!
|
|
\expandafter\noexpand\csname the#1\endcsname
|
|
}
|
|
\@ifnextchar[%]
|
|
{%
|
|
\float@newx{#1}%
|
|
}{%
|
|
\@ifundefined{c@#1}{\newcounter{#1}\@namedef{the#1}{\arabic{#1}}}{}%
|
|
}%
|
|
}%
|
|
\newcommand\newfloat@ltx[3]{%
|
|
\@namedef{ext@#1}{#3}%
|
|
\let\float@do=\relax
|
|
\xdef\@tempa{\noexpand\float@exts{\the\float@exts \float@do{#3}}}%
|
|
\@tempa
|
|
\floatplacement{#1}{#2}%
|
|
\@ifundefined{fname@#1}{\floatname{#1}{#1}}{}%
|
|
\expandafter\edef\csname ftype@#1\expandafter\endcsname\expandafter{\the\c@float@type}%
|
|
\addtocounter{float@type}{\value{float@type}}%
|
|
\restylefloat{#1}%
|
|
\expandafter\edef\csname fnum@#1\endcsname{%
|
|
\expandafter\noexpand\csname fname@#1\endcsname{}%
|
|
\expandafter\noexpand\csname the#1\endcsname
|
|
}
|
|
\@ifnextchar[%]
|
|
{%
|
|
\float@newx{#1}%
|
|
}{%
|
|
\@ifundefined{c@#1}{\newcounter{#1}\@namedef{the#1}{\arabic{#1}}}{}%
|
|
}%
|
|
}%
|
|
\appdef\document@inithook{%
|
|
\@ifxundefined\newfloat{}{%
|
|
\@ifx{\float@end\float@end@float}{%
|
|
\@ifx{\newfloat\newfloat@float}{\true@sw}{\false@sw}%
|
|
}{\false@sw}%
|
|
{%
|
|
\class@warn{Repair the float package}%
|
|
\let\float@end\float@end@ltx
|
|
\let\newfloat\newfloat@ltx
|
|
}{%
|
|
\class@warn{Failed to patch the float package}%
|
|
}%
|
|
}%
|
|
}%
|
|
\def\@iffpsbit#1{%
|
|
\begingroup
|
|
\@tempcnta\count\@currbox
|
|
\divide\@tempcnta#1\relax
|
|
\@ifodd\@tempcnta{\aftergroup\true@sw}{\aftergroup\false@sw}%
|
|
\endgroup
|
|
}%
|
|
\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}%
|
|
}{}%
|
|
\expandafter\tally@float\expandafter{\@captype}%
|
|
}{%
|
|
}%
|
|
}%
|
|
\providecommand\minipagefootnote@init{}%
|
|
\providecommand\minipagefootnote@here{}%
|
|
\providecommand\tally@float[1]{}%
|
|
\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
|
|
\@addtocurcol
|
|
}{%
|
|
\@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%
|
|
}%
|
|
\appdef\document@inithook{%
|
|
\@ifxundefined\rotatebox{\let\rotatebox\rotatebox@dummy}{}%
|
|
}%
|
|
\@namedef{output@-1073741824}{%
|
|
\deadcycles\z@
|
|
\void@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
|
|
\remove@lastbox
|
|
}%
|
|
}%
|
|
\newtoks\@topmark@saved
|
|
\def\prep@cclv{%
|
|
\void@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\remove@lastbox}{%
|
|
\setbox\z@\vbox{\unvcopy\@cclv\remove@lastbox}%
|
|
\outputdebug@sw{\trace@box\z@}{}%
|
|
\dimen@\ht\@cclv\advance\dimen@-\ht\z@
|
|
\dead@cycle@repair@protected\dimen@
|
|
}{%
|
|
\dead@cycle
|
|
}%
|
|
}%
|
|
\def\savecolumn@moving{%
|
|
\ltxgrid@info@sw{\class@info{\string\savecolumn@moving}}{}%
|
|
\@cclv@nontrivial@sw{%
|
|
\save@column
|
|
}{%
|
|
\void@cclv
|
|
}%
|
|
\@ifvoid\footins{}{%
|
|
\ltxgrid@foot@info@sw{\class@info{\string\savecolumn@moving}\trace@scroll{\showbox\footins@saved\showbox\footins}}{}%
|
|
\@ifvoid\footins@saved{%
|
|
\global\setbox\footins@saved\box\footins
|
|
}{%
|
|
\global\setbox\footins@saved\vbox\bgroup
|
|
\unvbox\footins@saved
|
|
\marry@baselines
|
|
\unvbox\footins
|
|
\egroup
|
|
}%
|
|
\ltxgrid@foot@info@sw{\trace@box\footins@saved}{}%
|
|
\protect@penalty\save@column@insert@pen
|
|
}%
|
|
}%
|
|
\newbox\footins@saved
|
|
\newbox\footins@recovered
|
|
\newbox\column@recovered
|
|
\mathchardef\save@message@pen=10018
|
|
\@namedef{output@-\the\save@message@pen}{\save@message}%
|
|
\def\save@message{%
|
|
\void@cclv
|
|
\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
|
|
}%
|
|
\def\execute@message@insert#1{%
|
|
\@execute@message\save@column@insert@pen{%
|
|
\setbox \footins \box \footins@saved
|
|
\ltxgrid@foot@info@sw{\class@info{\string\execute@message@insert}\trace@box\footins}{}%
|
|
#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}{%
|
|
\unpenalty\true@sw
|
|
}{%
|
|
\false@sw
|
|
}%
|
|
}%
|
|
}%
|
|
\def\removestuff{\do@output@MVL{\unskip\unpenalty}}%
|
|
\def\removephantombox{%
|
|
\vadjust{%
|
|
\execute@message{%
|
|
\unvbox\@cclv
|
|
\remove@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\toggle@insert#1#2{%
|
|
\@ifnum{\holdinginserts>\z@}{\move@insertions#1}{\hold@insertions#2}%
|
|
}%
|
|
\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\footsofar
|
|
\def\combine@foot@inserts#1#2{%
|
|
\ltxgrid@info@sw{\class@info{\string\combine@foot@inserts\string#1\string#2}}{}%
|
|
\@ifvoid#1{%
|
|
\ltxgrid@foot@info@sw{\trace@box#2}{}\global\setbox#1\box#2%
|
|
}{%
|
|
\global\setbox#1\vbox\bgroup
|
|
\ltxgrid@foot@info@sw{\trace@box#1}{}\unvbox#1%
|
|
\@ifvoid#2{}{%
|
|
\marry@baselines
|
|
\ltxgrid@foot@info@sw{\trace@box#2}{}\unvbox#2%
|
|
}%
|
|
\egroup
|
|
}%
|
|
\ltxgrid@foot@info@sw{\trace@scroll{\showbox#1\showbox#2}}{}%
|
|
}%
|
|
\newcommand\onecolumngrid{\do@columngrid{one}{\@ne}}%
|
|
\let\onecolumn\@undefined
|
|
\def\open@column@one#1{%
|
|
\ltxgrid@info@sw{\class@info{\string\open@column@one\string#1}}{}%
|
|
\unvbox\pagesofar
|
|
\@ifvoid{\footsofar}{}{%
|
|
\insert\footins\bgroup\unvbox\footsofar\egroup
|
|
\penalty\z@
|
|
}%
|
|
\gdef\thepagegrid{one}%
|
|
\global\pagegrid@col#1%
|
|
\global\pagegrid@cur\@ne
|
|
\global\count\footins\@m
|
|
\global\divide\count\footins\tw@
|
|
\set@column@hsize\pagegrid@col
|
|
\set@colht
|
|
}%
|
|
\def\shut@column@one{%
|
|
\ltxgrid@info@sw{\class@info{\string\shut@column@one}}{}%
|
|
\@makecolumn\false@sw
|
|
\global\setbox\pagesofar\vbox\bgroup
|
|
\recover@column\@outputbox\footsofar\column@recovered\footins@recovered
|
|
\egroup
|
|
\begingroup\setbox\z@\box\@outputbox\endgroup
|
|
\combine@foot@inserts\footsofar\footins
|
|
\set@colht
|
|
}%
|
|
\def\float@column@one{%
|
|
\@makecolumn\true@sw
|
|
\@outputpage
|
|
}%
|
|
\def\end@column@one{%
|
|
\unvbox\@cclv\remove@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{%
|
|
\ltxgrid@info@sw{\class@info{\string\open@column@mlt\string#1}}{}%
|
|
\@ifvoid{\footsofar}{}{%
|
|
\insert\footins\bgroup\unvbox\footsofar\egroup
|
|
}%
|
|
\gdef\thepagegrid{mlt}%
|
|
\global\pagegrid@col#1%
|
|
\global\pagegrid@cur\@ne
|
|
\global\count\footins\@m
|
|
\set@column@hsize\pagegrid@col
|
|
\set@colht
|
|
}%
|
|
\def\shut@column@mlt{%
|
|
\ltxgrid@info@sw{\class@info{\string\shut@column@mlt}}{}%
|
|
\@cclv@nontrivial@sw{%
|
|
\@makecolumn\false@sw
|
|
\@ifnum{\pagegrid@cur<\pagegrid@col}{%
|
|
\expandafter\global\expandafter\setbox\csname col@\the\pagegrid@cur\endcsname\box\@outputbox
|
|
\global\advance\pagegrid@cur\@ne
|
|
}{}%
|
|
}{%
|
|
\void@cclv
|
|
}%
|
|
\@ifnum{\pagegrid@cur>\@ne}{%
|
|
\csname balance@\the\pagegrid@col\endcsname
|
|
\grid@column\@outputbox{}%
|
|
\@combinepage\false@sw
|
|
\@combinedblfloats
|
|
\global\setbox\pagesofar\box\@outputbox
|
|
\show@pagesofar@size
|
|
}{}%
|
|
\set@colht
|
|
}%
|
|
\def\float@column@mlt{%
|
|
\@output@combined@page
|
|
}%
|
|
\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\remove@lastbox
|
|
}{%
|
|
\unvbox\@cclv\remove@lastbox\unskip\null
|
|
}%
|
|
\protect@penalty\do@newpage@pen
|
|
\protect@penalty\do@endpage@pen
|
|
}{%
|
|
\unvbox\@cclv\remove@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\@outputbox{}%
|
|
\@output@combined@page
|
|
}%
|
|
}%
|
|
\let\@outputdblcol\@undefined
|
|
\def\@floatselect@sw@mlt#1{\@if@notdblfloat{#1}}%
|
|
\def\@addmarginpar@mlt{% emits a boolean
|
|
\@ifnum{\pagegrid@cur=\@ne}%
|
|
}%
|
|
\def\set@footnotewidth@one{%
|
|
\hsize\columnwidth
|
|
\linewidth\hsize
|
|
}%
|
|
\def\set@footnotewidth@two{\set@footnotewidth@mlt\tw@}%
|
|
\def\set@footnotewidth@mlt#1{%
|
|
\hsize\textwidth
|
|
\advance\hsize\columnsep
|
|
\divide\hsize#1%
|
|
\advance\hsize-\columnsep
|
|
\linewidth\hsize
|
|
}%
|
|
\def\compose@footnotes@one#1{%
|
|
\ltxgrid@foot@info@sw{\class@info{\string\compose@footnotes@one\string#1}\trace@box#1}{}%
|
|
}%
|
|
\let\compose@footnotes\compose@footnotes@one
|
|
\def\compose@footnotes@two#1{%
|
|
\ltxgrid@foot@info@sw{\class@info{\string\compose@footnotes@two\string#1}\trace@box#1}{}%
|
|
\setbox\z@\box\@tempboxa
|
|
\let\recover@column\recover@column@null
|
|
\let\marry@baselines\@empty
|
|
\balance@two#1\@tempboxa
|
|
\global\setbox#1\hbox to\textwidth{\box#1\hfil\box\@tempboxa}%
|
|
\ltxgrid@foot@info@sw{\trace@box#1}{}%
|
|
}%
|
|
\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#2{%
|
|
\ltxgrid@info@sw{\class@info{\string\grid@column\string#1}}{}%
|
|
\global\setbox#1\vbox\bgroup
|
|
\hb@xt@\textwidth\bgroup
|
|
\vrule\@height\z@\@width\z@\@if@empty{#2}{}{\@depth#2}%
|
|
\pagegrid@cur\@ne
|
|
\@ifnum{\pagegrid@cur<\pagegrid@col}{\loopwhile{\append@column@\pagegrid@cur\pagegrid@col}}{}%
|
|
\box@column#1%
|
|
\egroup
|
|
\vskip\z@skip
|
|
\egroup
|
|
}%
|
|
\def\append@column@#1#2{%
|
|
\expandafter\box@column\csname col@\the#1\endcsname
|
|
\hfil\vrule\@width\columnseprule\hfil
|
|
\advance#1\@ne
|
|
\@ifnum{#1<#2}%
|
|
}%
|
|
\def\box@column#1{%
|
|
\ltxgrid@info@sw{\class@info{\string\box@column\string#1}}{}%
|
|
\raise\topskip
|
|
\hb@xt@\columnwidth\bgroup
|
|
\dimen@\ht#1\@ifdim{\dimen@>\@colht}{\dimen@\@colht}{}%
|
|
\count@\vbadness\vbadness\@M
|
|
\dimen@ii\vfuzz\vfuzz\maxdimen
|
|
\ltxgrid@info@sw{\saythe\@colht\saythe\dimen@}{}%
|
|
\vtop to\dimen@\bgroup
|
|
\hrule\@height\z@
|
|
\unvbox#1%
|
|
\raggedcolumn@skip
|
|
\egroup
|
|
\vfuzz\dimen@ii
|
|
\vbadness\count@
|
|
\hss
|
|
\egroup
|
|
}%
|
|
\def\marry@baselines{%
|
|
\begingroup
|
|
\setbox\z@\lastbox
|
|
\@ifvoid{\z@}{%
|
|
\endgroup
|
|
}{%
|
|
\aftergroup\kern
|
|
\aftergroup-%
|
|
\expandafter\box\expandafter\z@\expandafter\endgroup\the\dp\z@\relax
|
|
}%
|
|
\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
|
|
}%
|
|
\appdef\document@inithook{%
|
|
\@ifxundefined\raggedcolumn@sw{\@booleanfalse\raggedcolumn@sw}{}%
|
|
}%
|
|
\def\raggedcolumn@skip{%
|
|
\vskip\z@\raggedcolumn@sw{\@plus.0001fil\@minus.0001fil}{}\relax
|
|
}%
|
|
\def\@combinepage#1{%
|
|
\ltxgrid@foot@info@sw{\class@info{\string\@combinepage\string#1}}{}%
|
|
\@ifvoid\pagesofar{}{%
|
|
\setbox\@outputbox\vbox{%
|
|
\unvbox\pagesofar
|
|
\marry@baselines
|
|
\unvbox\@outputbox
|
|
}%
|
|
}%
|
|
#1{%
|
|
\@ifvoid\footsofar{}{%
|
|
\show@box@size{Combining page footnotes}\footsofar
|
|
\setbox\footins\box\footsofar
|
|
\compose@footnotes
|
|
\@combineinserts\@outputbox\footins
|
|
}%
|
|
}{%
|
|
}%
|
|
}%
|
|
\def \@cflt{%
|
|
\let \@elt \@comflelt
|
|
\setbox\@tempboxa \vbox{}%
|
|
\@toplist
|
|
\setbox\@outputbox \vbox{%
|
|
\boxmaxdepth \maxdepth
|
|
\unvbox\@tempboxa\unskip
|
|
\topfigrule\vskip \textfloatsep
|
|
\unvbox\@outputbox
|
|
}%
|
|
\let\@elt\relax
|
|
\xdef\@freelist{\@freelist\@toplist}%
|
|
\global\let\@toplist\@empty
|
|
}%
|
|
\def \@cflb {%
|
|
\let\@elt\@comflelt
|
|
\setbox\@tempboxa \vbox{}%
|
|
\@botlist
|
|
\setbox\@outputbox \vbox{%
|
|
\unvbox\@outputbox
|
|
\vskip \textfloatsep\botfigrule
|
|
\unvbox\@tempboxa\unskip
|
|
}%
|
|
\let\@elt\relax
|
|
\xdef\@freelist{\@freelist\@botlist}%
|
|
\global \let \@botlist\@empty
|
|
}%
|
|
\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{%
|
|
\ltxgrid@info@sw{\class@info{\string\set@adj@textheight\string#1}\saythe\textheight}{}%
|
|
#1\textheight
|
|
\def\@elt{\adj@page#1}%
|
|
\@booleantrue\firsttime@sw\@dbltoplist
|
|
\let\@elt\relax
|
|
\global#1#1\relax
|
|
\ltxgrid@info@sw{\saythe#1}{}%
|
|
}%
|
|
\def\set@colroom{%
|
|
\ltxgrid@info@sw{\class@info{\string\set@colroom}}{}%
|
|
\set@adj@colht\@colroom
|
|
\@if@empty\enlarge@colroom{}{%
|
|
\global\advance\@colroom\enlarge@colroom\relax
|
|
\ltxgrid@info@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
|
|
\ltxgrid@info@sw{\class@info{\string\set@vsize\string\vsize=\string\colroom}\saythe\vsize}{}%
|
|
}%
|
|
\def\set@adj@colht#1{%
|
|
#1\@colht
|
|
\ltxgrid@info@sw{\class@info{\string\set@adj@colht\string#1-\string\pagesofar}\saythe#1}{}%
|
|
\@ifvoid\pagesofar{}{%
|
|
\advance#1-\ht\pagesofar\advance#1-\dp\pagesofar
|
|
\ltxgrid@info@sw{\class@info{\string\pagesofar}\saythe#1}{}%
|
|
}%
|
|
\def\@elt{\adj@column#1}%
|
|
\@booleantrue\firsttime@sw\@toplist
|
|
\@booleantrue\firsttime@sw\@botlist
|
|
\let\@elt\relax
|
|
}%
|
|
\def\adj@column#1#2{%
|
|
\advance#1-\ht#2%
|
|
\advance#1-\firsttime@sw{\textfloatsep\@booleanfalse\firsttime@sw}{\floatsep}%
|
|
\ltxgrid@info@sw{\class@info{\string\adj@column\string#1-\string#2}\saythe#1}{}%
|
|
}%
|
|
\def\adj@page#1#2{%
|
|
\advance#1-\ht#2%
|
|
\advance#1-\firsttime@sw{\dbltextfloatsep\@booleanfalse\firsttime@sw}{\dblfloatsep}%
|
|
\ltxgrid@info@sw{\class@info{\string\adj@page\string#1-\string#2}\saythe#1}{}%
|
|
}%
|
|
\def\set@adj@box#1#2{%
|
|
\@ifvoid#2{}{%
|
|
\advance#1-\ht#2\advance#1-\dp#2%
|
|
\@booleantrue\temp@sw
|
|
\ltxgrid@foot@info@sw{\class@info{\string\set@adj@box\string#2}\saythe#1}{}%
|
|
}%
|
|
}%
|
|
\appdef\@outputpage@tail{%
|
|
\set@colht % FIXME: needed?
|
|
\@floatplacement % FIXME: needed?
|
|
\@dblfloatplacement % FIXME: needed?
|
|
}%
|
|
\begingroup
|
|
\catcode`\1=\cat@letter
|
|
\catcode`\2=\cat@letter
|
|
\toks@{%
|
|
\setbox\footins\box\footsofar
|
|
\balance@two\col@1\@outputbox
|
|
\global\setbox\col@1\box\col@1
|
|
\global\setbox\@outputbox\box\@outputbox
|
|
\combine@foot@inserts\footsofar\footins
|
|
}%
|
|
\aftergroup\def\aftergroup\balance@2\expandafter
|
|
\endgroup\expandafter{\the\toks@}%
|
|
\def\balance@two#1#2{%
|
|
\ltxgrid@info@sw{\class@info{\string\balance@two\string#1\string#2}}{}%
|
|
\outputdebug@sw{\trace@scroll{\showbox#1\showbox#2}}{}%
|
|
\setbox\thr@@\copy\footsofar
|
|
\setbox\@ne\vbox\bgroup
|
|
\@ifvoid{#1}{}{%
|
|
\recover@column#1\footsofar\column@recovered\footins@recovered
|
|
\@ifvoid{#2}{}{\marry@baselines}%
|
|
}%
|
|
\@ifvoid{#2}{}{%
|
|
\recover@column#2\footsofar\column@recovered\footins@recovered
|
|
}%
|
|
\egroup
|
|
\outputdebug@sw{\trace@scroll{\showbox\@ne}}{}%
|
|
\ltxgrid@foot@info@sw{\trace@scroll{\showbox\footsofar}}{}%
|
|
\dimen@\ht\@ne\divide\dimen@\tw@
|
|
\dimen@i\dimen@
|
|
\vbadness\@M
|
|
\vfuzz\maxdimen
|
|
\splittopskip\topskip
|
|
\loopwhile{%
|
|
\setbox\z@\copy\@ne\setbox\tw@\vsplit\z@ to\dimen@
|
|
\remove@depth\z@\remove@depth\tw@
|
|
\dimen@ii\ht\tw@\advance\dimen@ii-\ht\z@
|
|
\dimen@i=.5\dimen@i
|
|
\ltxgrid@info@sw{\saythe\dimen@\saythe\dimen@i\saythe\dimen@ii}{}%
|
|
\@ifdim{\dimen@ii<.5\p@}{%
|
|
\@ifdim{\dimen@ii>-.5\p@}%
|
|
}{%
|
|
\false@sw
|
|
}%
|
|
{%
|
|
\true@sw
|
|
}{%
|
|
\@ifdim{\dimen@i<.5\p@}%
|
|
}%
|
|
{%
|
|
\false@sw
|
|
}%
|
|
{%
|
|
\advance\dimen@\@ifdim{\dimen@ii<\z@}{}{-}\dimen@i
|
|
\true@sw
|
|
}%
|
|
}%
|
|
\ltxgrid@info@sw{\saythe\dimen@\saythe\dimen@i\saythe\dimen@ii}{}%
|
|
\@ifdim{\ht\z@=\z@}{%
|
|
\@ifdim{\ht\tw@=\z@}%
|
|
}{%
|
|
\true@sw
|
|
}%
|
|
{%
|
|
}{%
|
|
\ltxgrid@info{Unsatifactorily balanced columns: giving up}%
|
|
\setbox\tw@\box#1%
|
|
\setbox\z@ \box#2%
|
|
\global\setbox\footsofar\box\thr@@
|
|
}%
|
|
\setbox\tw@\vbox{\unvbox\tw@\vskip\z@skip}%
|
|
\setbox\z@ \vbox{\unvbox\z@ \vskip\z@skip}%
|
|
\set@colht
|
|
\dimen@\ht\z@\@ifdim{\dimen@<\ht\tw@}{\dimen@\ht\tw@}{}%
|
|
\@ifdim{\dimen@>\@colroom}{\dimen@\@colroom}{}%
|
|
\ltxgrid@info@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{\trace@scroll{\showbox#1\showbox#2}}{}%
|
|
}%
|
|
\def\remove@depth#1{%
|
|
\setbox#1\vbox\bgroup
|
|
\unvcopy#1%
|
|
\setbox\z@\vbox\bgroup
|
|
\unvbox#1%
|
|
\setbox\z@\lastbox
|
|
\aftergroup\kern\aftergroup-\expandafter
|
|
\egroup
|
|
\the\dp\z@\relax
|
|
\egroup
|
|
}%
|
|
\def\recover@column#1#2#3#4{%
|
|
\ltxgrid@info@sw{\class@info{\string\recover@column\string#1\string#2\string#3\string#4}}{}%
|
|
\setbox#4\vbox{\unvcopy#1}%
|
|
\ltxgrid@foot@info@sw{\trace@scroll{\showbox#4}}{}%
|
|
\dimen@\ht#4%
|
|
\ltxgrid@foot@info@sw{\saythe\dimen@}{}%
|
|
\setbox#4\vbox\bgroup
|
|
\unvbox#4\unskip
|
|
\dimen@i\lastkern\unkern\advance\dimen@i\lastkern
|
|
\@ifdim{\dimen@i=\z@}{%
|
|
\dimen@i\lastkern\unkern
|
|
\ltxgrid@foot@info@sw{\saythe\dimen@i}{}%
|
|
\aftergroup\dimen@i
|
|
\expandafter\egroup\the\dimen@i\relax
|
|
}{%
|
|
\egroup
|
|
}%
|
|
\@ifdim{\dimen@i<\z@}{%
|
|
\advance\dimen@\dimen@i
|
|
\ltxgrid@foot@info@sw{\saythe\dimen@i\saythe\dimen@}{}%
|
|
\splittopskip\z@skip
|
|
\global\setbox#3\vsplit#4 to\dimen@
|
|
\global\setbox#4\vbox{\unvbox#4}%
|
|
\ltxgrid@foot@info@sw{\trace@scroll{\showbox#1\showbox#2\showbox#3\showbox#4}}{}%
|
|
\global\setbox#2\vbox\bgroup\unvbox#2\vskip\z@skip\unvbox#4\egroup
|
|
}{%
|
|
\setbox#3\box#4%
|
|
\ltxgrid@foot@info@sw{\trace@scroll{\showbox#1\showbox#2\showbox#3\showbox#4}}{}%
|
|
}%
|
|
\unvbox#3%
|
|
\loopwhile{\dimen@\lastskip\@ifdim{\dimen@>\z@}{\unskip\true@sw}{\false@sw}}%
|
|
}%
|
|
\def\recover@column@null#1#2#3#4{%
|
|
\unvcopy#1%
|
|
}%
|
|
\rvtx@ifformat@geq{2020/10/01}%
|
|
{%
|
|
\AddToHook{begindocument}{%
|
|
\open@column@one\@ne
|
|
\set@colht
|
|
\@floatplacement
|
|
\@dblfloatplacement
|
|
}%
|
|
}{%
|
|
\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
|
|
\nobreak
|
|
\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 \noexpand\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@LaTeX
|
|
\let\@xtabularcr\@xtabularcr@LaTeX
|
|
}{%
|
|
\advance\@tempdima\extrarowheight
|
|
\col@sep\tabcolsep
|
|
\let\@startpbox\LT@startpbox
|
|
\let\LT@LL@FM@cr\@arraycr@array
|
|
}%
|
|
\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{}%
|
|
\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}{%
|
|
}%
|
|
}%
|
|
}%
|
|
\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%
|
|
}%
|
|
}{%
|
|
}%
|
|
\global\let\@deferlist@postshipout\@empty
|
|
}%
|
|
}%
|
|
\def\@fltstk{%
|
|
\@latex@warning{A float is stuck (cannot be placed without \string\clearpage)}%
|
|
}%
|
|
\appdef\@outputpage@tail{%
|
|
\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}{%
|
|
\gdef\enlarge@colroom{#2}%
|
|
\true@sw
|
|
}{%
|
|
\ltxgrid@warn{Too late to enlarge this page; move the command to the first column.}%
|
|
\false@sw
|
|
}%
|
|
}{%
|
|
\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
|
|
}{%
|
|
}%
|
|
}%
|
|
\let\enlarge@colroom\@empty
|
|
\let\@kludgeins\@undefined
|
|
\@booleantrue\textheight@sw
|
|
\prepdef\@outputpage@head{%
|
|
\textheight@sw{%
|
|
\count@\vbadness\vbadness\@M
|
|
\dimen@\vfuzz\vfuzz\maxdimen
|
|
\setbox\@outputbox\vbox to\textheight{\unvbox\@outputbox}%
|
|
\vfuzz\dimen@
|
|
\vbadness\count@
|
|
}{}%
|
|
}%
|
|
\appdef\@outputpage@head{%
|
|
\@ifx{\LS@rot\@undefined}{}{\LS@rot}%
|
|
}%
|
|
\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
|
|
\@booleanfalse\ltxgrid@foot@info@sw
|
|
\def\def@next@handler#1#2#3{%
|
|
\advance#1\@ne\mathchardef#2\the#1%
|
|
\expandafter\def\csname output@-\the#1\endcsname{#3}%
|
|
}%
|
|
\def\def@line@handler#1#2{%
|
|
\begingroup
|
|
\@tempcnta\int@parpenalty
|
|
\advance\@tempcnta-#1%
|
|
\aftergroup\def
|
|
\expandafter\aftergroup\csname output@-\the\@tempcnta\endcsname
|
|
\endgroup{#2}%
|
|
}%
|
|
\mathchardef\int@parpenalty11012
|
|
\def@line@handler\z@{\@handle@line@ltx{}{}{}}%
|
|
\def@line@handler\@ne{\@handle@line@ltx{}{}{\brokenpenalty@ltx}}%
|
|
\def@line@handler\tw@{\@handle@line@ltx{}{\clubpenalty@ltx}{}}%
|
|
\def@line@handler\thr@@{\@handle@line@ltx{\clubpenalty@ltx}{}{\brokenpenalty@ltx}}%
|
|
\def@line@handler\f@ur{\@handle@line@ltx{\widowpenalty@ltx}{}{}}%
|
|
\def@line@handler{5}{\@handle@line@ltx{\widowpenalty@ltx}{}{\brokenpenalty@ltx}}%
|
|
\def@line@handler{6}{\@handle@line@ltx{\widowpenalty@ltx}{\clubpenalty@ltx}{}}%
|
|
\def@line@handler{7}{\@handle@line@ltx{\widowpenalty@ltx}{\clubpenalty@ltx}{\brokenpenalty@ltx}}%
|
|
\def@line@handler{8}{\@handle@line@ltx{\displaywidowpenalty@ltx}{}{}}%
|
|
\def@line@handler{9}{\@handle@line@ltx{\displaywidowpenalty@ltx}{}{\brokenpenalty@ltx}}%
|
|
\def@line@handler{10}{\@handle@line@ltx{\displaywidowpenalty@ltx}{\clubpenalty@ltx}{}}%
|
|
\def@line@handler{11}{\@handle@line@ltx{\displaywidowpenalty@ltx}{\clubpenalty@ltx}{\brokenpenalty@ltx}}%
|
|
\def\@handle@line@ltx#1#2#3{%
|
|
\@@handle@line@ltx
|
|
\@tempcnta\lastpenalty
|
|
\@tempcntb\interlinepenalty@ltx\relax
|
|
\@if@empty{#1}{}{\advance\@tempcntb#1\relax}%
|
|
\@if@empty{#2}{}{\advance\@tempcntb#2\relax}%
|
|
\@if@empty{#3}{}{\advance\@tempcntb#3\relax}%
|
|
\penalty\@ifnum{\@tempcnta<\@tempcntb}{\@tempcntb}{\@tempcnta}%
|
|
}%
|
|
\let\@@handle@line@ltx\@empty
|
|
\@tempcnta\int@parpenalty
|
|
\def@next@handler\@tempcnta\int@postparpenalty{\reset@queues@ltx\handle@par@ltx}%
|
|
\def@next@handler\@tempcnta\int@vadjustpenalty{\handle@vadjust@ltx}%
|
|
\def@next@handler\@tempcnta\int@whatsitpenalty{\handle@whatsit@ltx}%
|
|
\def@next@handler\@tempcnta\int@predisplaypenalty{\reset@queues@ltx\@handle@display@ltx{\predisplaypenalty@ltx}}%
|
|
\def@next@handler\@tempcnta\int@interdisplaylinepenalty{\@handle@display@ltx{\interdisplaylinepenalty@ltx}}%
|
|
\def@next@handler\@tempcnta\int@postdisplaypenalty{\@handle@display@ltx{\postdisplaypenalty@ltx}}%
|
|
\def\@handle@display@ltx#1{%
|
|
\@@handle@display@ltx
|
|
\@tempcnta\lastpenalty
|
|
\@tempcntb#1%
|
|
\penalty\@ifnum{\@tempcnta<\@tempcntb}{\@tempcntb}{\@tempcnta}%
|
|
}%
|
|
\let\@@handle@display@ltx\@empty
|
|
\def\handle@par@ltx{}%
|
|
\def\set@linepenalties{%
|
|
\expandafter\def\expandafter\interlinepenalty@ltx\expandafter{\the\interlinepenalty}%
|
|
\interlinepenalty-\int@parpenalty
|
|
\expandafter\def\expandafter\brokenpenalty@ltx\expandafter{\the\brokenpenalty}%
|
|
\brokenpenalty\@ne
|
|
\expandafter\def\expandafter\clubpenalty@ltx\expandafter{\the\clubpenalty}%
|
|
\clubpenalty\tw@
|
|
\expandafter\def\expandafter\widowpenalty@ltx\expandafter{\the\widowpenalty}%
|
|
\widowpenalty\f@ur
|
|
\expandafter\def\expandafter\displaywidowpenalty@ltx\expandafter{\the\displaywidowpenalty}%
|
|
\displaywidowpenalty8\relax
|
|
}%
|
|
\def\restore@linepenalties{%
|
|
\interlinepenalty\interlinepenalty@ltx
|
|
\brokenpenalty\brokenpenalty@ltx
|
|
\clubpenalty\clubpenalty@ltx
|
|
\widowpenalty\widowpenalty@ltx
|
|
\displaywidowpenalty\displaywidowpenalty@ltx
|
|
\relax
|
|
}%
|
|
\def\set@displaypenalties#1{%
|
|
\expandafter\def\expandafter\predisplaypenalty@ltx\expandafter{\the\predisplaypenalty}%
|
|
\expandafter\def\expandafter\interdisplaylinepenalty@ltx\expandafter{\the\interdisplaylinepenalty}%
|
|
\expandafter\def\expandafter\postdisplaypenalty@ltx\expandafter{\the\postdisplaypenalty}%
|
|
\@ifhmode{\predisplaypenalty-\int@predisplaypenalty\relax}{}%
|
|
#1{\interdisplaylinepenalty-\int@interdisplaylinepenalty\relax}{}%
|
|
#1{\postdisplaypenalty-\int@postdisplaypenalty\relax}{}%
|
|
}%
|
|
\def\enqueue@whatsit@ltx#1{%
|
|
\gappdef\g@whatsit@queue{{#1}}%
|
|
\vadjust{\penalty-\int@whatsitpenalty}%
|
|
}%
|
|
\def\handle@whatsit@ltx{%
|
|
\unvbox\@cclv
|
|
\g@pop@ltx\g@whatsit@queue\@tempa
|
|
\expandafter\do@whatsit\expandafter{\@tempa}%
|
|
}%
|
|
\def\do@whatsit#1{}%
|
|
\def\g@pop@ltx#1#2{%
|
|
\expandafter\@g@pop@ltx#1{}{}\@@#1#2%
|
|
}%
|
|
\def\@g@pop@ltx#1#2\@@#3#4{%
|
|
\gdef#3{#2}%
|
|
\def#4{#1}%
|
|
}%
|
|
\let\vspace@ltx\vspace
|
|
\let\pagebreak@ltx\pagebreak
|
|
\let\nopagebreak@ltx\nopagebreak
|
|
\let\endline@ltx\\
|
|
\let\@arrayparboxrestore@ltx\@arrayparboxrestore
|
|
\def\@tempa#1{%
|
|
\def\@vspace@org ##1{%
|
|
\ifvmode
|
|
#1% \vskip #1
|
|
\vskip\z@skip
|
|
\else
|
|
\@bsphack
|
|
\vadjust{\@restorepar
|
|
#1% \vskip #1
|
|
\vskip\z@skip
|
|
}%
|
|
\@esphack
|
|
\fi
|
|
}%
|
|
\def\@vspace@ltx##1{%
|
|
\@ifvmode{%
|
|
#1% \vskip #1
|
|
\vskip\z@skip
|
|
}{%
|
|
\@bsphack
|
|
\ex@vadjust@ltx{%
|
|
\@restorepar
|
|
\nobreak
|
|
#1% \vskip #1
|
|
\vskip\z@skip
|
|
}%
|
|
\@esphack
|
|
}%
|
|
}%
|
|
\def\@vspacer@org##1{%
|
|
\ifvmode
|
|
\dimen@\prevdepth
|
|
\hrule \@height\z@
|
|
\nobreak
|
|
#1%\vskip #1
|
|
\vskip\z@skip
|
|
\prevdepth\dimen@
|
|
\else
|
|
\@bsphack
|
|
\vadjust{\@restorepar
|
|
\hrule \@height\z@
|
|
\nobreak
|
|
#1%\vskip #1
|
|
\vskip\z@skip}%
|
|
\@esphack
|
|
\fi
|
|
}%
|
|
\def\@vspacer@ltx##1{%
|
|
\@ifvmode{%
|
|
\dimen@\prevdepth
|
|
\hrule\@height\z@
|
|
\nobreak
|
|
#1%\vskip#1
|
|
\vskip\z@skip
|
|
\prevdepth\dimen@
|
|
}{%
|
|
\@bsphack
|
|
\ex@vadjust@ltx{%
|
|
\@restorepar
|
|
\hrule\@height\z@
|
|
\nobreak
|
|
#1%\vskip#1
|
|
\vskip\z@skip
|
|
}%
|
|
\@esphack
|
|
}%
|
|
}%
|
|
}
|
|
\rvtx@ifformat@geq{2020/10/01}%
|
|
{\@tempa{\@vspace@calcify{#1}}}%
|
|
{\@tempa{\vskip #1 }}%
|
|
\def\@no@pgbk@org #1[#2]{%
|
|
\ifvmode
|
|
\penalty #1\@getpen{#2}%
|
|
\else
|
|
\@bsphack
|
|
\vadjust{\penalty #1\@getpen{#2}}%
|
|
\@esphack
|
|
\fi
|
|
}%
|
|
\def\@no@pgbk@ltx#1[#2]{%
|
|
\@ifvmode{%
|
|
\penalty#1\@getpen{#2}%
|
|
}{%
|
|
\@bsphack
|
|
\ex@vadjust@ltx{%
|
|
\penalty#1\@getpen{#2}%
|
|
}%
|
|
\@esphack
|
|
}%
|
|
}%
|
|
\rvtx@ifformat@geq{2020/02/02}%
|
|
{\protected}{\long}\def\end@line@org{%
|
|
\let\reserved@e\relax
|
|
\let\reserved@f\relax
|
|
\@ifstar{%
|
|
\let\reserved@e\vadjust
|
|
\let\reserved@f\nobreak
|
|
\@xnewline
|
|
}%
|
|
\@xnewline
|
|
}%
|
|
\rvtx@ifformat@geq{2020/02/02}%
|
|
{\protected}{\long}\def\end@line@ltx{%
|
|
\let\reserved@e\relax
|
|
\let\reserved@f\relax
|
|
\@ifstar{%
|
|
\let\reserved@e\ex@vadjust@ltx
|
|
\let\reserved@f\nobreak
|
|
\@xnewline
|
|
}{%
|
|
\@xnewline
|
|
}%
|
|
}%
|
|
\def\@tempa#1{%
|
|
\def\@newline@org[##1]{%
|
|
\let\reserved@e\vadjust
|
|
\@gnewline{#1}% \vskip#1
|
|
}%
|
|
\def\@newline@ltx[##1]{%
|
|
\let\reserved@e\ex@vadjust@ltx
|
|
\@gnewline{#1}% \vskip#1
|
|
}%
|
|
}
|
|
\rvtx@ifformat@geq{2020/10/01}%
|
|
{\@tempa{\@vspace@calcify{#1}}}%
|
|
{\@tempa{\vskip #1}}%
|
|
\@ifx{\@vspace\@vspace@org}{%
|
|
\@ifx{\@vspacer\@vspacer@org}{%
|
|
\@ifx{\@no@pgbk\@no@pgbk@org}{%
|
|
\@ifx{\@newline\@newline@org}{%
|
|
\expandafter\@ifx\expandafter{%
|
|
\csname\rvtx@ifformat@geq{2020/02/02}%
|
|
{\expandafter\@gobble\string\\}%
|
|
{\expandafter\@gobble\string\\ }\endcsname
|
|
\end@line@org
|
|
}{%
|
|
\true@sw
|
|
}{\false@sw}%
|
|
}{\false@sw}%
|
|
}{\false@sw}%
|
|
}{\false@sw}%
|
|
}{\false@sw}%
|
|
{%
|
|
\class@info{Overriding \string\@vspace, \string\@vspacer, \string\@no@pgbk, \string\@newline, and \string\\ }%
|
|
\let\@normalcr\end@line@ltx
|
|
\expandafter\let
|
|
\csname\rvtx@ifformat@geq{2020/02/02}%
|
|
{\expandafter\@gobble\string\\}%
|
|
{\expandafter\@gobble\string\\ }\endcsname\@normalcr
|
|
\let\@newline\@newline@ltx
|
|
\let\@vspace\@vspace@ltx
|
|
\let\@vspacer\@vspacer@ltx
|
|
\let\@no@pgbk\@no@pgbk@ltx
|
|
}{%
|
|
\class@warn{%
|
|
Failed to recognize \string\@vspace, \string\@vspacer, \string\@no@pgbk, \string\@newline, and \string\\;
|
|
no patches applied. Please get a more up-to-date class,
|
|
}%
|
|
}%
|
|
\let\ex@vadjust@ltx\vadjust
|
|
\def\enqueue@vadjust@ltx#1{%
|
|
\gappdef\g@vadjust@queue{{#1}}%
|
|
\vadjust{\penalty-\int@vadjustpenalty}%
|
|
}%
|
|
\def\handle@vadjust@ltx{%
|
|
\unvbox\@cclv
|
|
\g@pop@ltx\g@vadjust@queue\@tempa
|
|
\expandafter\gappdef\expandafter\g@vadjust@line\expandafter{\@tempa}%
|
|
}%
|
|
\let\g@vadjust@line\@empty
|
|
\def\reset@queues@ltx{%
|
|
\global\let\g@whatsit@queue\@empty
|
|
\global\let\g@vadjust@queue\@empty
|
|
}%
|
|
\newcommand\linenomathWithnumbers@LN{%
|
|
\ifLineNumbers
|
|
\ifnum\interlinepenalty>-\linenopenaltypar
|
|
\global\holdinginserts\thr@@
|
|
\advance\interlinepenalty \linenopenalty
|
|
\ifhmode
|
|
\advance\predisplaypenalty \linenopenalty
|
|
\fi
|
|
\advance\postdisplaypenalty \linenopenalty
|
|
\advance\interdisplaylinepenalty \linenopenalty
|
|
\fi
|
|
\fi
|
|
\ignorespaces
|
|
}%
|
|
\newcommand\linenomathNonumbers@LN{%
|
|
\ifLineNumbers
|
|
\ifnum\interlinepenalty>-\linenopenaltypar
|
|
\global\holdinginserts\thr@@
|
|
\advance\interlinepenalty \linenopenalty
|
|
\ifhmode
|
|
\advance\predisplaypenalty \linenopenalty
|
|
\fi
|
|
\fi
|
|
\fi
|
|
\ignorespaces
|
|
}%
|
|
\def\endlinenomath@LN{%
|
|
\ifLineNumbers
|
|
\global\holdinginserts\@LN@outer@holdins
|
|
\fi
|
|
\global\@ignoretrue
|
|
}
|
|
\def\linenumberpar@LN{%
|
|
\ifvmode \@@@par \else
|
|
\ifinner \@@@par \else
|
|
\xdef\@LN@outer@holdins{\the\holdinginserts}%
|
|
\advance \interlinepenalty \linenopenalty
|
|
\linenoprevgraf \prevgraf
|
|
\global \holdinginserts \thr@@
|
|
\@@@par
|
|
\ifnum\prevgraf>\linenoprevgraf
|
|
\penalty-\linenopenaltypar
|
|
\fi
|
|
\@LN@parpgbrk
|
|
\global\holdinginserts\@LN@outer@holdins
|
|
\advance\interlinepenalty -\linenopenalty
|
|
\fi
|
|
\fi
|
|
}%
|
|
\appdef\class@documenthook{%
|
|
\@ifpackageloaded{lineno}{%
|
|
\@ifx{\linenomathWithnumbers\linenomathWithnumbers@LN}{%
|
|
\@ifx{\linenomathNonumbers\linenomathNonumbers@LN}{%
|
|
\@ifx{\endlinenomath\endlinenomath@LN}{%
|
|
\@ifx{\linenumberpar\linenumberpar@LN}{%
|
|
\true@sw
|
|
}{\false@sw}%
|
|
}{\false@sw}%
|
|
}{\false@sw}%
|
|
}{\false@sw}%
|
|
{%
|
|
\class@info{Overriding lineo.sty, restoring output routine,}%
|
|
\let\linenumberpar\linenumberpar@ltx
|
|
\let\endlinenomath\endlinenomath@ltx
|
|
\expandafter\let\csname endlinenomath*\endcsname\endlinenomath@ltx
|
|
\let\linenomathWithnumbers\linenomathWithnumbers@ltx
|
|
\let\linenomathNonumbers\linenomathNonumbers@ltx
|
|
\let\ex@vadjust@ltx\ex@vadjust@line
|
|
\let\@LN@postlabel\enqueue@whatsit@ltx
|
|
\let\do@whatsit\write@linelabel
|
|
\let\handle@par@ltx\handle@par@LN
|
|
\let\@@handle@line@ltx\Make@LineNo@ltx
|
|
\let\@@handle@display@ltx\Make@LineNo@ltx
|
|
\output@latex{\natural@output}%
|
|
\let\vspace\vspace@ltx
|
|
\let\pagebreak\pagebreak@ltx
|
|
\let\nopagebreak\nopagebreak@ltx
|
|
\let\@arrayparboxrestore\@arrayparboxrestore@ltx
|
|
\let\\\endline@ltx
|
|
\appdef\set@footnotefont{%
|
|
\let\par\@@@par
|
|
\let\@@par\@@@par
|
|
}%
|
|
\@if@sw\ifLineNumbers\fi{%
|
|
\class@info{Reinvoke \string\linenumbers}%
|
|
\let\@@par\linenumberpar
|
|
\@ifx{\@par\linenumberpar@LN}{\let\@par\linenumberpar}{}%
|
|
\@ifx{\par\linenumberpar@LN}{\let\par\linenumberpar}{}%
|
|
}{%
|
|
\class@info{Line numbering not turned on yet}%
|
|
}%
|
|
}{%
|
|
\class@warn{Failed to recognize lineno.sty procedures; no patches applied. Please get a more up-to-date class.}%
|
|
}%
|
|
}{%
|
|
}%
|
|
}%
|
|
\def\linenumberpar@ltx{\@ifvmode{\@@@par}{\@linenumberpar}}%
|
|
\def\@linenumberpar{%
|
|
\linenoprevgraf\prevgraf
|
|
\set@linepenalties
|
|
\@@@par
|
|
\@ifnum{\prevgraf>\linenoprevgraf}{
|
|
\penalty-\int@postparpenalty
|
|
}{}%
|
|
\@LN@parpgbrk
|
|
\restore@linepenalties
|
|
}%
|
|
\newcommand\linenomathWithnumbers@ltx{\@linenomathnumbers@ltx\true@sw}%
|
|
\newcommand\linenomathNonumbers@ltx{\@linenomathnumbers@ltx\false@sw}%
|
|
\def\@linenomathnumbers@ltx#1{%
|
|
\@if@sw\ifLineNumbers\fi{%
|
|
\set@linepenalties
|
|
\set@displaypenalties#1%
|
|
}{}%
|
|
\ignorespaces
|
|
}%
|
|
\def\endlinenomath@ltx{%
|
|
\global\@ignoretrue
|
|
}%
|
|
\def\handle@par@LN{%
|
|
\Make@LineNo@ltx
|
|
\@tempcnta\lastpenalty
|
|
\@ifnum{\@tempcnta=\z@}{}{%
|
|
\expandafter\gdef
|
|
\expandafter\@LN@parpgbrk
|
|
\expandafter{%
|
|
\expandafter\penalty
|
|
\the\@tempcnta
|
|
\global\let\@LN@parpgbrk\@LN@screenoff@pen
|
|
}%
|
|
}%
|
|
}%
|
|
\def\Make@LineNo@ltx{%
|
|
\@LN@maybe@normalLineNumber
|
|
\boxmaxdepth\maxdimen\setbox\z@\vbox{\unvbox\@cclv}%
|
|
\@tempdima\dp\z@
|
|
\unvbox\z@
|
|
\sbox\@tempboxa{\hb@xt@\z@{\makeLineNumber}}%
|
|
\ht\@tempboxa\z@
|
|
\@LN@depthbox
|
|
\stepLineNumber
|
|
\g@vadjust@line
|
|
\global\let\g@vadjust@line\@empty
|
|
}%
|
|
\def\write@linelabel#1{%
|
|
\protected@write\@auxout{}{%
|
|
\string\newlabel{#1}{{\theLineNumber}{\thepage}{}{}{}}%
|
|
}%
|
|
}%
|
|
\def\ex@vadjust@line{%
|
|
\@if@sw\ifLineNumbers\fi{\enqueue@vadjust@ltx}{\vadjust}%
|
|
}%
|
|
\endinput
|
|
%%
|
|
%% End of file `ltxgrid.sty'.
|