~chris-rogers/maus/emr_mc_digitization

« back to all changes in this revision

Viewing changes to doc/doc_src/detectors/tracker/01-Current/99-Styles/revtex4-1/revtex4-1-tds/tex/latex/revtex/ltxgrid.sty

  • Committer: Chris Rogers
  • Date: 2014-04-16 11:48:45 UTC
  • mfrom: (707 merge)
  • mto: This revision was merged to the branch mainline in revision 711.
  • Revision ID: chris.rogers@stfc.ac.uk-20140416114845-h3u3q7pdcxkxvovs
Update to trunk

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
%%
2
 
%% This is file `ltxgrid.sty',
3
 
%% generated with the docstrip utility.
4
 
%%
5
 
%% The original source files were:
6
 
%%
7
 
%% ltxgrid.dtx  (with options: `package,kernel')
8
 
%% 
9
 
%% This is a generated file;
10
 
%% altering it directly is inadvisable;
11
 
%% instead, modify the original source file.
12
 
%% See the URL in the file 00readme.tex.
13
 
%% 
14
 
%% License
15
 
%%    You may distribute this file under the conditions of the
16
 
%%    LaTeX Project Public License 1.3 or later
17
 
%%    (http://www.latex-project.org/lppl.txt).
18
 
%% 
19
 
%%    This file is distributed WITHOUT ANY WARRANTY;
20
 
%%    without even the implied warranty of MERCHANTABILITY
21
 
%%    or FITNESS FOR A PARTICULAR PURPOSE.
22
 
%% 
23
 
%%%  @LaTeX-file{
24
 
%%%     filename        = "ltxgrid.dtx",
25
 
%%%     version         = "4.1r",
26
 
%%%     date            = "2010/07/25",
27
 
%%%     time            = "20:33:00 UT-8",
28
 
%%%     checksum        = "5462",
29
 
%%%     author          = "Arthur Ogawa (mailto:arthur_ogawa at sbcglobal.net),
30
 
%%%                        commissioned by the American Physical Society.
31
 
%%%                        ",
32
 
%%%     copyright       = "Copyright (C) 1999, 2009 Arthur Ogawa,
33
 
%%%                        distributed under the terms of the
34
 
%%%                        LaTeX Project Public License, see
35
 
%%%                        ftp://ctan.tug.org/macros/latex/base/lppl.txt
36
 
%%%                        ",
37
 
%%%     address         = "Arthur Ogawa,
38
 
%%%                        USA",
39
 
%%%     telephone       = "",
40
 
%%%     FAX             = "",
41
 
%%%     email           = "mailto colon arthur_ogawa at sbcglobal.net",
42
 
%%%     codetable       = "ISO/ASCII",
43
 
%%%     keywords        = "latex, page grid, main vertical list",
44
 
%%%     supported       = "yes",
45
 
%%%     abstract        = "package to change page grid, MVL",
46
 
%%%     docstring       = "The checksum field above generated by ltxdoc",
47
 
%%%  }
48
 
\NeedsTeXFormat{LaTeX2e}[1995/12/01]%
49
 
\ProvidesFile{%
50
 
ltxgrid%
51
 
.sty%
52
 
}%
53
 
 [2010/07/25/20:33:00 4.1r page grid package (portions licensed from W. E. Baxter web at superscript.com)]% \fileversion
54
 
\def\package@name{ltxgrid}%
55
 
\expandafter\PackageInfo\expandafter{\package@name}{%
56
 
 Page grid for \protect\LaTeXe,
57
 
 by A. Ogawa (arthur_ogawa at sbcglobal.net)%
58
 
}%
59
 
\RequirePackage{ltxutil}%
60
 
\newcounter{linecount}
61
 
\def\loop@line#1#2{%
62
 
 \par
63
 
 \hb@xt@\hsize{%
64
 
  \global\advance#1\@ne
65
 
  \edef\@tempa{\@ifnum{100>#1}{0}{}\@ifnum{10>#1}{0}{}\number#1}%
66
 
  \@tempa\edef\@tempa{\special{line:\@tempa}}\@tempa
67
 
  \vrule depth2.5\p@#2\leaders\hrule\hfil
68
 
 }%
69
 
}%
70
 
\def\lineloop#1{%
71
 
 \loopwhile{\loop@line\c@linecount{}\@ifnum{#1>\c@linecount}}%
72
 
}%
73
 
\def\linefoot#1{%
74
 
 \loop@line\c@linecount{%
75
 
  \footnote{%
76
 
   #1\special{foot:#1}\vrule depth2.5\p@\leaders\hrule\hfill
77
 
  }%
78
 
 }%
79
 
}%
80
 
\let\@@mark\mark
81
 
\let\@@topmark\topmark
82
 
\let\@@firstmark\firstmark
83
 
\let\@@botmark\botmark
84
 
\let\@@splitfirstmark\splitfirstmark
85
 
\let\@@splitbotmark\splitbotmark
86
 
\def\@themark{{}{}{}{}}%
87
 
\def\nul@mark{{}{}{}{}\@@nul}%
88
 
\def\set@mark@netw@#1#2#3#4#5#6#7{\gdef#1{{#6}{#7}{#4}{#5}}\do@mark}%
89
 
\def\set@marktw@#1#2#3#4#5#6{\gdef#1{{#2}{#6}{#4}{#5}}\do@mark}%
90
 
\def\set@markthr@@#1#2#3#4#5#6{\gdef#1{{#2}{#3}{#6}{#5}}\do@mark}%
91
 
\def\get@mark@@ne#1#2#3#4#5\@@nul{#1}%
92
 
\def\get@mark@tw@#1#2#3#4#5\@@nul{#2}%
93
 
\def\get@mark@thr@@#1#2#3#4#5\@@nul{#3}%
94
 
\def\get@mark@f@ur#1#2#3#4#5\@@nul{#4}%
95
 
\def\mark@netw@{\expandafter\set@mark@netw@\expandafter\@themark\@themark}%
96
 
\def\marktw@{\expandafter\set@marktw@\expandafter\@themark\@themark}%
97
 
\def\markthr@@{\expandafter\set@markthr@@\expandafter\@themark\@themark}%
98
 
\def\do@mark{\do@@mark\@themark\nobreak@mark}%
99
 
\def\do@@mark#1{%
100
 
 \begingroup
101
 
  \let@mark
102
 
  \@@mark{#1}%
103
 
 \endgroup
104
 
}%
105
 
\def\let@mark{%
106
 
 \let\protect\@unexpandable@protect
107
 
 \let\label\relax
108
 
 \let\index\relax
109
 
 \let\glossary\relax
110
 
}%
111
 
\def\nobreak@mark{%
112
 
 \@if@sw\if@nobreak\fi{\@ifvmode{\nobreak}{}}{}%
113
 
}%
114
 
\def\mark@envir{\markthr@@}%
115
 
\def\bot@envir{%
116
 
 \expandafter\expandafter
117
 
 \expandafter\get@mark@thr@@
118
 
 \expandafter\@@botmark
119
 
             \nul@mark
120
 
}%
121
 
\def\markboth{\mark@netw@}%
122
 
\def\markright{\marktw@}%
123
 
\def\leftmark{%
124
 
 \expandafter\expandafter
125
 
 \expandafter\get@mark@@ne
126
 
 \expandafter\saved@@botmark
127
 
             \nul@mark
128
 
}%
129
 
\def\rightmark{%
130
 
 \expandafter\expandafter
131
 
 \expandafter\get@mark@tw@
132
 
 \expandafter\saved@@firstmark
133
 
             \nul@mark
134
 
}%
135
 
\let\primitive@output\output
136
 
\long\def\@tempa#1\@@nil{#1}%
137
 
            \toks@
138
 
\expandafter\expandafter
139
 
\expandafter{%
140
 
\expandafter \@tempa
141
 
             \the\primitive@output
142
 
             \@@nil
143
 
             }%
144
 
\newtoks\output@latex
145
 
\output@latex\expandafter{\the\toks@}%
146
 
\let\output\output@latex
147
 
\primitive@output{\dispatch@output}%
148
 
\def\dispatch@output{%
149
 
 \let\par\@@par
150
 
 \expandafter\let\expandafter\output@procedure\csname output@\the\outputpenalty\endcsname
151
 
 \@ifnotrelax\output@procedure{}{%
152
 
  \expandafter\def\expandafter\output@procedure\expandafter{\the\output@latex}%
153
 
 }%
154
 
 \expandafter\@ifx\expandafter{\csname output@-\the\execute@message@pen\endcsname\output@procedure}{%
155
 
  \let\output@procedure\@message@saved
156
 
 }{}%
157
 
 \ltxgrid@info@sw{\class@info{\string\dispatch@output}\say\output@procedure\saythe\holdinginserts}{}%
158
 
 \outputdebug@sw{\output@debug}{}%
159
 
 \output@procedure
160
 
}%
161
 
\def\set@output@procedure#1#2{%
162
 
 \count@\outputpenalty\advance\count@-#2%
163
 
 \expandafter\let\expandafter#1\csname output@\the\count@\endcsname
164
 
}%
165
 
\def\output@debug{%
166
 
 \def\@tempa{\save@message}%
167
 
 \@ifx{\output@procedure\@tempa}{%
168
 
  \true@sw
169
 
 }{%
170
 
  \@ifnum{\outputpenalty=-\save@column@insert@pen}{%
171
 
   \@ifnum{\holdinginserts>\z@}%
172
 
  }{%
173
 
   \false@sw
174
 
  }%
175
 
 }%
176
 
 {}{\output@debug@}%
177
 
}%
178
 
\def\output@debug@{%
179
 
  \saythe\outputpenalty
180
 
  \saythe\interlinepenalty
181
 
  \saythe\brokenpenalty
182
 
  \saythe\clubpenalty
183
 
  \saythe\widowpenalty
184
 
  \saythe\displaywidowpenalty
185
 
  \saythe\predisplaypenalty
186
 
  \saythe\interdisplaylinepenalty
187
 
  \saythe\postdisplaypenalty
188
 
  \saythe\badness
189
 
  \say\thepagegrid
190
 
  \saythe\pagegrid@col
191
 
  \saythe\pagegrid@cur
192
 
  \saythe\insertpenalties
193
 
  \say\@@botmark
194
 
  \saythe\pagegoal
195
 
  \saythe\pagetotal
196
 
  \saythe{\badness\@cclv}%
197
 
  \say\@toplist
198
 
  \say\@botlist
199
 
  \say\@dbltoplist
200
 
  \say\@deferlist
201
 
  \trace@scroll{%
202
 
  \showbox\@cclv
203
 
  \showbox\@cclv@saved
204
 
  \showbox\pagesofar
205
 
  \showbox\csname col@1\endcsname
206
 
  \showbox\footsofar
207
 
  \showbox\footins
208
 
  \showbox\footins@saved
209
 
  \showlists
210
 
  }%
211
 
}%
212
 
\@ifxundefined{\outputdebug@sw}{%
213
 
 \@booleanfalse\outputdebug@sw
214
 
}{}%
215
 
\def\trace@scroll#1{\begingroup\showboxbreadth\maxdimen\showboxdepth\maxdimen\scrollmode#1\endgroup}%
216
 
\def\trace@box#1{\trace@scroll{\showbox#1}}%
217
 
\prepdef\@outputpage{\@outputpage@head}%
218
 
\let\@outputpage@head\@empty
219
 
\appdef\@outputpage{\@outputpage@tail}%
220
 
\let\@outputpage@tail\@empty
221
 
\def\show@box@size#1#2{%
222
 
 \show@box@size@sw{%
223
 
  \begingroup
224
 
   \setbox\z@\vbox{\unvcopy#2\hrule}%
225
 
   \class@info{Show box size: #1^^J%
226
 
    (\the\ht\z@\space X \the\wd\z@)
227
 
    \the\c@page\space\space\the\pagegrid@cur\space\the\pagegrid@col
228
 
   }%
229
 
  \endgroup
230
 
 }{}%
231
 
}%
232
 
\def\show@text@box@size{%
233
 
 \show@box@size{Text column}\@outputbox
234
 
 \tally@box@size@sw{%
235
 
  \@ifdim{\wd\@outputbox>\z@}{%
236
 
   \dimen@\ht\@outputbox\divide\dimen@\@twopowerfourteen
237
 
   \advance\dimen@-\dp\csname box@size@\the\pagegrid@col\endcsname
238
 
   \@ifdim{\dimen@>\z@}{%
239
 
    \advance\dimen@ \ht\csname box@size@\the\pagegrid@col\endcsname
240
 
    \global\ht\csname box@size@\the\pagegrid@col\endcsname\dimen@
241
 
    \show@box@size@sw{%
242
 
     \class@info{Column: \the\dimen@}%
243
 
    }{}%
244
 
   }{}%
245
 
  }{}%
246
 
  \global\dp\csname box@size@\the\pagegrid@col\endcsname\z@
247
 
 }{}%
248
 
}%
249
 
\def\show@pagesofar@size{%
250
 
 \show@box@size{Page so far}\pagesofar
251
 
 \dimen@\ht\pagesofar\divide\dimen@\@twopowerfourteen
252
 
 \global\dp\csname box@size@1\endcsname\dimen@
253
 
 \show@box@size@sw{%
254
 
  \class@info{Pagesofar: \the\dimen@}%
255
 
 }{}%
256
 
}%
257
 
\@booleanfalse\tally@box@size@sw
258
 
\@booleanfalse\show@box@size@sw
259
 
\expandafter\newbox\csname box@size@1\endcsname
260
 
\expandafter\setbox\csname box@size@1\endcsname\hbox{}%
261
 
\expandafter\newbox\csname box@size@2\endcsname
262
 
\expandafter\setbox\csname box@size@2\endcsname\hbox{}%
263
 
\def\total@text{%
264
 
 \@tempdima\the\ht\csname box@size@2\endcsname\divide\@tempdima\@twopowertwo\@tempcnta\@tempdima
265
 
 \@tempdimb\the\ht\csname box@size@1\endcsname\divide\@tempdimb\@twopowertwo\@tempcntb\@tempdimb
266
 
 \class@info{Total text: Column(\the\@tempcnta pt), Page(\the\@tempcntb pt)}%
267
 
}%
268
 
\def\natural@output{\toggle@insert{\output@holding}{\output@moving}}%
269
 
\output@latex{\natural@output}%
270
 
\def\output@holding{%
271
 
 \csname output@init@\bot@envir\endcsname
272
 
 \@if@exceed@pagegoal{\unvcopy\@cclv}{%
273
 
  \setbox\z@\vbox{\unvcopy\@cclv}%
274
 
  \outputdebug@sw{\trace@box\z@}{}%
275
 
  \dimen@\ht\@cclv\advance\dimen@-\ht\z@
276
 
  \dead@cycle@repair\dimen@
277
 
 }{%
278
 
  \dead@cycle
279
 
 }%
280
 
}%
281
 
\def\@if@exceed@pagegoal#1{%
282
 
 \begingroup
283
 
  \setbox\z@\vbox{#1}%
284
 
  \dimen@\ht\z@\advance\dimen@\dp\z@
285
 
  \outputdebug@sw{\saythe\dimen@}{}%
286
 
  \@ifdim{\dimen@>\pagegoal}{%
287
 
   \setbox\z@\vbox{\@@mark{}\unvbox\z@}%
288
 
   \splittopskip\topskip
289
 
   \splitmaxdepth\maxdepth
290
 
   \vbadness\@M
291
 
   \vfuzz\maxdimen
292
 
   \setbox\tw@\vsplit\z@ to\pagegoal
293
 
   \outputdebug@sw{\trace@scroll{\showbox\tw@\showbox\z@}}{}%
294
 
   \setbox\tw@\vbox{\unvbox\tw@}%
295
 
   \@ifdim{\ht\tw@=\z@}{%
296
 
    \ltxgrid@info{Found overly large chunk while preparing to move insertions. Attempting repairs}%
297
 
    \aftergroup\true@sw
298
 
   }{%
299
 
    \aftergroup\false@sw
300
 
   }%
301
 
 }{%
302
 
  \aftergroup\false@sw
303
 
 }%
304
 
 \endgroup
305
 
}%
306
 
\def\output@moving{%
307
 
 \set@top@firstmark
308
 
 \@ifnum{\outputpenalty=\do@newpage@pen}{%
309
 
  \setbox\@cclv\vbox{%
310
 
   \unvbox\@cclv
311
 
   \remove@lastbox
312
 
   \@ifdim{\ht\z@=\ht\@protection@box}{\box\lastbox}{\unskip}%
313
 
  }%
314
 
 }{}%
315
 
 \@cclv@nontrivial@sw{%
316
 
  \expandafter\output@do@prep\csname output@prep@\bot@envir \endcsname
317
 
  \@makecolumn\true@sw
318
 
  \expandafter\output@column@do\csname output@column@\thepagegrid\endcsname
319
 
  \protect@penalty\do@startcolumn@pen
320
 
  \clearpage@sw{%
321
 
   \protect@penalty\do@endpage@pen
322
 
  }{}%
323
 
  \expandafter\let\expandafter\output@post@\csname output@post@\bot@envir \endcsname
324
 
  \outputdebug@sw{\say\output@post@}{}%
325
 
  \@ifx{\output@post@\relax}{\output@post@document}{\output@post@}%
326
 
 }{%
327
 
  \void@cclv
328
 
 }%
329
 
 \set@colht
330
 
 \global\@mparbottom\z@
331
 
 \global\@textfloatsheight\z@
332
 
}%
333
 
\def\output@do@prep#1{%
334
 
 \outputdebug@sw{\class@info{Prep: \string#1}}{}%
335
 
 \@ifx{#1\relax}{\output@prep@document}{#1}%
336
 
}%
337
 
\def\output@column@do#1{%
338
 
  \outputdebug@sw{\class@info{Output column: \string#1}}{}%
339
 
  \@ifx{#1\relax}{\output@column@one}{#1}%
340
 
}%
341
 
\def\void@cclv{\begingroup\setbox\z@\box\@cclv\endgroup}%
342
 
\def\remove@lastbox{\setbox\z@\lastbox}%
343
 
\def\@cclv@nontrivial@sw{%
344
 
 \@ifx@empty\@toplist{%
345
 
  \@ifx@empty\@botlist{%
346
 
   \@ifvoid\footins{%
347
 
    \@ifvoid\@cclv{%
348
 
     \false@sw
349
 
    }{%
350
 
     \setbox\z@\vbox{\unvcopy\@cclv}%
351
 
     \@ifdim{\ht\z@=\topskip}{%
352
 
      \setbox\z@\vbox\bgroup
353
 
       \unvbox\z@
354
 
       \remove@lastbox
355
 
       \dimen@\lastskip\unskip
356
 
       \@ifdim{\ht\z@=\ht\@protection@box}{%
357
 
        \advance\dimen@\ht\z@
358
 
        \@ifdim{\dimen@=\topskip}{%
359
 
         \aftergroup\true@sw
360
 
        }{%
361
 
         \aftergroup\false@sw
362
 
        }%
363
 
       }{%
364
 
        \aftergroup\false@sw
365
 
       }%
366
 
      \egroup
367
 
      {%
368
 
       \false@sw
369
 
      }{%
370
 
       \true@sw
371
 
      }%
372
 
     }{%
373
 
      \@ifdim{\ht\z@=\z@}{%
374
 
       \ltxgrid@info{Found trivial column. Discarding it}%
375
 
       \outputdebug@sw{\trace@box\@cclv}{}%
376
 
       \false@sw
377
 
      }{%
378
 
       \true@sw
379
 
      }%
380
 
     }%
381
 
    }%
382
 
   }{%
383
 
    \true@sw
384
 
   }%
385
 
  }{%
386
 
   \true@sw
387
 
  }%
388
 
 }{%
389
 
  \true@sw
390
 
 }%
391
 
}%
392
 
\def\protect@penalty#1{\protection@box\penalty-#1\relax}%
393
 
\newbox\@protection@box
394
 
\setbox\@protection@box\vbox to1986sp{\vfil}%
395
 
\def\protection@box{\nointerlineskip\copy\@protection@box}%
396
 
\def\dead@cycle@repair#1{%
397
 
 \expandafter\do@@mark
398
 
 \expandafter{%
399
 
              \@@botmark
400
 
             }%
401
 
 \unvbox\@cclv
402
 
 \nointerlineskip
403
 
 \vbox to#1{\vss}%
404
 
 \@ifnum{\outputpenalty<\@M}{\penalty\outputpenalty}{}%
405
 
}%
406
 
\def\dead@cycle@repair@protected#1{%
407
 
 \expandafter\do@@mark
408
 
 \expandafter{%
409
 
              \@@botmark
410
 
             }%
411
 
 \begingroup
412
 
  \unvbox\@cclv
413
 
  \remove@lastbox
414
 
  \nointerlineskip
415
 
  \advance#1-\ht\@protection@box
416
 
  \vbox to#1{\vss}%
417
 
  \protection@box % Reinsert protection box
418
 
  \@ifnum{\outputpenalty<\@M}{\penalty\outputpenalty}{}%
419
 
 \endgroup
420
 
}%
421
 
\def\dead@cycle{%
422
 
 \expandafter\do@@mark
423
 
 \expandafter{%
424
 
              \@@botmark
425
 
             }%
426
 
 \unvbox\@cclv
427
 
 \@ifnum{\outputpenalty<\@M}{\penalty\outputpenalty}{}%
428
 
}%
429
 
\def\output@init@document{%
430
 
 \ltxgrid@info@sw{\class@info{\string\output@init@document}}{}%
431
 
 \global\vsize\vsize
432
 
}%
433
 
\def\output@prep@document{%
434
 
 \ltxgrid@foot@info@sw{\class@info{\string\output@prep@document}\trace@scroll{\showbox\footins\showbox\footsofar}}{}%
435
 
 \@ifvoid\footsofar{%
436
 
 }{%
437
 
  \global\setbox\footins\vbox\bgroup
438
 
   \unvbox\footsofar
439
 
   \@ifvoid\footins{}{%
440
 
    \marry@baselines
441
 
    \unvbox\footins
442
 
   }%
443
 
  \egroup
444
 
  \ltxgrid@foot@info@sw{\trace@box\footins}{}%
445
 
 }%
446
 
}%
447
 
\def\output@post@document{}%
448
 
\let\@opcol\@undefined
449
 
\def\@makecolumn#1{%
450
 
 \ltxgrid@foot@info@sw{\class@info{\string\@makecolumn\string#1}}{}%
451
 
 \setbox\@outputbox\vbox\bgroup
452
 
  \boxmaxdepth\@maxdepth
453
 
  \@tempdima\dp\@cclv
454
 
  \unvbox\@cclv
455
 
  \vskip-\@tempdima
456
 
 \egroup
457
 
 \xdef\@freelist{\@freelist\@midlist}\global\let\@midlist\@empty
458
 
 \show@text@box@size
459
 
 \@combinefloats
460
 
 #1{%
461
 
  \@combineinserts\@outputbox\footins
462
 
 }{%
463
 
  \combine@foot@inserts\footsofar\footins
464
 
 }%
465
 
 \set@adj@colht\dimen@
466
 
 \count@\vbadness
467
 
 \vbadness\@M
468
 
 \setbox\@outputbox\vbox to\dimen@\bgroup
469
 
  \@texttop
470
 
  \dimen@\dp\@outputbox
471
 
  \unvbox\@outputbox
472
 
  \vskip-\dimen@
473
 
  \@textbottom
474
 
 \egroup
475
 
 \vbadness\count@
476
 
 \global\maxdepth\@maxdepth
477
 
}%
478
 
\let\@makespecialcolbox\@undefined
479
 
\def\@combineinserts#1#2{%
480
 
 \ltxgrid@foot@info@sw{\class@info{\string\@combineinserts\string#1\string#2}\trace@box#2}{}%
481
 
 \setbox#1\vbox\bgroup
482
 
  \unvbox#1%
483
 
  \@ifvoid{#2}{}{%
484
 
   \dimen@\ht#2\advance\dimen@\dp#2\advance\dimen@\skip#2%
485
 
   \show@box@size{Combining inserts}#2%
486
 
   \vskip\skip#2%
487
 
   \setbox\z@\vbox{\footnoterule}\dimen@i\ht\z@
488
 
   \color@begingroup
489
 
   \normalcolor
490
 
   \cleaders\box\z@\vskip\dimen@i\kern-\dimen@i
491
 
   \csname combine@insert@\the\pagegrid@col\endcsname#2%
492
 
   \color@endgroup
493
 
   \kern-\dimen@\kern\dimen@
494
 
  }%
495
 
 \egroup
496
 
 \ltxgrid@foot@info@sw{\trace@box#1}{}%
497
 
}%
498
 
\def\combine@insert@tw@#1{%
499
 
 \compose@footnotes@two#1\@ifvbox{#1}{\unvbox}{\box}#1%
500
 
}%
501
 
\def\combine@insert@@ne#1{%
502
 
 \compose@footnotes@one#1\@ifvbox{#1}{\unvbox}{\box}#1%
503
 
}%
504
 
\def\twocolumn@grid@setup{%
505
 
 \expandafter\let\csname combine@insert@1\endcsname\combine@insert@tw@
506
 
 \expandafter\let\csname combine@insert@2\endcsname\combine@insert@@ne
507
 
}%
508
 
\def\onecolumn@grid@setup{%
509
 
 \expandafter\let\csname combine@insert@1\endcsname\combine@insert@@ne
510
 
 \expandafter\let\csname combine@insert@2\endcsname\combine@insert@@ne
511
 
}%
512
 
\let\columngrid@setup\onecolumn@grid@setup
513
 
\columngrid@setup
514
 
\appdef\@floatplacement{%
515
 
 \global\@fpmin\@fpmin
516
 
}%
517
 
\mathchardef\pagebreak@pen=\@M
518
 
\expandafter\let\csname output@-\the\pagebreak@pen\endcsname\relax
519
 
\mathchardef\do@startcolumn@pen=10005
520
 
\@namedef{output@-\the\do@startcolumn@pen}{\do@startcolumn}%
521
 
\def\do@startcolumn{%
522
 
 \setbox\@cclv\vbox{\unvbox\@cclv\remove@lastbox\unskip}%
523
 
 \clearpage@sw{\@clearfloatplacement}{\@floatplacement}%
524
 
 \set@colht
525
 
 \@booleanfalse\pfloat@avail@sw
526
 
 \begingroup
527
 
  \@colht\@colroom
528
 
  \@booleanfalse\float@avail@sw
529
 
  \@tryfcolumn\test@colfloat
530
 
  \float@avail@sw{\aftergroup\@booleantrue\aftergroup\pfloat@avail@sw}{}%
531
 
 \endgroup
532
 
 \fcolmade@sw{%
533
 
  \setbox\@cclv\vbox{\unvbox\@outputbox\unvbox\@cclv}%
534
 
  \outputpenalty-\pagebreak@pen
535
 
  \dead@cycle
536
 
 }{%
537
 
  \begingroup
538
 
   \let\@elt\@scolelt
539
 
   \let\reserved@b\@deferlist\global\let\@deferlist\@empty\reserved@b
540
 
  \endgroup
541
 
  \clearpage@sw{%
542
 
   \outputpenalty\@M
543
 
  }{%
544
 
   \outputpenalty\do@newpage@pen
545
 
  }%
546
 
  \dead@cycle
547
 
 }%
548
 
 \check@deferlist@stuck\do@startcolumn
549
 
 \set@vsize
550
 
}%
551
 
\def\@scolelt#1{\def\@currbox{#1}\@addtonextcol}%
552
 
\def\test@colfloat#1{%
553
 
 \csname @floatselect@sw@\thepagegrid\endcsname#1{}{\@testtrue}%
554
 
 \@if@sw\if@test\fi{}{\aftergroup\@booleantrue\aftergroup\float@avail@sw}%
555
 
}%
556
 
\def\@addtonextcol{%
557
 
 \begingroup
558
 
  \@insertfalse
559
 
  \@setfloattypecounts
560
 
  \csname @floatselect@sw@\thepagegrid\endcsname\@currbox{%
561
 
   \@ifnum{\@fpstype=8 }{}{%
562
 
     \@ifnum{\@fpstype=24 }{}{%
563
 
       \@flsettextmin
564
 
       \@reqcolroom \ht\@currbox
565
 
       \advance \@reqcolroom \@textmin
566
 
       \advance \@reqcolroom \vsize % take into account split insertions
567
 
       \advance \@reqcolroom -\pagegoal
568
 
       \@ifdim{\@colroom>\@reqcolroom}{%
569
 
         \@flsetnum \@colnum
570
 
         \@ifnum{\@colnum>\z@}{%
571
 
            \@bitor\@currtype\@deferlist
572
 
            \@if@sw\if@test\fi{}{%
573
 
              \@addtotoporbot
574
 
            }%
575
 
         }{}%
576
 
       }{}%
577
 
     }%
578
 
   }%
579
 
  }{}%
580
 
  \@if@sw\if@insert\fi{}{%
581
 
    \@cons\@deferlist\@currbox
582
 
  }%
583
 
 \endgroup
584
 
}%
585
 
\mathchardef\do@startpage@pen=10006
586
 
\@namedef{output@-\the\do@startpage@pen}{\do@startpage}%
587
 
\def\do@startpage{%
588
 
 \setbox\@cclv\vbox{\unvbox\@cclv\remove@lastbox\unskip}%
589
 
 \clearpage@sw{\@clearfloatplacement}{\@dblfloatplacement}%
590
 
 \set@colht
591
 
 \@booleanfalse\pfloat@avail@sw
592
 
 \begingroup
593
 
  \@booleanfalse\float@avail@sw
594
 
  \@tryfcolumn\test@dblfloat
595
 
  \float@avail@sw{\aftergroup\@booleantrue\aftergroup\pfloat@avail@sw}{}%
596
 
 \endgroup
597
 
 \fcolmade@sw{%
598
 
  \global\setbox\pagesofar\vbox{\unvbox\pagesofar\unvbox\@outputbox}%
599
 
  \@output@combined@page
600
 
 }{%
601
 
  \begingroup
602
 
   \@booleanfalse\float@avail@sw
603
 
   \let\@elt\@sdblcolelt
604
 
   \let\reserved@b\@deferlist\global\let\@deferlist\@empty\reserved@b
605
 
  \endgroup
606
 
  \@ifdim{\@colht=\textheight}{% No luck...
607
 
   \pfloat@avail@sw{% ...but a float *was* available!
608
 
    \forcefloats@sw{%
609
 
     \ltxgrid@warn{Forced dequeueing of floats stalled}%
610
 
    }{%
611
 
     \ltxgrid@warn{Dequeueing of floats stalled}%
612
 
    }%
613
 
   }{}%
614
 
  }{}%
615
 
  \outputpenalty\@M
616
 
  \dead@cycle
617
 
 }%
618
 
 \check@deferlist@stuck\do@startpage
619
 
 \set@colht
620
 
}%
621
 
\def\@output@combined@page{%
622
 
 \@combinepage\true@sw
623
 
 \@combinedblfloats
624
 
 \@outputpage
625
 
 \global\pagegrid@cur\@ne
626
 
 \protect@penalty\do@startpage@pen
627
 
}%
628
 
\def\@sdblcolelt#1{\def\@currbox{#1}\@addtodblcol}%
629
 
\def\test@dblfloat#1{%
630
 
 \@if@notdblfloat{#1}{\@testtrue}{}%
631
 
 \@if@sw\if@test\fi{}{\aftergroup\@booleantrue\aftergroup\float@avail@sw}%
632
 
}%
633
 
\def\@if@notdblfloat#1{\@ifdim{\wd#1<\textwidth}}%
634
 
\@booleanfalse\forcefloats@sw
635
 
\def\@addtodblcol{%
636
 
 \begingroup
637
 
  \@if@notdblfloat{\@currbox}{%
638
 
   \false@sw
639
 
  }{%
640
 
   \@setfloattypecounts
641
 
   \@getfpsbit \tw@
642
 
   \@bitor \@currtype \@deferlist
643
 
   \@if@sw\if@test\fi{%
644
 
    \false@sw
645
 
   }{%
646
 
    \@ifodd\@tempcnta{%
647
 
     \aftergroup\@booleantrue\aftergroup\float@avail@sw
648
 
     \@flsetnum \@dbltopnum
649
 
     \@ifnum{\@dbltopnum>\z@}{%
650
 
       \@ifdim{\@dbltoproom>\ht\@currbox}{%
651
 
        \true@sw
652
 
       }{%
653
 
        \@ifnum{\@fpstype<\sixt@@n}{%
654
 
         \begingroup
655
 
          \advance \@dbltoproom \@textmin
656
 
          \@ifdim{\@dbltoproom>\ht\@currbox}{%
657
 
           \endgroup\true@sw
658
 
          }{%
659
 
           \endgroup\false@sw
660
 
          }%
661
 
        }{%
662
 
         \false@sw
663
 
        }%
664
 
       }%
665
 
     }{%
666
 
      \false@sw
667
 
     }%
668
 
    }{%
669
 
     \false@sw
670
 
    }%
671
 
   }%
672
 
  }%
673
 
  {%
674
 
   \@tempdima -\ht\@currbox
675
 
   \advance\@tempdima
676
 
    -\@ifx{\@dbltoplist\@empty}{\dbltextfloatsep}{\dblfloatsep}%
677
 
   \global \advance \@dbltoproom \@tempdima
678
 
   \global \advance \@colht \@tempdima
679
 
   \global \advance \@dbltopnum \m@ne
680
 
   \@cons \@dbltoplist \@currbox
681
 
  }{%
682
 
   \@cons \@deferlist \@currbox
683
 
  }%
684
 
 \endgroup
685
 
}%
686
 
\def\@tryfcolumn#1{%
687
 
  \global\@booleanfalse\fcolmade@sw
688
 
  \@ifx@empty\@deferlist{}{%
689
 
    \global\let\@trylist\@deferlist
690
 
    \global\let\@failedlist\@empty
691
 
    \begingroup
692
 
      \dimen@\vsize\advance\dimen@-\pagegoal\@ifdim{\dimen@>\z@}{%
693
 
       \advance\@fpmin-\dimen@
694
 
      }{}%
695
 
      \def\@elt{\@xtryfc#1}\@trylist
696
 
    \endgroup
697
 
    \fcolmade@sw{%
698
 
      \global\setbox\@outputbox\vbox{\vskip \@fptop}%
699
 
      \let \@elt \@wtryfc \@flsucceed
700
 
      \global\setbox\@outputbox\vbox{\unvbox\@outputbox
701
 
        \unskip \vskip \@fpbot
702
 
      }%
703
 
      \let \@elt \relax
704
 
      \xdef\@deferlist{\@failedlist\@flfail}%
705
 
      \xdef\@freelist{\@freelist\@flsucceed}%
706
 
    }{}%
707
 
  }%
708
 
}%
709
 
\def\@wtryfc #1{%
710
 
  \global\setbox\@outputbox\vbox{\unvbox\@outputbox
711
 
    \box #1\vskip\@fpsep
712
 
  }%
713
 
}%
714
 
\def\@xtryfc#1#2{%
715
 
  \@next\reserved@a\@trylist{}{}% trim \@trylist. Ugly!
716
 
  \@currtype \count #2%
717
 
  \divide\@currtype\@xxxii\multiply\@currtype\@xxxii
718
 
  \@bitor \@currtype \@failedlist
719
 
  \@testfp #2%
720
 
  #1#2%
721
 
  \@ifdim{\ht #2>\@colht   }{\@testtrue}{}%
722
 
  \@if@sw\if@test\fi{%
723
 
   \@cons\@failedlist #2%
724
 
  }{%
725
 
   \begingroup
726
 
     \gdef\@flsucceed{\@elt #2}%
727
 
     \global\let\@flfail\@empty
728
 
     \@tempdima\ht #2%
729
 
     \def \@elt {\@ztryfc#1}\@trylist
730
 
     \@ifdim{\@tempdima >\@fpmin}{%
731
 
       \global\@booleantrue\fcolmade@sw
732
 
     }{%
733
 
       \@cons\@failedlist #2%
734
 
     }%
735
 
   \endgroup
736
 
   \fcolmade@sw{%
737
 
     \let \@elt \@gobble
738
 
   }{}%
739
 
  }%
740
 
}%
741
 
\def\@ztryfc #1#2{%
742
 
  \@tempcnta \count#2%
743
 
  \divide\@tempcnta\@xxxii\multiply\@tempcnta\@xxxii
744
 
  \@bitor \@tempcnta {\@failedlist \@flfail}%
745
 
  \@testfp #2%
746
 
  #1#2%
747
 
  \@tempdimb\@tempdima
748
 
  \advance\@tempdimb \ht#2\advance\@tempdimb\@fpsep
749
 
  \@ifdim{\@tempdimb >\@colht}{%
750
 
    \@testtrue
751
 
  }{}%
752
 
  \@if@sw\if@test\fi{%
753
 
    \@cons\@flfail #2%
754
 
  }{%
755
 
    \@cons\@flsucceed #2%
756
 
    \@tempdima\@tempdimb
757
 
  }%
758
 
}%
759
 
\def\newpage@prep{%
760
 
  \if@noskipsec
761
 
    \ifx \@nodocument\relax
762
 
      \leavevmode
763
 
      \global \@noskipsecfalse
764
 
    \fi
765
 
  \fi
766
 
  \if@inlabel
767
 
    \leavevmode
768
 
    \global \@inlabelfalse
769
 
  \fi
770
 
  \if@nobreak \@nobreakfalse \everypar{}\fi
771
 
  \par
772
 
}%
773
 
\def \newpage {%
774
 
 \newpage@prep
775
 
 \do@output@MVL{%
776
 
  \vfil
777
 
  \penalty-\pagebreak@pen
778
 
 }%
779
 
}%
780
 
\def\clearpage{%
781
 
 \newpage@prep
782
 
 \do@output@MVL{%
783
 
  \vfil
784
 
  \penalty-\pagebreak@pen
785
 
  \global\@booleantrue\clearpage@sw
786
 
  \protect@penalty\do@startcolumn@pen
787
 
  \protect@penalty\do@endpage@pen
788
 
 }%
789
 
 \do@output@MVL{%
790
 
  \global\@booleanfalse\clearpage@sw
791
 
 }%
792
 
}%
793
 
\def\cleardoublepage{%
794
 
 \clearpage
795
 
 \@if@sw\if@twoside\fi{%
796
 
  \@ifodd\c@page{}{%
797
 
   \null\clearpage
798
 
  }%
799
 
 }{}%
800
 
}%
801
 
\@booleanfalse\clearpage@sw
802
 
\mathchardef\do@endpage@pen=10007
803
 
\@namedef{output@-\the\do@endpage@pen}{\csname end@column@\thepagegrid\endcsname}%
804
 
\mathchardef\do@newpage@pen=10001
805
 
\expandafter\let\csname output@-\the\do@newpage@pen\endcsname\relax
806
 
\def\@clearfloatplacement{%
807
 
 \global\@topnum     \maxdimen
808
 
 \global\@toproom    \maxdimen
809
 
 \global\@botnum     \maxdimen
810
 
 \global\@botroom    \maxdimen
811
 
 \global\@colnum     \maxdimen
812
 
 \global\@dbltopnum  \maxdimen
813
 
 \global\@dbltoproom \maxdimen
814
 
 \global\@textmin    \z@
815
 
 \global\@fpmin      \z@
816
 
 \let\@testfp\@gobble
817
 
 \appdef\@setfloattypecounts{\@fpstype16\advance\@fpstype\m@ne}%
818
 
}%
819
 
\let\@doclearpage\@undefined
820
 
\let\@makefcolumn\@undefined
821
 
\let\@makecol\@undefined
822
 
\def\clr@top@firstmark{%
823
 
 \global\let\saved@@topmark\@undefined
824
 
 \global\let\saved@@firstmark\@empty
825
 
 \global\let\saved@@botmark\@empty
826
 
}%
827
 
\clr@top@firstmark
828
 
\def\set@top@firstmark{%
829
 
 \@ifxundefined\saved@@topmark{\expandafter\gdef\expandafter\saved@@topmark\expandafter{\@@topmark}}{}%
830
 
 \@if@empty\saved@@firstmark{\expandafter\gdef\expandafter\saved@@firstmark\expandafter{\@@firstmark}}{}%
831
 
 \@if@empty\@@botmark{}{\expandafter\gdef\expandafter\saved@@botmark\expandafter{\@@botmark}}%
832
 
}%
833
 
\appdef\@outputpage@tail{%
834
 
 \clr@top@firstmark
835
 
}%
836
 
\def\@float#1{%
837
 
 \@ifnextchar[{%
838
 
  \@yfloat\width@float{#1}%
839
 
 }{%
840
 
  \@ifxundefined@cs{fps@#1}{}{\expandafter\let\expandafter\fps@\csname fps@#1\endcsname}%
841
 
  \expandafter\@argswap\expandafter{\expandafter[\fps@]}{\@yfloat\width@float{#1}}%
842
 
 }%
843
 
}%
844
 
\def\@dblfloat#1{%
845
 
 \@ifnum{\pagegrid@col=\@ne}{%
846
 
  \@float{#1}%
847
 
 }{%
848
 
  \@ifnextchar[{%
849
 
   \@yfloat\widthd@float{#1}%
850
 
  }{%
851
 
   \@ifxundefined@cs{fpsd@#1}{}{\expandafter\let\expandafter\fpsd@\csname fpsd@#1\endcsname}%
852
 
   \expandafter\@argswap\expandafter{\expandafter[\fpsd@]}{\@yfloat\widthd@float{#1}}%
853
 
  }%
854
 
 }%
855
 
}%
856
 
\def\@yfloat#1#2[#3]{%
857
 
 \@xfloat{#2}[#3]%
858
 
 \hsize#1\linewidth\hsize
859
 
 \let\set@footnotewidth\@empty
860
 
 \minipagefootnote@init
861
 
}%
862
 
\def\fps@{tbp}%
863
 
\def\fpsd@{tp}%
864
 
\def\width@float{\columnwidth}%
865
 
\def\widthd@float{\textwidth}%
866
 
\def\end@float{%
867
 
 \end@@float{%
868
 
  \check@currbox@count
869
 
 }%
870
 
}%
871
 
\def\end@dblfloat{%
872
 
 \@ifnum{\pagegrid@col=\@ne}{%
873
 
  \end@float
874
 
 }{%
875
 
  \end@@float{%
876
 
   \@iffpsbit\@ne{\global\advance\count\@currbox\m@ne}{}%
877
 
   \@iffpsbit\f@ur{\global\advance\count\@currbox-4\relax}{}%
878
 
   \global\wd\@currbox\textwidth % Klootch
879
 
   \check@currbox@count
880
 
  }%
881
 
 }%
882
 
}%
883
 
\def\end@@float#1{%
884
 
 \minipagefootnote@here
885
 
 \@endfloatbox
886
 
 #1%
887
 
 \@ifnum{\@floatpenalty <\z@}{%
888
 
  \@largefloatcheck
889
 
  \@cons\@currlist\@currbox
890
 
  \@ifnum{\@floatpenalty <-\@Mii}{%
891
 
   \do@output@cclv{\@add@float}%
892
 
  }{%
893
 
   \vadjust{\do@output@cclv{\@add@float}}%
894
 
   \@Esphack
895
 
  }%
896
 
 }{}%
897
 
}%
898
 
\newcommand\float@end@float{%
899
 
 \@endfloatbox
900
 
 \global\setbox\@currbox\float@makebox\columnwidth
901
 
 \let\@endfloatbox\relax
902
 
 \end@float
903
 
}%
904
 
\newcommand\float@end@ltx{%
905
 
 \end@@float{%
906
 
  \global\setbox\@currbox\float@makebox\columnwidth
907
 
  \check@currbox@count
908
 
 }%
909
 
}%
910
 
\newcommand\newfloat@float[3]{%
911
 
 \@namedef{ext@#1}{#3} %!
912
 
 \let\float@do=\relax
913
 
 \xdef\@tempa{\noexpand\float@exts{\the\float@exts \float@do{#3}}}%
914
 
 \@tempa
915
 
 \floatplacement{#1}{#2}%
916
 
 \@ifundefined{fname@#1}{\floatname{#1}{#1}}{} %!
917
 
 \expandafter\edef\csname ftype@#1\endcsname{\value{float@type}}%
918
 
 \addtocounter{float@type}{\value{float@type}} %!
919
 
 \restylefloat{#1}%
920
 
 \expandafter\edef\csname fnum@#1\endcsname{%
921
 
  \expandafter\noexpand\csname fname@#1\endcsname{} %!
922
 
  \expandafter\noexpand\csname the#1\endcsname
923
 
 }
924
 
 \@ifnextchar[%]
925
 
  {%
926
 
   \float@newx{#1}%
927
 
  }{%
928
 
   \@ifundefined{c@#1}{\newcounter{#1}\@namedef{the#1}{\arabic{#1}}}{}%
929
 
  }%
930
 
}%
931
 
\newcommand\newfloat@ltx[3]{%
932
 
 \@namedef{ext@#1}{#3}%
933
 
 \let\float@do=\relax
934
 
 \xdef\@tempa{\noexpand\float@exts{\the\float@exts \float@do{#3}}}%
935
 
 \@tempa
936
 
 \floatplacement{#1}{#2}%
937
 
 \@ifundefined{fname@#1}{\floatname{#1}{#1}}{}%
938
 
 \expandafter\edef\csname ftype@#1\expandafter\endcsname\expandafter{\the\c@float@type}%
939
 
 \addtocounter{float@type}{\value{float@type}}%
940
 
 \restylefloat{#1}%
941
 
 \expandafter\edef\csname fnum@#1\endcsname{%
942
 
  \expandafter\noexpand\csname fname@#1\endcsname{}%
943
 
  \expandafter\noexpand\csname the#1\endcsname
944
 
 }
945
 
 \@ifnextchar[%]
946
 
  {%
947
 
   \float@newx{#1}%
948
 
  }{%
949
 
   \@ifundefined{c@#1}{\newcounter{#1}\@namedef{the#1}{\arabic{#1}}}{}%
950
 
  }%
951
 
}%
952
 
\appdef\document@inithook{%
953
 
 \@ifxundefined\newfloat{}{%
954
 
  \@ifx{\float@end\float@end@float}{%
955
 
   \@ifx{\newfloat\newfloat@float}{\true@sw}{\false@sw}%
956
 
   }{\false@sw}%
957
 
   {%
958
 
    \class@warn{Repair the float package}%
959
 
    \let\float@end\float@end@ltx
960
 
    \let\newfloat\newfloat@ltx
961
 
   }{%
962
 
    \class@warn{Failed to patch the float package}%
963
 
   }%
964
 
 }%
965
 
}%
966
 
\def\@iffpsbit#1{%
967
 
 \begingroup
968
 
  \@tempcnta\count\@currbox
969
 
  \divide\@tempcnta#1\relax
970
 
  \@ifodd\@tempcnta{\aftergroup\true@sw}{\aftergroup\false@sw}%
971
 
 \endgroup
972
 
}%
973
 
\def\check@currbox@count{%
974
 
 \@ifnum{\count\@currbox>\z@}{%
975
 
  \count@\count\@currbox\divide\count@\sixt@@n\multiply\count@\sixt@@n
976
 
  \@tempcnta\count\@currbox\advance\@tempcnta-\count@
977
 
  \@ifnum{\@tempcnta=\z@}{%
978
 
   \ltxgrid@warn{Float cannot be placed}%
979
 
  }{}%
980
 
  \expandafter\tally@float\expandafter{\@captype}%
981
 
 }{%
982
 
 }%
983
 
}%
984
 
\providecommand\minipagefootnote@init{}%
985
 
\providecommand\minipagefootnote@here{}%
986
 
\providecommand\tally@float[1]{}%
987
 
\let\@specialoutput\@undefined
988
 
\def\@add@float{%
989
 
 \@pageht\ht\@cclv\@pagedp\dp\@cclv
990
 
 \unvbox\@cclv
991
 
 \@next\@currbox\@currlist{%
992
 
  \csname @floatselect@sw@\thepagegrid\endcsname\@currbox{%
993
 
   \@ifnum{\count\@currbox>\z@}{%
994
 
    \advance \@pageht \@pagedp
995
 
    \advance \@pageht \vsize \advance \@pageht -\pagegoal
996
 
    \@addtocurcol
997
 
   }{%
998
 
    \@addmarginpar
999
 
   }%
1000
 
  }{%
1001
 
   \@resethfps
1002
 
   \@cons\@deferlist\@currbox
1003
 
  }%
1004
 
 }{\@latexbug}%
1005
 
 \@ifnum{\outputpenalty<\z@}{%
1006
 
  \@if@sw\if@nobreak\fi{%
1007
 
   \nobreak
1008
 
  }{%
1009
 
   \addpenalty \interlinepenalty
1010
 
  }%
1011
 
 }{}%
1012
 
 \set@vsize
1013
 
}%
1014
 
\let\@reinserts\@undefined
1015
 
\def \@addtocurcol {%
1016
 
   \@insertfalse
1017
 
   \@setfloattypecounts
1018
 
   \ifnum \@fpstype=8
1019
 
   \else
1020
 
     \ifnum \@fpstype=24
1021
 
     \else
1022
 
       \@flsettextmin
1023
 
       \advance \@textmin \@textfloatsheight
1024
 
       \@reqcolroom \@pageht
1025
 
       \ifdim \@textmin>\@reqcolroom
1026
 
         \@reqcolroom \@textmin
1027
 
       \fi
1028
 
       \advance \@reqcolroom \ht\@currbox
1029
 
       \ifdim \@colroom>\@reqcolroom
1030
 
         \@flsetnum \@colnum
1031
 
         \ifnum \@colnum>\z@
1032
 
           \@bitor\@currtype\@deferlist
1033
 
           \if@test
1034
 
           \else
1035
 
             \@bitor\@currtype\@botlist
1036
 
             \if@test
1037
 
               \@addtobot
1038
 
             \else
1039
 
               \ifodd \count\@currbox
1040
 
                 \advance \@reqcolroom \intextsep
1041
 
                 \ifdim \@colroom>\@reqcolroom
1042
 
                   \global \advance \@colnum \m@ne
1043
 
                   \global \advance \@textfloatsheight \ht\@currbox
1044
 
                   \global \advance \@textfloatsheight 2\intextsep
1045
 
                   \@cons \@midlist \@currbox
1046
 
                   \if@nobreak
1047
 
                     \nobreak
1048
 
                     \@nobreakfalse
1049
 
                     \everypar{}%
1050
 
                   \else
1051
 
                     \addpenalty \interlinepenalty
1052
 
                   \fi
1053
 
                   \vskip \intextsep
1054
 
                   \unvbox\@currbox %AO
1055
 
                   \penalty\interlinepenalty
1056
 
                   \vskip\intextsep
1057
 
                   \ifnum\outputpenalty <-\@Mii \vskip -\parskip\fi
1058
 
                   \outputpenalty \z@
1059
 
                   \@inserttrue
1060
 
                 \fi
1061
 
               \fi
1062
 
               \if@insert
1063
 
               \else
1064
 
                 \@addtotoporbot
1065
 
               \fi
1066
 
             \fi
1067
 
           \fi
1068
 
         \fi
1069
 
       \fi
1070
 
     \fi
1071
 
   \fi
1072
 
   \if@insert
1073
 
   \else
1074
 
     \@resethfps
1075
 
     \@cons\@deferlist\@currbox
1076
 
   \fi
1077
 
}%
1078
 
\@twocolumnfalse
1079
 
\let\@twocolumntrue\@twocolumnfalse
1080
 
\def\@addmarginpar{%
1081
 
 \@next\@marbox\@currlist{%
1082
 
  \@cons\@freelist\@marbox\@cons\@freelist\@currbox
1083
 
 }\@latexbug
1084
 
 \setbox\@marbox\hb@xt@\columnwidth{%
1085
 
  \csname @addmarginpar@\thepagegrid\endcsname{%
1086
 
   \hskip-\marginparsep\hskip-\marginparwidth
1087
 
   \box\@currbox
1088
 
  }{%
1089
 
   \hskip\columnwidth\hskip\marginparsep
1090
 
   \box\@marbox
1091
 
  }%
1092
 
  \hss
1093
 
 }%
1094
 
 \setbox\z@\box\@currbox
1095
 
    \@tempdima\@mparbottom
1096
 
    \advance\@tempdima -\@pageht
1097
 
    \advance\@tempdima\ht\@marbox
1098
 
 \@ifdim{\@tempdima >\z@}{%
1099
 
   \@latex@warning@no@line {Marginpar on page \thepage\space moved}%
1100
 
 }{%
1101
 
   \@tempdima\z@
1102
 
 }%
1103
 
    \global\@mparbottom\@pageht
1104
 
    \global\advance\@mparbottom\@tempdima
1105
 
    \global\advance\@mparbottom\dp\@marbox
1106
 
    \global\advance\@mparbottom\marginparpush
1107
 
    \advance\@tempdima -\ht\@marbox
1108
 
    \global\setbox \@marbox
1109
 
                   \vbox {\vskip \@tempdima
1110
 
                          \box \@marbox}%
1111
 
    \global \ht\@marbox \z@
1112
 
    \global \dp\@marbox \z@
1113
 
    \kern -\@pagedp
1114
 
    \nointerlineskip
1115
 
  \box\@marbox
1116
 
    \nointerlineskip
1117
 
    \hbox{\vrule \@height\z@ \@width\z@ \@depth\@pagedp}%
1118
 
}%
1119
 
\newenvironment{turnpage}{%
1120
 
 \def\width@float{\textheight}%
1121
 
 \def\widthd@float{\textheight}%
1122
 
 \appdef\@endfloatbox{%
1123
 
  \@ifxundefined\@currbox{%
1124
 
   \ltxgrid@warn{Cannot rotate! Not a float}%
1125
 
  }{%
1126
 
   \setbox\@currbox\vbox to\textwidth{\vfil\unvbox\@currbox\vfil}%
1127
 
   \global\setbox\@currbox\vbox{\rotatebox{90}{\box\@currbox}}%
1128
 
  }%
1129
 
 }%
1130
 
}{%
1131
 
}%
1132
 
\def\rotatebox@dummy#1#2{%
1133
 
 \ltxgrid@warn{You must load the graphics or graphicx package in order to use the turnpage environment}%
1134
 
 #2%
1135
 
}%
1136
 
\appdef\document@inithook{%
1137
 
 \@ifxundefined\rotatebox{\let\rotatebox\rotatebox@dummy}{}%
1138
 
}%
1139
 
\@namedef{output@-1073741824}{%
1140
 
 \deadcycles\z@
1141
 
 \void@cclv
1142
 
}%
1143
 
\mathchardef\save@column@pen=10016
1144
 
\@namedef{output@-\the\save@column@pen}{\save@column}%
1145
 
\let \@cclv@saved \@holdpg
1146
 
\let \@holdpg \@undefined
1147
 
\def\save@column{%
1148
 
 \@ifvoid\@cclv@saved{%
1149
 
  \set@top@firstmark
1150
 
  \global\@topmark@saved\expandafter{\@@topmark}%
1151
 
 }{}%
1152
 
 \global\setbox\@cclv@saved\vbox{%
1153
 
  \@ifvoid\@cclv@saved{}{%
1154
 
   \unvbox\@cclv@saved
1155
 
   \marry@baselines
1156
 
  }%
1157
 
  \unvbox\@cclv
1158
 
  \lose@breaks
1159
 
  \remove@lastbox
1160
 
 }%
1161
 
}%
1162
 
\newtoks\@topmark@saved
1163
 
\def\prep@cclv{%
1164
 
 \void@cclv
1165
 
 \setbox\@cclv\box\@cclv@saved
1166
 
 \vbadness\@M
1167
 
}%
1168
 
\mathchardef\save@column@insert@pen=10017
1169
 
\@namedef{output@-\the\save@column@insert@pen}{\toggle@insert{\savecolumn@holding}{\savecolumn@moving}}%
1170
 
\def\savecolumn@holding{%
1171
 
 \@if@exceed@pagegoal{\unvcopy\@cclv\remove@lastbox}{%
1172
 
  \setbox\z@\vbox{\unvcopy\@cclv\remove@lastbox}%
1173
 
  \outputdebug@sw{\trace@box\z@}{}%
1174
 
  \dimen@\ht\@cclv\advance\dimen@-\ht\z@
1175
 
  \dead@cycle@repair@protected\dimen@
1176
 
 }{%
1177
 
  \dead@cycle
1178
 
 }%
1179
 
}%
1180
 
\def\savecolumn@moving{%
1181
 
 \ltxgrid@info@sw{\class@info{\string\savecolumn@moving}}{}%
1182
 
 \@cclv@nontrivial@sw{%
1183
 
  \save@column
1184
 
 }{%
1185
 
  \void@cclv
1186
 
 }%
1187
 
 \@ifvoid\footins{}{%
1188
 
  \ltxgrid@foot@info@sw{\class@info{\string\savecolumn@moving}\trace@scroll{\showbox\footins@saved\showbox\footins}}{}%
1189
 
  \@ifvoid\footins@saved{%
1190
 
   \global\setbox\footins@saved\box\footins
1191
 
  }{%
1192
 
   \global\setbox\footins@saved\vbox\bgroup
1193
 
    \unvbox\footins@saved
1194
 
    \marry@baselines
1195
 
    \unvbox\footins
1196
 
   \egroup
1197
 
  }%
1198
 
  \ltxgrid@foot@info@sw{\trace@box\footins@saved}{}%
1199
 
  \protect@penalty\save@column@insert@pen
1200
 
 }%
1201
 
}%
1202
 
\newbox\footins@saved
1203
 
\newbox\footins@recovered
1204
 
\newbox\column@recovered
1205
 
\mathchardef\save@message@pen=10018
1206
 
\@namedef{output@-\the\save@message@pen}{\save@message}%
1207
 
\def\save@message{%
1208
 
 \void@cclv
1209
 
 \toks@\expandafter{\@@firstmark}%
1210
 
 \expandafter\gdef\expandafter\@message@saved\expandafter{\the\toks@}%
1211
 
 \expandafter\do@@mark\expandafter{\the\@topmark@saved}%
1212
 
}%
1213
 
\gdef\@message@saved{}%
1214
 
\mathchardef\execute@message@pen=10019
1215
 
\@namedef{output@-\the\execute@message@pen}{\@message@saved}%
1216
 
\def\execute@message{%
1217
 
 \@execute@message\save@column@pen
1218
 
}%
1219
 
\def\execute@message@insert#1{%
1220
 
 \@execute@message\save@column@insert@pen{%
1221
 
  \setbox \footins \box \footins@saved
1222
 
  \ltxgrid@foot@info@sw{\class@info{\string\execute@message@insert}\trace@box\footins}{}%
1223
 
  #1%
1224
 
 }%
1225
 
}%
1226
 
\long\def\@execute@message#1#2{%
1227
 
 \begingroup
1228
 
  \dimen@\prevdepth\@ifdim{\dimen@<\z@}{\dimen@\z@}{}%
1229
 
  \setbox\z@\vbox{%
1230
 
   \protect@penalty#1%
1231
 
   \protection@box
1232
 
   \toks@{\prep@cclv#2}%
1233
 
   \@@mark{\the\toks@}%
1234
 
   \penalty-\save@message@pen
1235
 
   \setbox\z@\null\dp\z@\dimen@\ht\z@-\dimen@
1236
 
   \nointerlineskip\box\z@
1237
 
   \penalty-\execute@message@pen
1238
 
  }\unvbox\z@
1239
 
 \endgroup
1240
 
}%
1241
 
\def\do@output@cclv{\execute@message}%
1242
 
\def\do@output@MVL#1{%
1243
 
 \@ifvmode{%
1244
 
  \begingroup\execute@message{\unvbox\@cclv#1}\endgroup
1245
 
 }{%
1246
 
  \@ifhmode{%
1247
 
   \vadjust{\execute@message{\unvbox\@cclv#1}}%
1248
 
  }{%
1249
 
   \@latexerr{\string\do@output@MVL\space cannot be executed in this mode!}\@eha
1250
 
  }%
1251
 
 }%
1252
 
}%
1253
 
\def\lose@breaks{%
1254
 
 \loopwhile{%
1255
 
  \count@\lastpenalty
1256
 
  \@ifnum{\count@=\@M}{%
1257
 
   \unpenalty\true@sw
1258
 
  }{%
1259
 
   \false@sw
1260
 
  }%
1261
 
 }%
1262
 
}%
1263
 
\def\removestuff{\do@output@MVL{\unskip\unpenalty}}%
1264
 
\def\removephantombox{%
1265
 
 \vadjust{%
1266
 
  \execute@message{%
1267
 
   \unvbox\@cclv
1268
 
   \remove@lastbox
1269
 
   \unskip
1270
 
   \unskip
1271
 
   \unpenalty
1272
 
   \penalty\predisplaypenalty
1273
 
   \vskip\abovedisplayskip
1274
 
  }%
1275
 
 }%
1276
 
}%
1277
 
\def\addstuff#1#2{\edef\@tempa{\noexpand\do@output@MVL{\noexpand\@addstuff{#1}{#2}}}\@tempa}%
1278
 
\def\@addstuff#1#2{%
1279
 
 \skip@\lastskip\unskip
1280
 
 \count@\lastpenalty\unpenalty
1281
 
 \@if@empty{#1}{}{\penalty#1\relax}%
1282
 
 \@ifnum{\count@=\z@}{}{\penalty\count@}%
1283
 
 \vskip\skip@
1284
 
 \@if@empty{#2}{}{\vskip#2\relax}%
1285
 
}%
1286
 
\def\replacestuff#1#2{\edef\@tempa{\noexpand\do@output@MVL{\noexpand\@replacestuff{#1}{#2}}}\@tempa}%
1287
 
\def\@replacestuff#1#2{%
1288
 
 \skip@\lastskip\unskip
1289
 
 \count@\lastpenalty\unpenalty
1290
 
 \@if@empty{#1}{}{%
1291
 
 \@ifnum{\count@>\@M}{}{%
1292
 
   \@ifnum{\count@=\z@}{\count@=#1\relax}{%
1293
 
    \@ifnum{\count@<#1\relax}{}{%
1294
 
     \count@=#1\relax
1295
 
    }%
1296
 
   }%
1297
 
 }%
1298
 
 }%
1299
 
 \@ifnum{\count@=\z@}{}{\penalty\count@}%
1300
 
 \@if@empty{#2}{}{%
1301
 
  \@tempskipa#2\relax
1302
 
  \@ifdim{\z@>\@tempskipa}{%
1303
 
   \advance\skip@-\@tempskipa
1304
 
  }{%
1305
 
   \@ifdim{\skip@>\@tempskipa}{}{%
1306
 
    \skip@\@tempskipa
1307
 
   }%
1308
 
  }%
1309
 
 }%
1310
 
 \vskip\skip@
1311
 
}%
1312
 
\def\move@insertions{\global\holdinginserts\z@}%
1313
 
\def\hold@insertions{\global\holdinginserts\@ne}%
1314
 
\hold@insertions
1315
 
\def\toggle@insert#1#2{%
1316
 
 \@ifnum{\holdinginserts>\z@}{\move@insertions#1}{\hold@insertions#2}%
1317
 
}%
1318
 
\def\do@columngrid#1#2{%
1319
 
 \par
1320
 
 \expandafter\let\expandafter\@tempa\csname open@column@#1\endcsname
1321
 
 \@ifx{\relax\@tempa}{%
1322
 
  \ltxgrid@warn{Unknown page grid #1. No action taken}%
1323
 
 }{%
1324
 
  \do@output@MVL{\start@column{#1}{#2}}%
1325
 
 }%
1326
 
}%
1327
 
\def\start@column#1#2{%
1328
 
 \def\@tempa{#1}\@ifx{\@tempa\thepagegrid}{%
1329
 
  \ltxgrid@info{Already in page grid \thepagegrid. No action taken}%
1330
 
 }{%
1331
 
  \expandafter\execute@message@insert
1332
 
  \expandafter{%
1333
 
               \csname shut@column@\thepagegrid\expandafter\endcsname
1334
 
               \csname open@column@#1\endcsname{#2}%
1335
 
               \set@vsize
1336
 
             }%
1337
 
 }%
1338
 
}%
1339
 
\def\thepagegrid{one}%
1340
 
\newbox\pagesofar
1341
 
\newbox\footsofar
1342
 
\def\combine@foot@inserts#1#2{%
1343
 
  \ltxgrid@info@sw{\class@info{\string\combine@foot@inserts\string#1\string#2}}{}%
1344
 
  \@ifvoid#1{%
1345
 
    \ltxgrid@foot@info@sw{\trace@box#2}{}\global\setbox#1\box#2%
1346
 
  }{%
1347
 
   \global\setbox#1\vbox\bgroup
1348
 
    \ltxgrid@foot@info@sw{\trace@box#1}{}\unvbox#1%
1349
 
    \@ifvoid#2{}{%
1350
 
     \marry@baselines
1351
 
     \ltxgrid@foot@info@sw{\trace@box#2}{}\unvbox#2%
1352
 
    }%
1353
 
   \egroup
1354
 
  }%
1355
 
  \ltxgrid@foot@info@sw{\trace@scroll{\showbox#1\showbox#2}}{}%
1356
 
}%
1357
 
\newcommand\onecolumngrid{\do@columngrid{one}{\@ne}}%
1358
 
\let\onecolumn\@undefined
1359
 
\def\open@column@one#1{%
1360
 
 \ltxgrid@info@sw{\class@info{\string\open@column@one\string#1}}{}%
1361
 
 \unvbox\pagesofar
1362
 
 \@ifvoid{\footsofar}{}{%
1363
 
  \insert\footins\bgroup\unvbox\footsofar\egroup
1364
 
  \penalty\z@
1365
 
 }%
1366
 
 \gdef\thepagegrid{one}%
1367
 
 \global\pagegrid@col#1%
1368
 
 \global\pagegrid@cur\@ne
1369
 
 \global\count\footins\@m
1370
 
 \global\divide\count\footins\tw@
1371
 
 \set@column@hsize\pagegrid@col
1372
 
 \set@colht
1373
 
}%
1374
 
\def\shut@column@one{%
1375
 
 \ltxgrid@info@sw{\class@info{\string\shut@column@one}}{}%
1376
 
 \@makecolumn\false@sw
1377
 
 \global\setbox\pagesofar\vbox\bgroup
1378
 
  \recover@column\@outputbox\footsofar\column@recovered\footins@recovered
1379
 
 \egroup
1380
 
 \begingroup\setbox\z@\box\@outputbox\endgroup
1381
 
 \combine@foot@inserts\footsofar\footins
1382
 
 \set@colht
1383
 
}%
1384
 
\def\float@column@one{%
1385
 
 \@makecolumn\true@sw
1386
 
 \@outputpage
1387
 
}%
1388
 
\def\end@column@one{%
1389
 
 \unvbox\@cclv\remove@lastbox
1390
 
 \protect@penalty\do@newpage@pen
1391
 
}%
1392
 
\def\output@column@one{%
1393
 
 \@outputpage
1394
 
}%
1395
 
\def\@addmarginpar@one{%
1396
 
 \@if@sw\if@mparswitch\fi{%
1397
 
  \@ifodd\c@page{\false@sw}{\true@sw}%
1398
 
 }{\false@sw}{%
1399
 
  \@if@sw\if@reversemargin\fi{\false@sw}{\true@sw}%
1400
 
 }{%
1401
 
  \@if@sw\if@reversemargin\fi{\true@sw}{\false@sw}%
1402
 
 }%
1403
 
}%
1404
 
\def\@floatselect@sw@one#1{\true@sw}%
1405
 
\def\onecolumngrid@push{%
1406
 
 \do@output@MVL{%
1407
 
  \@ifnum{\pagegrid@col=\@ne}{%
1408
 
   \global\let\restorecolumngrid\@empty
1409
 
  }{%
1410
 
   \xdef\restorecolumngrid{%
1411
 
    \noexpand\start@column{\thepagegrid}{\the\pagegrid@col}%
1412
 
   }%
1413
 
   \start@column{one}{\@ne}%
1414
 
  }%
1415
 
 }%
1416
 
}%
1417
 
\def\onecolumngrid@pop{%
1418
 
 \do@output@MVL{\restorecolumngrid}%
1419
 
}%
1420
 
\newcommand\twocolumngrid{\do@columngrid{mlt}{\tw@}}%
1421
 
\let\twocolumn\@undefined
1422
 
\let\@topnewpage\@undefined
1423
 
\def\open@column@mlt#1{%
1424
 
 \ltxgrid@info@sw{\class@info{\string\open@column@mlt\string#1}}{}%
1425
 
 \@ifvoid{\footsofar}{}{%
1426
 
  \insert\footins\bgroup\unvbox\footsofar\egroup
1427
 
 }%
1428
 
 \gdef\thepagegrid{mlt}%
1429
 
 \global\pagegrid@col#1%
1430
 
 \global\pagegrid@cur\@ne
1431
 
 \global\count\footins\@m
1432
 
 \set@column@hsize\pagegrid@col
1433
 
 \set@colht
1434
 
}%
1435
 
\def\shut@column@mlt{%
1436
 
 \ltxgrid@info@sw{\class@info{\string\shut@column@mlt}}{}%
1437
 
 \@cclv@nontrivial@sw{%
1438
 
  \@makecolumn\false@sw
1439
 
  \@ifnum{\pagegrid@cur<\pagegrid@col}{%
1440
 
   \expandafter\global\expandafter\setbox\csname col@\the\pagegrid@cur\endcsname\box\@outputbox
1441
 
   \global\advance\pagegrid@cur\@ne
1442
 
  }{}%
1443
 
 }{%
1444
 
  \void@cclv
1445
 
 }%
1446
 
 \@ifnum{\pagegrid@cur>\@ne}{%
1447
 
  \csname balance@\the\pagegrid@col\endcsname
1448
 
  \grid@column\@outputbox{}%
1449
 
  \@combinepage\false@sw
1450
 
  \@combinedblfloats
1451
 
  \global\setbox\pagesofar\box\@outputbox
1452
 
  \show@pagesofar@size
1453
 
 }{}%
1454
 
 \set@colht
1455
 
}%
1456
 
\def\float@column@mlt{%
1457
 
  \@output@combined@page
1458
 
}%
1459
 
\def\end@column@mlt{%
1460
 
 \@ifx@empty\@toplist{%
1461
 
  \@ifx@empty\@botlist{%
1462
 
   \@ifx@empty\@dbltoplist{%
1463
 
    \@ifx@empty\@deferlist{%
1464
 
     \@ifnum{\pagegrid@cur=\@ne}{%
1465
 
      \false@sw
1466
 
     }{%
1467
 
      \true@sw
1468
 
     }%
1469
 
    }{%
1470
 
     \true@sw
1471
 
    }%
1472
 
   }{%
1473
 
    \true@sw
1474
 
   }%
1475
 
  }{%
1476
 
   \true@sw
1477
 
  }%
1478
 
 }{%
1479
 
  \true@sw
1480
 
 }%
1481
 
 % true = kick out a column and try again
1482
 
 {%
1483
 
  \@cclv@nontrivial@sw{%
1484
 
   \unvbox\@cclv\remove@lastbox
1485
 
  }{%
1486
 
   \unvbox\@cclv\remove@lastbox\unskip\null
1487
 
  }%
1488
 
  \protect@penalty\do@newpage@pen
1489
 
  \protect@penalty\do@endpage@pen
1490
 
 }{%
1491
 
  \unvbox\@cclv\remove@lastbox
1492
 
 }%
1493
 
}%
1494
 
\def\output@column@mlt{%
1495
 
 \@ifnum{\pagegrid@cur<\pagegrid@col}{%
1496
 
  \expandafter\global\expandafter\setbox\csname col@\the\pagegrid@cur\endcsname\box\@outputbox
1497
 
  \global\advance\pagegrid@cur\@ne
1498
 
 }{%
1499
 
  \set@adj@colht\dimen@
1500
 
  \grid@column\@outputbox{}%
1501
 
  \@output@combined@page
1502
 
 }%
1503
 
}%
1504
 
\let\@outputdblcol\@undefined
1505
 
\def\@floatselect@sw@mlt#1{\@if@notdblfloat{#1}}%
1506
 
\def\@addmarginpar@mlt{% emits a boolean
1507
 
 \@ifnum{\pagegrid@cur=\@ne}%
1508
 
}%
1509
 
\def\set@footnotewidth@one{%
1510
 
 \hsize\columnwidth
1511
 
 \linewidth\hsize
1512
 
}%
1513
 
\def\set@footnotewidth@two{\set@footnotewidth@mlt\tw@}%
1514
 
\def\set@footnotewidth@mlt#1{%
1515
 
 \hsize\textwidth
1516
 
 \advance\hsize\columnsep
1517
 
 \divide\hsize#1%
1518
 
 \advance\hsize-\columnsep
1519
 
 \linewidth\hsize
1520
 
}%
1521
 
\def\compose@footnotes@one#1{%
1522
 
 \ltxgrid@foot@info@sw{\class@info{\string\compose@footnotes@one\string#1}\trace@box#1}{}%
1523
 
}%
1524
 
\let\compose@footnotes\compose@footnotes@one
1525
 
\def\compose@footnotes@two#1{%
1526
 
 \ltxgrid@foot@info@sw{\class@info{\string\compose@footnotes@two\string#1}\trace@box#1}{}%
1527
 
 \setbox\z@\box\@tempboxa
1528
 
 \let\recover@column\recover@column@null
1529
 
 \let\marry@baselines\@empty
1530
 
 \balance@two#1\@tempboxa
1531
 
 \global\setbox#1\hbox to\textwidth{\box#1\hfil\box\@tempboxa}%
1532
 
 \ltxgrid@foot@info@sw{\trace@box#1}{}%
1533
 
}%
1534
 
\let\pagegrid@cur\col@number
1535
 
\let\col@number\@undefined
1536
 
\newcount\pagegrid@col
1537
 
\pagegrid@cur\@ne
1538
 
\expandafter\let\csname col@\the\pagegrid@cur\endcsname\@leftcolumn
1539
 
\let\@leftcolumn\@undefined
1540
 
\pagegrid@col\tw@
1541
 
\def\pagegrid@init{%
1542
 
 \advance\pagegrid@cur\@ne
1543
 
 \@ifnum{\pagegrid@cur<\pagegrid@col}{%
1544
 
  \csname newbox\expandafter\endcsname\csname  col@\the\pagegrid@cur\endcsname
1545
 
  \pagegrid@init
1546
 
 }{%
1547
 
 }%
1548
 
}%
1549
 
\appdef\class@documenthook{%
1550
 
 \pagegrid@init
1551
 
}%
1552
 
\def\grid@column#1#2{%
1553
 
 \ltxgrid@info@sw{\class@info{\string\grid@column\string#1}}{}%
1554
 
 \global\setbox#1\vbox\bgroup
1555
 
  \hb@xt@\textwidth\bgroup
1556
 
   \vrule\@height\z@\@width\z@\@if@empty{#2}{}{\@depth#2}%
1557
 
   \pagegrid@cur\@ne
1558
 
   \@ifnum{\pagegrid@cur<\pagegrid@col}{\loopwhile{\append@column@\pagegrid@cur\pagegrid@col}}{}%
1559
 
   \box@column#1%
1560
 
  \egroup
1561
 
  \vskip\z@skip
1562
 
 \egroup
1563
 
}%
1564
 
\def\append@column@#1#2{%
1565
 
 \expandafter\box@column\csname col@\the#1\endcsname
1566
 
 \hfil\vrule\@width\columnseprule\hfil
1567
 
 \advance#1\@ne
1568
 
 \@ifnum{#1<#2}%
1569
 
}%
1570
 
\def\box@column#1{%
1571
 
 \ltxgrid@info@sw{\class@info{\string\box@column\string#1}}{}%
1572
 
 \raise\topskip
1573
 
 \hb@xt@\columnwidth\bgroup
1574
 
  \dimen@\ht#1\@ifdim{\dimen@>\@colht}{\dimen@\@colht}{}%
1575
 
  \count@\vbadness\vbadness\@M
1576
 
  \dimen@ii\vfuzz\vfuzz\maxdimen
1577
 
  \ltxgrid@info@sw{\saythe\@colht\saythe\dimen@}{}%
1578
 
  \vtop to\dimen@\bgroup
1579
 
   \hrule\@height\z@
1580
 
   \unvbox#1%
1581
 
   \raggedcolumn@skip
1582
 
  \egroup
1583
 
  \vfuzz\dimen@ii
1584
 
  \vbadness\count@
1585
 
  \hss
1586
 
 \egroup
1587
 
}%
1588
 
\def\marry@baselines{%
1589
 
 \begingroup
1590
 
  \setbox\z@\lastbox
1591
 
  \@ifvoid{\z@}{%
1592
 
   \endgroup
1593
 
  }{%
1594
 
   \aftergroup\kern
1595
 
   \aftergroup-%
1596
 
   \expandafter\box\expandafter\z@\expandafter\endgroup\the\dp\z@\relax
1597
 
  }%
1598
 
 \vskip\marry@skip\relax
1599
 
}%
1600
 
\gdef\marry@skip{\z@skip}%
1601
 
\def\set@marry@skip{%
1602
 
 \begingroup
1603
 
  \skip@\baselineskip\advance\skip@-\topskip
1604
 
  \@ifdim{\skip@>\z@}{%
1605
 
   \xdef\marry@skip{\the\skip@}%
1606
 
  }{}%
1607
 
 \endgroup
1608
 
}%
1609
 
\appdef\document@inithook{%
1610
 
 \@ifxundefined\raggedcolumn@sw{\@booleanfalse\raggedcolumn@sw}{}%
1611
 
}%
1612
 
\def\raggedcolumn@skip{%
1613
 
 \vskip\z@\raggedcolumn@sw{\@plus.0001fil\@minus.0001fil}{}\relax
1614
 
}%
1615
 
\def\@combinepage#1{%
1616
 
 \ltxgrid@foot@info@sw{\class@info{\string\@combinepage\string#1}}{}%
1617
 
 \@ifvoid\pagesofar{}{%
1618
 
  \setbox\@outputbox\vbox{%
1619
 
   \unvbox\pagesofar
1620
 
   \marry@baselines
1621
 
   \unvbox\@outputbox
1622
 
  }%
1623
 
 }%
1624
 
 #1{%
1625
 
  \@ifvoid\footsofar{}{%
1626
 
   \show@box@size{Combining page footnotes}\footsofar
1627
 
   \setbox\footins\box\footsofar
1628
 
   \compose@footnotes
1629
 
   \@combineinserts\@outputbox\footins
1630
 
  }%
1631
 
 }{%
1632
 
 }%
1633
 
}%
1634
 
\def \@cflt{%
1635
 
 \let \@elt \@comflelt
1636
 
 \setbox\@tempboxa \vbox{}%
1637
 
 \@toplist
1638
 
 \setbox\@outputbox \vbox{%
1639
 
  \boxmaxdepth \maxdepth
1640
 
  \unvbox\@tempboxa\unskip
1641
 
  \topfigrule\vskip \textfloatsep
1642
 
  \unvbox\@outputbox
1643
 
 }%
1644
 
 \let\@elt\relax
1645
 
 \xdef\@freelist{\@freelist\@toplist}%
1646
 
 \global\let\@toplist\@empty
1647
 
}%
1648
 
\def \@cflb {%
1649
 
 \let\@elt\@comflelt
1650
 
 \setbox\@tempboxa \vbox{}%
1651
 
 \@botlist
1652
 
 \setbox\@outputbox \vbox{%
1653
 
  \unvbox\@outputbox
1654
 
  \vskip \textfloatsep\botfigrule
1655
 
  \unvbox\@tempboxa\unskip
1656
 
 }%
1657
 
 \let\@elt\relax
1658
 
 \xdef\@freelist{\@freelist\@botlist}%
1659
 
 \global \let \@botlist\@empty
1660
 
}%
1661
 
\def\@combinedblfloats{%
1662
 
 \@ifx@empty\@dbltoplist{}{%
1663
 
  \setbox\@tempboxa\vbox{}%
1664
 
  \let\@elt\@comdblflelt\@dbltoplist
1665
 
  \let\@elt\relax\xdef\@freelist{\@freelist\@dbltoplist}%
1666
 
  \global\let\@dbltoplist\@empty
1667
 
  \setbox\@outputbox\vbox{%
1668
 
   %\boxmaxdepth\maxdepth   %% probably not needed, CAR
1669
 
   \unvbox\@tempboxa\unskip
1670
 
   \@ifnum{\@dbltopnum>\m@ne}{\dblfigrule}{}%FIXME: how is \@dbltopnum maintained?
1671
 
   \vskip\dbltextfloatsep
1672
 
   \unvbox\@outputbox
1673
 
  }%
1674
 
 }%
1675
 
}%
1676
 
\def\set@column@hsize#1{%
1677
 
 \pagegrid@col#1%
1678
 
 \global\columnwidth\textwidth
1679
 
 \global\advance\columnwidth\columnsep
1680
 
 \global\divide\columnwidth\pagegrid@col
1681
 
 \global\advance\columnwidth-\columnsep
1682
 
 \global\hsize\columnwidth
1683
 
 \global\linewidth\columnwidth
1684
 
 \skip@\baselineskip\advance\skip@-\topskip
1685
 
 \@ifnum{\pagegrid@col>\@ne}{\set@marry@skip}{}%
1686
 
}%
1687
 
\def\set@colht{%
1688
 
 \set@adj@textheight\@colht
1689
 
 \global\let\enlarge@colroom\@empty
1690
 
 \set@colroom
1691
 
}%
1692
 
\def\set@adj@textheight#1{%
1693
 
 \ltxgrid@info@sw{\class@info{\string\set@adj@textheight\string#1}\saythe\textheight}{}%
1694
 
 #1\textheight
1695
 
 \def\@elt{\adj@page#1}%
1696
 
 \@booleantrue\firsttime@sw\@dbltoplist
1697
 
 \let\@elt\relax
1698
 
 \global#1#1\relax
1699
 
 \ltxgrid@info@sw{\saythe#1}{}%
1700
 
}%
1701
 
\def\set@colroom{%
1702
 
 \ltxgrid@info@sw{\class@info{\string\set@colroom}}{}%
1703
 
 \set@adj@colht\@colroom
1704
 
 \@if@empty\enlarge@colroom{}{%
1705
 
  \global\advance\@colroom\enlarge@colroom\relax
1706
 
  \ltxgrid@info@sw{\saythe\@colroom}{}%
1707
 
 }%
1708
 
 \@ifdim{\@colroom>\topskip}{}{%
1709
 
  \ltxgrid@info{Not enough room: \string\@colroom=\the\@colroom; increasing to \the\topskip}%
1710
 
  \@colroom\topskip
1711
 
 }%
1712
 
 \global\@colroom\@colroom
1713
 
 \set@vsize
1714
 
}%
1715
 
\def\set@vsize{%
1716
 
 \global\vsize\@colroom
1717
 
 \ltxgrid@info@sw{\class@info{\string\set@vsize\string\vsize=\string\colroom}\saythe\vsize}{}%
1718
 
}%
1719
 
\def\set@adj@colht#1{%
1720
 
 #1\@colht
1721
 
 \ltxgrid@info@sw{\class@info{\string\set@adj@colht\string#1-\string\pagesofar}\saythe#1}{}%
1722
 
 \@ifvoid\pagesofar{}{%
1723
 
  \advance#1-\ht\pagesofar\advance#1-\dp\pagesofar
1724
 
  \ltxgrid@info@sw{\class@info{\string\pagesofar}\saythe#1}{}%
1725
 
 }%
1726
 
 \def\@elt{\adj@column#1}%
1727
 
 \@booleantrue\firsttime@sw\@toplist
1728
 
 \@booleantrue\firsttime@sw\@botlist
1729
 
 \let\@elt\relax
1730
 
}%
1731
 
\def\adj@column#1#2{%
1732
 
 \advance#1-\ht#2%
1733
 
 \advance#1-\firsttime@sw{\textfloatsep\@booleanfalse\firsttime@sw}{\floatsep}%
1734
 
 \ltxgrid@info@sw{\class@info{\string\adj@column\string#1-\string#2}\saythe#1}{}%
1735
 
}%
1736
 
\def\adj@page#1#2{%
1737
 
 \advance#1-\ht#2%
1738
 
 \advance#1-\firsttime@sw{\dbltextfloatsep\@booleanfalse\firsttime@sw}{\dblfloatsep}%
1739
 
 \ltxgrid@info@sw{\class@info{\string\adj@page\string#1-\string#2}\saythe#1}{}%
1740
 
}%
1741
 
\def\set@adj@box#1#2{%
1742
 
 \@ifvoid#2{}{%
1743
 
  \advance#1-\ht#2\advance#1-\dp#2%
1744
 
  \@booleantrue\temp@sw
1745
 
  \ltxgrid@foot@info@sw{\class@info{\string\set@adj@box\string#2}\saythe#1}{}%
1746
 
 }%
1747
 
}%
1748
 
\appdef\@outputpage@tail{%
1749
 
 \set@colht          % FIXME: needed?
1750
 
 \@floatplacement    % FIXME: needed?
1751
 
 \@dblfloatplacement % FIXME: needed?
1752
 
}%
1753
 
\begingroup
1754
 
 \catcode`\1=\cat@letter
1755
 
 \catcode`\2=\cat@letter
1756
 
 \toks@{%
1757
 
  \setbox\footins\box\footsofar
1758
 
  \balance@two\col@1\@outputbox
1759
 
  \global\setbox\col@1\box\col@1
1760
 
  \global\setbox\@outputbox\box\@outputbox
1761
 
  \combine@foot@inserts\footsofar\footins
1762
 
 }%
1763
 
 \aftergroup\def\aftergroup\balance@2\expandafter
1764
 
\endgroup\expandafter{\the\toks@}%
1765
 
\def\balance@two#1#2{%
1766
 
 \ltxgrid@info@sw{\class@info{\string\balance@two\string#1\string#2}}{}%
1767
 
 \outputdebug@sw{\trace@scroll{\showbox#1\showbox#2}}{}%
1768
 
 \setbox\thr@@\copy\footsofar
1769
 
 \setbox\@ne\vbox\bgroup
1770
 
  \@ifvoid{#1}{}{%
1771
 
   \recover@column#1\footsofar\column@recovered\footins@recovered
1772
 
   \@ifvoid{#2}{}{\marry@baselines}%
1773
 
  }%
1774
 
  \@ifvoid{#2}{}{%
1775
 
   \recover@column#2\footsofar\column@recovered\footins@recovered
1776
 
  }%
1777
 
 \egroup
1778
 
 \outputdebug@sw{\trace@scroll{\showbox\@ne}}{}%
1779
 
 \ltxgrid@foot@info@sw{\trace@scroll{\showbox\footsofar}}{}%
1780
 
 \dimen@\ht\@ne\divide\dimen@\tw@
1781
 
 \dimen@i\dimen@
1782
 
 \vbadness\@M
1783
 
 \vfuzz\maxdimen
1784
 
 \splittopskip\topskip
1785
 
 \loopwhile{%
1786
 
  \setbox\z@\copy\@ne\setbox\tw@\vsplit\z@ to\dimen@
1787
 
  \remove@depth\z@\remove@depth\tw@
1788
 
  \dimen@ii\ht\tw@\advance\dimen@ii-\ht\z@
1789
 
  \dimen@i=.5\dimen@i
1790
 
  \ltxgrid@info@sw{\saythe\dimen@\saythe\dimen@i\saythe\dimen@ii}{}%
1791
 
  \@ifdim{\dimen@ii<.5\p@}{%
1792
 
   \@ifdim{\dimen@ii>-.5\p@}%
1793
 
  }{%
1794
 
   \false@sw
1795
 
  }%
1796
 
  {%
1797
 
   \true@sw
1798
 
  }{%
1799
 
   \@ifdim{\dimen@i<.5\p@}%
1800
 
  }%
1801
 
  {%
1802
 
   \false@sw
1803
 
  }%
1804
 
  {%
1805
 
   \advance\dimen@\@ifdim{\dimen@ii<\z@}{}{-}\dimen@i
1806
 
   \true@sw
1807
 
  }%
1808
 
 }%
1809
 
 \ltxgrid@info@sw{\saythe\dimen@\saythe\dimen@i\saythe\dimen@ii}{}%
1810
 
 \@ifdim{\ht\z@=\z@}{%
1811
 
  \@ifdim{\ht\tw@=\z@}%
1812
 
 }{%
1813
 
  \true@sw
1814
 
 }%
1815
 
 {%
1816
 
 }{%
1817
 
  \ltxgrid@info{Unsatifactorily balanced columns: giving up}%
1818
 
  \setbox\tw@\box#1%
1819
 
  \setbox\z@ \box#2%
1820
 
  \global\setbox\footsofar\box\thr@@
1821
 
 }%
1822
 
 \setbox\tw@\vbox{\unvbox\tw@\vskip\z@skip}%
1823
 
 \setbox\z@ \vbox{\unvbox\z@ \vskip\z@skip}%
1824
 
 \set@colht
1825
 
 \dimen@\ht\z@\@ifdim{\dimen@<\ht\tw@}{\dimen@\ht\tw@}{}%
1826
 
 \@ifdim{\dimen@>\@colroom}{\dimen@\@colroom}{}%
1827
 
 \ltxgrid@info@sw{\saythe{\ht\z@}\saythe{\ht\tw@}\saythe\@colroom\saythe\dimen@}{}%
1828
 
 \setbox#1\vbox to\dimen@{\unvbox\tw@\unskip\raggedcolumn@skip}%
1829
 
 \setbox#2\vbox to\dimen@{\unvbox\z@ \unskip\raggedcolumn@skip}%
1830
 
 \outputdebug@sw{\trace@scroll{\showbox#1\showbox#2}}{}%
1831
 
}%
1832
 
\def\remove@depth#1{%
1833
 
  \setbox#1\vbox\bgroup
1834
 
   \unvcopy#1%
1835
 
   \setbox\z@\vbox\bgroup
1836
 
    \unvbox#1%
1837
 
    \setbox\z@\lastbox
1838
 
    \aftergroup\kern\aftergroup-\expandafter
1839
 
   \egroup
1840
 
   \the\dp\z@\relax
1841
 
  \egroup
1842
 
}%
1843
 
\def\recover@column#1#2#3#4{%
1844
 
 \ltxgrid@info@sw{\class@info{\string\recover@column\string#1\string#2\string#3\string#4}}{}%
1845
 
 \setbox#4\vbox{\unvcopy#1}%
1846
 
 \ltxgrid@foot@info@sw{\trace@scroll{\showbox#4}}{}%
1847
 
 \dimen@\ht#4%
1848
 
 \ltxgrid@foot@info@sw{\saythe\dimen@}{}%
1849
 
 \setbox#4\vbox\bgroup
1850
 
  \unvbox#4\unskip
1851
 
  \dimen@i\lastkern\unkern\advance\dimen@i\lastkern
1852
 
  \@ifdim{\dimen@i=\z@}{%
1853
 
   \dimen@i\lastkern\unkern
1854
 
   \ltxgrid@foot@info@sw{\saythe\dimen@i}{}%
1855
 
   \aftergroup\dimen@i
1856
 
   \expandafter\egroup\the\dimen@i\relax
1857
 
  }{%
1858
 
   \egroup
1859
 
  }%
1860
 
 \@ifdim{\dimen@i<\z@}{%
1861
 
  \advance\dimen@\dimen@i
1862
 
  \ltxgrid@foot@info@sw{\saythe\dimen@i\saythe\dimen@}{}%
1863
 
  \splittopskip\z@skip
1864
 
  \global\setbox#3\vsplit#4 to\dimen@
1865
 
  \global\setbox#4\vbox{\unvbox#4}%
1866
 
  \ltxgrid@foot@info@sw{\trace@scroll{\showbox#1\showbox#2\showbox#3\showbox#4}}{}%
1867
 
  \global\setbox#2\vbox\bgroup\unvbox#2\vskip\z@skip\unvbox#4\egroup
1868
 
 }{%
1869
 
  \setbox#3\box#4%
1870
 
  \ltxgrid@foot@info@sw{\trace@scroll{\showbox#1\showbox#2\showbox#3\showbox#4}}{}%
1871
 
 }%
1872
 
 \unvbox#3%
1873
 
 \loopwhile{\dimen@\lastskip\@ifdim{\dimen@>\z@}{\unskip\true@sw}{\false@sw}}%
1874
 
}%
1875
 
\def\recover@column@null#1#2#3#4{%
1876
 
 \unvcopy#1%
1877
 
}%
1878
 
\prepdef\@begindocumenthook{%
1879
 
 \open@column@one\@ne
1880
 
 \set@colht
1881
 
 \@floatplacement
1882
 
 \@dblfloatplacement
1883
 
}%
1884
 
\def\longtable@longtable{%
1885
 
 \par
1886
 
 \ifx\multicols\@undefined\else\ifnum\col@number>\@ne\@twocolumntrue\fi\fi
1887
 
 \if@twocolumn\LT@err{longtable not in 1-column mode}\@ehc\fi
1888
 
 \begingroup
1889
 
 \@ifnextchar[\LT@array{\LT@array[x]}%
1890
 
}%
1891
 
\def\longtable@new{%
1892
 
 \par
1893
 
  \@ifnextchar[\LT@array{\LT@array[x]}%
1894
 
}%
1895
 
\def\endlongtable@longtable{%
1896
 
  \crcr
1897
 
  \noalign{%
1898
 
    \let\LT@entry\LT@entry@chop
1899
 
    \xdef\LT@save@row{\LT@save@row}}%
1900
 
  \LT@echunk
1901
 
  \LT@start
1902
 
  \unvbox\z@
1903
 
  \LT@get@widths
1904
 
  \if@filesw
1905
 
    {\let\LT@entry\LT@entry@write\immediate\write\@auxout{%
1906
 
      \gdef\expandafter\noexpand
1907
 
        \csname LT@\romannumeral\c@LT@tables\endcsname
1908
 
          {\LT@save@row}}}%
1909
 
  \fi
1910
 
  \ifx\LT@save@row\LT@@save@row
1911
 
  \else
1912
 
    \LT@warn{Column \@width s have changed\MessageBreak
1913
 
             in table \thetable}%
1914
 
    \LT@final@warn
1915
 
  \fi
1916
 
  \endgraf\penalty -\LT@end@pen
1917
 
  \endgroup
1918
 
  \global\@mparbottom\z@
1919
 
  \pagegoal\vsize
1920
 
  \endgraf\penalty\z@\addvspace\LTpost
1921
 
  \ifvoid\footins\else\insert\footins{}\fi
1922
 
}%
1923
 
\def\endlongtable@new{%
1924
 
  \crcr
1925
 
  \noalign{%
1926
 
   \let\LT@entry\LT@entry@chop
1927
 
   \xdef\LT@save@row{\LT@save@row}%
1928
 
  }%
1929
 
  \LT@echunk
1930
 
  \LT@start
1931
 
  \unvbox\z@
1932
 
  \LT@get@widths
1933
 
  \@if@sw\if@filesw\fi{%
1934
 
   {%
1935
 
    \let\LT@entry\LT@entry@write
1936
 
    \immediate\write\@auxout{%
1937
 
     \gdef\expandafter\noexpand\csname LT@\romannumeral\c@LT@tables\endcsname
1938
 
     {\LT@save@row}%
1939
 
    }%
1940
 
   }%
1941
 
  }{}%
1942
 
  \@ifx{\LT@save@row\LT@@save@row}{}{%
1943
 
   \LT@warn{%
1944
 
    Column \@width s have changed\MessageBreak in table \thetable
1945
 
   }\LT@final@warn
1946
 
  }%
1947
 
  \endgraf
1948
 
  \nobreak
1949
 
  \box\@ifvoid\LT@lastfoot{\LT@foot}{\LT@lastfoot}%
1950
 
 \global\@mparbottom\z@
1951
 
 \endgraf
1952
 
 \LT@post
1953
 
}%
1954
 
\def\LT@start@longtable{%
1955
 
  \let\LT@start\endgraf
1956
 
  \endgraf\penalty\z@\vskip\LTpre
1957
 
  \dimen@\pagetotal
1958
 
  \advance\dimen@ \ht\ifvoid\LT@firsthead\LT@head\else\LT@firsthead\fi
1959
 
  \advance\dimen@ \dp\ifvoid\LT@firsthead\LT@head\else\LT@firsthead\fi
1960
 
  \advance\dimen@ \ht\LT@foot
1961
 
  \dimen@ii\vfuzz
1962
 
  \vfuzz\maxdimen
1963
 
    \setbox\tw@\copy\z@
1964
 
    \setbox\tw@\vsplit\tw@ to \ht\@arstrutbox
1965
 
    \setbox\tw@\vbox{\unvbox\tw@}%
1966
 
  \vfuzz\dimen@ii
1967
 
  \advance\dimen@ \ht
1968
 
        \ifdim\ht\@arstrutbox>\ht\tw@\@arstrutbox\else\tw@\fi
1969
 
  \advance\dimen@\dp
1970
 
        \ifdim\dp\@arstrutbox>\dp\tw@\@arstrutbox\else\tw@\fi
1971
 
  \advance\dimen@ -\pagegoal
1972
 
  \ifdim \dimen@>\z@\vfil\break\fi
1973
 
      \global\@colroom\@colht
1974
 
  \ifvoid\LT@foot\else
1975
 
    \advance\vsize-\ht\LT@foot
1976
 
    \global\advance\@colroom-\ht\LT@foot
1977
 
    \dimen@\pagegoal\advance\dimen@-\ht\LT@foot\pagegoal\dimen@
1978
 
    \maxdepth\z@
1979
 
  \fi
1980
 
  \ifvoid\LT@firsthead\copy\LT@head\else\box\LT@firsthead\fi
1981
 
\nobreak
1982
 
  \output{\LT@output}%
1983
 
}%
1984
 
\def\LT@start@new{%
1985
 
 \let\LT@start\endgraf
1986
 
 \endgraf
1987
 
 \markthr@@{}%
1988
 
 \LT@pre
1989
 
 \@ifvoid\LT@firsthead{\LT@top}{\box\LT@firsthead\nobreak}%
1990
 
 \mark@envir{longtable}%
1991
 
}%
1992
 
\def\LT@end@hd@ft@longtable#1{%
1993
 
 \LT@echunk
1994
 
 \ifx\LT@start\endgraf
1995
 
  \LT@err{Longtable head or foot not at start of table}{Increase LTchunksize}%
1996
 
 \fi
1997
 
 \setbox#1\box\z@
1998
 
 \LT@get@widths\LT@bchunk
1999
 
}%
2000
 
\def\LT@end@hd@ft@new#1{%
2001
 
 \LT@echunk
2002
 
 \@ifx{\LT@start\endgraf}{%
2003
 
  \LT@err{Longtable head or foot not at start of table}{Increase LTchunksize}%
2004
 
 }%
2005
 
 \global\setbox#1\box\z@
2006
 
 \LT@get@widths
2007
 
 \LT@bchunk
2008
 
}%
2009
 
\def\LT@array@longtable[#1]#2{%
2010
 
  \refstepcounter{table}\stepcounter{LT@tables}%
2011
 
  \if l#1%
2012
 
    \LTleft\z@ \LTright\fill
2013
 
  \else\if r#1%
2014
 
    \LTleft\fill \LTright\z@
2015
 
  \else\if c#1%
2016
 
    \LTleft\fill \LTright\fill
2017
 
  \fi\fi\fi
2018
 
  \let\LT@mcol\multicolumn
2019
 
  \let\LT@@tabarray\@tabarray
2020
 
  \let\LT@@hl\hline
2021
 
  \def\@tabarray{%
2022
 
    \let\hline\LT@@hl
2023
 
    \LT@@tabarray}%
2024
 
  \let\\\LT@tabularcr\let\tabularnewline\\%
2025
 
  \def\newpage{\noalign{\break}}%
2026
 
  \def\pagebreak{\noalign{\ifnum`}=0\fi\@testopt{\LT@no@pgbk-}4}%
2027
 
  \def\nopagebreak{\noalign{\ifnum`}=0\fi\@testopt\LT@no@pgbk4}%
2028
 
  \let\hline\LT@hline \let\kill\LT@kill\let\caption\LT@caption
2029
 
  \@tempdima\ht\strutbox
2030
 
  \let\@endpbox\LT@endpbox
2031
 
  \ifx\extrarowheight\@undefined
2032
 
    \let\@acol\@tabacol
2033
 
    \let\@classz\@tabclassz \let\@classiv\@tabclassiv
2034
 
    \def\@startpbox{\vtop\LT@startpbox}%
2035
 
    \let\@@startpbox\@startpbox
2036
 
    \let\@@endpbox\@endpbox
2037
 
    \let\LT@LL@FM@cr\@tabularcr
2038
 
  \else
2039
 
    \advance\@tempdima\extrarowheight
2040
 
    \col@sep\tabcolsep
2041
 
    \let\@startpbox\LT@startpbox\let\LT@LL@FM@cr\@arraycr
2042
 
  \fi
2043
 
  \setbox\@arstrutbox\hbox{\vrule
2044
 
    \@height \arraystretch \@tempdima
2045
 
    \@depth \arraystretch \dp \strutbox
2046
 
    \@width \z@}%
2047
 
  \let\@sharp##\let\protect\relax
2048
 
   \begingroup
2049
 
    \@mkpream{#2}%
2050
 
    \xdef\LT@bchunk{%
2051
 
       \global\advance\c@LT@chunks\@ne
2052
 
       \global\LT@rows\z@\setbox\z@\vbox\bgroup
2053
 
       \LT@setprevdepth
2054
 
       \tabskip\LTleft \noexpand\halign to\hsize\bgroup
2055
 
      \tabskip\z@ \@arstrut \@preamble \tabskip\LTright \cr}%
2056
 
  \endgroup
2057
 
  \expandafter\LT@nofcols\LT@bchunk&\LT@nofcols
2058
 
  \LT@make@row
2059
 
  \m@th\let\par\@empty
2060
 
  \everycr{}\lineskip\z@\baselineskip\z@
2061
 
  \LT@bchunk}%
2062
 
\def\LT@LR@l{\LTleft\z@   \LTright\fill}%
2063
 
\def\LT@LR@r{\LTleft\fill \LTright\z@  }%
2064
 
\def\LT@LR@c{\LTleft\fill \LTright\fill}%
2065
 
\def\LT@array@new[#1]#2{%
2066
 
 \refstepcounter{table}\stepcounter{LT@tables}%
2067
 
 \table@hook
2068
 
 \LTleft\fill \LTright\fill
2069
 
 \csname LT@LR@#1\endcsname
2070
 
 \let\LT@mcol\multicolumn
2071
 
 \let\LT@@hl\hline
2072
 
 \prepdef\@tabarray{\let\hline\LT@@hl}%
2073
 
 \let\\\LT@tabularcr
2074
 
 \let\tabularnewline\\%
2075
 
 \def\newpage{\noalign{\break}}%
2076
 
 \def\pagebreak{\noalign{\ifnum`}=0\fi\@testopt{\LT@no@pgbk-}4}%
2077
 
 \def\nopagebreak{\noalign{\ifnum`}=0\fi\@testopt\LT@no@pgbk4}%
2078
 
 \let\hline\LT@hline
2079
 
 \let\kill\LT@kill
2080
 
 \let\caption\LT@caption
2081
 
 \@tempdima\ht\strutbox
2082
 
 \let\@endpbox\LT@endpbox
2083
 
 \@ifxundefined\extrarowheight{%
2084
 
  \let\@acol\@tabacol
2085
 
  \let\@classz\@tabclassz
2086
 
  \let\@classiv\@tabclassiv
2087
 
  \def\@startpbox{\vtop\LT@startpbox}%
2088
 
  \let\@@startpbox\@startpbox
2089
 
  \let\@@endpbox\@endpbox
2090
 
  \let\LT@LL@FM@cr\@tabularcr@LaTeX
2091
 
  \let\@xtabularcr\@xtabularcr@LaTeX
2092
 
 }{%
2093
 
  \advance\@tempdima\extrarowheight
2094
 
  \col@sep\tabcolsep
2095
 
  \let\@startpbox\LT@startpbox
2096
 
  \let\LT@LL@FM@cr\@arraycr@array
2097
 
 }%
2098
 
 \let\@acoll\@tabacoll
2099
 
 \let\@acolr\@tabacolr
2100
 
 \let\@acol\@tabacol
2101
 
 \setbox\@arstrutbox\hbox{%
2102
 
  \vrule
2103
 
  \@height \arraystretch \@tempdima
2104
 
  \@depth \arraystretch \dp \strutbox
2105
 
  \@width \z@
2106
 
 }%
2107
 
 \let\@sharp##%
2108
 
 \let\protect\relax
2109
 
 \begingroup
2110
 
  \@mkpream{#2}%
2111
 
  \@mkpream@relax
2112
 
  \edef\@preamble{\@preamble}%
2113
 
  \prepdef\@preamble{%
2114
 
   \global\advance\c@LT@chunks\@ne
2115
 
   \global\LT@rows\z@
2116
 
   \setbox\z@\vbox\bgroup
2117
 
    \LT@setprevdepth
2118
 
    \tabskip\LTleft
2119
 
    \halign to\hsize\bgroup
2120
 
     \tabskip\z@
2121
 
     \@arstrut
2122
 
  }%
2123
 
  \appdef\@preamble{%
2124
 
     \tabskip\LTright
2125
 
     \cr
2126
 
  }%
2127
 
  \global\let\LT@bchunk\@preamble
2128
 
 \endgroup
2129
 
 \expandafter\LT@nofcols\LT@bchunk&\LT@nofcols
2130
 
 \LT@make@row
2131
 
 \m@th
2132
 
 \let\par\@empty
2133
 
 \everycr{}%
2134
 
 \lineskip\z@
2135
 
 \baselineskip\z@
2136
 
 \LT@bchunk
2137
 
}%
2138
 
\appdef\table@hook{}%
2139
 
\def\switch@longtable{%
2140
 
 \@ifpackageloaded{longtable}{%
2141
 
  \@ifx{\longtable\longtable@longtable}{%
2142
 
   \@ifx{\endlongtable\endlongtable@longtable}{%
2143
 
    \@ifx{\LT@start\LT@start@longtable}{%
2144
 
     \@ifx{\LT@end@hd@ft\LT@end@hd@ft@longtable}{%
2145
 
      \@ifx{\LT@array\LT@array@longtable}{%
2146
 
       \true@sw
2147
 
      }{\false@sw}%
2148
 
     }{\false@sw}%
2149
 
    }{\false@sw}%
2150
 
   }{\false@sw}%
2151
 
  }{\false@sw}%
2152
 
  {%
2153
 
   \class@info{Patching longtable package}%
2154
 
  }{%
2155
 
   \class@info{Patching unrecognized longtable package. (Proceeding with fingers crossed)}%
2156
 
  }%
2157
 
  \let\longtable\longtable@new
2158
 
  \let\endlongtable\endlongtable@new
2159
 
  \let\LT@start\LT@start@new
2160
 
  \let\LT@end@hd@ft\LT@end@hd@ft@new
2161
 
  \let\LT@array\LT@array@new
2162
 
  \newenvironment{longtable*}{%
2163
 
   \onecolumngrid@push
2164
 
   \longtable
2165
 
  }{%
2166
 
   \endlongtable
2167
 
   \onecolumngrid@pop
2168
 
  }%
2169
 
 }{}%
2170
 
}%
2171
 
\def\LT@pre{\penalty\z@\vskip\LTpre}%
2172
 
\def\LT@bot{\nobreak\copy\LT@foot\vfil}%
2173
 
\def\LT@top{\copy\LT@head\nobreak}%
2174
 
\def\LT@post{\penalty\z@\addvspace\LTpost\mark@envir{\curr@envir}}%
2175
 
\def\LT@adj{%
2176
 
 \setbox\z@\vbox{\null}\dimen@-\ht\z@
2177
 
 \setbox\z@\vbox{\unvbox\z@\LT@bot}\advance\dimen@\ht\z@
2178
 
 \global\advance\vsize-\dimen@
2179
 
}%
2180
 
\def\output@init@longtable{\LT@adj}%
2181
 
\def\output@prep@longtable{\setbox\@cclv\vbox{\unvbox\@cclv\LT@bot}}%
2182
 
\def\output@post@longtable{\LT@top}%
2183
 
\let\output@init@theindex\@empty
2184
 
\let\output@prep@theindex\@empty
2185
 
\def\output@post@theindex{%
2186
 
 \@ifodd\c@page{}{%
2187
 
  \@ifnum{\pagegrid@cur=\@ne}{%
2188
 
  }%
2189
 
 }%
2190
 
}%
2191
 
\def\check@aux{\do@output@MVL{\do@check@aux}}%
2192
 
\def\check@deferlist@stuck#1{%
2193
 
 \@ifx{\@deferlist@postshipout\@empty}{}{%
2194
 
  \@ifx{\@deferlist@postshipout\@deferlist}{%
2195
 
   \@fltstk
2196
 
   \clearpage@sw{%
2197
 
    \ltxgrid@warn{Deferred float stuck during \string\clearpage\space processing}%
2198
 
   }{%
2199
 
    \force@deferlist@stuck#1%
2200
 
   }%
2201
 
  }{%
2202
 
  }%
2203
 
  \global\let\@deferlist@postshipout\@empty
2204
 
 }%
2205
 
}%
2206
 
\def\@fltstk{%
2207
 
 \@latex@warning{A float is stuck (cannot be placed without \string\clearpage)}%
2208
 
}%
2209
 
\appdef\@outputpage@tail{%
2210
 
 \global\let\@deferlist@postshipout\@deferlist
2211
 
}%
2212
 
\def\@next#1#2{%
2213
 
 \@ifx{#2\@empty}{\false@sw}{%
2214
 
  \expandafter\@xnext#2\@@#1#2%
2215
 
  \true@sw
2216
 
 }%
2217
 
}%
2218
 
\def\@xnext\@elt#1#2\@@#3#4{%
2219
 
 \def#3{#1}%
2220
 
 \gdef#4{#2}%
2221
 
 \def\@tempa{#4}\def\@tempb{\@freelist}%
2222
 
 \@ifx{\@tempa\@tempb}{%
2223
 
  \@ifx{#4\@empty}{%
2224
 
   \force@deferlist@empty%{Float register pool exhausted}%
2225
 
  }{}%
2226
 
 }{}%
2227
 
}%
2228
 
\def\force@deferlist@stuck#1{%
2229
 
 \force@deferlist@sw{%
2230
 
  \@booleantrue\clearpage@sw
2231
 
  \@booleantrue\forcefloats@sw
2232
 
  #1%
2233
 
 }{%
2234
 
 }%
2235
 
}%
2236
 
\def\force@deferlist@empty{%
2237
 
 \force@deferlist@sw{%
2238
 
  \penalty-\pagebreak@pen
2239
 
  \protect@penalty\do@forcecolumn@pen
2240
 
 }{%
2241
 
 }%
2242
 
}%
2243
 
\@booleanfalse\force@deferlist@sw
2244
 
\mathchardef\do@forcecolumn@pen=10009
2245
 
\@namedef{output@-\the\do@forcecolumn@pen}{\do@forcecolumn}%
2246
 
\def\do@forcecolumn{%
2247
 
 \@booleantrue\clearpage@sw
2248
 
 \@booleantrue\forcefloats@sw
2249
 
 \do@startcolumn
2250
 
}%
2251
 
\def\enlargethispage{%
2252
 
 \@ifstar{%
2253
 
  \@enlargethispage{}%
2254
 
 }{%
2255
 
  \@enlargethispage{}%
2256
 
 }%
2257
 
}%
2258
 
\def\@enlargethispage#1#2{%
2259
 
 \begingroup
2260
 
  \dimen@#2\relax
2261
 
  \edef\@tempa{#1}%
2262
 
  \edef\@tempa{\noexpand\@@enlargethispage{\@tempa}{\the\dimen@}}%
2263
 
  \expandafter\do@output@MVL\expandafter{\@tempa}%
2264
 
 \endgroup
2265
 
}%
2266
 
\def\@@enlargethispage#1#2{%
2267
 
 \def\@tempa{one}%
2268
 
 \@ifx{\thepagegrid\@tempa}{%
2269
 
  \true@sw
2270
 
 }{%
2271
 
  \def\@tempa{mlt}%
2272
 
  \@ifx{\thepagegrid\@tempa}{%
2273
 
   \@ifnum{\pagegrid@cur=\@ne}{%
2274
 
    \gdef\enlarge@colroom{#2}%
2275
 
    \true@sw
2276
 
   }{%
2277
 
    \ltxgrid@warn{Too late to enlarge this page; move the command to the first column.}%
2278
 
    \false@sw
2279
 
   }%
2280
 
  }{%
2281
 
   \ltxgrid@warn{Unable to enlarge a page of this kind.}%
2282
 
   \false@sw
2283
 
  }%
2284
 
 }%
2285
 
 {%
2286
 
  \class@info{Enlarging page \thepage\space by #2}%
2287
 
  \global\advance\@colroom#2\relax
2288
 
  \set@vsize
2289
 
 }{%
2290
 
 }%
2291
 
}%
2292
 
\let\enlarge@colroom\@empty
2293
 
\let\@kludgeins\@undefined
2294
 
\@booleantrue\textheight@sw
2295
 
\prepdef\@outputpage@head{%
2296
 
 \textheight@sw{%
2297
 
  \count@\vbadness\vbadness\@M
2298
 
  \dimen@\vfuzz\vfuzz\maxdimen
2299
 
  \setbox\@outputbox\vbox to\textheight{\unvbox\@outputbox}%
2300
 
  \vfuzz\dimen@
2301
 
  \vbadness\count@
2302
 
 }{}%
2303
 
}%
2304
 
\appdef\@outputpage@head{%
2305
 
 \@ifx{\LS@rot\@undefined}{}{\LS@rot}%
2306
 
}%
2307
 
\def\ltxgrid@info{%
2308
 
 \ltxgrid@info@sw{\class@info}{\@gobble}%
2309
 
}%
2310
 
\@booleanfalse\ltxgrid@info@sw
2311
 
\def\ltxgrid@warn{%
2312
 
 \ltxgrid@warn@sw{\class@warn}{\@gobble}%
2313
 
}%
2314
 
\@booleantrue\ltxgrid@warn@sw
2315
 
\@booleanfalse\ltxgrid@foot@info@sw
2316
 
\def\def@next@handler#1#2#3{%
2317
 
 \advance#1\@ne\mathchardef#2\the#1%
2318
 
 \expandafter\def\csname output@-\the#1\endcsname{#3}%
2319
 
}%
2320
 
\def\def@line@handler#1#2{%
2321
 
 \begingroup
2322
 
  \@tempcnta\int@parpenalty
2323
 
  \advance\@tempcnta-#1%
2324
 
  \aftergroup\def
2325
 
  \expandafter\aftergroup\csname output@-\the\@tempcnta\endcsname
2326
 
 \endgroup{#2}%
2327
 
}%
2328
 
\mathchardef\int@parpenalty11012
2329
 
\def@line@handler\z@{\@handle@line@ltx{}{}{}}%
2330
 
\def@line@handler\@ne{\@handle@line@ltx{}{}{\brokenpenalty@ltx}}%
2331
 
\def@line@handler\tw@{\@handle@line@ltx{}{\clubpenalty@ltx}{}}%
2332
 
\def@line@handler\thr@@{\@handle@line@ltx{\clubpenalty@ltx}{}{\brokenpenalty@ltx}}%
2333
 
\def@line@handler\f@ur{\@handle@line@ltx{\widowpenalty@ltx}{}{}}%
2334
 
\def@line@handler{5}{\@handle@line@ltx{\widowpenalty@ltx}{}{\brokenpenalty@ltx}}%
2335
 
\def@line@handler{6}{\@handle@line@ltx{\widowpenalty@ltx}{\clubpenalty@ltx}{}}%
2336
 
\def@line@handler{7}{\@handle@line@ltx{\widowpenalty@ltx}{\clubpenalty@ltx}{\brokenpenalty@ltx}}%
2337
 
\def@line@handler{8}{\@handle@line@ltx{\displaywidowpenalty@ltx}{}{}}%
2338
 
\def@line@handler{9}{\@handle@line@ltx{\displaywidowpenalty@ltx}{}{\brokenpenalty@ltx}}%
2339
 
\def@line@handler{10}{\@handle@line@ltx{\displaywidowpenalty@ltx}{\clubpenalty@ltx}{}}%
2340
 
\def@line@handler{11}{\@handle@line@ltx{\displaywidowpenalty@ltx}{\clubpenalty@ltx}{\brokenpenalty@ltx}}%
2341
 
\def\@handle@line@ltx#1#2#3{%
2342
 
 \@@handle@line@ltx
2343
 
 \@tempcnta\lastpenalty
2344
 
 \@tempcntb\interlinepenalty@ltx\relax
2345
 
 \@if@empty{#1}{}{\advance\@tempcntb#1\relax}%
2346
 
 \@if@empty{#2}{}{\advance\@tempcntb#2\relax}%
2347
 
 \@if@empty{#3}{}{\advance\@tempcntb#3\relax}%
2348
 
 \penalty\@ifnum{\@tempcnta<\@tempcntb}{\@tempcntb}{\@tempcnta}%
2349
 
}%
2350
 
\let\@@handle@line@ltx\@empty
2351
 
\@tempcnta\int@parpenalty
2352
 
\def@next@handler\@tempcnta\int@postparpenalty{\reset@queues@ltx\handle@par@ltx}%
2353
 
\def@next@handler\@tempcnta\int@vadjustpenalty{\handle@vadjust@ltx}%
2354
 
\def@next@handler\@tempcnta\int@whatsitpenalty{\handle@whatsit@ltx}%
2355
 
\def@next@handler\@tempcnta\int@predisplaypenalty{\reset@queues@ltx\@handle@display@ltx{\predisplaypenalty@ltx}}%
2356
 
\def@next@handler\@tempcnta\int@interdisplaylinepenalty{\@handle@display@ltx{\interdisplaylinepenalty@ltx}}%
2357
 
\def@next@handler\@tempcnta\int@postdisplaypenalty{\@handle@display@ltx{\postdisplaypenalty@ltx}}%
2358
 
\def\@handle@display@ltx#1{%
2359
 
 \@@handle@display@ltx
2360
 
 \@tempcnta\lastpenalty
2361
 
 \@tempcntb#1%
2362
 
 \penalty\@ifnum{\@tempcnta<\@tempcntb}{\@tempcntb}{\@tempcnta}%
2363
 
}%
2364
 
\let\@@handle@display@ltx\@empty
2365
 
\def\handle@par@ltx{}%
2366
 
\def\set@linepenalties{%
2367
 
 \expandafter\def\expandafter\interlinepenalty@ltx\expandafter{\the\interlinepenalty}%
2368
 
 \interlinepenalty-\int@parpenalty
2369
 
 \expandafter\def\expandafter\brokenpenalty@ltx\expandafter{\the\brokenpenalty}%
2370
 
 \brokenpenalty\@ne
2371
 
 \expandafter\def\expandafter\clubpenalty@ltx\expandafter{\the\clubpenalty}%
2372
 
 \clubpenalty\tw@
2373
 
 \expandafter\def\expandafter\widowpenalty@ltx\expandafter{\the\widowpenalty}%
2374
 
 \widowpenalty\f@ur
2375
 
 \expandafter\def\expandafter\displaywidowpenalty@ltx\expandafter{\the\displaywidowpenalty}%
2376
 
 \displaywidowpenalty8\relax
2377
 
}%
2378
 
\def\restore@linepenalties{%
2379
 
 \interlinepenalty\interlinepenalty@ltx
2380
 
 \brokenpenalty\brokenpenalty@ltx
2381
 
 \clubpenalty\clubpenalty@ltx
2382
 
 \widowpenalty\widowpenalty@ltx
2383
 
 \displaywidowpenalty\displaywidowpenalty@ltx
2384
 
 \relax
2385
 
}%
2386
 
\def\set@displaypenalties#1{%
2387
 
 \expandafter\def\expandafter\predisplaypenalty@ltx\expandafter{\the\predisplaypenalty}%
2388
 
 \expandafter\def\expandafter\interdisplaylinepenalty@ltx\expandafter{\the\interdisplaylinepenalty}%
2389
 
 \expandafter\def\expandafter\postdisplaypenalty@ltx\expandafter{\the\postdisplaypenalty}%
2390
 
 \@ifhmode{\predisplaypenalty-\int@predisplaypenalty\relax}{}%
2391
 
 #1{\interdisplaylinepenalty-\int@interdisplaylinepenalty\relax}{}%
2392
 
 #1{\postdisplaypenalty-\int@postdisplaypenalty\relax}{}%
2393
 
}%
2394
 
\def\enqueue@whatsit@ltx#1{%
2395
 
 \gappdef\g@whatsit@queue{{#1}}%
2396
 
 \vadjust{\penalty-\int@whatsitpenalty}%
2397
 
}%
2398
 
\def\handle@whatsit@ltx{%
2399
 
 \unvbox\@cclv
2400
 
 \g@pop@ltx\g@whatsit@queue\@tempa
2401
 
 \expandafter\do@whatsit\expandafter{\@tempa}%
2402
 
}%
2403
 
\def\do@whatsit#1{}%
2404
 
\def\g@pop@ltx#1#2{%
2405
 
 \expandafter\@g@pop@ltx#1{}{}\@@#1#2%
2406
 
}%
2407
 
\def\@g@pop@ltx#1#2\@@#3#4{%
2408
 
 \gdef#3{#2}%
2409
 
 \def#4{#1}%
2410
 
}%
2411
 
\let\vspace@ltx\vspace
2412
 
\let\pagebreak@ltx\pagebreak
2413
 
\let\nopagebreak@ltx\nopagebreak
2414
 
\let\endline@ltx\\
2415
 
\let\@arrayparboxrestore@ltx\@arrayparboxrestore
2416
 
\def\@vspace@org #1{%
2417
 
  \ifvmode
2418
 
    \vskip #1
2419
 
    \vskip\z@skip
2420
 
   \else
2421
 
     \@bsphack
2422
 
     \vadjust{\@restorepar
2423
 
              \vskip #1
2424
 
              \vskip\z@skip
2425
 
              }%
2426
 
     \@esphack
2427
 
   \fi
2428
 
}%
2429
 
\def\@vspace@ltx#1{%
2430
 
 \@ifvmode{%
2431
 
  \vskip#1\vskip\z@skip
2432
 
 }{%
2433
 
  \@bsphack
2434
 
  \ex@vadjust@ltx{%
2435
 
   \@restorepar
2436
 
   \nobreak
2437
 
   \vskip#1\vskip\z@skip
2438
 
  }%
2439
 
  \@esphack
2440
 
 }%
2441
 
}%
2442
 
\def\@vspacer@org#1{%
2443
 
  \ifvmode
2444
 
    \dimen@\prevdepth
2445
 
    \hrule \@height\z@
2446
 
    \nobreak
2447
 
    \vskip #1
2448
 
    \vskip\z@skip
2449
 
    \prevdepth\dimen@
2450
 
  \else
2451
 
    \@bsphack
2452
 
    \vadjust{\@restorepar
2453
 
             \hrule \@height\z@
2454
 
             \nobreak
2455
 
             \vskip #1
2456
 
             \vskip\z@skip}%
2457
 
    \@esphack
2458
 
\fi
2459
 
}%
2460
 
\def\@vspacer@ltx#1{%
2461
 
 \@ifvmode{%
2462
 
  \dimen@\prevdepth
2463
 
  \hrule\@height\z@
2464
 
  \nobreak
2465
 
  \vskip#1\vskip\z@skip
2466
 
  \prevdepth\dimen@
2467
 
 }{%
2468
 
  \@bsphack
2469
 
  \ex@vadjust@ltx{%
2470
 
   \@restorepar
2471
 
   \hrule\@height\z@
2472
 
   \nobreak
2473
 
   \vskip#1\vskip\z@skip
2474
 
  }%
2475
 
  \@esphack
2476
 
 }%
2477
 
}%
2478
 
\def\@no@pgbk@org #1[#2]{%
2479
 
  \ifvmode
2480
 
    \penalty #1\@getpen{#2}%
2481
 
  \else
2482
 
    \@bsphack
2483
 
    \vadjust{\penalty #1\@getpen{#2}}%
2484
 
    \@esphack
2485
 
  \fi
2486
 
}%
2487
 
\def\@no@pgbk@ltx#1[#2]{%
2488
 
 \@ifvmode{%
2489
 
  \penalty#1\@getpen{#2}%
2490
 
 }{%
2491
 
  \@bsphack
2492
 
  \ex@vadjust@ltx{%
2493
 
   \penalty#1\@getpen{#2}%
2494
 
  }%
2495
 
  \@esphack
2496
 
 }%
2497
 
}%
2498
 
\long\def\end@line@org{%
2499
 
 \let\reserved@e\relax
2500
 
 \let\reserved@f\relax
2501
 
 \@ifstar{%
2502
 
  \let\reserved@e\vadjust
2503
 
  \let\reserved@f\nobreak
2504
 
  \@xnewline
2505
 
 }%
2506
 
 \@xnewline
2507
 
}%
2508
 
\long\def\end@line@ltx{%
2509
 
 \let\reserved@e\relax
2510
 
 \let\reserved@f\relax
2511
 
 \@ifstar{%
2512
 
  \let\reserved@e\ex@vadjust@ltx
2513
 
  \let\reserved@f\nobreak
2514
 
  \@xnewline
2515
 
 }{%
2516
 
  \@xnewline
2517
 
 }%
2518
 
}%
2519
 
\def\@newline@org[#1]{%
2520
 
 \let\reserved@e\vadjust
2521
 
 \@gnewline{\vskip#1}%
2522
 
}%
2523
 
\def\@newline@ltx[#1]{%
2524
 
 \let\reserved@e\ex@vadjust@ltx
2525
 
 \@gnewline{\vskip#1}%
2526
 
}%
2527
 
 \@ifx{\@vspace\@vspace@org}{%
2528
 
  \@ifx{\@vspacer\@vspacer@org}{%
2529
 
   \@ifx{\@no@pgbk\@no@pgbk@org}{%
2530
 
    \@ifx{\@newline\@newline@org}{%
2531
 
     \expandafter\@ifx\expandafter{\csname\expandafter\@gobble\string\\ \endcsname\end@line@org}{%
2532
 
      \true@sw
2533
 
     }{\false@sw}%
2534
 
    }{\false@sw}%
2535
 
   }{\false@sw}%
2536
 
  }{\false@sw}%
2537
 
 }{\false@sw}%
2538
 
 {%
2539
 
  \class@info{Overriding \string\@vspace, \string\@vspacer, \string\@no@pgbk, \string\@newline, and \string\\ }%
2540
 
  \let\@normalcr\end@line@ltx
2541
 
  \expandafter\let\csname\expandafter\@gobble\string\\ \endcsname\@normalcr
2542
 
  \let\@newline\@newline@ltx
2543
 
  \let\@vspace\@vspace@ltx
2544
 
  \let\@vspacer\@vspacer@ltx
2545
 
  \let\@no@pgbk\@no@pgbk@ltx
2546
 
 }{%
2547
 
  \class@warn{%
2548
 
   Failed to recognize \string\@vspace, \string\@vspacer, \string\@no@pgbk, \string\@newline, and \string\\;
2549
 
   no patches applied. Please get a more up-to-date class,
2550
 
  }%
2551
 
 }%
2552
 
\let\ex@vadjust@ltx\vadjust
2553
 
\def\enqueue@vadjust@ltx#1{%
2554
 
 \gappdef\g@vadjust@queue{{#1}}%
2555
 
 \vadjust{\penalty-\int@vadjustpenalty}%
2556
 
}%
2557
 
\def\handle@vadjust@ltx{%
2558
 
 \unvbox\@cclv
2559
 
 \g@pop@ltx\g@vadjust@queue\@tempa
2560
 
 \expandafter\gappdef\expandafter\g@vadjust@line\expandafter{\@tempa}%
2561
 
}%
2562
 
\let\g@vadjust@line\@empty
2563
 
\def\reset@queues@ltx{%
2564
 
 \global\let\g@whatsit@queue\@empty
2565
 
 \global\let\g@vadjust@queue\@empty
2566
 
}%
2567
 
\newcommand\linenomathWithnumbers@LN{%
2568
 
  \ifLineNumbers
2569
 
    \ifnum\interlinepenalty>-\linenopenaltypar
2570
 
      \global\holdinginserts\thr@@
2571
 
      \advance\interlinepenalty \linenopenalty
2572
 
     \ifhmode
2573
 
      \advance\predisplaypenalty \linenopenalty
2574
 
     \fi
2575
 
      \advance\postdisplaypenalty \linenopenalty
2576
 
      \advance\interdisplaylinepenalty \linenopenalty
2577
 
    \fi
2578
 
  \fi
2579
 
  \ignorespaces
2580
 
}%
2581
 
\newcommand\linenomathNonumbers@LN{%
2582
 
  \ifLineNumbers
2583
 
    \ifnum\interlinepenalty>-\linenopenaltypar
2584
 
      \global\holdinginserts\thr@@
2585
 
      \advance\interlinepenalty \linenopenalty
2586
 
     \ifhmode
2587
 
      \advance\predisplaypenalty \linenopenalty
2588
 
     \fi
2589
 
    \fi
2590
 
  \fi
2591
 
  \ignorespaces
2592
 
}%
2593
 
\def\endlinenomath@LN{%
2594
 
  \ifLineNumbers
2595
 
   \global\holdinginserts\@LN@outer@holdins
2596
 
  \fi
2597
 
  \global\@ignoretrue
2598
 
}
2599
 
\def\linenumberpar@LN{%
2600
 
  \ifvmode \@@@par \else
2601
 
    \ifinner \@@@par \else
2602
 
      \xdef\@LN@outer@holdins{\the\holdinginserts}%
2603
 
      \advance \interlinepenalty \linenopenalty
2604
 
      \linenoprevgraf \prevgraf
2605
 
      \global \holdinginserts \thr@@
2606
 
      \@@@par
2607
 
      \ifnum\prevgraf>\linenoprevgraf
2608
 
        \penalty-\linenopenaltypar
2609
 
      \fi
2610
 
      \@LN@parpgbrk
2611
 
      \global\holdinginserts\@LN@outer@holdins
2612
 
      \advance\interlinepenalty -\linenopenalty
2613
 
    \fi
2614
 
  \fi
2615
 
}%
2616
 
\appdef\class@documenthook{%
2617
 
 \@ifpackageloaded{lineno}{%
2618
 
  \@ifx{\linenomathWithnumbers\linenomathWithnumbers@LN}{%
2619
 
   \@ifx{\linenomathNonumbers\linenomathNonumbers@LN}{%
2620
 
    \@ifx{\endlinenomath\endlinenomath@LN}{%
2621
 
     \@ifx{\linenumberpar\linenumberpar@LN}{%
2622
 
      \true@sw
2623
 
     }{\false@sw}%
2624
 
    }{\false@sw}%
2625
 
   }{\false@sw}%
2626
 
  }{\false@sw}%
2627
 
  {%
2628
 
   \class@info{Overriding lineo.sty, restoring output routine,}%
2629
 
   \let\linenumberpar\linenumberpar@ltx
2630
 
   \let\endlinenomath\endlinenomath@ltx
2631
 
   \expandafter\let\csname endlinenomath*\endcsname\endlinenomath@ltx
2632
 
   \let\linenomathWithnumbers\linenomathWithnumbers@ltx
2633
 
   \let\linenomathNonumbers\linenomathNonumbers@ltx
2634
 
   \let\ex@vadjust@ltx\ex@vadjust@line
2635
 
   \let\@LN@postlabel\enqueue@whatsit@ltx
2636
 
   \let\do@whatsit\write@linelabel
2637
 
   \let\handle@par@ltx\handle@par@LN
2638
 
   \let\@@handle@line@ltx\Make@LineNo@ltx
2639
 
   \let\@@handle@display@ltx\Make@LineNo@ltx
2640
 
   \output@latex{\natural@output}%
2641
 
   \let\vspace\vspace@ltx
2642
 
   \let\pagebreak\pagebreak@ltx
2643
 
   \let\nopagebreak\nopagebreak@ltx
2644
 
   \let\@arrayparboxrestore\@arrayparboxrestore@ltx
2645
 
   \let\\\endline@ltx
2646
 
   \appdef\set@footnotefont{%
2647
 
    \let\par\@@@par
2648
 
    \let\@@par\@@@par
2649
 
   }%
2650
 
   \@if@sw\ifLineNumbers\fi{%
2651
 
    \class@info{Reinvoke \string\linenumbers}%
2652
 
    \let\@@par\linenumberpar
2653
 
    \@ifx{\@par\linenumberpar@LN}{\let\@par\linenumberpar}{}%
2654
 
    \@ifx{\par\linenumberpar@LN}{\let\par\linenumberpar}{}%
2655
 
   }{%
2656
 
    \class@info{Line numbering not turned on yet}%
2657
 
   }%
2658
 
  }{%
2659
 
   \class@warn{Failed to recognize lineno.sty procedures; no patches applied. Please get a more up-to-date class.}%
2660
 
  }%
2661
 
 }{%
2662
 
 }%
2663
 
}%
2664
 
\def\linenumberpar@ltx{\@ifvmode{\@@@par}{\@linenumberpar}}%
2665
 
\def\@linenumberpar{%
2666
 
   \linenoprevgraf\prevgraf
2667
 
   \set@linepenalties
2668
 
   \@@@par
2669
 
   \@ifnum{\prevgraf>\linenoprevgraf}{
2670
 
    \penalty-\int@postparpenalty
2671
 
   }{}%
2672
 
   \@LN@parpgbrk
2673
 
   \restore@linepenalties
2674
 
}%
2675
 
\newcommand\linenomathWithnumbers@ltx{\@linenomathnumbers@ltx\true@sw}%
2676
 
\newcommand\linenomathNonumbers@ltx{\@linenomathnumbers@ltx\false@sw}%
2677
 
\def\@linenomathnumbers@ltx#1{%
2678
 
 \@if@sw\ifLineNumbers\fi{%
2679
 
   \set@linepenalties
2680
 
   \set@displaypenalties#1%
2681
 
 }{}%
2682
 
 \ignorespaces
2683
 
}%
2684
 
\def\endlinenomath@ltx{%
2685
 
 \global\@ignoretrue
2686
 
}%
2687
 
\def\handle@par@LN{%
2688
 
 \Make@LineNo@ltx
2689
 
 \@tempcnta\lastpenalty
2690
 
 \@ifnum{\@tempcnta=\z@}{}{%
2691
 
  \expandafter\gdef
2692
 
  \expandafter\@LN@parpgbrk
2693
 
  \expandafter{%
2694
 
   \expandafter\penalty
2695
 
               \the\@tempcnta
2696
 
   \global\let\@LN@parpgbrk\@LN@screenoff@pen
2697
 
  }%
2698
 
 }%
2699
 
}%
2700
 
\def\Make@LineNo@ltx{%
2701
 
 \@LN@maybe@normalLineNumber
2702
 
 \boxmaxdepth\maxdimen\setbox\z@\vbox{\unvbox\@cclv}%
2703
 
 \@tempdima\dp\z@
2704
 
 \unvbox\z@
2705
 
 \sbox\@tempboxa{\hb@xt@\z@{\makeLineNumber}}%
2706
 
 \ht\@tempboxa\z@
2707
 
 \@LN@depthbox
2708
 
 \stepLineNumber
2709
 
 \g@vadjust@line
2710
 
 \global\let\g@vadjust@line\@empty
2711
 
}%
2712
 
\def\write@linelabel#1{%
2713
 
 \protected@write\@auxout{}{%
2714
 
  \string\newlabel{#1}{{\theLineNumber}{\thepage}{}{}{}}%
2715
 
 }%
2716
 
}%
2717
 
\def\ex@vadjust@line{%
2718
 
 \@if@sw\ifLineNumbers\fi{\enqueue@vadjust@ltx}{\vadjust}%
2719
 
}%
2720
 
\endinput
2721
 
%%
2722
 
%% End of file `ltxgrid.sty'.