|
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: `ltxgrid,ltxgrid-krn') |
|
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.txt. |
|
13 %% |
|
14 %% Copyright notice. |
|
15 %% |
|
16 %% These files are distributed |
|
17 %% WITHOUT ANY WARRANTY; without even the implied warranty of |
|
18 %% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. |
|
19 %% |
|
20 %%% @LaTeX-file{ |
|
21 %%% filename = "ltxgrid.dtx", |
|
22 %%% version = "1.0rc5", |
|
23 %%% date = "2001/07/26", |
|
24 %%% time = "12:23:00 GMT+8", |
|
25 %%% checksum = "4234", |
|
26 %%% author = "Arthur Ogawa (mailto:ogawa@teleport.com), |
|
27 %%% commissioned by the American Physical Society. |
|
28 %%% ", |
|
29 %%% copyright = "Copyright (C) 1999, 2000 Arthur Ogawa, |
|
30 %%% distributed under the terms of the |
|
31 %%% LaTeX Project Public License, see |
|
32 %%% ftp://ctan.tug.org/macros/latex/base/lppl.txt |
|
33 %%% ", |
|
34 %%% address = "Arthur Ogawa, |
|
35 %%% USA", |
|
36 %%% telephone = "", |
|
37 %%% FAX = "", |
|
38 %%% email = "ogawa@teleport.com", |
|
39 %%% codetable = "ISO/ASCII", |
|
40 %%% keywords = "latex, page grid, main vertical list", |
|
41 %%% supported = "yes", |
|
42 %%% abstract = "package to change page grid, MVL", |
|
43 %%% docstring = "The checksum field above generated by ltxdoc", |
|
44 %%% } |
|
45 \NeedsTeXFormat{LaTeX2e}[1995/12/01]% |
|
46 \ProvidesFile{ltxgrid.sty}% |
|
47 [2001/07/26 1.0rc5 page grid package]% \fileversion |
|
48 \def\package@name{ltxgrid}% |
|
49 \expandafter\PackageInfo\expandafter{\package@name}{% |
|
50 Page grid for \protect\LaTeXe, |
|
51 by A. Ogawa (ogawa@teleport.com)% |
|
52 }% |
|
53 \RequirePackage{ltxutil}% |
|
54 \typeout{% |
|
55 ltxgrid: portions licensed from W. E. Baxter (web@superscript.com)% |
|
56 }% |
|
57 \newcounter{linecount} |
|
58 \def\lineloop#1{% |
|
59 \loop |
|
60 \ifnum\c@linecount<#1\relax |
|
61 \global\advance\c@linecount\@ne |
|
62 \par |
|
63 \hb@xt@\hsize{% |
|
64 \ifnum\c@linecount<100 0\fi\ifnum\c@linecount<10 0\fi\number\c@linecount |
|
65 \vrule depth2.5\p@ |
|
66 \leaders\hrule\hfil |
|
67 }% |
|
68 \penalty\interlinepenalty |
|
69 \repeat |
|
70 }% |
|
71 \let\@@mark\mark |
|
72 \let\@@topmark\topmark |
|
73 \let\@@firstmark\firstmark |
|
74 \let\@@botmark\botmark |
|
75 \let\@@splitfirstmark\splitfirstmark |
|
76 \let\@@splitbotmark\splitbotmark |
|
77 \def\@themark{{}{}{}{}}% |
|
78 \def\nul@mark{{}{}{}{}\@@nul}% |
|
79 \def\set@mark@netw@#1#2#3#4#5#6#7{\gdef#1{{#6}{#7}{#4}{#5}}\do@mark}% |
|
80 \def\set@marktw@#1#2#3#4#5#6{\gdef#1{{#2}{#6}{#4}{#5}}\do@mark}% |
|
81 \def\set@markthr@@#1#2#3#4#5#6{\gdef#1{{#2}{#3}{#6}{#5}}\do@mark}% |
|
82 \def\get@mark@@ne#1#2#3#4#5\@@nul{#1}% |
|
83 \def\get@mark@tw@#1#2#3#4#5\@@nul{#2}% |
|
84 \def\get@mark@thr@@#1#2#3#4#5\@@nul{#3}% |
|
85 \def\get@mark@f@ur#1#2#3#4#5\@@nul{#4}% |
|
86 \def\mark@netw@{\expandafter\set@mark@netw@\expandafter\@themark\@themark}% |
|
87 \def\marktw@{\expandafter\set@marktw@\expandafter\@themark\@themark}% |
|
88 \def\markthr@@{\expandafter\set@markthr@@\expandafter\@themark\@themark}% |
|
89 \def\do@mark{\do@@mark\@themark\nobreak@mark}% |
|
90 \def\do@@mark#1{% |
|
91 \begingroup |
|
92 \let@mark |
|
93 \@@mark{#1}% |
|
94 \endgroup |
|
95 }% |
|
96 \def\let@mark{% |
|
97 \let\protect\@unexpandable@protect |
|
98 \let\label\relax |
|
99 \let\index\relax |
|
100 \let\glossary\relax |
|
101 }% |
|
102 \def\nobreak@mark{% |
|
103 \@if@sw\if@nobreak\fi{\@ifvmode{\nobreak}{}}{}% |
|
104 }% |
|
105 \def\mark@envir{\markthr@@}% |
|
106 \def\bot@envir{% |
|
107 \expandafter\expandafter |
|
108 \expandafter\get@mark@thr@@ |
|
109 \expandafter\@@botmark |
|
110 \nul@mark |
|
111 }% |
|
112 \def\markboth{\mark@netw@}% |
|
113 \def\markright{\marktw@}% |
|
114 \def\leftmark{% |
|
115 \expandafter\expandafter |
|
116 \expandafter\get@mark@@ne |
|
117 \expandafter\saved@@botmark |
|
118 \nul@mark |
|
119 }% |
|
120 \def\rightmark{% |
|
121 \expandafter\expandafter |
|
122 \expandafter\get@mark@tw@ |
|
123 \expandafter\saved@@firstmark |
|
124 \nul@mark |
|
125 }% |
|
126 \let\primitive@output\output |
|
127 \long\def\@tempa#1\@@nil{#1}% |
|
128 \toks@ |
|
129 \expandafter\expandafter |
|
130 \expandafter{% |
|
131 \expandafter \@tempa |
|
132 \the\output |
|
133 \@@nil |
|
134 }% |
|
135 \newtoks\output |
|
136 \output\expandafter{\the\toks@}% |
|
137 \primitive@output{\dispatch@output}% |
|
138 \def\dispatch@output{% |
|
139 \let\par\@@par |
|
140 \expandafter\let\expandafter\@tempa\csname output@\the\outputpenalty\endcsname |
|
141 \outputdebug@sw{% |
|
142 \saythe\badness |
|
143 \saythe\outputpenalty |
|
144 \saythe\holdinginserts |
|
145 \say\thepagegrid |
|
146 \saythe\pagegrid@col |
|
147 \saythe\pagegrid@cur |
|
148 %\say\bot@envir |
|
149 \saythe\insertpenalties |
|
150 %\say\@@topmark |
|
151 %\say\saved@@topmark |
|
152 %\say\@@firstmark |
|
153 %\say\saved@@firstmark |
|
154 \say\@@botmark |
|
155 %\say\saved@@botmark |
|
156 \saythe\pagegoal |
|
157 \saythe\pagetotal |
|
158 \saythe{\badness\@cclv}% |
|
159 \expandafter\@ifx\expandafter{\csname output@-\the\execute@message@pen\endcsname\@tempa}{% |
|
160 \say\@message@saved |
|
161 }{% |
|
162 \expandafter\say\csname output@\the\outputpenalty\endcsname |
|
163 }% |
|
164 \say\@toplist |
|
165 \say\@botlist |
|
166 \say\@dbltoplist |
|
167 \say\@deferlist |
|
168 {\tracingall\scrollmode |
|
169 \showbox\@cclv |
|
170 \showbox\@cclv@saved |
|
171 \showbox\pagesofar |
|
172 \showbox\footbox |
|
173 \showbox\footins@saved |
|
174 \showbox\footins |
|
175 \showlists |
|
176 }% |
|
177 }{}% |
|
178 \@ifnotrelax\@tempa{\@tempa}{\the\output}% |
|
179 }% |
|
180 \@ifxundefined{\outputdebug@sw}{% |
|
181 \@booleanfalse\outputdebug@sw |
|
182 }{}% |
|
183 \output={\toggle@insert\output@holding\output@moving}% |
|
184 \def\output@holding{% |
|
185 \csname output@init@\bot@envir\endcsname |
|
186 \@if@exceed@pagegoal{\unvcopy\@cclv}{% |
|
187 \setbox\z@\vbox{\unvcopy\@cclv}% |
|
188 \outputdebug@sw{{\tracingall\scrollmode\showbox\z@}}{}% |
|
189 \dimen@\ht\@cclv\advance\dimen@-\ht\z@ |
|
190 \dead@cycle@repair\dimen@ |
|
191 }{% |
|
192 \dead@cycle |
|
193 }% |
|
194 }% |
|
195 \def\@if@exceed@pagegoal#1{% |
|
196 \begingroup |
|
197 \setbox\z@\vbox{#1}% |
|
198 \dimen@\ht\z@\advance\dimen@\dp\z@ |
|
199 \outputdebug@sw{\saythe\dimen@}{}% |
|
200 \@ifdim{\dimen@>\pagegoal}{% |
|
201 \setbox\z@\vbox{\@@mark{}\unvbox\z@}% |
|
202 \splittopskip\topskip |
|
203 \splitmaxdepth\maxdepth |
|
204 \vbadness\@M |
|
205 \vfuzz\maxdimen |
|
206 \setbox\tw@\vsplit\z@ to\pagegoal |
|
207 \outputdebug@sw{{\tracingall\scrollmode\showbox\tw@\showbox\z@}}{}% |
|
208 \setbox\tw@\vbox{\unvbox\tw@}% |
|
209 \@ifdim{\ht\tw@=\z@}{% |
|
210 \ltxgrid@info{Found overly large chunk while preparing to move insertions. Attempting repairs}% |
|
211 \aftergroup\true@sw |
|
212 }{% |
|
213 \aftergroup\false@sw |
|
214 }% |
|
215 }{% |
|
216 \aftergroup\false@sw |
|
217 }% |
|
218 \endgroup |
|
219 }% |
|
220 %% \item |
|
221 %% Put down the same interrupts as for the non-trivial case above. |
|
222 \def\output@moving{% |
|
223 \set@top@firstmark |
|
224 \@ifnum{\outputpenalty=\do@newpage@pen}{% |
|
225 \setbox\@cclv\vbox{% |
|
226 \unvbox\@cclv |
|
227 \setbox\z@\lastbox |
|
228 \@ifdim{\ht\z@=\ht\@protection@box}{\box\lastbox}{\unskip}% |
|
229 }% |
|
230 }{}% |
|
231 \@cclv@nontrivial@sw{% |
|
232 \csname output@prep@\bot@envir \endcsname |
|
233 \@makecol\csname output@column@\thepagegrid\endcsname |
|
234 \protect@penalty\do@startcolumn@pen |
|
235 \clearpage@sw{% |
|
236 \protect@penalty\do@endpage@pen |
|
237 }{}% |
|
238 \csname output@post@\bot@envir \endcsname |
|
239 }{% |
|
240 {\setbox\z@\box\@cclv}% |
|
241 }% |
|
242 \set@colroom |
|
243 \global\@mparbottom\z@ |
|
244 \global\@textfloatsheight\z@ %FIXME: this legacy LaTeX variable is set, but never queried! |
|
245 }% |
|
246 \def\@cclv@nontrivial@sw{% |
|
247 \@ifx@empty\@toplist{% |
|
248 \@ifx@empty\@botlist{% |
|
249 \@ifvoid\footins{% |
|
250 \@ifvoid\@cclv{% |
|
251 \false@sw |
|
252 }{% |
|
253 \setbox\z@\vbox{\unvcopy\@cclv}% |
|
254 \@ifdim{\ht\z@=\topskip}{% |
|
255 \setbox\z@\vbox{% |
|
256 \unvbox\z@ |
|
257 \setbox\z@\lastbox\dimen@\lastskip\unskip |
|
258 \@ifdim{\ht\z@=\ht\@protection@box}{% |
|
259 \advance\dimen@\ht\z@ |
|
260 \@ifdim{\dimen@=\topskip}{% |
|
261 \aftergroup\true@sw |
|
262 }{% |
|
263 \aftergroup\false@sw |
|
264 }% |
|
265 }{% |
|
266 \aftergroup\false@sw |
|
267 }% |
|
268 }% |
|
269 {% |
|
270 \false@sw % Normal for \clearpage |
|
271 }{% |
|
272 \true@sw |
|
273 }% |
|
274 }{% |
|
275 \@ifdim{\ht\z@=\z@}{% |
|
276 \ltxgrid@info{Found trivial column. Discarding it}% |
|
277 \outputdebug@sw{{\tracingall\scrollmode\showbox\@cclv}}{}% |
|
278 \false@sw |
|
279 }{% |
|
280 \true@sw |
|
281 }% |
|
282 }% |
|
283 }% |
|
284 }{% |
|
285 \true@sw |
|
286 }% |
|
287 }{% |
|
288 \true@sw |
|
289 }% |
|
290 }{% |
|
291 \true@sw |
|
292 }% |
|
293 }% |
|
294 \def\protect@penalty#1{\protection@box\penalty-#1\relax}% |
|
295 \newbox\@protection@box |
|
296 \setbox\@protection@box\vbox to1986sp{\vfil}% |
|
297 \def\protection@box{\nointerlineskip\copy\@protection@box}% |
|
298 \def\dead@cycle@repair#1{% |
|
299 \expandafter\do@@mark |
|
300 \expandafter{% |
|
301 \@@botmark |
|
302 }% |
|
303 \unvbox\@cclv |
|
304 \nointerlineskip |
|
305 \vbox to#1{\vss}% |
|
306 \@ifnum{\outputpenalty<\@M}{\penalty\outputpenalty}{}% |
|
307 }% |
|
308 \def\dead@cycle@repair@protected#1{% |
|
309 \expandafter\do@@mark |
|
310 \expandafter{% |
|
311 \@@botmark |
|
312 }% |
|
313 \begingroup |
|
314 \unvbox\@cclv |
|
315 \setbox\z@\lastbox % Remove protection box |
|
316 \nointerlineskip |
|
317 \advance#1-\ht\@protection@box |
|
318 \vbox to#1{\vss}% |
|
319 \protection@box % Reinsert protection box |
|
320 \@ifnum{\outputpenalty<\@M}{\penalty\outputpenalty}{}% |
|
321 \endgroup |
|
322 }% |
|
323 \def\dead@cycle{% |
|
324 \expandafter\do@@mark |
|
325 \expandafter{% |
|
326 \@@botmark |
|
327 }% |
|
328 \unvbox\@cclv |
|
329 \@ifnum{\outputpenalty<\@M}{\penalty\outputpenalty}{}% |
|
330 }% |
|
331 \def\output@init@document{% |
|
332 \@ifvoid\footbox{}{% |
|
333 \global\advance\vsize-\ht\footbox |
|
334 \global\advance\vsize-\dp\footbox |
|
335 }% |
|
336 }% |
|
337 \def\output@prep@document{% |
|
338 \@ifvoid\footbox{}{% |
|
339 \setbox\footins\vbox{\unvbox\footbox\unvbox\footins}% |
|
340 }% |
|
341 }% |
|
342 \def\output@post@document{}% |
|
343 \let\@opcol\@undefined |
|
344 \def\@makecol{% |
|
345 \setbox\@outputbox\vbox{% |
|
346 \boxmaxdepth\@maxdepth |
|
347 \@tempdima\dp\@cclv |
|
348 \unvbox\@cclv |
|
349 \vskip-\@tempdima |
|
350 }% |
|
351 \xdef\@freelist{\@freelist\@midlist}\global\let\@midlist\@empty |
|
352 \@combinefloats |
|
353 \@combineinserts\@outputbox\footins |
|
354 \set@adj@colht\dimen@ |
|
355 \count@\vbadness |
|
356 \vbadness\@M |
|
357 \setbox\@outputbox\vbox to\dimen@{% |
|
358 \@texttop |
|
359 \dimen@\dp\@outputbox |
|
360 \unvbox\@outputbox |
|
361 \vskip-\dimen@ |
|
362 \@textbottom |
|
363 }% |
|
364 \vbadness\count@ |
|
365 \global\maxdepth\@maxdepth |
|
366 }% |
|
367 \let\@makespecialcolbox\@undefined |
|
368 \def\@combineinserts#1#2{% |
|
369 \setbox#1\vbox{% |
|
370 \unvbox#1% |
|
371 \vbox{% |
|
372 \@ifvoid#2{}{% |
|
373 \vskip\skip\footins |
|
374 \color@begingroup |
|
375 \normalcolor |
|
376 \footnoterule |
|
377 \nointerlineskip |
|
378 \box#2% |
|
379 \color@endgroup |
|
380 }{}% |
|
381 }% |
|
382 }% |
|
383 }% |
|
384 \appdef\@floatplacement{% |
|
385 \global\@fpmin\@fpmin |
|
386 }% |
|
387 \mathchardef\pagebreak@pen=\@M |
|
388 \expandafter\let\csname output@-\the\pagebreak@pen\endcsname\relax |
|
389 \mathchardef\do@startcolumn@pen=10005 |
|
390 \@namedef{output@-\the\do@startcolumn@pen}{\do@startcolumn}% |
|
391 \def\do@startcolumn{% |
|
392 \setbox\@cclv\vbox{\unvbox\@cclv\setbox\z@\lastbox\unskip}% |
|
393 \clearpage@sw{\@clearfloatplacement}{\@floatplacement}% |
|
394 \set@colroom |
|
395 \@booleanfalse\pfloat@avail@sw |
|
396 \begingroup |
|
397 \@colht\@colroom |
|
398 \@booleanfalse\float@avail@sw |
|
399 \@tryfcolumn\test@colfloat |
|
400 \float@avail@sw{\aftergroup\@booleantrue\aftergroup\pfloat@avail@sw}{}% |
|
401 \endgroup |
|
402 \fcolmade@sw{% |
|
403 \setbox\@cclv\vbox{\unvbox\@outputbox\unvbox\@cclv}% |
|
404 \outputpenalty-\pagebreak@pen % ask for a return visit, this time with insertions and all. |
|
405 \dead@cycle |
|
406 }{% |
|
407 \begingroup |
|
408 \let\@elt\@scolelt |
|
409 \let\reserved@b\@deferlist\global\let\@deferlist\@empty\reserved@b |
|
410 \endgroup |
|
411 \clearpage@sw{% |
|
412 \outputpenalty\@M |
|
413 }{% |
|
414 \outputpenalty\do@newpage@pen |
|
415 }% |
|
416 \dead@cycle |
|
417 }% |
|
418 \check@deferlist@stuck\do@startcolumn |
|
419 \set@vsize |
|
420 }% |
|
421 \def\@scolelt#1{\def\@currbox{#1}\@addtonextcol}% |
|
422 \def\test@colfloat#1{% |
|
423 \csname @floatselect@sw@\thepagegrid\endcsname#1{}{\@testtrue}% |
|
424 \@if@sw\if@test\fi{}{\aftergroup\@booleantrue\aftergroup\float@avail@sw}% |
|
425 }% |
|
426 \def\@addtonextcol{% |
|
427 \begingroup |
|
428 \@insertfalse |
|
429 \@setfloattypecounts |
|
430 \csname @floatselect@sw@\thepagegrid\endcsname\@currbox{% |
|
431 \@ifnum{\@fpstype=8 }{}{% |
|
432 \@ifnum{\@fpstype=24 }{}{% |
|
433 \@flsettextmin |
|
434 \@reqcolroom \ht\@currbox |
|
435 \advance \@reqcolroom \@textmin |
|
436 \advance \@reqcolroom \vsize % take into account split insertions |
|
437 \advance \@reqcolroom -\pagegoal |
|
438 \@ifdim{\@colroom>\@reqcolroom}{% |
|
439 \@flsetnum \@colnum |
|
440 \@ifnum{\@colnum>\z@}{% |
|
441 \@bitor\@currtype\@deferlist |
|
442 \@if@sw\if@test\fi{}{% |
|
443 \@addtotoporbot |
|
444 }% |
|
445 }{}% |
|
446 }{}% |
|
447 }% |
|
448 }% |
|
449 }{}% |
|
450 \@if@sw\if@insert\fi{}{% |
|
451 \@cons\@deferlist\@currbox |
|
452 }% |
|
453 \endgroup |
|
454 }% |
|
455 \mathchardef\do@startpage@pen=10006 |
|
456 \@namedef{output@-\the\do@startpage@pen}{\do@startpage}% |
|
457 \def\do@startpage{% |
|
458 \setbox\@cclv\vbox{\unvbox\@cclv\setbox\z@\lastbox\unskip}% |
|
459 \clearpage@sw{\@clearfloatplacement}{\@dblfloatplacement}% |
|
460 \set@colht |
|
461 \@booleanfalse\pfloat@avail@sw |
|
462 \begingroup |
|
463 \@booleanfalse\float@avail@sw |
|
464 \@tryfcolumn\test@dblfloat |
|
465 \float@avail@sw{\aftergroup\@booleantrue\aftergroup\pfloat@avail@sw}{}% |
|
466 \endgroup |
|
467 \fcolmade@sw{% |
|
468 \global\setbox\pagesofar\vbox{\unvbox\pagesofar\unvbox\@outputbox}% |
|
469 \@combinepage |
|
470 \@combinedblfloats |
|
471 \@outputpage |
|
472 \global\pagegrid@cur\@ne |
|
473 \protect@penalty\do@startpage@pen |
|
474 }{% |
|
475 \begingroup |
|
476 \@booleanfalse\float@avail@sw |
|
477 \let\@elt\@sdblcolelt |
|
478 \let\reserved@b\@deferlist\global\let\@deferlist\@empty\reserved@b |
|
479 \endgroup |
|
480 \@ifdim{\@colht=\textheight}{% No luck... |
|
481 \pfloat@avail@sw{% ...but a float *was* available! |
|
482 \forcefloats@sw{% |
|
483 \ltxgrid@warn{Forced dequeueing of floats stalled}% |
|
484 }{% |
|
485 \ltxgrid@warn{Dequeueing of floats stalled}% |
|
486 }% |
|
487 }{}% |
|
488 }{}% |
|
489 \outputpenalty\@M |
|
490 \dead@cycle |
|
491 }% |
|
492 \check@deferlist@stuck\do@startpage |
|
493 \set@colht |
|
494 }% |
|
495 \def\@sdblcolelt#1{\def\@currbox{#1}\@addtodblcol}% |
|
496 \def\test@dblfloat#1{% |
|
497 \@if@notdblfloat{#1}{\@testtrue}{}% |
|
498 \@if@sw\if@test\fi{}{\aftergroup\@booleantrue\aftergroup\float@avail@sw}% |
|
499 }% |
|
500 \def\@if@notdblfloat#1{\@ifdim{\wd#1<\textwidth}}% |
|
501 \@booleanfalse\forcefloats@sw |
|
502 \def\@addtodblcol{% |
|
503 \begingroup |
|
504 \@if@notdblfloat{\@currbox}{% |
|
505 \false@sw |
|
506 }{% |
|
507 \@setfloattypecounts |
|
508 \@getfpsbit \tw@ |
|
509 \@bitor \@currtype \@deferlist |
|
510 \@if@sw\if@test\fi{% |
|
511 \false@sw |
|
512 }{% |
|
513 \@ifodd\@tempcnta{% |
|
514 \aftergroup\@booleantrue\aftergroup\float@avail@sw |
|
515 \@flsetnum \@dbltopnum |
|
516 \@ifnum{\@dbltopnum>\z@}{% |
|
517 \@ifdim{\@dbltoproom>\ht\@currbox}{% |
|
518 \true@sw |
|
519 }{% |
|
520 \@ifnum{\@fpstype<\sixt@@n}{% |
|
521 \begingroup |
|
522 \advance \@dbltoproom \@textmin |
|
523 \@ifdim{\@dbltoproom>\ht\@currbox}{% |
|
524 \endgroup\true@sw |
|
525 }{% |
|
526 \endgroup\false@sw |
|
527 }% |
|
528 }{% |
|
529 \false@sw |
|
530 }% |
|
531 }% |
|
532 }{% |
|
533 \false@sw |
|
534 }% |
|
535 }{% |
|
536 \false@sw |
|
537 }% |
|
538 }% |
|
539 }% |
|
540 {% |
|
541 \@tempdima -\ht\@currbox |
|
542 \advance\@tempdima |
|
543 -\@ifx{\@dbltoplist\@empty}{\dbltextfloatsep}{\dblfloatsep}% |
|
544 \global \advance \@dbltoproom \@tempdima |
|
545 \global \advance \@colht \@tempdima |
|
546 \global \advance \@dbltopnum \m@ne |
|
547 \@cons \@dbltoplist \@currbox |
|
548 }{% |
|
549 \@cons \@deferlist \@currbox |
|
550 }% |
|
551 \endgroup |
|
552 }% |
|
553 \def\@tryfcolumn#1{% |
|
554 \global\@booleanfalse\fcolmade@sw |
|
555 \@ifx@empty\@deferlist{}{% |
|
556 \global\let\@trylist\@deferlist |
|
557 \global\let\@failedlist\@empty |
|
558 \begingroup |
|
559 \dimen@\vsize\advance\dimen@-\pagegoal\@ifdim{\dimen@>\z@}{% |
|
560 \advance\@fpmin-\dimen@ |
|
561 }{}% |
|
562 \def\@elt{\@xtryfc#1}\@trylist |
|
563 \endgroup |
|
564 \fcolmade@sw{% |
|
565 \global\setbox\@outputbox\vbox{\vskip \@fptop}% |
|
566 \let \@elt \@wtryfc \@flsucceed |
|
567 \global\setbox\@outputbox\vbox{\unvbox\@outputbox |
|
568 \unskip \vskip \@fpbot |
|
569 }% |
|
570 \let \@elt \relax |
|
571 \xdef\@deferlist{\@failedlist\@flfail}% |
|
572 \xdef\@freelist{\@freelist\@flsucceed}% |
|
573 }{}% |
|
574 }% |
|
575 }% |
|
576 \def\@wtryfc #1{% |
|
577 \global\setbox\@outputbox\vbox{\unvbox\@outputbox |
|
578 \box #1\vskip\@fpsep |
|
579 }% |
|
580 }% |
|
581 \def\@xtryfc#1#2{% |
|
582 \@next\reserved@a\@trylist{}{}% trim \@trylist. Ugly! |
|
583 \@currtype \count #2% |
|
584 \divide\@currtype\@xxxii\multiply\@currtype\@xxxii |
|
585 \@bitor \@currtype \@failedlist |
|
586 \@testfp #2% |
|
587 #1#2% |
|
588 \@ifdim{\ht #2>\@colht }{\@testtrue}{}% |
|
589 \@if@sw\if@test\fi{% |
|
590 \@cons\@failedlist #2% |
|
591 }{% |
|
592 \begingroup |
|
593 \gdef\@flsucceed{\@elt #2}% |
|
594 \global\let\@flfail\@empty |
|
595 \@tempdima\ht #2% |
|
596 \def \@elt {\@ztryfc#1}\@trylist |
|
597 \@ifdim{\@tempdima >\@fpmin}{% |
|
598 \global\@booleantrue\fcolmade@sw |
|
599 }{% |
|
600 \@cons\@failedlist #2% |
|
601 }% |
|
602 \endgroup |
|
603 \fcolmade@sw{% |
|
604 \let \@elt \@gobble |
|
605 }{}% |
|
606 }% |
|
607 }% |
|
608 \def\@ztryfc #1#2{% |
|
609 \@tempcnta \count#2% |
|
610 \divide\@tempcnta\@xxxii\multiply\@tempcnta\@xxxii |
|
611 \@bitor \@tempcnta {\@failedlist \@flfail}% |
|
612 \@testfp #2% |
|
613 #1#2% |
|
614 \@tempdimb\@tempdima |
|
615 \advance\@tempdimb \ht#2\advance\@tempdimb\@fpsep |
|
616 \@ifdim{\@tempdimb >\@colht}{% |
|
617 \@testtrue |
|
618 }{}% |
|
619 \@if@sw\if@test\fi{% |
|
620 \@cons\@flfail #2% |
|
621 }{% |
|
622 \@cons\@flsucceed #2% |
|
623 \@tempdima\@tempdimb |
|
624 }% |
|
625 }% |
|
626 \def\newpage@prep{% |
|
627 \if@noskipsec |
|
628 \ifx \@nodocument\relax |
|
629 \leavevmode |
|
630 \global \@noskipsecfalse |
|
631 \fi |
|
632 \fi |
|
633 \if@inlabel |
|
634 \leavevmode |
|
635 \global \@inlabelfalse |
|
636 \fi |
|
637 \if@nobreak \@nobreakfalse \everypar{}\fi |
|
638 \par |
|
639 }% |
|
640 \def \newpage {% |
|
641 \newpage@prep |
|
642 \do@output@MVL{% |
|
643 \vfil |
|
644 \penalty-\pagebreak@pen |
|
645 }% |
|
646 }% |
|
647 \def\clearpage{% |
|
648 \newpage@prep |
|
649 \do@output@MVL{% |
|
650 \vfil |
|
651 \penalty-\pagebreak@pen |
|
652 \global\@booleantrue\clearpage@sw |
|
653 \protect@penalty\do@startcolumn@pen |
|
654 \protect@penalty\do@endpage@pen |
|
655 }% |
|
656 \do@output@MVL{% |
|
657 \global\@booleanfalse\clearpage@sw |
|
658 }% |
|
659 }% |
|
660 \def\cleardoublepage{% |
|
661 \clearpage |
|
662 \@if@sw\if@twoside\fi{% |
|
663 \@ifodd\c@page{}{% |
|
664 \null\clearpage |
|
665 }% |
|
666 }{}% |
|
667 }% |
|
668 \@booleanfalse\clearpage@sw |
|
669 \mathchardef\do@endpage@pen=10007 |
|
670 \@namedef{output@-\the\do@endpage@pen}{% |
|
671 \csname end@column@\thepagegrid\endcsname |
|
672 }% |
|
673 \mathchardef\do@newpage@pen=10001 |
|
674 \expandafter\let\csname output@-\the\do@newpage@pen\endcsname\relax |
|
675 \def\@clearfloatplacement{% |
|
676 \global\@topnum \maxdimen % \c@topnumber |
|
677 \global\@toproom \maxdimen % \topfraction\@colht |
|
678 \global\@botnum \maxdimen % \c@bottomnumber |
|
679 \global\@botroom \maxdimen % \bottomfraction\@colht |
|
680 \global\@colnum \maxdimen % \c@totalnumber |
|
681 \global\@dbltopnum \maxdimen % \c@dbltopnumber |
|
682 \global\@dbltoproom \maxdimen % \dbltopfraction\@colht |
|
683 \global\@textmin \z@ % \@colht\advance \@textmin -\@dbltoproom |
|
684 \global\@fpmin \z@ % \dblfloatpagefraction\textheight |
|
685 \let\@testfp\@gobble |
|
686 \appdef\@setfloattypecounts{\@fpstype16\advance\@fpstype\m@ne}% |
|
687 }% |
|
688 \let\@doclearpage\@undefined |
|
689 \let\@makefcolumn\@undefined |
|
690 \def\clr@top@firstmark{% |
|
691 \global\let\saved@@topmark\@undefined |
|
692 \global\let\saved@@firstmark\@empty |
|
693 \global\let\saved@@botmark\@empty |
|
694 }% |
|
695 \clr@top@firstmark |
|
696 \def\set@top@firstmark{% |
|
697 \@ifxundefined\saved@@topmark{\expandafter\gdef\expandafter\saved@@topmark\expandafter{\@@topmark}}{}% |
|
698 \@if@empty\saved@@firstmark{\expandafter\gdef\expandafter\saved@@firstmark\expandafter{\@@firstmark}}{}% |
|
699 \@if@empty\@@botmark{}{\expandafter\gdef\expandafter\saved@@botmark\expandafter{\@@botmark}}% |
|
700 }% |
|
701 \appdef\@outputpage{% |
|
702 \clr@top@firstmark |
|
703 }% |
|
704 \def\@float#1{% |
|
705 \@ifnextchar[{%}]{%Brace-matching klootch |
|
706 \@yfloat\width@float{#1}% |
|
707 }{% |
|
708 \@ifxundefined@cs{fps@#1}{% |
|
709 \edef\reserved@a{\noexpand\@yfloat\noexpand\width@float{#1}[\csname fps@\endcsname]}\reserved@a |
|
710 }{% |
|
711 \edef\reserved@a{\noexpand\@yfloat\noexpand\width@float{#1}[\csname fps@#1\endcsname]}\reserved@a |
|
712 }% |
|
713 }% |
|
714 }% |
|
715 \def\@dblfloat#1{% |
|
716 \@ifnum{\pagegrid@col=\@ne}{% |
|
717 \@float{#1}% |
|
718 }{% |
|
719 \@ifnextchar[{%}]{%Brace-matching klootch |
|
720 \@yfloat\widthd@float{#1}% |
|
721 }{% |
|
722 \@ifxundefined@cs{fpsd@#1}{% |
|
723 \edef\reserved@a{\noexpand\@yfloat\noexpand\widthd@float{#1}[\csname fpsd@\endcsname]}\reserved@a |
|
724 }{% |
|
725 \edef\reserved@a{\noexpand\@yfloat\noexpand\widthd@float{#1}[\csname fpsd@#1\endcsname]}\reserved@a |
|
726 }% |
|
727 }% |
|
728 }% |
|
729 }% |
|
730 \def\@yfloat#1#2[#3]{% |
|
731 \@xfloat{#2}[#3]% |
|
732 \hsize#1\linewidth\hsize |
|
733 \minipagefootnote@init |
|
734 }% |
|
735 \def\fps@{tbp}% |
|
736 \def\fpsd@{tp}% |
|
737 \def\width@float{\columnwidth}% |
|
738 \def\widthd@float{\textwidth}% |
|
739 \def\end@float{% |
|
740 \end@@float{% |
|
741 \check@currbox@count |
|
742 }% |
|
743 }% |
|
744 \def\end@dblfloat{% |
|
745 \@ifnum{\pagegrid@col=\@ne}{% |
|
746 \end@float |
|
747 }{% |
|
748 \end@@float{% |
|
749 \@boxfpsbit\@currbox{1}\@ifodd\@tempcnta{\global\advance\count\@currbox\m@ne}{}% |
|
750 \@boxfpsbit\@currbox{4}\@ifodd\@tempcnta{\global\advance\count\@currbox-4\relax}{}% |
|
751 \global\wd\@currbox\textwidth % Klootch |
|
752 \check@currbox@count |
|
753 }% |
|
754 }% |
|
755 }% |
|
756 \def\end@@float#1{% |
|
757 \minipagefootnote@here |
|
758 \@endfloatbox |
|
759 #1% |
|
760 \@ifnum{\@floatpenalty <\z@}{% |
|
761 \@largefloatcheck |
|
762 \@cons\@currlist\@currbox |
|
763 \@ifnum{\@floatpenalty <-\@Mii}{% |
|
764 \do@output@cclv{\@add@float}% |
|
765 }{% |
|
766 \vadjust{\do@output@cclv{\@add@float}}% |
|
767 \@Esphack |
|
768 }% |
|
769 }{}% |
|
770 }% |
|
771 \def\check@currbox@count{% |
|
772 \@ifnum{\count\@currbox>\z@}{% |
|
773 \count@\count\@currbox\divide\count@\sixt@@n\multiply\count@\sixt@@n |
|
774 \@tempcnta\count\@currbox\advance\@tempcnta-\count@ |
|
775 \@ifnum{\@tempcnta=\z@}{% |
|
776 \ltxgrid@warn{Float cannot be placed}% |
|
777 }{}% |
|
778 }{% |
|
779 % Is a \marginpar |
|
780 }% |
|
781 }% |
|
782 \providecommand\minipagefootnote@init{}% |
|
783 \providecommand\minipagefootnote@here{}% |
|
784 \let\@specialoutput\@undefined |
|
785 \def\@add@float{% |
|
786 \@pageht\ht\@cclv\@pagedp\dp\@cclv |
|
787 \unvbox\@cclv |
|
788 \@next\@currbox\@currlist{% |
|
789 \csname @floatselect@sw@\thepagegrid\endcsname\@currbox{% |
|
790 \@ifnum{\count\@currbox>\z@}{% |
|
791 \advance \@pageht \@pagedp |
|
792 \advance \@pageht \vsize \advance \@pageht -\pagegoal % do not assume \holdinginserts is cleared! |
|
793 \@addtocurcol % Commit an h float |
|
794 }{% |
|
795 \@addmarginpar |
|
796 }% |
|
797 }{% |
|
798 \@resethfps |
|
799 \@cons\@deferlist\@currbox |
|
800 }% |
|
801 }{\@latexbug}% |
|
802 \@ifnum{\outputpenalty<\z@}{% |
|
803 \@if@sw\if@nobreak\fi{% |
|
804 \nobreak |
|
805 }{% |
|
806 \addpenalty \interlinepenalty |
|
807 }% |
|
808 }{}% |
|
809 \set@vsize |
|
810 }% |
|
811 \let\@reinserts\@undefined |
|
812 \def \@addtocurcol {% |
|
813 \@insertfalse |
|
814 \@setfloattypecounts |
|
815 \ifnum \@fpstype=8 |
|
816 \else |
|
817 \ifnum \@fpstype=24 |
|
818 \else |
|
819 \@flsettextmin |
|
820 \advance \@textmin \@textfloatsheight |
|
821 \@reqcolroom \@pageht |
|
822 \ifdim \@textmin>\@reqcolroom |
|
823 \@reqcolroom \@textmin |
|
824 \fi |
|
825 \advance \@reqcolroom \ht\@currbox |
|
826 \ifdim \@colroom>\@reqcolroom |
|
827 \@flsetnum \@colnum |
|
828 \ifnum \@colnum>\z@ |
|
829 \@bitor\@currtype\@deferlist |
|
830 \if@test |
|
831 \else |
|
832 \@bitor\@currtype\@botlist |
|
833 \if@test |
|
834 \@addtobot |
|
835 \else |
|
836 \ifodd \count\@currbox |
|
837 \advance \@reqcolroom \intextsep |
|
838 \ifdim \@colroom>\@reqcolroom |
|
839 \global \advance \@colnum \m@ne |
|
840 \global \advance \@textfloatsheight \ht\@currbox |
|
841 \global \advance \@textfloatsheight 2\intextsep |
|
842 \@cons \@midlist \@currbox |
|
843 \if@nobreak |
|
844 \nobreak |
|
845 \@nobreakfalse |
|
846 \everypar{}% |
|
847 \else |
|
848 \addpenalty \interlinepenalty |
|
849 \fi |
|
850 \vskip \intextsep |
|
851 \unvbox\@currbox %AO |
|
852 \penalty\interlinepenalty |
|
853 \vskip\intextsep |
|
854 \ifnum\outputpenalty <-\@Mii \vskip -\parskip\fi |
|
855 \outputpenalty \z@ |
|
856 \@inserttrue |
|
857 \fi |
|
858 \fi |
|
859 \if@insert |
|
860 \else |
|
861 \@addtotoporbot |
|
862 \fi |
|
863 \fi |
|
864 \fi |
|
865 \fi |
|
866 \fi |
|
867 \fi |
|
868 \fi |
|
869 \if@insert |
|
870 \else |
|
871 \@resethfps |
|
872 \@cons\@deferlist\@currbox |
|
873 \fi |
|
874 }% |
|
875 \@twocolumnfalse |
|
876 \let\@twocolumntrue\@twocolumnfalse |
|
877 \def\@addmarginpar{% |
|
878 \@next\@marbox\@currlist{% |
|
879 \@cons\@freelist\@marbox\@cons\@freelist\@currbox |
|
880 }\@latexbug |
|
881 \setbox\@marbox\hb@xt@\columnwidth{% |
|
882 \csname @addmarginpar@\thepagegrid\endcsname{% |
|
883 \hskip-\marginparsep\hskip-\marginparwidth |
|
884 \box\@currbox |
|
885 }{% |
|
886 \hskip\columnwidth\hskip\marginparsep |
|
887 \box\@marbox |
|
888 }% |
|
889 \hss |
|
890 }% |
|
891 \setbox\z@\box\@currbox |
|
892 \@tempdima\@mparbottom |
|
893 \advance\@tempdima -\@pageht |
|
894 \advance\@tempdima\ht\@marbox |
|
895 \@ifdim{\@tempdima >\z@}{% |
|
896 \@latex@warning@no@line {Marginpar on page \thepage\space moved}% |
|
897 }{% |
|
898 \@tempdima\z@ |
|
899 }% |
|
900 \global\@mparbottom\@pageht |
|
901 \global\advance\@mparbottom\@tempdima |
|
902 \global\advance\@mparbottom\dp\@marbox |
|
903 \global\advance\@mparbottom\marginparpush |
|
904 \advance\@tempdima -\ht\@marbox |
|
905 \global\setbox \@marbox |
|
906 \vbox {\vskip \@tempdima |
|
907 \box \@marbox}% |
|
908 \global \ht\@marbox \z@ |
|
909 \global \dp\@marbox \z@ |
|
910 \kern -\@pagedp |
|
911 \nointerlineskip |
|
912 \box\@marbox |
|
913 \nointerlineskip |
|
914 \hbox{\vrule \@height\z@ \@width\z@ \@depth\@pagedp}% |
|
915 }% |
|
916 \newenvironment{turnpage}{% |
|
917 \def\width@float{\textheight}% |
|
918 \def\widthd@float{\textheight}% |
|
919 \appdef\@endfloatbox{% |
|
920 \@ifxundefined\@currbox{% |
|
921 \ltxgrid@warn{Cannot rotate! Not a float}% |
|
922 }{% |
|
923 \setbox\@currbox\vbox to\textwidth{\vfil\unvbox\@currbox\vfil}% |
|
924 \global\setbox\@currbox\vbox{\rotatebox{90}{\box\@currbox}}% |
|
925 }% |
|
926 }% |
|
927 }{% |
|
928 }% |
|
929 \def\rotatebox@dummy#1#2{% |
|
930 \ltxgrid@warn{You must load the graphics or graphicx package in order to use the turnpage environment}% |
|
931 #2% |
|
932 }% |
|
933 \AtBeginDocument{% |
|
934 \@ifxundefined\rotatebox{\let\rotatebox\rotatebox@dummy}{}% |
|
935 }% |
|
936 \@namedef{output@-1073741824}{%"40000000 |
|
937 \deadcycles\z@ |
|
938 \setbox\z@\box\@cclv |
|
939 }% |
|
940 \mathchardef\save@column@pen=10016 |
|
941 \@namedef{output@-\the\save@column@pen}{\save@column}% |
|
942 \let \@cclv@saved \@holdpg |
|
943 \let \@holdpg \@undefined |
|
944 \def\save@column{% |
|
945 \@ifvoid\@cclv@saved{% |
|
946 \set@top@firstmark |
|
947 \global\@topmark@saved\expandafter{\@@topmark}% |
|
948 }{}% |
|
949 \global\setbox\@cclv@saved\vbox{% |
|
950 \@ifvoid\@cclv@saved{}{% |
|
951 \unvbox\@cclv@saved |
|
952 \marry@baselines |
|
953 }% |
|
954 \unvbox\@cclv |
|
955 \lose@breaks |
|
956 \setbox\z@\lastbox |
|
957 }% |
|
958 }% |
|
959 \newtoks\@topmark@saved |
|
960 \def\prep@cclv{% |
|
961 \setbox\z@\box\@cclv |
|
962 \setbox\@cclv\box\@cclv@saved |
|
963 \vbadness\@M |
|
964 }% |
|
965 \mathchardef\save@column@insert@pen=10017 |
|
966 \@namedef{output@-\the\save@column@insert@pen}{\toggle@insert\savecolumn@holding\savecolumn@moving}% |
|
967 \def\savecolumn@holding{% |
|
968 \@if@exceed@pagegoal{\unvcopy\@cclv\setbox\z@\lastbox}{% |
|
969 \setbox\z@\vbox{\unvcopy\@cclv\setbox\z@\lastbox}% |
|
970 \outputdebug@sw{{\tracingall\scrollmode\showbox\z@}}{}% |
|
971 \dimen@\ht\@cclv\advance\dimen@-\ht\z@ |
|
972 \dead@cycle@repair@protected\dimen@ |
|
973 }{% |
|
974 \dead@cycle |
|
975 }% |
|
976 }% |
|
977 \def\savecolumn@moving{% |
|
978 \@cclv@nontrivial@sw{% |
|
979 \save@column |
|
980 }{% |
|
981 {\setbox\z@\box\@cclv}% |
|
982 }% |
|
983 \@ifvoid\footins{}{% |
|
984 \outputdebug@sw{{\tracingall\scrollmode\showbox\footins}}{}% |
|
985 \global\setbox\footins@saved\vbox{\unvbox\footins@saved\marry@baselines\unvbox\footins}% |
|
986 \protect@penalty\save@column@insert@pen |
|
987 }% |
|
988 }% |
|
989 \newbox\footins@saved |
|
990 \mathchardef\save@message@pen=10018 |
|
991 \@namedef{output@-\the\save@message@pen}{\save@message}% |
|
992 \def\save@message{% |
|
993 \setbox\z@\box\@cclv %FIXME: what if \box\@cclv is not empty? |
|
994 \toks@\expandafter{\@@firstmark}% |
|
995 \expandafter\gdef\expandafter\@message@saved\expandafter{\the\toks@}% |
|
996 \expandafter\do@@mark\expandafter{\the\@topmark@saved}% |
|
997 }% |
|
998 \gdef\@message@saved{}% |
|
999 \mathchardef\execute@message@pen=10019 |
|
1000 \@namedef{output@-\the\execute@message@pen}{\@message@saved}% |
|
1001 \def\execute@message{% |
|
1002 \@execute@message\save@column@pen %Implicit #2 |
|
1003 }% |
|
1004 \def\execute@message@insert#1{% |
|
1005 \@execute@message\save@column@insert@pen{\setbox\footins\box\footins@saved#1}% |
|
1006 }% |
|
1007 \long\def\@execute@message#1#2{% |
|
1008 \begingroup |
|
1009 \dimen@\prevdepth\@ifdim{\dimen@<\z@}{\dimen@\z@}{}% |
|
1010 \setbox\z@\vbox{% |
|
1011 \protect@penalty#1% |
|
1012 \protection@box |
|
1013 \toks@{\prep@cclv#2}% |
|
1014 \@@mark{\the\toks@}% |
|
1015 \penalty-\save@message@pen |
|
1016 \setbox\z@\null\dp\z@\dimen@\ht\z@-\dimen@ |
|
1017 \nointerlineskip\box\z@ |
|
1018 \penalty-\execute@message@pen |
|
1019 }\unvbox\z@ |
|
1020 \endgroup |
|
1021 }% |
|
1022 \def\do@output@cclv{\execute@message}% |
|
1023 \def\do@output@MVL#1{% |
|
1024 \@ifvmode{% |
|
1025 \begingroup\execute@message{\unvbox\@cclv#1}\endgroup |
|
1026 }{% |
|
1027 \@ifhmode{% |
|
1028 \vadjust{\execute@message{\unvbox\@cclv#1}}% |
|
1029 }{% |
|
1030 \@latexerr{\string\do@output@MVL\space cannot be executed in this mode!}\@eha |
|
1031 }% |
|
1032 }% |
|
1033 }% |
|
1034 \def\lose@breaks{% |
|
1035 \loopwhile{% |
|
1036 \count@\lastpenalty |
|
1037 \@ifnum{\count@=\@M}{% 10000 is a TeX magic number! |
|
1038 \unpenalty\true@sw |
|
1039 }{% |
|
1040 \false@sw |
|
1041 }% |
|
1042 }% |
|
1043 }% |
|
1044 \def\removestuff{\do@output@MVL{\unskip\unpenalty}}% |
|
1045 \def\removephantombox{% |
|
1046 \vadjust{% |
|
1047 \execute@message{% |
|
1048 \unvbox\@cclv |
|
1049 \setbox\z@\lastbox |
|
1050 \unskip |
|
1051 \unskip |
|
1052 \unpenalty |
|
1053 \penalty\predisplaypenalty |
|
1054 \vskip\abovedisplayskip |
|
1055 }% |
|
1056 }% |
|
1057 }% |
|
1058 \def\addstuff#1#2{\edef\@tempa{\noexpand\do@output@MVL{\noexpand\@addstuff{#1}{#2}}}\@tempa}% |
|
1059 \def\@addstuff#1#2{% |
|
1060 \skip@\lastskip\unskip |
|
1061 \count@\lastpenalty\unpenalty |
|
1062 \@if@empty{#1}{}{\penalty#1\relax}% |
|
1063 \@ifnum{\count@=\z@}{}{\penalty\count@}% |
|
1064 \vskip\skip@ |
|
1065 \@if@empty{#2}{}{\vskip#2\relax}% |
|
1066 }% |
|
1067 \def\replacestuff#1#2{\edef\@tempa{\noexpand\do@output@MVL{\noexpand\@replacestuff{#1}{#2}}}\@tempa}% |
|
1068 \def\@replacestuff#1#2{% |
|
1069 \skip@\lastskip\unskip |
|
1070 \count@\lastpenalty\unpenalty |
|
1071 \@if@empty{#1}{}{% |
|
1072 \@ifnum{\count@>\@M}{}{% |
|
1073 \@ifnum{\count@=\z@}{\count@=#1\relax}{% |
|
1074 \@ifnum{\count@<#1\relax}{}{% |
|
1075 \count@=#1\relax |
|
1076 }% |
|
1077 }% |
|
1078 }% |
|
1079 }% |
|
1080 \@ifnum{\count@=\z@}{}{\penalty\count@}% |
|
1081 \@if@empty{#2}{}{% |
|
1082 \@tempskipa#2\relax |
|
1083 \@ifdim{\z@>\@tempskipa}{% |
|
1084 \advance\skip@-\@tempskipa |
|
1085 }{% |
|
1086 \@ifdim{\skip@>\@tempskipa}{}{% |
|
1087 \skip@\@tempskipa |
|
1088 }% |
|
1089 }% |
|
1090 }% |
|
1091 \vskip\skip@ |
|
1092 }% |
|
1093 \def\move@insertions{\global\holdinginserts\z@}% |
|
1094 \def\hold@insertions{\global\holdinginserts\@ne}% |
|
1095 \hold@insertions |
|
1096 \def\move@insert@sw{\@ifnum{\holdinginserts=\z@}}% |
|
1097 \def\toggle@insert#1#2{% |
|
1098 \@ifnum{\holdinginserts=\z@}{\hold@insertions#2}{\move@insertions#1}% |
|
1099 }% |
|
1100 \def\do@columngrid#1#2{% |
|
1101 \par |
|
1102 \expandafter\let\expandafter\@tempa\csname open@column@#1\endcsname |
|
1103 \@ifx{\relax\@tempa}{% |
|
1104 \ltxgrid@warn{Unknown page grid #1. No action taken}% |
|
1105 }{% |
|
1106 \do@output@MVL{\start@column{#1}{#2}}% |
|
1107 }% |
|
1108 }% |
|
1109 \def\start@column#1#2{% |
|
1110 \def\@tempa{#1}\@ifx{\@tempa\thepagegrid}{% |
|
1111 \ltxgrid@info{Already in page grid \thepagegrid. No action taken}% |
|
1112 }{% |
|
1113 \expandafter\execute@message@insert |
|
1114 \expandafter{% |
|
1115 \csname shut@column@\thepagegrid\expandafter\endcsname |
|
1116 \csname open@column@#1\endcsname{#2}% |
|
1117 \set@vsize |
|
1118 }% |
|
1119 }% |
|
1120 }% |
|
1121 \def\thepagegrid{one}% |
|
1122 \newbox\pagesofar |
|
1123 \newbox\footbox |
|
1124 \newcommand\onecolumngrid{\do@columngrid{one}{\@ne}}% |
|
1125 \let\onecolumn\@undefined |
|
1126 \def\open@column@one#1{% |
|
1127 \unvbox\pagesofar |
|
1128 \gdef\thepagegrid{one}% |
|
1129 \global\pagegrid@col#1% |
|
1130 \global\pagegrid@cur\@ne |
|
1131 \set@colht |
|
1132 \set@column@hsize\pagegrid@col |
|
1133 }% |
|
1134 \def\shut@column@one{% |
|
1135 \@makecol |
|
1136 \global\setbox\pagesofar\vbox{\unvbox\@outputbox\recover@footins}% |
|
1137 \set@colht |
|
1138 }% |
|
1139 \def\float@column@one{% |
|
1140 \@makecol |
|
1141 \@outputpage |
|
1142 }% |
|
1143 \def\end@column@one{% |
|
1144 \unvbox\@cclv\setbox\z@\lastbox |
|
1145 \protect@penalty\do@newpage@pen |
|
1146 }% |
|
1147 \def\output@column@one{% |
|
1148 \@outputpage |
|
1149 }% |
|
1150 \def\@addmarginpar@one{% |
|
1151 \@if@sw\if@mparswitch\fi{% |
|
1152 \@ifodd\c@page{\false@sw}{\true@sw}% |
|
1153 }{\false@sw}{% |
|
1154 \@if@sw\if@reversemargin\fi{\false@sw}{\true@sw}% |
|
1155 }{% |
|
1156 \@if@sw\if@reversemargin\fi{\true@sw}{\false@sw}% |
|
1157 }% |
|
1158 }% |
|
1159 \def\@floatselect@sw@one#1{\true@sw}% |
|
1160 \def\onecolumngrid@push{% |
|
1161 \do@output@MVL{% |
|
1162 \@ifnum{\pagegrid@col=\@ne}{% |
|
1163 \global\let\restorecolumngrid\@empty |
|
1164 }{% |
|
1165 \xdef\restorecolumngrid{% |
|
1166 \noexpand\start@column{\thepagegrid}{\the\pagegrid@col}% |
|
1167 }% |
|
1168 \start@column{one}{\@ne}% |
|
1169 }% |
|
1170 }% |
|
1171 }% |
|
1172 \def\onecolumngrid@pop{% |
|
1173 \do@output@MVL{\restorecolumngrid}% |
|
1174 }% |
|
1175 \newcommand\twocolumngrid{\do@columngrid{mlt}{\tw@}}% |
|
1176 \let\twocolumn\@undefined |
|
1177 \let\@topnewpage\@undefined |
|
1178 \def\open@column@mlt#1{% |
|
1179 \gdef\thepagegrid{mlt}% |
|
1180 \global\pagegrid@col#1% |
|
1181 \global\pagegrid@cur\@ne |
|
1182 \set@column@hsize\pagegrid@col |
|
1183 \set@colht |
|
1184 }% |
|
1185 \def\shut@column@mlt{% |
|
1186 \@cclv@nontrivial@sw{% |
|
1187 \@makecol |
|
1188 \@ifnum{\pagegrid@cur<\pagegrid@col}{% |
|
1189 \expandafter\global\expandafter\setbox\csname col@\the\pagegrid@cur\endcsname\box\@outputbox |
|
1190 \global\advance\pagegrid@cur\@ne |
|
1191 }{}% |
|
1192 }{% |
|
1193 {\setbox\z@\box\@cclv}% |
|
1194 }% |
|
1195 \@ifnum{\pagegrid@cur>\@ne}{% |
|
1196 \csname balance@\the\pagegrid@col\endcsname |
|
1197 \grid@column{}% |
|
1198 \@combinepage |
|
1199 \@combinedblfloats |
|
1200 \global\setbox\pagesofar\box\@outputbox |
|
1201 }{}% |
|
1202 \set@colht |
|
1203 }% |
|
1204 \def\float@column@mlt{% |
|
1205 \@combinepage |
|
1206 \@combinedblfloats |
|
1207 \@outputpage |
|
1208 \global\pagegrid@cur\@ne |
|
1209 \protect@penalty\do@startpage@pen |
|
1210 }% |
|
1211 \def\end@column@mlt{% |
|
1212 \@ifx@empty\@toplist{% |
|
1213 \@ifx@empty\@botlist{% |
|
1214 \@ifx@empty\@dbltoplist{% |
|
1215 \@ifx@empty\@deferlist{% |
|
1216 \@ifnum{\pagegrid@cur=\@ne}{% |
|
1217 \false@sw |
|
1218 }{% |
|
1219 \true@sw |
|
1220 }% |
|
1221 }{% |
|
1222 \true@sw |
|
1223 }% |
|
1224 }{% |
|
1225 \true@sw |
|
1226 }% |
|
1227 }{% |
|
1228 \true@sw |
|
1229 }% |
|
1230 }{% |
|
1231 \true@sw |
|
1232 }% |
|
1233 % true = kick out a column and try again |
|
1234 {% |
|
1235 \@cclv@nontrivial@sw{% |
|
1236 \unvbox\@cclv\setbox\z@\lastbox |
|
1237 }{% |
|
1238 \unvbox\@cclv\setbox\z@\lastbox\unskip\null |
|
1239 }% |
|
1240 \protect@penalty\do@newpage@pen |
|
1241 \protect@penalty\do@endpage@pen |
|
1242 }{% |
|
1243 \unvbox\@cclv\setbox\z@\lastbox |
|
1244 }% |
|
1245 }% |
|
1246 \def\output@column@mlt{% |
|
1247 \@ifnum{\pagegrid@cur<\pagegrid@col}{% |
|
1248 \expandafter\global\expandafter\setbox\csname col@\the\pagegrid@cur\endcsname\box\@outputbox |
|
1249 \global\advance\pagegrid@cur\@ne |
|
1250 }{% |
|
1251 \set@adj@colht\dimen@ |
|
1252 \grid@column{}%{\dimen@}% |
|
1253 \@combinepage |
|
1254 \@combinedblfloats |
|
1255 \@outputpage |
|
1256 \global\pagegrid@cur\@ne |
|
1257 \protect@penalty\do@startpage@pen |
|
1258 }% |
|
1259 }% |
|
1260 \let\@outputdblcol\@undefined |
|
1261 \def\@floatselect@sw@mlt#1{\@if@notdblfloat{#1}}% |
|
1262 \def\@addmarginpar@mlt{% emits a boolean |
|
1263 \@ifnum{\pagegrid@cur=\@ne}% |
|
1264 }% |
|
1265 \let\pagegrid@cur\col@number |
|
1266 \let\col@number\@undefined |
|
1267 \newcount\pagegrid@col |
|
1268 \pagegrid@cur\@ne |
|
1269 \expandafter\let\csname col@\the\pagegrid@cur\endcsname\@leftcolumn |
|
1270 \let\@leftcolumn\@undefined |
|
1271 \pagegrid@col\tw@ |
|
1272 \def\pagegrid@init{% |
|
1273 \advance\pagegrid@cur\@ne |
|
1274 \@ifnum{\pagegrid@cur<\pagegrid@col}{% |
|
1275 \csname newbox\expandafter\endcsname\csname col@\the\pagegrid@cur\endcsname |
|
1276 \pagegrid@init |
|
1277 }{% |
|
1278 }% |
|
1279 }% |
|
1280 \appdef\class@documenthook{% |
|
1281 \pagegrid@init |
|
1282 }% |
|
1283 \def\grid@column#1{% |
|
1284 \global\setbox\@outputbox\vbox{% |
|
1285 \hb@xt@\textwidth{% |
|
1286 \vrule\@height\z@\@width\z@\@if@empty{#1}{}{\@depth#1}% |
|
1287 \pagegrid@cur\@ne |
|
1288 \append@column |
|
1289 \box@column\@outputbox |
|
1290 }% |
|
1291 \vskip\z@skip % FIXME: page depth! |
|
1292 }% |
|
1293 }% |
|
1294 \def\append@column{% |
|
1295 \@ifnum{\pagegrid@cur<\pagegrid@col}{% |
|
1296 \expandafter\box@column\csname col@\the\pagegrid@cur\endcsname |
|
1297 \hfil |
|
1298 \vrule \@width\columnseprule |
|
1299 \hfil |
|
1300 \advance\pagegrid@cur\@ne |
|
1301 \append@column |
|
1302 }{% |
|
1303 }% |
|
1304 }% |
|
1305 \def\box@column#1{% |
|
1306 \raise\topskip |
|
1307 \hb@xt@\columnwidth{% |
|
1308 \dimen@\ht#1\@ifdim{\dimen@>\@colht}{\dimen@\@colht}{}% |
|
1309 \count@\vbadness\vbadness\@M |
|
1310 \dimen@ii\vfuzz\vfuzz\maxdimen |
|
1311 \outputdebug@sw{\saythe\@colht\saythe\dimen@}{}% |
|
1312 \vtop to\dimen@ |
|
1313 {\hrule\@height\z@ |
|
1314 \unvbox#1% |
|
1315 \raggedcolumn@skip |
|
1316 }% |
|
1317 \vfuzz\dimen@ii |
|
1318 \vbadness\count@ |
|
1319 \hss |
|
1320 }% |
|
1321 }% |
|
1322 \def\marry@baselines{% |
|
1323 \vskip\marry@skip\relax |
|
1324 }% |
|
1325 \gdef\marry@skip{\z@skip}% |
|
1326 \def\set@marry@skip{% |
|
1327 \begingroup |
|
1328 \skip@\baselineskip\advance\skip@-\topskip |
|
1329 \@ifdim{\skip@>\z@}{% |
|
1330 \xdef\marry@skip{\the\skip@}% |
|
1331 }{}% |
|
1332 \endgroup |
|
1333 }% |
|
1334 \AtBeginDocument{% |
|
1335 \@ifxundefined\raggedcolumn@sw{\@booleanfalse\raggedcolumn@sw}{}% |
|
1336 }% |
|
1337 \def\raggedcolumn@skip{% |
|
1338 \vskip\z@\raggedcolumn@sw{\@plus.0001fil\@minus.0001fil}{}\relax |
|
1339 }% |
|
1340 \def\@combinepage{% |
|
1341 \@ifvoid\pagesofar{}{% |
|
1342 \setbox\@outputbox\vbox{% |
|
1343 \unvbox\pagesofar |
|
1344 \marry@baselines |
|
1345 \unvbox\@outputbox |
|
1346 }% |
|
1347 }% |
|
1348 \@ifvoid\footbox{}{% |
|
1349 \setbox\@outputbox\vbox{% |
|
1350 \unvbox\@outputbox |
|
1351 \marry@baselines |
|
1352 \unvbox\footbox |
|
1353 }% |
|
1354 }% |
|
1355 }% |
|
1356 \def\@combinedblfloats{% |
|
1357 \@ifx@empty\@dbltoplist{}{% |
|
1358 \setbox\@tempboxa\vbox{}% |
|
1359 \let\@elt\@comdblflelt\@dbltoplist |
|
1360 \let\@elt\relax\xdef\@freelist{\@freelist\@dbltoplist}% |
|
1361 \global\let\@dbltoplist\@empty |
|
1362 \setbox\@outputbox\vbox{% |
|
1363 %\boxmaxdepth\maxdepth %% probably not needed, CAR |
|
1364 \unvbox\@tempboxa\unskip |
|
1365 \@ifnum{\@dbltopnum>\m@ne}{\dblfigrule}{}%FIXME: how is \@dbltopnum maintained? |
|
1366 \vskip\dbltextfloatsep |
|
1367 \unvbox\@outputbox |
|
1368 }% |
|
1369 }% |
|
1370 }% |
|
1371 \def\set@column@hsize#1{% |
|
1372 \pagegrid@col#1% |
|
1373 \global\columnwidth\textwidth |
|
1374 \global\advance\columnwidth\columnsep |
|
1375 \global\divide\columnwidth\pagegrid@col |
|
1376 \global\advance\columnwidth-\columnsep |
|
1377 \global\hsize\columnwidth |
|
1378 \global\linewidth\columnwidth |
|
1379 \skip@\baselineskip\advance\skip@-\topskip |
|
1380 \@ifnum{\pagegrid@col>\@ne}{\set@marry@skip}{}% |
|
1381 }% |
|
1382 \def\set@colht{% |
|
1383 \set@adj@textheight\@colht |
|
1384 \global\let\enlarge@colroom\@empty |
|
1385 \set@colroom |
|
1386 }% |
|
1387 \def\set@adj@textheight#1{% |
|
1388 #1\textheight |
|
1389 \def\@elt{\adj@page#1}% |
|
1390 \@booleantrue\firsttime@sw\@dbltoplist |
|
1391 \let\@elt\relax |
|
1392 \global#1#1\relax |
|
1393 \outputdebug@sw{\saythe#1}{}% |
|
1394 }% |
|
1395 \def\set@colroom{% |
|
1396 \set@adj@colht\@colroom |
|
1397 \@if@empty\enlarge@colroom{}{% |
|
1398 \global\advance\@colroom\enlarge@colroom\relax |
|
1399 }% |
|
1400 \outputdebug@sw{\saythe\@colroom}{}% |
|
1401 \@ifdim{\@colroom>\topskip}{}{% |
|
1402 \ltxgrid@info{Not enough room: \string\@colroom=\the\@colroom; increasing to \the\topskip}% |
|
1403 \@colroom\topskip |
|
1404 }% |
|
1405 \global\@colroom\@colroom |
|
1406 \set@vsize |
|
1407 }% |
|
1408 \def\set@vsize{% |
|
1409 \global\vsize\@colroom |
|
1410 \outputdebug@sw{\saythe\vsize}{}% |
|
1411 }% |
|
1412 \def\set@adj@colht#1{% |
|
1413 #1\@colht |
|
1414 \@ifvoid\pagesofar{}{% |
|
1415 \advance#1-\ht\pagesofar\advance#1-\dp\pagesofar |
|
1416 }% |
|
1417 \@ifvoid\footbox{}{% |
|
1418 \advance#1-\ht\footbox\advance#1-\dp\footbox |
|
1419 }% |
|
1420 \def\@elt{\adj@column#1}% |
|
1421 \@booleantrue\firsttime@sw\@toplist |
|
1422 \@booleantrue\firsttime@sw\@botlist |
|
1423 \let\@elt\relax |
|
1424 \outputdebug@sw{\saythe#1}{}% |
|
1425 }% |
|
1426 \def\adj@column#1#2{% |
|
1427 \advance#1-\ht#2% |
|
1428 \advance#1-\firsttime@sw{\textfloatsep\@booleanfalse\firsttime@sw}{\floatsep}% |
|
1429 }% |
|
1430 \def\adj@page#1#2{% |
|
1431 \advance#1-\ht#2% |
|
1432 \advance#1-\firsttime@sw{\dbltextfloatsep\@booleanfalse\firsttime@sw}{\dblfloatsep}% |
|
1433 }% |
|
1434 \appdef\@outputpage{% |
|
1435 \set@colht % FIXME: needed? |
|
1436 \@floatplacement % FIXME: needed? |
|
1437 \@dblfloatplacement % FIXME: needed? |
|
1438 }% |
|
1439 \@namedef{balance@2}{% |
|
1440 \expandafter\balance@two\csname col@1\endcsname\@outputbox |
|
1441 % Avoid a bug by preventing a restore when leaving this group |
|
1442 \global\setbox\csname col@1\endcsname\box\csname col@1\endcsname |
|
1443 \@ifvoid\footbox{}{% |
|
1444 \global\setbox\footbox\vbox{% |
|
1445 \setbox\z@\box\@tempboxa |
|
1446 \let\recover@footins\relax |
|
1447 \balance@two\footbox\@tempboxa |
|
1448 \hb@xt@\textwidth{\box\footbox\hfil\box\@tempboxa}% |
|
1449 }% |
|
1450 }% |
|
1451 }% |
|
1452 \def\balance@two#1#2{% |
|
1453 \outputdebug@sw{{\tracingall\scrollmode\showbox#1\showbox#2}}{}% |
|
1454 \setbox\@ne\vbox{% |
|
1455 \@ifvoid#1{}{% |
|
1456 \unvcopy#1\recover@footins |
|
1457 \@ifvoid#2{}{\marry@baselines}% |
|
1458 }% |
|
1459 \@ifvoid#2{}{% |
|
1460 \unvcopy#2\recover@footins |
|
1461 }% |
|
1462 }% |
|
1463 \dimen@\ht\@ne\divide\dimen@\tw@ |
|
1464 \dimen@i\dimen@ |
|
1465 \vbadness\@M |
|
1466 \vfuzz\maxdimen |
|
1467 \loopwhile{% |
|
1468 \dimen@i=.5\dimen@i |
|
1469 \outputdebug@sw{\saythe\dimen@\saythe\dimen@i\saythe\dimen@ii}{}% |
|
1470 \setbox\z@\copy\@ne\setbox\tw@\vsplit\z@ to\dimen@ |
|
1471 \setbox\z@ \vbox{% |
|
1472 \unvcopy\z@ |
|
1473 \setbox\z@\vbox{\unvbox\z@ \setbox\z@\lastbox\aftergroup\vskip\aftergroup-\expandafter}\the\dp\z@\relax |
|
1474 }% |
|
1475 \setbox\tw@\vbox{% |
|
1476 \unvcopy\tw@ |
|
1477 \setbox\z@\vbox{\unvbox\tw@\setbox\z@\lastbox\aftergroup\vskip\aftergroup-\expandafter}\the\dp\z@\relax |
|
1478 }% |
|
1479 \dimen@ii\ht\tw@\advance\dimen@ii-\ht\z@ |
|
1480 \@ifdim{\dimen@i>.5\p@}{% |
|
1481 \advance\dimen@\@ifdim{\dimen@ii<\z@}{}{-}\dimen@i |
|
1482 \true@sw |
|
1483 }{% |
|
1484 \@ifdim{\dimen@ii<\z@}{% |
|
1485 \advance\dimen@\tw@\dimen@i |
|
1486 \true@sw |
|
1487 }{% |
|
1488 \false@sw |
|
1489 }% |
|
1490 }% |
|
1491 }% |
|
1492 \outputdebug@sw{\saythe\dimen@\saythe\dimen@i\saythe\dimen@ii}{}% |
|
1493 \@ifdim{\ht\z@=\z@}{% |
|
1494 \@ifdim{\ht\tw@=\z@}{% |
|
1495 \true@sw |
|
1496 }{% |
|
1497 \false@sw |
|
1498 }% |
|
1499 }{% |
|
1500 \true@sw |
|
1501 }% |
|
1502 {% |
|
1503 }{% |
|
1504 \ltxgrid@info{Unsatifactorily balanced columns: giving up}% |
|
1505 \setbox\tw@\box#1% |
|
1506 \setbox\z@ \box#2% |
|
1507 }% |
|
1508 \setbox\tw@\vbox{\unvbox\tw@\vskip\z@skip}% |
|
1509 \setbox\z@ \vbox{\unvbox\z@ \vskip\z@skip}% |
|
1510 \set@colroom |
|
1511 \dimen@\ht\z@\@ifdim{\dimen@<\ht\tw@}{\dimen@\ht\tw@}{}% |
|
1512 \@ifdim{\dimen@>\@colroom}{\dimen@\@colroom}{}% |
|
1513 \outputdebug@sw{\saythe{\ht\z@}\saythe{\ht\tw@}\saythe\@colroom\saythe\dimen@}{}% |
|
1514 \setbox#1\vbox to\dimen@{\unvbox\tw@\unskip\raggedcolumn@skip}% |
|
1515 \setbox#2\vbox to\dimen@{\unvbox\z@ \unskip\raggedcolumn@skip}% |
|
1516 \outputdebug@sw{{\tracingall\scrollmode\showbox#1\showbox#2}}{}% |
|
1517 }% |
|
1518 \def\recover@footins{% |
|
1519 \skip\z@ \lastskip\unskip |
|
1520 \skip\@ne\lastskip\unskip |
|
1521 \setbox\z@\lastbox |
|
1522 \@ifvbox\z@{% |
|
1523 \setbox\z@\vbox{% |
|
1524 \unvbox\z@ |
|
1525 \setbox\z@\lastbox |
|
1526 \@ifvoid\z@{}{% |
|
1527 \global\setbox\footbox\vbox{% |
|
1528 \unvbox\footbox |
|
1529 \@ifvbox\z@{% |
|
1530 \unvbox\z@ |
|
1531 }{% |
|
1532 \box\z@ |
|
1533 }% |
|
1534 }% |
|
1535 }% |
|
1536 }% |
|
1537 }{}% |
|
1538 \outputdebug@sw{{\tracingall\scrollmode\showbox\footbox}}{}% |
|
1539 }% |
|
1540 \prepdef\@begindocumenthook{% |
|
1541 \open@column@one\@ne |
|
1542 \set@colht |
|
1543 \@floatplacement |
|
1544 \@dblfloatplacement |
|
1545 }% |
|
1546 \def\longtable@longtable{% |
|
1547 \par |
|
1548 \ifx\multicols\@undefined\else\ifnum\col@number>\@ne\@twocolumntrue\fi\fi |
|
1549 \if@twocolumn\LT@err{longtable not in 1-column mode}\@ehc\fi |
|
1550 \begingroup |
|
1551 \@ifnextchar[\LT@array{\LT@array[x]}% |
|
1552 }% |
|
1553 \def\longtable@new{% |
|
1554 \par |
|
1555 \@ifnextchar[\LT@array{\LT@array[x]}% |
|
1556 }% |
|
1557 \def\endlongtable@longtable{% |
|
1558 \crcr |
|
1559 \noalign{% |
|
1560 \let\LT@entry\LT@entry@chop |
|
1561 \xdef\LT@save@row{\LT@save@row}}% |
|
1562 \LT@echunk |
|
1563 \LT@start |
|
1564 \unvbox\z@ |
|
1565 \LT@get@widths |
|
1566 \if@filesw |
|
1567 {\let\LT@entry\LT@entry@write\immediate\write\@auxout{% |
|
1568 \gdef\expandafter\noexpand |
|
1569 \csname LT@\romannumeral\c@LT@tables\endcsname |
|
1570 {\LT@save@row}}}% |
|
1571 \fi |
|
1572 \ifx\LT@save@row\LT@@save@row |
|
1573 \else |
|
1574 \LT@warn{Column \@width s have changed\MessageBreak |
|
1575 in table \thetable}% |
|
1576 \LT@final@warn |
|
1577 \fi |
|
1578 \endgraf\penalty -\LT@end@pen |
|
1579 \endgroup |
|
1580 \global\@mparbottom\z@ |
|
1581 \pagegoal\vsize |
|
1582 \endgraf\penalty\z@\addvspace\LTpost |
|
1583 \ifvoid\footins\else\insert\footins{}\fi |
|
1584 }% |
|
1585 \def\endlongtable@new{% |
|
1586 \crcr |
|
1587 \noalign{% |
|
1588 \let\LT@entry\LT@entry@chop |
|
1589 \xdef\LT@save@row{\LT@save@row}% |
|
1590 }% |
|
1591 \LT@echunk |
|
1592 \LT@start |
|
1593 \unvbox\z@ |
|
1594 \LT@get@widths |
|
1595 \@if@sw\if@filesw\fi{% |
|
1596 {% |
|
1597 \let\LT@entry\LT@entry@write |
|
1598 \immediate\write\@auxout{% |
|
1599 \gdef\expandafter\noexpand\csname LT@\romannumeral\c@LT@tables\endcsname |
|
1600 {\LT@save@row}% |
|
1601 }% |
|
1602 }% |
|
1603 }{}% |
|
1604 \@ifx\LT@save@row\LT@@save@row{}{% |
|
1605 \LT@warn{% |
|
1606 Column \@width s have changed\MessageBreak in table \thetable |
|
1607 }\LT@final@warn |
|
1608 }% |
|
1609 \endgraf |
|
1610 \nobreak |
|
1611 \box\@ifvoid\LT@lastfoot{\LT@foot}{\LT@lastfoot}% |
|
1612 \global\@mparbottom\z@ |
|
1613 \endgraf |
|
1614 \LT@post |
|
1615 }% |
|
1616 \def\LT@start@longtable{% |
|
1617 \let\LT@start\endgraf |
|
1618 \endgraf |
|
1619 \penalty\z@ |
|
1620 \vskip\LTpre |
|
1621 \dimen@\pagetotal |
|
1622 \advance\dimen@ \ht\ifvoid\LT@firsthead\LT@head\else\LT@firsthead\fi |
|
1623 \advance\dimen@ \dp\ifvoid\LT@firsthead\LT@head\else\LT@firsthead\fi |
|
1624 \advance\dimen@ \ht\LT@foot |
|
1625 \dimen@ii\vfuzz\vfuzz\maxdimen |
|
1626 \setbox\tw@\copy\z@ |
|
1627 \setbox\tw@\vsplit\tw@ to \ht\@arstrutbox |
|
1628 \setbox\tw@\vbox{\unvbox\tw@}% |
|
1629 \vfuzz\dimen@ii |
|
1630 \advance\dimen@ \ht |
|
1631 \ifdim\ht\@arstrutbox>\ht\tw@\@arstrutbox\else\tw@\fi |
|
1632 \advance\dimen@\dp |
|
1633 \ifdim\dp\@arstrutbox>\dp\tw@\@arstrutbox\else\tw@\fi |
|
1634 \advance\dimen@ -\pagegoal |
|
1635 \ifdim \dimen@>\z@\vfil\break\fi |
|
1636 \global\@colroom\@colht |
|
1637 \ifvoid\LT@foot\else |
|
1638 \advance\vsize-\ht\LT@foot |
|
1639 \global\advance\@colroom-\ht\LT@foot |
|
1640 \dimen@\pagegoal\advance\dimen@-\ht\LT@foot\pagegoal\dimen@ |
|
1641 \maxdepth\z@ |
|
1642 \fi |
|
1643 \ifvoid\LT@firsthead\copy\LT@head\else\box\LT@firsthead\fi |
|
1644 \output{\LT@output}% |
|
1645 }% |
|
1646 \def\LT@start@new{% |
|
1647 \let\LT@start\endgraf |
|
1648 \endgraf |
|
1649 \markthr@@{}% |
|
1650 \LT@pre |
|
1651 \@ifvoid\LT@firsthead{\LT@top}{\box\LT@firsthead\nobreak}% |
|
1652 \mark@envir{longtable}% |
|
1653 }% |
|
1654 \def\LT@end@hd@ft@longtable#1{% |
|
1655 \LT@echunk |
|
1656 \ifx\LT@start\endgraf |
|
1657 \LT@err{Longtable head or foot not at start of table}{Increase LTchunksize}% |
|
1658 \fi |
|
1659 \setbox#1\box\z@ |
|
1660 \LT@get@widths\LT@bchunk |
|
1661 }% |
|
1662 \def\LT@end@hd@ft@new#1{% |
|
1663 \LT@echunk |
|
1664 \@ifx{\LT@start\endgraf}{% |
|
1665 \LT@err{Longtable head or foot not at start of table}{Increase LTchunksize}% |
|
1666 }% |
|
1667 \global\setbox#1\box\z@ |
|
1668 \LT@get@widths |
|
1669 \LT@bchunk |
|
1670 }% |
|
1671 \def\LT@array@longtable[#1]#2{% |
|
1672 \refstepcounter{table}\stepcounter{LT@tables}% |
|
1673 \if l#1% |
|
1674 \LTleft\z@ \LTright\fill |
|
1675 \else\if r#1% |
|
1676 \LTleft\fill \LTright\z@ |
|
1677 \else\if c#1% |
|
1678 \LTleft\fill \LTright\fill |
|
1679 \fi\fi\fi |
|
1680 \let\LT@mcol\multicolumn |
|
1681 \let\LT@@tabarray\@tabarray |
|
1682 \let\LT@@hl\hline |
|
1683 \def\@tabarray{% |
|
1684 \let\hline\LT@@hl |
|
1685 \LT@@tabarray}% |
|
1686 \let\\\LT@tabularcr\let\tabularnewline\\% |
|
1687 \def\newpage{\noalign{\break}}% |
|
1688 \def\pagebreak{\noalign{\ifnum`}=0\fi\@testopt{\LT@no@pgbk-}4}% |
|
1689 \def\nopagebreak{\noalign{\ifnum`}=0\fi\@testopt\LT@no@pgbk4}% |
|
1690 \let\hline\LT@hline \let\kill\LT@kill\let\caption\LT@caption |
|
1691 \@tempdima\ht\strutbox |
|
1692 \let\@endpbox\LT@endpbox |
|
1693 \ifx\extrarowheight\@undefined |
|
1694 \let\@acol\@tabacol |
|
1695 \let\@classz\@tabclassz \let\@classiv\@tabclassiv |
|
1696 \def\@startpbox{\vtop\LT@startpbox}% |
|
1697 \let\@@startpbox\@startpbox |
|
1698 \let\@@endpbox\@endpbox |
|
1699 \let\LT@LL@FM@cr\@tabularcr |
|
1700 \else |
|
1701 \advance\@tempdima\extrarowheight |
|
1702 \col@sep\tabcolsep |
|
1703 \let\@startpbox\LT@startpbox\let\LT@LL@FM@cr\@arraycr |
|
1704 \fi |
|
1705 \setbox\@arstrutbox\hbox{\vrule |
|
1706 \@height \arraystretch \@tempdima |
|
1707 \@depth \arraystretch \dp \strutbox |
|
1708 \@width \z@}% |
|
1709 \let\@sharp##\let\protect\relax |
|
1710 \begingroup |
|
1711 \@mkpream{#2}% |
|
1712 \xdef\LT@bchunk{% |
|
1713 \global\advance\c@LT@chunks\@ne |
|
1714 \global\LT@rows\z@\setbox\z@\vbox\bgroup |
|
1715 \LT@setprevdepth |
|
1716 \tabskip\LTleft\halign to\hsize\bgroup |
|
1717 \tabskip\z@ \@arstrut \@preamble \tabskip\LTright \cr}% |
|
1718 \endgroup |
|
1719 \expandafter\LT@nofcols\LT@bchunk&\LT@nofcols |
|
1720 \LT@make@row |
|
1721 \m@th\let\par\@empty |
|
1722 \everycr{}\lineskip\z@\baselineskip\z@ |
|
1723 \LT@bchunk |
|
1724 }% |
|
1725 \def\LT@LR@l{\LTleft\z@ \LTright\fill}% |
|
1726 \def\LT@LR@r{\LTleft\fill \LTright\z@ }% |
|
1727 \def\LT@LR@c{\LTleft\fill \LTright\fill}% |
|
1728 \def\LT@array@new[#1]#2{% |
|
1729 \refstepcounter{table}\stepcounter{LT@tables}% |
|
1730 \table@hook |
|
1731 \LTleft\fill \LTright\fill |
|
1732 \csname LT@LR@#1\endcsname |
|
1733 \let\LT@mcol\multicolumn |
|
1734 \let\LT@@hl\hline |
|
1735 \prepdef\@tabarray{\let\hline\LT@@hl}% |
|
1736 \let\\\LT@tabularcr |
|
1737 \let\tabularnewline\\% |
|
1738 \def\newpage{\noalign{\break}}% |
|
1739 \def\pagebreak{\noalign{\ifnum`}=0\fi\@testopt{\LT@no@pgbk-}4}% |
|
1740 \def\nopagebreak{\noalign{\ifnum`}=0\fi\@testopt\LT@no@pgbk4}% |
|
1741 \let\hline\LT@hline |
|
1742 \let\kill\LT@kill |
|
1743 \let\caption\LT@caption |
|
1744 \@tempdima\ht\strutbox |
|
1745 \let\@endpbox\LT@endpbox |
|
1746 \@ifxundefined\extrarowheight{% |
|
1747 \let\@acol\@tabacol |
|
1748 \let\@classz\@tabclassz |
|
1749 \let\@classiv\@tabclassiv |
|
1750 \def\@startpbox{\vtop\LT@startpbox}% |
|
1751 \let\@@startpbox\@startpbox |
|
1752 \let\@@endpbox\@endpbox |
|
1753 \let\LT@LL@FM@cr\@tabularcr |
|
1754 }{% |
|
1755 \advance\@tempdima\extrarowheight |
|
1756 \col@sep\tabcolsep |
|
1757 \let\@startpbox\LT@startpbox |
|
1758 \let\LT@LL@FM@cr\@arraycr |
|
1759 }% |
|
1760 \let\@acoll\@tabacoll |
|
1761 \let\@acolr\@tabacolr |
|
1762 \let\@acol\@tabacol |
|
1763 \setbox\@arstrutbox\hbox{% |
|
1764 \vrule |
|
1765 \@height \arraystretch \@tempdima |
|
1766 \@depth \arraystretch \dp \strutbox |
|
1767 \@width \z@ |
|
1768 }% |
|
1769 \let\@sharp##% |
|
1770 \let\protect\relax |
|
1771 \begingroup |
|
1772 \@mkpream{#2}% |
|
1773 \@mkpream@relax |
|
1774 \edef\@preamble{\@preamble}% |
|
1775 \prepdef\@preamble{% |
|
1776 \global\advance\c@LT@chunks\@ne |
|
1777 \global\LT@rows\z@ |
|
1778 \setbox\z@\vbox\bgroup |
|
1779 \LT@setprevdepth |
|
1780 \tabskip\LTleft |
|
1781 \halign to\hsize\bgroup |
|
1782 \tabskip\z@ |
|
1783 \@arstrut |
|
1784 }% |
|
1785 \appdef\@preamble{% |
|
1786 \tabskip\LTright |
|
1787 \cr |
|
1788 }% |
|
1789 \global\let\LT@bchunk\@preamble |
|
1790 \endgroup |
|
1791 \expandafter\LT@nofcols\LT@bchunk&\LT@nofcols |
|
1792 \LT@make@row |
|
1793 \m@th |
|
1794 \let\par\@empty |
|
1795 \everycr{}% |
|
1796 \lineskip\z@ |
|
1797 \baselineskip\z@ |
|
1798 \LT@bchunk |
|
1799 }% |
|
1800 \appdef\table@hook{}% |
|
1801 %% Note that it is not enough to define the environment itself; we also have to create the corresponding |
|
1802 %% \cmd\output\ routine procedures, which provide for continued footers and headers |
|
1803 %% (the very feature of \env{longtable} requiring support in the output routine). |
|
1804 %% This same consideration would arise in defining any syntactic extension to \env{longtable}, because |
|
1805 %% the environment name itself is exposed in the output routine. |
|
1806 \def\switch@longtable{% |
|
1807 \@ifpackageloaded{longtable}{% |
|
1808 \@ifx{\longtable\longtable@longtable}{% |
|
1809 \@ifx{\endlongtable\endlongtable@longtable}{% |
|
1810 \@ifx{\LT@start\LT@start@longtable}{% |
|
1811 \@ifx{\LT@end@hd@ft\LT@end@hd@ft@longtable}{% |
|
1812 \@ifx{\LT@array\LT@array@longtable}{% |
|
1813 \true@sw |
|
1814 }{\false@sw}% |
|
1815 }{\false@sw}% |
|
1816 }{\false@sw}% |
|
1817 }{\false@sw}% |
|
1818 }{\false@sw}% |
|
1819 {% |
|
1820 \class@info{Patching longtable package}% |
|
1821 }{% |
|
1822 \class@info{Patching unrecognized longtable package. (Proceeding with fingers crossed)}% |
|
1823 }% |
|
1824 \let\longtable\longtable@new |
|
1825 \let\endlongtable\endlongtable@new |
|
1826 \let\LT@start\LT@start@new |
|
1827 \let\LT@end@hd@ft\LT@end@hd@ft@new |
|
1828 \let\LT@array\LT@array@new |
|
1829 \newenvironment{longtable*}{% |
|
1830 \onecolumngrid@push |
|
1831 \longtable |
|
1832 }{% |
|
1833 \endlongtable |
|
1834 \onecolumngrid@pop |
|
1835 }% |
|
1836 }{}% |
|
1837 }% |
|
1838 \def\LT@pre{\penalty\z@\vskip\LTpre}% |
|
1839 \def\LT@bot{\nobreak\copy\LT@foot\vfil}% |
|
1840 \def\LT@top{\copy\LT@head\nobreak}% |
|
1841 \def\LT@post{\penalty\z@\addvspace\LTpost\mark@envir{\curr@envir}}% |
|
1842 \def\LT@adj{% |
|
1843 \setbox\z@\vbox{\null}\dimen@-\ht\z@ |
|
1844 \setbox\z@\vbox{\unvbox\z@\LT@bot}\advance\dimen@\ht\z@ |
|
1845 \global\advance\vsize-\dimen@ |
|
1846 }% |
|
1847 \def\output@init@longtable{\LT@adj}% |
|
1848 \def\output@prep@longtable{\setbox\@cclv\vbox{\unvbox\@cclv\LT@bot}}% |
|
1849 \def\output@post@longtable{\LT@top}% |
|
1850 \let\output@init@theindex\@empty |
|
1851 \let\output@prep@theindex\@empty |
|
1852 \def\output@post@theindex{% |
|
1853 \@ifodd\c@page{}{% |
|
1854 \@ifnum{\pagegrid@cur=\@ne}{% we have the leftmost column of a verso page |
|
1855 % insert the current top-level continued head |
|
1856 }% |
|
1857 }% |
|
1858 }% |
|
1859 \def\check@aux{\do@output@MVL{\do@check@aux}}% |
|
1860 \def\check@deferlist@stuck#1{% |
|
1861 \@ifx{\@deferlist@postshipout\@empty}{}{% |
|
1862 \@ifx{\@deferlist@postshipout\@deferlist}{% |
|
1863 \@fltstk |
|
1864 \clearpage@sw{% |
|
1865 \ltxgrid@warn{Deferred float stuck during \string\clearpage\space processing}% |
|
1866 }{% |
|
1867 \force@deferlist@stuck#1% |
|
1868 }% |
|
1869 }{% |
|
1870 %Successfully committed float(s) |
|
1871 }% |
|
1872 \global\let\@deferlist@postshipout\@empty |
|
1873 }% |
|
1874 }% |
|
1875 \def\@fltstk{% |
|
1876 \@latex@warning{A float is stuck (cannot be placed without \string\clearpage)}% |
|
1877 }% |
|
1878 \appdef\@outputpage{% |
|
1879 \global\let\@deferlist@postshipout\@deferlist |
|
1880 }% |
|
1881 \def\@next#1#2{% |
|
1882 \@ifx{#2\@empty}{\false@sw}{% |
|
1883 \expandafter\@xnext#2\@@#1#2% |
|
1884 \true@sw |
|
1885 }% |
|
1886 }% |
|
1887 \def\@xnext\@elt#1#2\@@#3#4{% |
|
1888 \def#3{#1}% |
|
1889 \gdef#4{#2}% |
|
1890 \def\@tempa{#4}\def\@tempb{\@freelist}% |
|
1891 \@ifx{\@tempa\@tempb}{% |
|
1892 \@ifx{#4\@empty}{% |
|
1893 \force@deferlist@empty%{Float register pool exhausted}% |
|
1894 }{}% |
|
1895 }{}% |
|
1896 }% |
|
1897 \def\force@deferlist@stuck#1{% |
|
1898 \force@deferlist@sw{% |
|
1899 \@booleantrue\clearpage@sw |
|
1900 \@booleantrue\forcefloats@sw |
|
1901 #1% |
|
1902 }{% |
|
1903 }% |
|
1904 }% |
|
1905 \def\force@deferlist@empty{% |
|
1906 \force@deferlist@sw{% |
|
1907 \penalty-\pagebreak@pen |
|
1908 \protect@penalty\do@forcecolumn@pen |
|
1909 }{% |
|
1910 }% |
|
1911 }% |
|
1912 \@booleanfalse\force@deferlist@sw |
|
1913 \mathchardef\do@forcecolumn@pen=10009 |
|
1914 \@namedef{output@-\the\do@forcecolumn@pen}{\do@forcecolumn}% |
|
1915 \def\do@forcecolumn{% |
|
1916 \@booleantrue\clearpage@sw |
|
1917 \@booleantrue\forcefloats@sw |
|
1918 \do@startcolumn |
|
1919 }% |
|
1920 \def\enlargethispage{% |
|
1921 \@ifstar{% |
|
1922 \@enlargethispage{}% |
|
1923 }{% |
|
1924 \@enlargethispage{}% |
|
1925 }% |
|
1926 }% |
|
1927 \def\@enlargethispage#1#2{% |
|
1928 \begingroup |
|
1929 \dimen@#2\relax |
|
1930 \edef\@tempa{#1}% |
|
1931 \edef\@tempa{\noexpand\@@enlargethispage{\@tempa}{\the\dimen@}}% |
|
1932 \expandafter\do@output@MVL\expandafter{\@tempa}% |
|
1933 \endgroup |
|
1934 }% |
|
1935 \def\@@enlargethispage#1#2{% |
|
1936 \def\@tempa{one}% |
|
1937 \@ifx{\thepagegrid\@tempa}{% |
|
1938 \true@sw |
|
1939 }{% |
|
1940 \def\@tempa{mlt}% |
|
1941 \@ifx{\thepagegrid\@tempa}{% |
|
1942 \@ifnum{\pagegrid@cur=\@ne}{% OK to adjust this page |
|
1943 \gdef\enlarge@colroom{#2}% |
|
1944 \true@sw |
|
1945 }{% Can only adjust this column; give up |
|
1946 \ltxgrid@warn{Too late to enlarge this page; move the command to the first column.}% |
|
1947 \false@sw |
|
1948 }% |
|
1949 }{% Unknown page grid |
|
1950 \ltxgrid@warn{Unable to enlarge a page of this kind.}% |
|
1951 \false@sw |
|
1952 }% |
|
1953 }% |
|
1954 {% |
|
1955 \class@info{Enlarging page \thepage\space by #2}% |
|
1956 \global\advance\@colroom#2\relax |
|
1957 \set@vsize |
|
1958 }{% |
|
1959 % Could not adjust this page |
|
1960 }% |
|
1961 }% |
|
1962 \let\enlarge@colroom\@empty |
|
1963 \let\@kludgeins\@undefined |
|
1964 \@booleantrue\textheight@sw |
|
1965 \prepdef\@outputpage{% |
|
1966 \textheight@sw{% |
|
1967 \count@\vbadness\vbadness\@M |
|
1968 \dimen@\vfuzz\vfuzz\maxdimen |
|
1969 \setbox\@outputbox\vbox to\textheight{\unvbox\@outputbox}% |
|
1970 \vfuzz\dimen@ |
|
1971 \vbadness\count@ |
|
1972 }{}% |
|
1973 }% |
|
1974 \def\ltxgrid@info{% |
|
1975 \ltxgrid@info@sw{\class@info}{\@gobble}% |
|
1976 }% |
|
1977 \@booleanfalse\ltxgrid@info@sw |
|
1978 \def\ltxgrid@warn{% |
|
1979 \ltxgrid@warn@sw{\class@warn}{\@gobble}% |
|
1980 }% |
|
1981 \@booleantrue\ltxgrid@warn@sw |
|
1982 \endinput |
|
1983 %% |
|
1984 %% End of file `ltxgrid.sty'. |