ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/group/trunk/iceWater2/pnastwo.cls
Revision: 4241
Committed: Tue Dec 9 19:09:23 2014 UTC (9 years, 6 months ago) by plouden
File size: 99874 byte(s)
Log Message:
adding PNAS template

File Contents

# Content
1 %\def\currversion{April 15, 2008}
2 \def\currversion{October 04, 2013}
3
4 %*****************************************************************%
5 %* *%
6 %* Prepared by Amy Hendrickson, TeXnology Inc. *%
7 %* Copyright (C) 2004 by Amy Hendrickson, TeXnology Inc., *%
8 %* All rights reserved. *%
9 %* *%
10 %* TeXnology Inc.: 617 738-8029 *%
11 %* amyh@texnology.com *%
12 %* www.texnology.com *%
13 %* *%
14 %* For assistance, please contact the PNAS Editorial Office: *%
15 %* 202-334-2679 *%
16 %* pnas@nas.edu *%
17 %* *%
18 %*****************************************************************%
19
20 \typeout{^^J^^J
21 Two Column Journal Style for the^^J
22 Proceedings of the National Academy of Science
23 ^^J
24 Written by Amy Hendrickson, TeXnology, Inc., 9/04^^J
25 ^^J
26 This version is dated \currversion^^J^^J}
27
28 \ProvidesClass{pnastwo}
29 \newcommand\@ptsize{}
30 \newif\if@restonecol
31 \newif\if@titlepage
32 \@titlepagefalse
33 \if@compatibility\else
34 \DeclareOption{a4paper}
35 {\setlength\paperheight {297mm}%
36 \setlength\paperwidth {210mm}}
37 \DeclareOption{a5paper}
38 {\setlength\paperheight {210mm}%
39 \setlength\paperwidth {148mm}}
40 \DeclareOption{b5paper}
41 {\setlength\paperheight {250mm}%
42 \setlength\paperwidth {176mm}}
43 \DeclareOption{letterpaper}
44 {\setlength\paperheight {16in}%
45 \setlength\paperwidth {13.5in}}
46 \DeclareOption{legalpaper}
47 {\setlength\paperheight {14in}%
48 \setlength\paperwidth {8.5in}}
49 \DeclareOption{executivepaper}
50 {\setlength\paperheight {10.5in}%
51 \setlength\paperwidth {7.25in}}
52 \DeclareOption{landscape}
53 {\setlength\@tempdima {\paperheight}%
54 \setlength\paperheight {\paperwidth}%
55 \setlength\paperwidth {\@tempdima}}
56 \DeclareOption{pnaspaper}
57 {\setlength\paperheight {11.87in}%
58 \setlength\paperwidth {9.12in}}
59
60 \fi
61 \if@compatibility
62 \renewcommand\@ptsize{0}
63 \else
64 \DeclareOption{10pt}{\renewcommand\@ptsize{0}}
65 \fi
66 \DeclareOption{11pt}{\renewcommand\@ptsize{1}}
67 \DeclareOption{12pt}{\renewcommand\@ptsize{2}}
68 \if@compatibility\else
69 \DeclareOption{oneside}{\@twosidefalse \@mparswitchfalse}
70 \fi
71 \DeclareOption{twoside}{\@twosidetrue \@mparswitchtrue}
72 \DeclareOption{draft}{\setlength\overfullrule{5pt}}
73 \if@compatibility\else
74 \DeclareOption{final}{\setlength\overfullrule{0pt}}
75 \fi
76 \DeclareOption{titlepage}{\@titlepagetrue}
77 \if@compatibility\else
78 \DeclareOption{notitlepage}{\@titlepagefalse}
79 \fi
80 \if@compatibility\else
81 \DeclareOption{onecolumn}{\@twocolumnfalse}
82 \fi
83 \DeclareOption{twocolumn}{\@twocolumntrue}
84 \DeclareOption{leqno}{\input{leqno.clo}}
85 \DeclareOption{fleqn}{\input{fleqn.clo}}
86 \DeclareOption{openbib}{%
87 \AtEndOfPackage{%
88 \renewcommand\@openbib@code{%
89 \advance\leftmargin\bibindent
90 \itemindent -\bibindent
91 \listparindent \itemindent
92 \parsep \z@
93 }%
94 \renewcommand\newblock{\par}}%
95 }
96 \ExecuteOptions{pnaspaper,twoside,onecolumn,final}
97 \ProcessOptions
98
99 \AtBeginDocument{
100 \RequirePackage[cam,center]{crop}
101 \paperwidth=8.125in
102 \paperheight=10.875in
103 \renewcommand*\CROP@horigin{-.5truein}
104 \renewcommand*\CROP@vorigin{-.5truein}
105 }%
106
107
108 %% size10.clo ==>>
109 \renewcommand\normalsize{%
110 \@setfontsize\normalsize\@ixpt\@xpt
111 \abovedisplayskip 8\p@ \@plus2\p@ \@minus5\p@
112 \abovedisplayshortskip \z@ \@plus3\p@
113 \belowdisplayshortskip 6\p@ \@plus3\p@ \@minus3\p@
114 \belowdisplayskip \abovedisplayskip
115 \topsep 0\p@
116 \parsep 0\p@
117 \let\@listi\@listI}
118 \normalsize
119 \topsep 0\p@
120 \parsep 0\p@
121
122 \newcommand\small{%
123 \@setfontsize\small\@viiipt{9}%
124 \abovedisplayskip 8.5\p@ \@plus3\p@ \@minus4\p@
125 \abovedisplayshortskip \z@ \@plus2\p@
126 \belowdisplayshortskip 4\p@ \@plus2\p@ \@minus2\p@
127 \def\@listi{\leftmargin\leftmargini
128 \topsep 0\p@
129 \parsep 0\p@
130 \itemsep \parsep}%
131 \belowdisplayskip \abovedisplayskip
132 }
133 \newcommand\footnotesize{%
134 \@setfontsize\footnotesize\@vipt{7}%
135 \abovedisplayskip 6\p@ \@plus2\p@ \@minus4\p@
136 \abovedisplayshortskip \z@ \@plus\p@
137 \belowdisplayshortskip 3\p@ \@plus\p@ \@minus2\p@
138 \def\@listi{\leftmargin\leftmargini
139 \topsep 3\p@ \@plus\p@ \@minus\p@
140 \parsep 2\p@ \@plus\p@ \@minus\p@
141 \itemsep \parsep}%
142 \belowdisplayskip \abovedisplayskip
143 }
144 \newcommand\scriptsize{\@setfontsize\scriptsize\@vpt\@viipt}
145 \newcommand\tiny{\@setfontsize\tiny\@vpt\@vipt}
146 \newcommand\large{\@setfontsize\large\@xiipt{14}}
147 \newcommand\Large{\@setfontsize\Large\@xivpt{18}}
148 \newcommand\LARGE{\@setfontsize\LARGE\@xviipt{22}}
149 \newcommand\huge{\@setfontsize\huge\@xxpt{25}}
150 \newcommand\Huge{\@setfontsize\Huge\@xxvpt{30}}
151 \if@twocolumn
152 \setlength\parindent{1em}
153 \else
154 \setlength\parindent{9\p@}%15\p@}
155 \fi
156 \setlength\smallskipamount{3\p@ \@plus 1\p@ \@minus 1\p@}
157 \setlength\medskipamount{6\p@ \@plus 2\p@ \@minus 2\p@}
158 \setlength\bigskipamount{12\p@ \@plus 4\p@ \@minus 4\p@}
159 \setlength\headheight{12\p@}
160 \setlength\headsep {25\p@}
161 \setlength\topskip {10\p@}
162 \setlength\footskip{30\p@}
163 \if@compatibility \setlength\maxdepth{4\p@} \else
164 \setlength\maxdepth{.5\topskip} \fi
165 \if@compatibility
166 \if@twocolumn
167 \setlength\textwidth{410\p@}
168 \else
169 \setlength\textwidth{345\p@}
170 \fi
171 \else
172 \setlength\@tempdima{\paperwidth}
173 \addtolength\@tempdima{-2in}
174 \setlength\@tempdimb{345\p@}
175 \if@twocolumn
176 \ifdim\@tempdima>2\@tempdimb\relax
177 \setlength\textwidth{2\@tempdimb}
178 \else
179 \setlength\textwidth{\@tempdima}
180 \fi
181 \else
182 \ifdim\@tempdima>\@tempdimb\relax
183 \setlength\textwidth{\@tempdimb}
184 \else
185 \setlength\textwidth{\@tempdima}
186 \fi
187 \fi
188 \fi
189 \if@compatibility\else
190 \@settopoint\textwidth
191 \fi
192 \if@compatibility
193 \setlength\textheight{43\baselineskip}
194 \else
195 \setlength\@tempdima{\paperheight}
196 \addtolength\@tempdima{-2in}
197 \addtolength\@tempdima{-1.5in}
198 \divide\@tempdima\baselineskip
199 \@tempcnta=\@tempdima
200 \setlength\textheight{\@tempcnta\baselineskip}
201 \fi
202 \addtolength\textheight{\topskip}
203 \if@twocolumn
204 \setlength\marginparsep {10\p@}
205 \else
206 \setlength\marginparsep{11\p@}
207 \fi
208 \setlength\marginparpush{5\p@}
209 \if@compatibility
210 \if@twoside
211 \setlength\oddsidemargin {44\p@}
212 \setlength\evensidemargin {82\p@}
213 \setlength\marginparwidth {107\p@}
214 \else
215 \setlength\oddsidemargin {63\p@}
216 \setlength\evensidemargin {63\p@}
217 \setlength\marginparwidth {90\p@}
218 \fi
219 \if@twocolumn
220 \setlength\oddsidemargin {30\p@}
221 \setlength\evensidemargin {30\p@}
222 \setlength\marginparwidth {48\p@}
223 \fi
224 \else
225 \if@twoside
226 \setlength\@tempdima {\paperwidth}
227 \addtolength\@tempdima {-\textwidth}
228 \setlength\oddsidemargin {.4\@tempdima}
229 \addtolength\oddsidemargin {-1in}
230 \setlength\marginparwidth {.6\@tempdima}
231 \addtolength\marginparwidth {-\marginparsep}
232 \addtolength\marginparwidth {-0.4in}
233 \else
234 \setlength\@tempdima {\paperwidth}
235 \addtolength\@tempdima {-\textwidth}
236 \setlength\oddsidemargin {.5\@tempdima}
237 \addtolength\oddsidemargin {-1in}
238 \setlength\marginparwidth {.5\@tempdima}
239 \addtolength\marginparwidth {-\marginparsep}
240 \addtolength\marginparwidth {-0.4in}
241 \addtolength\marginparwidth {-.4in}
242 \fi
243 \ifdim \marginparwidth >2in
244 \setlength\marginparwidth{2in}
245 \fi
246 \@settopoint\oddsidemargin
247 \@settopoint\marginparwidth
248 \setlength\evensidemargin {\paperwidth}
249 \addtolength\evensidemargin{-2in}
250 \addtolength\evensidemargin{-\textwidth}
251 \addtolength\evensidemargin{-\oddsidemargin}
252 \@settopoint\evensidemargin
253 \fi
254 \if@compatibility
255 \setlength\topmargin{27pt}
256 \else
257 \setlength\topmargin{\paperheight}
258 \addtolength\topmargin{-3.3in}
259 \addtolength\topmargin{-\headheight}
260 \addtolength\topmargin{-\headsep}
261 \addtolength\topmargin{-\textheight}
262 \addtolength\topmargin{-\footskip} % this might be wrong!
263 \addtolength\topmargin{-.5\topmargin}
264 \@settopoint\topmargin
265 \fi
266 \setlength\footnotesep{6.65\p@}
267 \setlength{\skip\footins}{19\p@ \@plus 4\p@ \@minus 2\p@}
268 \setlength\floatsep {12\p@ \@plus 2\p@ \@minus 2\p@}
269 \setlength\textfloatsep{20\p@ \@plus 2\p@ \@minus 4\p@}
270 \setlength\intextsep {12\p@ \@plus 2\p@ \@minus 2\p@}
271 \setlength\dblfloatsep {12\p@ \@plus 2\p@ \@minus 2\p@}
272 \setlength\dbltextfloatsep{20\p@ \@plus 2\p@ \@minus 4\p@}
273 \setlength\@fptop{0\p@ \@plus 1fil}
274 \setlength\@fpsep{8\p@ \@plus 2fil}
275 \setlength\@fpbot{0\p@ \@plus 1fil}
276 \setlength\@dblfptop{0\p@ \@plus 1fil}
277 \setlength\@dblfpsep{8\p@ \@plus 2fil}
278 \setlength\@dblfpbot{0\p@ \@plus 1fil}
279 \setlength\partopsep{2\p@ \@plus 1\p@ \@minus 1\p@}
280 \def\@listi{\leftmargin\leftmargini
281 \parsep 1sp%4\p@ \@plus2\p@ \@minus\p@
282 \topsep 8\p@ \@plus2\p@ \@minus4\p@
283 \itemsep1sp%4\p@ \@plus2\p@ \@minus\p@
284 }
285 \let\@listI\@listi
286 \@listi
287
288 \def\@listii {\leftmargin\leftmarginii
289 \labelwidth\leftmarginii
290 \advance\labelwidth-\labelsep
291 \topsep 4\p@ \@plus2\p@ \@minus\p@
292 \parsep 2\p@ \@plus\p@ \@minus\p@
293 \itemsep \parsep}
294 \def\@listiii{\leftmargin\leftmarginiii
295 \labelwidth\leftmarginiii
296 \advance\labelwidth-\labelsep
297 \topsep 2\p@ \@plus\p@\@minus\p@
298 \parsep \z@
299 \partopsep \p@ \@plus\z@ \@minus\p@
300 \itemsep \topsep}
301 \def\@listiv {\leftmargin\leftmarginiv
302 \labelwidth\leftmarginiv
303 \advance\labelwidth-\labelsep}
304 \def\@listv {\leftmargin\leftmarginv
305 \labelwidth\leftmarginv
306 \advance\labelwidth-\labelsep}
307 \def\@listvi {\leftmargin\leftmarginvi
308 \labelwidth\leftmarginvi
309 \advance\labelwidth-\labelsep}
310
311
312 %% <<== size10.clo
313
314 \setlength\lineskip{1\p@}
315 \setlength\normallineskip{1\p@}
316 \renewcommand\baselinestretch{}
317 \setlength\parskip{0\p@ \@plus \p@}
318 \@lowpenalty 51
319 \@medpenalty 151
320 \@highpenalty 301
321 \setcounter{topnumber}{2}
322 \renewcommand\topfraction{.7}
323 \setcounter{bottomnumber}{1}
324 \renewcommand\bottomfraction{.3}
325 \setcounter{totalnumber}{3}
326 \renewcommand\textfraction{.2}
327 \renewcommand\floatpagefraction{.5}
328 \setcounter{dbltopnumber}{2}
329 \renewcommand\dbltopfraction{.7}
330 \renewcommand\dblfloatpagefraction{.5}
331
332 \newif\iftitlepage
333 \def\ps@headings{%
334 \let\@evenhead\relax
335 \def\@oddhead{\hfill\rlap{\hskip14pt\vtop to 0pt{\vskip-1pt\makesidesquares
336 \vss}}}%
337 \def\@oddfoot{%
338 %\leftnumber
339 {\dospecialaccents%
340 \iftitlepage\global\titlepagefalse%
341 \footlinefont
342 \ifodd\c@page
343 \hbox to \textwidth{\footlinefont \let\it\footlineit
344 \theurl\hfill\footlinefont PNAS\hskip6pt \vrule depth 2pt\hskip6pt
345 {\foliofont\theissuedate}\hskip6pt\vrule\hskip6pt\thevolume\hskip6pt
346 \vrule\hskip6pt\theissuenumber\hskip6pt \vrule\hskip6pt
347 {\foliofont\the\c@page{\footlineit--}\expandafter\ifx\csname
348 lastpage\endcsname\relax ??\else\lastpage\fi}}%
349 \else
350 \hbox to \textwidth{\footlinefont \let\it\footlineit
351 {\foliofont\the\c@page{\footlineit--}\expandafter\ifx\csname
352 lastpage\endcsname\relax ??\else\lastpage\fi}\hskip6pt
353 \vrule depth 2pt\hskip6pt PNAS\hskip6pt
354 \vrule\hskip6pt{\foliofont\theissuedate}\hskip6pt\vrule\hskip6pt
355 \thevolume\hskip6pt\vrule\hskip6pt\theissuenumber\hfill
356 \theurl}%
357 \fi\else%
358 \ifodd\c@page
359 \hbox to\textwidth{{\let\it\footlineit\footlinefont\thefootlineauthor}\hfill
360 \footlinefont PNAS\hskip6pt\vrule depth 2pt\hskip6pt{\foliofont\theissuedate}%
361 \hskip6pt\vrule depth2pt\hskip6pt\thevolume\hskip6pt\vrule depth 2pt\hskip6pt\theissuenumber\hskip6pt\vrule\hskip6pt{\foliofont\the\c@page}}%
362 \else%
363 \hbox to\textwidth{\let\it\footlineit\footlinefont{\foliofont \the\c@page}%
364 \hskip6pt\vrule depth 2pt height 6pt\hskip6pt\theurl\hfill\thefootlineauthor}\fi\fi}%\rightnumber
365 }
366 \let\@evenfoot\@oddfoot
367 %
368 \let\@mkboth\markboth
369 \def\sectionmark##1{%
370 \markboth {\MakeUppercase{%
371 \ifnum \c@secnumdepth >\z@
372 \thesection\quad
373 \fi
374 ##1}}{}}%
375 \def\subsectionmark##1{%
376 \markright {%
377 \ifnum \c@secnumdepth >\@ne
378 \thesubsection\quad
379 \fi
380 ##1}}}
381
382
383 \newcount\affilcount
384 \newcount\saveaffilcount
385 \newcount\c@fnaffilcount
386 \def\affil#1#2{\normalsize\affilfont\ \affilcount=#1
387 \ifnum\affilcount>\saveaffilcount\global\saveaffilcount\affilcount\fi
388 \expandafter\ifx\csname affil\the\affilcount\endcsname\relax
389 \global\advance\c@footnote by1
390 \expandafter\xdef\csname affilsymb\the\affilcount\endcsname%
391 {\the\c@footnote}{$^{\@fnsymbol\c@footnote}$}%
392 \expandafter\gdef\csname affil\the\affilcount\endcsname{#2}\else
393 $^{\expandafter\@fnsymbol\csname affilsymb\the\affilcount\endcsname}$
394 \fi\authorfont}
395
396 \newcommand\maketitle{\par
397 \global\titlepagetrue
398 \begingroup
399 \dospecialaccents
400 \parindent=0pt
401 \def\and{ and }
402 \renewcommand\thefootnote{\@fnsymbol\c@footnote}%
403 \def\@makefnmark{\rlap{\@textsuperscript{\normalfont\@thefnmark}}}%
404 \long\def\@makefntext##1{\parindent0pt\noindent
405 \@textsuperscript{\normalfont\@thefnmark}##1}%
406 \newpage
407 \global\@topnum\z@ % Prevents figures from going at top of page.
408 \@maketitle
409 \@thanks
410 % according to sample, Dec 2007, copyright no longer wanted here
411 % \renewcommand\thefootnote{}%
412 % \footnotetext{\vrule height 8pt width0pt\copyright \thecopyrightyear\ by The % National Academy of Sciences of the USA}
413 \endgroup
414 \setcounter{footnote}{0}%
415 \global\let\thanks\relax
416 \global\let\maketitle\relax
417 \global\let\@maketitle\relax
418 \global\let\@thanks\@empty
419 \global\let\@author\@empty
420 \global\let\@date\@empty
421 \global\let\@title\@empty
422 \global\let\@contributor\@empty
423 \global\let\title\relax
424 \global\let\date\relax
425 \global\let\and\relax
426 }
427 \def\@maketitle{%
428 \global\firsttimetrue
429 %% To get equation numbers in square brackets and bold
430 \gdef\tagform@##1{\maketag@@@{\bf[\hskip1pt\ignorespaces##1\unskip\@@italiccorr\hskip1pt]}}
431 \gdef\@eqnnum{{\normalfont\bf \normalcolor [\hskip1pt\theequation\hskip1pt]}}
432 \newpage
433 \def\\ {\vskip1pt}
434 \let \footnote \thanks
435 {\hsize=\textwidth \raggedright
436 \noindent\huge\baselineskip= 24pt\titlefont \@title \par}%
437 \vskip6pt
438 {\normalsize\authorfont
439 \@author
440 \par
441 {\vskip4pt
442 \raggedright
443 \affilcount=0
444 \footnotesize\affilfont
445 \loop \ifnum\affilcount< \saveaffilcount
446 \expandafter\ifx\csname affil\the\affilcount\endcsname\relax\else
447 $^{\expandafter\@fnsymbol\csname affilsymb\the\affilcount\endcsname}$%
448 \csname affil\the\affilcount\endcsname,\fi
449 \global\advance\affilcount by1
450 \repeat\ifnum\saveaffilcount=1\else\ and \fi
451 $^{\expandafter\@fnsymbol\csname affilsymb\the\affilcount\endcsname}$%
452 \expandafter\csname affil\the\affilcount\endcsname
453 }}%
454 \vskip 4pt%
455 {\affilfont \@contributor}%
456 \par
457 \vskip 1.5em}
458
459 \def\contributor#1{\def\@contributor{#1}}
460 \let\@contributor\relax
461
462 \contributor{Submitted to Proceedings
463 of the National Academy of Sciences of the United States of America}
464
465
466
467 \setcounter{secnumdepth}{3}
468 \newcounter {part}
469 \newcounter {section}
470 \newcounter {subsection}[section]
471 \newcounter {subsubsection}[subsection]
472 \newcounter {paragraph}[subsubsection]
473 \newcounter {subparagraph}[paragraph]
474 \renewcommand \thepart {\@Roman\c@part}
475 \renewcommand \thesection {\@arabic\c@section}
476 \renewcommand\thesubsection {\thesection.\@arabic\c@subsection}
477 \renewcommand\thesubsubsection{\thesubsection .\@arabic\c@subsubsection}
478 \renewcommand\theparagraph {\thesubsubsection.\@arabic\c@paragraph}
479 \renewcommand\thesubparagraph {\theparagraph.\@arabic\c@subparagraph}
480 \newcommand\part{%
481 \if@noskipsec \leavevmode \fi
482 \par
483 \addvspace{4ex}%
484 \@afterindentfalse
485 \secdef\@part\@spart}
486
487 \def\@part[#1]#2{%
488 \ifnum \c@secnumdepth >\m@ne
489 \refstepcounter{part}%
490 \addcontentsline{toc}{part}{\thepart\hspace{1em}#1}%
491 \else
492 \addcontentsline{toc}{part}{#1}%
493 \fi
494 {\parindent \z@ \raggedright
495 \interlinepenalty \@M
496 \normalfont
497 \ifnum \c@secnumdepth >\m@ne
498 \Large\bfseries \partname~\thepart
499 \par\nobreak
500 \fi
501 \huge \bfseries #2%
502 \markboth{}{}\par}%
503 \nobreak
504 \vskip 3ex
505 \@afterheading}
506 \def\@spart#1{%
507 {\parindent \z@ \raggedright
508 \interlinepenalty \@M
509 \normalfont
510 \huge \bfseries #1\par}%
511 \nobreak
512 \vskip 3ex
513 \@afterheading}
514
515 \def\@startsection#1#2#3#4#5#6{%
516 \if@noskipsec \leavevmode \fi
517 \par
518 \@tempskipa #4\relax
519 \@afterindenttrue
520 \ifdim \@tempskipa <\z@
521 \@tempskipa -\@tempskipa \@afterindentfalse
522 \fi
523 \if@nobreak
524 \everypar{}%
525 \else
526 \addpenalty\@secpenalty\addvspace\@tempskipa
527 \fi
528 \@ifstar
529 {\@ssect{#3}{#4}{#5}{#6}}%
530 {\@dblarg{\@sect{#1}{#2}{#3}{#4}{#5}{#6}}}}
531
532 \def\@sect#1#2#3#4#5#6[#7]#8{%
533 \ifnum #2>\c@secnumdepth
534 \let\@svsec\@empty
535 \else
536 \refstepcounter{#1}%
537 \protected@edef\@svsec{\@seccntformat{#1}\relax}%
538 \fi
539 \@tempskipa #5\relax
540 \ifdim \@tempskipa>\z@
541 \begingroup
542 #6{%
543 \@hangfrom{\hskip #3\relax\@svsec
544 }%
545 \interlinepenalty \@M #8\@@par}%
546 \endgroup
547 \csname #1mark\endcsname{#7}%
548 \addcontentsline{toc}{#1}{%
549 \ifnum #2>\c@secnumdepth \else
550 \protect\numberline{\csname the#1\endcsname}%
551 \fi
552 #7}%
553 \else
554 \def\@svsechd{%
555 #6{\hskip #3\relax
556 \@svsec #8\ifnum#2=2.\fi}% <<==
557 \csname #1mark\endcsname{#7}%
558 \addcontentsline{toc}{#1}{%
559 \ifnum #2>\c@secnumdepth \else
560 \protect\numberline{\csname the#1\endcsname}%
561 \fi
562 #7}}%
563 \fi
564 \@xsect{#5}}
565
566 \newcommand\section{\@startsection {section}{1}{\z@}%
567 {-10pt \@plus -1ex \@minus -.2ex}%
568 {.5ex }%
569 {\normalfont\Large\bfseries\sectionfont}}
570 \newcommand\subsection{\@startsection{subsection}{2}{\z@}%
571 {10pt\@plus 1ex \@minus .2ex}%
572 {-0.5ex \@plus .2ex}%
573 {\normalfont\large\bfseries\subsectionfont}}
574 \newcommand\subsubsection{\@startsection{subsubsection}{3}{\z@}%
575 {-3.25ex\@plus -1ex \@minus -.2ex}%
576 {1.5ex \@plus .2ex}%
577 {\normalfont\normalsize\bfseries}}
578 \newcommand\paragraph{\@startsection{paragraph}{4}{\z@}%
579 {3.25ex \@plus1ex \@minus.2ex}%
580 {-1em}%
581 {\normalfont\normalsize\bfseries}}
582 \newcommand\subparagraph{\@startsection{subparagraph}{5}{\parindent}%
583 {3.25ex \@plus1ex \@minus .2ex}%
584 {-1em}%
585 {\normalfont\normalsize\bfseries}}
586
587 \setlength\leftmargini {12pt}
588 \leftmargin \leftmargini
589 \setlength\leftmarginii {12pt}
590 \setlength\leftmarginiii {12pt}
591 \setlength\leftmarginiv {12pt}
592
593 \if@twocolumn
594 \setlength\leftmarginv {.5em}
595 \setlength\leftmarginvi {.5em}
596 \else
597 \setlength\leftmarginv {1em}
598 \setlength\leftmarginvi {1em}
599 \fi
600 \setlength \labelsep {.5em}
601 \setlength \labelwidth{\leftmargini}
602 \addtolength\labelwidth{-\labelsep}
603 \@beginparpenalty -\@lowpenalty
604 \@endparpenalty -\@lowpenalty
605 \@itempenalty -\@lowpenalty
606 \renewcommand\theenumi{\@arabic\c@enumi}
607 \renewcommand\theenumii{\@alph\c@enumii}
608 \renewcommand\theenumiii{\@roman\c@enumiii}
609 \renewcommand\theenumiv{\@Alph\c@enumiv}
610 \newcommand\labelenumi{\theenumi.}
611 \newcommand\labelenumii{(\theenumii)}
612 \newcommand\labelenumiii{\theenumiii.}
613 \newcommand\labelenumiv{\theenumiv.}
614 \renewcommand\p@enumii{\theenumi}
615 \renewcommand\p@enumiii{\theenumi(\theenumii)}
616 \renewcommand\p@enumiv{\p@enumiii\theenumiii}
617 \newcommand\labelitemi{\raise1.5pt\llap{\small\textbullet\hskip2pt}}
618 \newcommand\labelitemii{\normalfont\bfseries \textendash}
619 \newcommand\labelitemiii{\textasteriskcentered}
620 \newcommand\labelitemiv{\textperiodcentered}
621 \newenvironment{description}
622 {\list{}{\labelwidth\z@ \itemindent-\leftmargin
623 \let\makelabel\descriptionlabel}}
624 {\endlist}
625 \newcommand*\descriptionlabel[1]{\hspace\labelsep
626 \normalfont\bfseries #1}
627
628 \def\abstract{\bgroup
629 \parindent=0pt
630 \hsize=\columnwidth
631 \font\it\helveticaboldoblique at 8pt
632 \font\bf\helveticabold at 8pt
633 \def\textit##1{{\it ##1}}
634 \def\textbf##1{{\bf ##1}}
635 \small
636 \abstractfont\dospecialaccents}
637
638 \def\endabstract{\vskip11pt
639 \egroup}
640
641
642
643 \newenvironment{verse}
644 {\let\\\@centercr
645 \list{}{\itemsep \z@
646 \itemindent -1.5em%
647 \listparindent\itemindent
648 \rightmargin \leftmargin
649 \advance\leftmargin 1.5em}%
650 \item\relax}
651 {\endlist}
652 \newenvironment{quotation}
653 {\list{}{\listparindent 1.5em%
654 \itemindent \listparindent
655 \rightmargin \leftmargin
656 \parsep \z@ \@plus\p@}%
657 \item\relax}
658 {\endlist}
659 \newenvironment{quote}
660 {\list{}{\rightmargin\leftmargin}%
661 \item\relax}
662 {\endlist}
663 \if@compatibility
664 \newenvironment{titlepage}
665 {%
666 \if@twocolumn
667 \@restonecoltrue\onecolumn
668 \else
669 \@restonecolfalse\newpage
670 \fi
671 \setcounter{page}\z@
672 }%
673 {\if@restonecol\twocolumn \else \newpage \fi
674 }
675 \else
676 \newenvironment{titlepage}
677 {%
678 \if@twocolumn
679 \@restonecoltrue\onecolumn
680 \else
681 \@restonecolfalse\newpage
682 \fi
683 \setcounter{page}\@ne
684 }%
685 {\if@restonecol\twocolumn \else \newpage \fi
686 \if@twoside\else
687 \setcounter{page}\@ne
688 \fi
689 }
690 \fi
691 \newcommand\appendix{\par
692 \setcounter{section}{0}%
693 \setcounter{subsection}{0}%
694 \gdef\thesection{\@Alph\c@section}}
695 \setlength\arraycolsep{5\p@}
696 \setlength\tabcolsep{6\p@}
697 \setlength\arrayrulewidth{.4\p@}
698 \setlength\doublerulesep{2\p@}
699 \setlength\tabbingsep{\labelsep}
700 \skip\@mpfootins = \skip\footins
701 \setlength\fboxsep{3\p@}
702 \setlength\fboxrule{.4\p@}
703 \renewcommand \theequation {\@arabic\c@equation}
704 \newcounter{figure}
705 \renewcommand \thefigure {\@arabic\c@figure}
706 \def\fps@figure{tbp}
707 \def\ftype@figure{1}
708 \def\ext@figure{lof}
709 \def\fnum@figure{\figurename~\thefigure}
710 \newenvironment{figure}
711 {\@float{figure}}
712 {\end@float}
713 \newenvironment{figure*}
714 {\@dblfloat{figure}}
715 {\end@dblfloat}
716 \newcounter{table}
717 \renewcommand\thetable{\@arabic\c@table}
718 \def\fps@table{tbp}
719 \def\ftype@table{2}
720 \def\ext@table{lot}
721 \def\fnum@table{\tablename~\thetable}
722 \newenvironment{table}
723 {\@float{table}}
724 {\end@float}
725 \newenvironment{table*}
726 {\@dblfloat{table}}
727 {\end@dblfloat}
728
729
730 \newenvironment{xtable}
731 {\@dblfloat{table}}
732 {\end@dblfloat}
733 \newenvironment{xfigure}
734 {\@dblfloat{figure}}
735 {\end@dblfloat}
736
737 \newlength\abovecaptionskip
738 \newlength\belowcaptionskip
739 \setlength\abovecaptionskip{2\p@}
740 \setlength\belowcaptionskip{4\p@}
741
742 \long\def\@makecaption#1#2{%
743 \ifx\@captype\xtable
744 \let\currtabcaption\relax
745 \gdef\currtabcaption{%
746 \tabnumfont\relax #1.\tabtextfont\hskip8\p@\relax#2\par
747 \vskip\belowcaptionskip
748 }
749 \else
750 \vskip\abovecaptionskip
751 \sbox\@tempboxa{\fignumfont#1.\figtextfont\hskip8\p@\relax #2}%
752 \ifdim \wd\@tempboxa >\hsize
753 \fignumfont\relax #1.\figtextfont\hskip8\p@\relax#2\par
754 \else
755 \global \@minipagefalse
756 \hb@xt@\hsize{\hfil\box\@tempboxa\hfil}%
757 \fi
758 \fi
759 }
760 \DeclareOldFontCommand{\rm}{\normalfont\rmfamily}{\mathrm}
761 \DeclareOldFontCommand{\sf}{\normalfont\sffamily}{\mathsf}
762 \DeclareOldFontCommand{\tt}{\normalfont\ttfamily}{\mathtt}
763 \DeclareOldFontCommand{\bf}{\normalfont\bfseries}{\mathbf}
764 \DeclareOldFontCommand{\it}{\normalfont\itshape}{\mathit}
765 \DeclareOldFontCommand{\sl}{\normalfont\slshape}{\@nomath\sl}
766 \DeclareOldFontCommand{\sc}{\normalfont\scshape}{\@nomath\sc}
767 \DeclareRobustCommand*\cal{\@fontswitch\relax\mathcal}
768 \DeclareRobustCommand*\mit{\@fontswitch\relax\mathnormal}
769 \newcommand\@pnumwidth{1.55em}
770 \newcommand\@tocrmarg{2.55em}
771 \newcommand\@dotsep{4.5}
772 \setcounter{tocdepth}{3}
773 \newcommand\tableofcontents{%
774 \section*{\contentsname
775 \@mkboth{%
776 \MakeUppercase\contentsname}{\MakeUppercase\contentsname}}%
777 \@starttoc{toc}%
778 }
779 \newcommand*\l@part[2]{%
780 \ifnum \c@tocdepth >-2\relax
781 \addpenalty\@secpenalty
782 \addvspace{2.25em \@plus\p@}%
783 \begingroup
784 \parindent \z@ \rightskip \@pnumwidth
785 \parfillskip -\@pnumwidth
786 {\leavevmode
787 \large \bfseries #1\hfil \hb@xt@\@pnumwidth{\hss #2}}\par
788 \nobreak
789 \if@compatibility
790 \global\@nobreaktrue
791 \everypar{\global\@nobreakfalse\everypar{}}%
792 \fi
793 \endgroup
794 \fi}
795 \newcommand*\l@section[2]{%
796 \ifnum \c@tocdepth >\z@
797 \addpenalty\@secpenalty
798 \addvspace{1.0em \@plus\p@}%
799 \setlength\@tempdima{1.5em}%
800 \begingroup
801 \parindent \z@ \rightskip \@pnumwidth
802 \parfillskip -\@pnumwidth
803 \leavevmode \bfseries
804 \advance\leftskip\@tempdima
805 \hskip -\leftskip
806 #1\nobreak\hfil \nobreak\hb@xt@\@pnumwidth{\hss #2}\par
807 \endgroup
808 \fi}
809 \newcommand*\l@subsection{\@dottedtocline{2}{1.5em}{2.3em}}
810 \newcommand*\l@subsubsection{\@dottedtocline{3}{3.8em}{3.2em}}
811 \newcommand*\l@paragraph{\@dottedtocline{4}{7.0em}{4.1em}}
812 \newcommand*\l@subparagraph{\@dottedtocline{5}{10em}{5em}}
813 \newcommand\listoffigures{%
814 \section*{\listfigurename
815 \@mkboth{\MakeUppercase\listfigurename}%
816 {\MakeUppercase\listfigurename}}%
817 \@starttoc{lof}%
818 }
819 \newcommand*\l@figure{\@dottedtocline{1}{1.5em}{2.3em}}
820 \newcommand\listoftables{%
821 \section*{\listtablename
822 \@mkboth{%
823 \MakeUppercase\listtablename}{\MakeUppercase\listtablename}}%
824 \@starttoc{lot}%
825 }
826 \let\l@table\l@figure
827 \newdimen\bibindent
828 \setlength\bibindent{1.5em}
829
830 \newskip\bibskip
831 \bibskip=0pt plus 3pt
832 \newenvironment{thebibliography}[1]
833 {\endgroup\endtwocolumns\vskip24pt\twocolumns\begingroup
834 \def\@currenvir{thebibliography}
835 \let\savebibitem\bibitem
836 \def\bibitem{\vskip\bibskip\savebibitem}
837 \tiny\baselineskip=8pt\bibfont
838 \let\it\bibitfont
839 \let\bf\bibbffont
840 \let\em\bibitfont
841 \let\sc\bibfont
842 \def\textit##1{{\bibitfont ##1}}
843 \def\textbf##1{{\bibbffont ##1}}
844 \list{\@biblabel{\@arabic\c@enumiv}}%
845 {\settowidth\labelwidth{\@biblabel{#1}}%
846 \leftmargin\labelwidth
847 \advance\leftmargin\labelsep
848 \@openbib@code
849 \usecounter{enumiv}%
850 \let\p@enumiv\@empty
851 \renewcommand\theenumiv{\@arabic\c@enumiv}}%
852 \sloppy
853 \clubpenalty4000
854 \@clubpenalty \clubpenalty
855 \widowpenalty4000%
856 \sfcode`\.\@m}
857 {\def\@noitemerr
858 {\@latex@warning{Empty `thebibliography' environment}}%
859 \endlist
860 }
861 \newcommand\newblock{\hskip .11em\@plus.33em\@minus.07em}
862 \let\@openbib@code\@empty
863
864 %\renewcommand\footnoterule{%
865 % \kern-3\p@
866 % \hrule\@width6pc%.4\columnwidth
867 % \kern2.6\p@}
868 \renewcommand\footnoterule{%
869 \ifx \@significancetext\@empty
870 \kern-3\p@
871 \hrule\@width6pc%.4\columnwidth
872 \kern2.6\p@
873 \else
874 \ifnum\thepage=1
875 \renewcommand\footnoterule{}
876 \else
877 \kern-3\p@
878 \hrule\@width6pc%.4\columnwidth
879 \kern2.6\p@
880 \fi
881 \fi
882 }
883 \newcommand\@makefntext[1]{%
884 \parindent 1em%
885 \noindent
886 \hb@xt@1.8em{\hss\@makefnmark}#1}
887 \newcommand\contentsname{Contents}
888 \newcommand\listfigurename{List of Figures}
889 \newcommand\listtablename{List of Tables}
890 \newcommand\refname{References}
891 \newcommand\indexname{Index}
892 \newcommand\figurename{Fig.}
893 \newcommand\tablename{Table}
894 \newcommand\partname{Part}
895 \newcommand\appendixname{Appendix}
896 \newcommand\abstractname{Abstract}
897 \def\today{\ifcase\month\or
898 January\or February\or March\or April\or May\or June\or
899 July\or August\or September\or October\or November\or December\fi
900 \space\number\day, \number\year}
901 \setlength\columnsep{10\p@}
902 \setlength\columnseprule{0\p@}
903 \pagenumbering{arabic}
904 \if@twoside
905 \else
906 \raggedbottom
907 \fi
908 \if@twocolumn
909 \twocolumn
910 \sloppy
911 \flushbottom
912 \else
913 \onecolumn
914 \fi
915
916 %%%%%%%%%%%%%%%%%
917 % Additions to article.cls for PNASONE ==>>
918 %%%%%%%%%%%%%%%%%
919 \hoffset-.5in
920 \pagestyle{headings}
921 \textwidth= 42.5pc
922 \textheight= 56.2pc
923
924 \def\xrelax{\relax}
925
926
927
928 %%%%%%%%%%%%%%%%%%%%%%%% For Line numbers %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
929
930 \newcounter{cms}
931
932 \def\leftnumber{\setlength{\unitlength}{1pt}
933 \begin{picture}(0,0)
934 \multiput(-45,688)(0,-10){68}{\addtocounter
935 {cms}{1}{\fontsize{9}{10.5}\selectfont\arabic{cms}\par}}
936 \end{picture}
937 }
938
939 \def\rightnumber{\setlength{\unitlength}{1pt}
940 \begin{picture}(0,0)
941 \multiput(6,688)(0,-10){68}{\addtocounter
942 {cms}{1}{\fontsize{9}{10.5}\selectfont\arabic{cms}\par}}
943 \end{picture}
944 }
945 %%%%%%%%%%%%%%%%%%%%%%%% For Line numbers %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
946
947
948 %%%%%%%%%%
949 %% Footnotes, endnotes
950
951 \newcount\footnum
952 \newcount\savefootnum
953
954 \def\notes{
955 {\ifnum\footnum=0\else
956 \savefootnum=\footnum
957 \footnum=0
958 \noindent\loop\ifnum\savefootnum>\footnum%
959 \global\advance\footnum by1\relax%
960 \csname foot\the\footnum\endcsname\relax%
961 \expandafter\gdef\csname foot\the\footnum\endcsname{\relax}\relax%
962 \repeat\global\footnum=0\relax\fi}}
963
964
965 \long\def\endnotes#1{\global\advance\footnum by 1\relax$^{\the\footnum}$%
966 \long\expandafter\gdef\csname foot\the\footnum\endcsname{%
967 \vbox{\footnotesize\everypar={\hskip-10pt\everypar={}}
968 \leftskip=10pt\relax
969 \noindent\hbox to10pt{\the\footnum.\hfill}{\def\@currentlabel{\the\footnum}%
970 #1\strut\vskip1sp}}\vskip1pt}}
971
972 \def\endnotetext#1{\global\advance\footnum by 1\relax
973 \long\expandafter\gdef\csname foot\the\footnum\endcsname{%
974 \vtop{\footnotesize%
975 \leftskip=12pt\relax\parindent=-12pt
976 \indent\hbox to12pt{\the\footnum.\hfill}{#1\strut\vskip1sp}}\vskip1pt}}
977
978 %\let\footnote\endnotes
979
980 \setlength\oddsidemargin {3\p@}
981 \setlength\evensidemargin {-3\p@}
982
983
984 \def\dropcap#1{\setbox1=\hbox{\dropcapfont\uppercase{#1}\hskip1pt}
985 \hangindent=\wd1
986 \hangafter-2
987 \noindent\llap{\vbox to0pt{\vskip-7pt\copy1\vss}}}
988
989 %%% Theorem environment %%%%%%%%%
990
991 %% added \theoremfont for theorem name and number
992
993 \def\@begintheorem#1#2{\trivlist
994 \item[\hskip \labelsep{\theoremfont #1\ #2.}]\itshape}
995 \def\@opargbegintheorem#1#2#3{\trivlist
996 \item[\hskip \labelsep{\theoremfont #1\ #2.\ (#3)}]\itshape}
997 \def\@endtheorem{\endtrivlist}
998
999 %%%%%%
1000 %%Macros for Footline on titlepage
1001
1002 \def\url#1{\def\theurl{#1}}
1003 \def\issuedate#1{\def\theissuedate{#1}}
1004 \def\copyrightyear#1{\def\thecopyrightyear{#1}}
1005 \def\volume#1{\def\thevolume{#1}}
1006 \def\issuenumber#1{\def\theissuenumber{#1}}
1007 \def\footlineauthor#1{\def\thefootlineauthor{\let\it\footlineit#1}}
1008
1009 \ps@headings
1010
1011 %% References
1012
1013 \def\@biblabel#1{#1.}
1014
1015 %%% code to get text in tables to extend all the way to left and right
1016 %%% of table
1017
1018 \def\xtable{table}
1019 \def\@array[#1]#2{\tabletextfont
1020 \setbox\@arstrutbox=\hbox{\vrule
1021 height\arraystretch \ht\strutbox
1022 depth\arraystretch \dp\strutbox
1023 width\z@}\@mkpream{#2}\edef\@preamble{\halign \noexpand\@halignto
1024 \bgroup%
1025 \tabskip\z@\@arstrut\@preamble
1026 \ifx\@captype\xtable\hskip-\tabcolsep\fi%% <==== Changed
1027 \tabskip\z@ \cr}%
1028 \let\@startpbox\@@startpbox \let\@endpbox\@@endpbox%
1029 \if #1t\vtop \else \if#1b\vbox \else \vcenter \fi\fi%
1030 \bgroup\let\par\relax%
1031 \let\@sharp##\let\protect\relax \lineskip\z@\baselineskip\z@\@preamble}
1032
1033 %% new
1034 \def\new@tabacol{\edef\@preamble{\@preamble\hskip0pt}}
1035
1036 \def\@tabclassz{\ifcase \@lastchclass\@acolampacol%
1037 \or \@ampacol \or
1038 \or \or \@addamp \or \@acolampacol\or \@firstampfalse
1039 \ifx\@captype\xtable \new@tabacol\else\@tabacol \fi%
1040 \fi%
1041 \edef\@preamble{\@preamble%
1042 \ifcase \@chnum%
1043 \hfil\ignorespaces\@sharp\unskip\hfil%
1044 \or \ignorespaces\@sharp\unskip\hfil%
1045 \or \hfil\hskip\z@ \ignorespaces\@sharp\unskip\fi}}
1046
1047 \setcounter{secnumdepth}{0}
1048
1049 \long\def\@makefntext#1{\parindent0pt\noindent
1050 \@textsuperscript{\normalfont\@thefnmark}#1}%
1051
1052 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1053 %% %%
1054 %% LaTeX Style for Multiple Columns with Floating Insertions %%
1055 %% %%
1056 %% Copyright 2004, Amy Hendrickson, TeXnology Inc. %%
1057 %% All rights reserved %%
1058 %% %%
1059 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1060
1061 %%%%%%%%
1062 %%% Double column output routines,
1063 %%% with single and double column insertions,
1064 %%% to be positioned at page or column top, page or column bottom, page
1065 %%% or column center, or full page floating insertion.
1066 %%% This code was originally based on Frank Mittlebach's multicol.sty.
1067 %%% The concept of how to balance columns is due to Donald Knuth. The
1068 %%% way to integrate the changed output routine into the standard LaTeX
1069 %%% output routine is due to Frank.
1070 %%% The method of making the single and double column insertions and the
1071 %%% changes in the output routines to accomodate these features are mine.
1072 %%% A.H., August 2004
1073 %%
1074
1075 \newskip\abovefigcaptionskip
1076 \newskip\abovetabcaptionskip
1077 \newskip\abovetableskip
1078 \newif\ifcentermultiplelines
1079 \newif\ifcentersingleline
1080 \newif\ifcentersingletabline
1081 \newif\iflineabovetabcaption
1082 \newif\iflinebelowtabcaption
1083 \newdimen\belowtabcaptionskip
1084
1085 %% Parameters you can set:
1086 \columnsep=13.5pt%16pt
1087 \newdimen\saveparskip
1088 \saveparskip=\parskip
1089
1090 %%
1091 \newdimen\captionskip %% space between caption and figure or table
1092 \captionskip=0pt
1093 %%%
1094
1095 \newdimen\PushOneColTopFig
1096 \newdimen\PushOneColBotFig
1097
1098 \PushOneColTopFig=5.5pt %% push down from top of text page
1099 \PushOneColBotFig=-4.5pt %
1100
1101 %%
1102 \newdimen\PushOneColTopTab
1103 \newdimen\PushOneColBotTab
1104
1105 \PushOneColTopTab=2.5pt %% push down from top of text page
1106 \PushOneColBotTab=0pt %% push up from bottom of text page
1107
1108 %%
1109 \newdimen\PushTwoColTopFig
1110 \newdimen\PushTwoColBotFig
1111
1112 \PushTwoColTopFig=2.5pt %% push down from top of text page
1113 \PushTwoColBotFig=1.5pt %% push up from bottom of text page
1114
1115 %%
1116 \newdimen\PushTwoColTopTab
1117 \newdimen\PushTwoColBotTab
1118
1119 \PushTwoColTopTab=1.5pt %% push down from top of text page
1120 \PushTwoColBotTab=1.5pt %% push up from bottom of text page
1121
1122 %%
1123
1124 \newskip\intextfloatskip
1125 \intextfloatskip=20pt %% Space between figure or table and text.
1126 %% (Need to subtract 4pt to get what you want)
1127
1128 %% Normal and Appendix Figure and Table Numbers
1129
1130 \def\appthefigure{\Alph{section}\the\c@appfigure\theletter}
1131 \def\appthetable{\Alph{section}\the\c@apptable\theletter}
1132 \def\apptheplate{\Alph{section}\the\c@appplate\theletter}
1133
1134 \newcount\c@appfigure
1135 \newcount\c@apptable
1136 \newcount\c@appplate
1137
1138 %% <=== end of parameters you can set
1139
1140 %% do one column at a time so that we can get single col
1141 %% floats for first col.
1142
1143 %%% New version of \@makecol that includes dbltopins and dblbotins,
1144 %%% insertions that span both columns at the top and bottom of text page.
1145
1146 %%%
1147
1148 \def\new@makecol{\setbox\@outputbox
1149 \vbox{\boxmaxdepth \maxdepth
1150 \ifdim\ht\dbltopins<1pt\else\unvbox\dbltopins\fi
1151 \unvbox\@cclv
1152 \ifdim\ht\dblbotins<1pt\else\unvbox\dblbotins\fi%
1153 \ifvoid\footins\else\vskip\skip\footins\footnoterule\unvbox\footins\fi\vss}
1154 %\global\savefigandtabnumber\figandtabnumber
1155 %\global\advance\savefigandtabnumber by 1 %% Because loop stops one short
1156 %% of the total number of figs
1157 \global\savedblfigandtabnumber\dblfigandtabnumber
1158 \xdef\@freelist{\@freelist\@midlist}\gdef\@midlist{}\@combinefloats
1159 \setbox\@outputbox\vbox to\@colht{\boxmaxdepth\maxdepth
1160 \@texttop\dimen128=\dp\@outputbox\unvbox\@outputbox
1161 \vskip-\dimen128\@textbottom}%
1162 \global\maxdepth\@maxdepth}
1163
1164 %%
1165 \let\@makecol\new@makecol %%
1166
1167 %% Default Latex output routine, to return to after balance columns
1168 %% This should make it possible to capture the output routine of
1169 %% any version of 2e as well as 2.09. ==>>
1170
1171 \edef\curroutput{\the\output}
1172 \let\latexoutput\curroutput
1173
1174 %% table* and figure* outside two columns keep default definitions.
1175
1176 \newif\ifnonewpage
1177 \def\nonewpage{\global\nonewpagetrue}
1178
1179 %% Begin twocolumns ==>>
1180 \newdimen\checkforspace
1181 \def\twocolumns{\par \penalty\z@
1182 \checkforspace=\pagegoal
1183 \advance\checkforspace-\pagetotal
1184 \advance\checkforspace-\ht\partialpage
1185 \advance\checkforspace-\dp\partialpage
1186 \advance\checkforspace by -2\ht\dbltopins
1187 \advance\checkforspace by -2\dp\dbltopins
1188 \advance\checkforspace by -2\ht\dblbotins
1189 \advance\checkforspace by -2\dp\dblbotins
1190 \ifdim\checkforspace<36pt\ifnonewpage\else\newpage\fi\fi
1191 \begingroup
1192 %
1193 \expandafter\gdef\csname plate*\endcsname{\twocolplate}
1194 \expandafter\gdef\csname endplate*\endcsname{\endtwocolfloat}
1195 %
1196 \expandafter\gdef\csname figure*\endcsname{\twocolfig}
1197 \expandafter\gdef\csname endfigure*\endcsname{\endtwocolfloat}
1198 %
1199 \expandafter\gdef\csname table*\endcsname{\twocoltable}
1200 \expandafter\gdef\csname endtable*\endcsname{\endtwocolfloat}
1201 %
1202 \let\figure\onecolfig
1203 \let\plate\onecolplate
1204 \let\table\onecoltable
1205 %
1206 \let\@makecol\new@makecol %%
1207 %% Confines new def of \@makecol to
1208 %% two column material, preserves normal topskip after twocolumns is
1209 %% finished.
1210 %%
1211 \output={\global\setbox\partialpage=\vbox{\unvbox\@cclv}}
1212 \vskip1sp %%
1213 \eject
1214 \vbadness10001 \hbadness5000
1215 \tolerance5000
1216 \parskip \saveparskip %plus .01pt %
1217 %\ifjdraft
1218 %\baselineskip=28pt\fi
1219 \pretolerance\m@ne %keeps TeX from trying to make up paragraph
1220 % without discretionary hyphens
1221 \advance\@colroom-\ht\partialpage
1222 \advance\@colroom-\dp\partialpage
1223 \vsize=\@colroom
1224 % Changed to \@colroom rather than 2\@colroom. Each column is output
1225 % separately so we can find out if there are top or bottom inserts
1226 % in first column.
1227 %%
1228 \hsize\textwidth \advance\hsize-\columnsep
1229 \divide\hsize by 2
1230 \linewidth\hsize %% particular to LaTeX
1231 \columnwidth=\hsize
1232 %% OR, you can substitute these lines:
1233 %\hsize=\mycolumnwidth
1234 %\linewidth=\hsize
1235 %%
1236 %% Output:
1237 % Set output to firstcolout, which checks to see if there are inserts
1238 % then doubles the vsize and send material back into input stream, then
1239 % sets the next output routine to \makeuppage
1240 %
1241 \output={\firstcolout}
1242 \vskip2sp\ignorespaces}
1243
1244
1245 \def\galleycolumns{\par \penalty\z@
1246 \checkforspace=\pagegoal
1247 \advance\checkforspace-\pagetotal
1248 \advance\checkforspace-\ht\partialpage
1249 \advance\checkforspace-\dp\partialpage
1250 \advance\checkforspace by -2\ht\dbltopins
1251 \advance\checkforspace by -2\dp\dbltopins
1252 \advance\checkforspace by -2\ht\dblbotins
1253 \advance\checkforspace by -2\dp\dblbotins
1254 \ifdim\checkforspace<36pt\newpage\fi
1255 \begingroup
1256 \expandafter\gdef\csname plate*\endcsname{\twocolplate}
1257 \expandafter\gdef\csname endplate*\endcsname{\endtwocolfloat}
1258 %
1259 \expandafter\gdef\csname figure*\endcsname{\twocolfig}
1260 \expandafter\gdef\csname endfigure*\endcsname{\endtwocolfloat}
1261 %
1262 \expandafter\gdef\csname table*\endcsname{\twocoltable}
1263 \expandafter\gdef\csname endtable*\endcsname{\endtwocolfloat}
1264 %
1265 \let\figure\onecolfig
1266 \let\plate\onecolplate
1267 \let\table\onecoltable
1268 %
1269 \global\firstsectionfalse
1270 \hsize=\mycolumnwidth
1271 \linewidth=\mycolumnwidth
1272 \vbadness10001
1273 \hbadness5000
1274 \tolerance5000
1275 \widowpenalty=0 \clubpenalty=0
1276 \parskip \saveparskip %plus .0001pt %
1277 \vskip1sp\ignorespaces}
1278
1279 \def\draftcolumns{\par \penalty\z@
1280 \begingroup
1281 \expandafter\gdef\csname plate*\endcsname{\twocolplate}
1282 \expandafter\gdef\csname endplate*\endcsname{\endtwocolfloat}
1283 %
1284 \expandafter\gdef\csname figure*\endcsname{\twocolfig}
1285 \expandafter\gdef\csname endfigure*\endcsname{\endtwocolfloat}
1286 %
1287 \expandafter\def\csname table*\endcsname{\twocoltable}
1288 \expandafter\def\csname endtable*\endcsname{\endtwocolfloat}
1289 %
1290 \let\figure\onecolfig
1291 \let\plate\onecolplate
1292 \let\table\onecoltable
1293 %
1294 \marginparsep=4pt
1295 \oddsidemargin-.25in
1296 \evensidemargin-.25in
1297 \advance\textwidth-.5in
1298 \hsize=\textwidth
1299 \linewidth=\textwidth
1300 \vbadness10001 \hbadness5000
1301 \tolerance5000
1302 \parskip \saveparskip
1303 \vskip1sp\ignorespaces}
1304
1305 \newbox\savetopinsert
1306 \newbox\savebotinsert
1307 \newbox\secondsavetopinsert
1308 \newbox\secondsavebotinsert
1309 \newbox\firstcolbox
1310 \newbox\secondcolbox
1311 \newbox\thefirstbox
1312 \newbox\thesecondbox
1313
1314 \newdimen\firstcol
1315 \newdimen\secondcol
1316 \newdimen\checkheight
1317
1318 \newcount\loopnum
1319 \newcount\firstcolsavefignum
1320
1321 \def\firstcolout{%
1322 %% The point of having firstcolout is to find out
1323 %% which figures/tables have been entered in the first column:
1324 \global\firstcolsavefignum=\figandtabnumber
1325 \global\advance\vsize by\@colroom
1326 \topskip=11pt %% ??
1327 \unvbox\@cclv
1328 \penalty\outputpenalty
1329 \global\output={\makeuppage}}
1330
1331 %% This is where the floats and text are put together to make page:
1332
1333 \newif\iffirstpage
1334 \newbox\footnotebox
1335
1336 \newdimen\ColUsed
1337 \newdimen\FigSpace
1338 \newbox\testdblbotins
1339
1340 \def\makeuppage{%
1341 %%
1342 \FigSpace=.9\@colroom %%
1343 \advance\FigSpace by-\ht\testdblbotins
1344 \advance\FigSpace by-\dp\testdblbotins
1345 \advance\FigSpace by-\ht\dbltopins
1346 \advance\FigSpace by-\dp\dbltopins
1347 %
1348 %% Save top inserts from first column: +++
1349 \global\setbox\savetopinsert=\vbox{%
1350 % write top figures and tables into this box
1351 \redefiningtrue
1352 \global\loopnum=0 \global\checkheight=0pt
1353 \loop\ifnum\loopnum<\firstcolsavefignum
1354 %
1355 \expandafter\ifx\csname topfloat\the\loopnum\endcsname\empty
1356 \else
1357 \expandafter\ifx\csname topfloat\the\loopnum\endcsname\relax
1358 \else
1359 \global\advance\checkheight by
1360 \expandafter\csname totalht\the\loopnum\endcsname\relax
1361 \fi\fi
1362 \ifdim\checkheight>\FigSpace \relax
1363 \global\loopnum=10000 % jump out of loop
1364 %
1365 \else
1366 \csname topfloat\the\loopnum\endcsname
1367 \fi
1368 %
1369 \global\advance\loopnum by1
1370 \repeat\relax
1371 }
1372 \ColUsed=\FigSpace %%
1373 \advance\ColUsed by-\ht\savetopinsert
1374 \advance\ColUsed by-\dp\savetopinsert
1375 %%
1376 \global\setbox\savebotinsert=\vbox{%
1377 %% Write bottom figures and tables into this box
1378 \redefiningtrue
1379 \global\loopnum=0
1380 \global\checkheight=0pt
1381 \loop\ifnum\loopnum<\firstcolsavefignum
1382 \expandafter\ifx\csname botfloat\the\loopnum\endcsname\empty
1383 \else
1384 \expandafter\ifx\csname botfloat\the\loopnum\endcsname\relax
1385 \else
1386 \global\advance\checkheight by
1387 \expandafter\csname totalht\the\loopnum\endcsname\relax
1388 \fi\fi
1389 \ifdim\checkheight>\ColUsed
1390 \global\loopnum=10000 % jump out of loop
1391 \else%
1392 \csname botfloat\the\loopnum\endcsname
1393 \global\expandafter\expandafter\let\csname botfloat\the\loopnum\endcsname\relax
1394 %% how come this reset is here and not in similar places????
1395 \fi
1396 %
1397 \global\advance\loopnum by1
1398 \repeat
1399 } %
1400 %
1401 %
1402 \iffirstpage\else
1403 \global\setbox\secondsavetopinsert=\vbox{%
1404 %% Write top figures and tables into this box
1405 %
1406 \global\loopnum=0 \global\checkheight=0pt
1407 \redefiningtrue
1408 \loop\ifnum\loopnum<\figandtabnumber %% ?
1409 %
1410 \expandafter\ifx\csname topfloat\the\loopnum\endcsname\empty
1411 \else
1412 \expandafter\ifx\csname topfloat\the\loopnum\endcsname\relax
1413 \else
1414 \global\advance\checkheight by
1415 \expandafter\csname totalht\the\loopnum\endcsname\relax
1416 \fi\fi
1417 \ifdim\checkheight>\FigSpace
1418 \global\loopnum=10000 % jump out of loop
1419 %
1420 \else%
1421 \csname topfloat\the\loopnum\endcsname
1422 \fi
1423 %
1424 \global\advance\loopnum by1\repeat
1425 %% one more, because it doesn't stop when number is =, only when it
1426 %% is less than.
1427 \global\advance\loopnum by1
1428 \csname topfloat\the\loopnum\endcsname
1429 }
1430 \fi
1431 %
1432 \ColUsed=\FigSpace %%
1433 \advance\ColUsed by-\ht\secondsavetopinsert
1434 \advance\ColUsed by-\dp\secondsavetopinsert
1435 %
1436 \iffirstpage\global\firstpagefalse\else
1437 \global\setbox\secondsavebotinsert=\vbox{%
1438 %% Write bottom figures and tables into this box
1439 %
1440 \redefiningtrue
1441 \global\loopnum=0 \global\checkheight=0pt
1442 \loop\ifnum\loopnum<\figandtabnumber
1443 \expandafter\ifx\csname botfloat\the\loopnum\endcsname\empty
1444 \else
1445 \expandafter\ifx\csname botfloat\the\loopnum\endcsname\relax
1446 \else
1447 \global\advance\checkheight by
1448 \expandafter\csname totalht\the\loopnum\endcsname\relax
1449 \fi\fi
1450 \ifdim\checkheight>\ColUsed
1451 \global\loopnum=10000 % jump out of loop
1452 %
1453 \else%
1454 \csname botfloat\the\loopnum\endcsname
1455 \fi
1456 %
1457 \global\advance\loopnum by1\repeat
1458 %% one more, because it doesn't stop when number is =, only when it
1459 %% is less than.
1460 \global\advance\loopnum by1
1461 \csname botfloat\the\loopnum\endcsname
1462 }
1463 %
1464 \global\dp\secondsavebotinsert=2.5pt
1465 \global\dp\savebotinsert=2.5pt
1466 \fi
1467 %
1468 \splittopskip=\topskip
1469 \splitmaxdepth\maxdepth
1470 \dimen@\@colroom
1471 %% Leave space if there is a two-column wide bottom insertion:
1472 %
1473 \global\setbox\dblbotins=\vbox{%
1474 \hsize=\textwidth
1475 \linewidth=\textwidth
1476 \captionwidth=\widecaptionwidth
1477 \unvbox\dblbotins %% avoid eradicating this if it has anything in it
1478 %% Write dblspan bottom figures and tables into this box
1479 \redefiningtrue
1480 \global\dblloopnum=0
1481 \loop\ifnum\dblloopnum<\savedblfigandtabnumber %%
1482 \csname dblbotfloat\the\dblloopnum\endcsname
1483 \global\advance\dblloopnum by1\repeat
1484 \csname dblbotfloat\the\dblloopnum\endcsname
1485 }
1486 \ifvoid\dblbotins \else
1487 \advance\dimen@-\ht\dblbotins
1488 \advance\dimen@-\dp\dblbotins
1489 \fi
1490 %
1491 %% Leave space if there is a two-column wide top insertion:
1492 \ifvoid\dbltopins\else
1493 \advance\dimen@-\ht\dbltopins
1494 \advance\dimen@-\dp\dbltopins
1495 \fi
1496 %%
1497 %% These changes are made to cut the column size down if we need
1498 %% to fit an insert into the column. This allows the right and
1499 %% left column to have differing amounts of text cut from box 255,
1500 %% called box \@cclv in LaTeX. See \vsplit below.
1501 \firstcol=\dimen@
1502 \ifvoid\savetopinsert\else
1503 \ifdim\ht\savetopinsert>0pt
1504 \advance\firstcol by-\ht\savetopinsert
1505 \advance\firstcol by-\dp\savetopinsert\fi\fi
1506 \ifvoid\savebotinsert\else
1507 \ifdim\ht\savebotinsert>0pt
1508 \advance\firstcol by-\ht\savebotinsert
1509 \advance\firstcol by-\dp\savebotinsert\fi
1510 \fi%
1511 %%% KLUDGE below
1512 \advance\firstcol by-3pt %% We need this to avoid
1513 %% error messages about overfull boxes.
1514 %
1515 \secondcol=\dimen@
1516 %%
1517 \ifvoid\secondsavetopinsert\else
1518 \ifdim\ht\secondsavetopinsert>0pt
1519 \advance\secondcol by-\ht\secondsavetopinsert
1520 \advance\secondcol by-\dp\secondsavetopinsert\fi\fi
1521 \ifvoid\secondsavebotinsert\else
1522 \ifdim\ht\secondsavebotinsert>0pt
1523 \advance\secondcol by-\ht\secondsavebotinsert
1524 \advance\secondcol by-\dp\secondsavebotinsert\fi\fi
1525 \ifvoid\footins\else
1526 \ifdim\ht\footins>0pt
1527 \global\setbox\footnotebox=\vbox{\vskip\skip\footins
1528 \footnoterule\unvbox\footins\vskip1sp}
1529 \advance\secondcol by-\ht\footnotebox
1530 \advance\secondcol by-\dp\footnotebox\fi\fi
1531 %%% KLUDGE below
1532 \advance\secondcol by-3pt %% We need this to avoid
1533 %% error messages about overfull boxes.
1534 %
1535 %% Cutting the amount of text that will fit from box255:
1536 \splittopskip=\topskip %%
1537 \splitmaxdepth\maxdepth
1538 \setbox\thefirstbox \vsplit\@cclv to\firstcol
1539 \setbox\thesecondbox \vsplit\@cclv to\secondcol
1540 %
1541 %% Making a text box that includes the inserts, column to the left:
1542 \setbox\firstcolbox\vbox to\dimen@{%
1543 \ifvoid\savetopinsert\else\unvbox\savetopinsert\fi%
1544 \box\thefirstbox%
1545 \ifvoid\savebotinsert\else\vfill\unvbox\savebotinsert\fi%
1546 }
1547 %
1548 %% Making a text box that includes the inserts, column to the right:
1549 \setbox\secondcolbox\vbox to\dimen@{%
1550 \ifvoid\secondsavetopinsert\else\unvbox\secondsavetopinsert\fi%
1551 \box\thesecondbox%%
1552 \ifvoid\secondsavebotinsert\else\vfill\unvbox\secondsavebotinsert\vskip1sp\fi%
1553 \ifvoid\footnotebox\else\unvbox\footnotebox\fi%
1554 }
1555 % Put back any text material that is not used:
1556 \ifvoid\@cclv \else
1557 \unvbox\@cclv
1558 \penalty\outputpenalty\fi
1559 \setbox\@cclv\vbox{\page@sofar}%
1560 \@makecol\@outputpage
1561 \global\@colroom\@colht
1562 % Changed this so that each column will be output separately,
1563 % so we have a chance to see if there are any insertions in the first
1564 % column.
1565 %
1566 %% Do Page Inserts here, so that if there are any two col top inserts
1567 %% They will be numbered after Page Inserts.
1568 %%
1569 \expandafter\ifx\csname pagefloat\the\pageloopnum\endcsname\relax
1570 \else
1571 \expandafter\ifx\csname pagefloat\the\pageloopnum\endcsname\empty
1572 \else
1573 \insertpage\fi\fi
1574 %
1575 %** doing this now gets the numbers right.
1576 \global\setbox\dbltopins=\vbox{%
1577 \hsize=\textwidth
1578 \linewidth=\textwidth
1579 \captionwidth=\widecaptionwidth
1580 \unvbox\dbltopins
1581 %% Write dblspan bottom figures and tables into this box
1582 \redefiningtrue %
1583 \global\dblloopnum=0
1584 \loop\ifnum\dblloopnum<\savedblfigandtabnumber
1585 \csname dbltopfloat\the\dblloopnum\endcsname
1586 \global\advance\dblloopnum by1\repeat
1587 \csname dbltopfloat\the\dblloopnum\endcsname%
1588 %Save one for next page?
1589 %\vskip24pt
1590 }
1591 %**
1592 %
1593 %% dblfigandtabnumber rather than savedblfigandtabnumber here
1594 \global\setbox\testdblbotins=\vbox{%
1595 \let\c@figure\bogus
1596 \let\c@table\bogus
1597 \let\c@plate\bogus
1598 \hsize=\textwidth
1599 \linewidth=\textwidth
1600 \captionwidth=\widecaptionwidth
1601 \copy\dblbotins %% avoid eradicating this if it has anything in it
1602 %% Write dblspan bottom figures and tables into this box
1603 \redefiningfalse
1604 \global\dblloopnum=0
1605 \loop\ifnum\dblloopnum<\dblfigandtabnumber %%
1606 \csname dblbotfloat\the\dblloopnum\endcsname
1607 \global\advance\dblloopnum by1\repeat
1608 \csname dblbotfloat\the\dblloopnum\endcsname
1609 }
1610 %
1611 \ifbalancing
1612 \global\balancingfalse
1613 \global\vsize=2\@colroom
1614 \else
1615 \global\vsize\@colroom
1616 \global\advance\vsize -\ht\dbltopins
1617 \global\advance\vsize -\dp\dbltopins
1618 \global\advance\vsize -\ht\testdblbotins
1619 \global\advance\vsize -\dp\testdblbotins
1620 \global\output={\firstcolout}%
1621 \fi
1622 }
1623
1624
1625 \newcount\pageloopnum
1626
1627 \def\secondoutput{{\makeuppage }}
1628
1629 \newbox\endcolsavetopinsert
1630 \newbox\endcolsavebotinsert
1631 \newbox\testpagesize
1632 \newif\ifbalancing
1633
1634 \newdimen\savelastskip
1635 %%+++
1636 \def\endtwocolumns{%
1637 %\par\penalty0
1638 \splittopskip=\topskip
1639 \splitmaxdepth\maxdepth
1640 \setboxesandredefine
1641 \ifdim\ht\endcolsavetopinsert>1pt
1642 \unvbox\endcolsavetopinsert%
1643 \fi
1644 \ifdim\ht\endcolsavebotinsert>1pt
1645 \unvbox\endcolsavebotinsert%
1646 \fi
1647 \par\penalty\z@
1648 \output={\global\setbox\testpagesize=\vbox{%
1649 \unvbox\@cclv\ifdim\savelastskip>0pt \vskip-\savelastskip\fi}}\eject
1650 %%
1651 %% We reset output routine below to \latexoutput
1652 %% since we had to set multicolout to be the global output routine.
1653 %%
1654 \dimen0=\ht\testpagesize
1655 \advance\dimen0 by\dp\testpagesize
1656 \unvbox\testpagesize %%
1657 %% Above needed to see if we have more than one page worth of text.
1658 %%
1659 \advance\dimen0 by \topskip
1660 \ifdim\dimen0>2\@colroom
1661 %\typeout{^^J^^J more than 2 colroom^^J^^J}
1662 %% More than one page of text:
1663 %%
1664 \balancingtrue %% need this to avoid turning on firstcolout output routine.
1665 \global\output={\settwocolboxes\makeuppage
1666 \global\output={\setboxesandredefine
1667 \balance@columns\global\output={\latexoutput}}}
1668 \else
1669 \settwocolboxes
1670 \advance\dimen0 by 2\ht\dbltopins
1671 \advance\dimen0 by 2\dp\dbltopins
1672 \ifdim\dimen0>2\@colroom
1673 %\typeout{^^J^^J Second more than 2 colroom^^J^^J}
1674 %%
1675 \balancingtrue %% need this to avoid turning on firstcolout output routine.
1676 \global\output={\makeuppage
1677 \global\output={\balance@columns\global\output={\latexoutput}}}
1678 \else
1679 %\typeout{^^J^^J NOT more than 2 colroom^^J^^J}
1680 \balancingtrue %% need this to avoid turning on firstcolout output routine.
1681 \global\output={\balance@columns\global\output={\latexoutput}}\fi\fi
1682 \par
1683 \eject
1684 \endgroup
1685 \par\penalty\z@\relax
1686 \hsize=\textwidth
1687 }
1688
1689 %% to get rid of spurious error message when triple col is used:
1690 %\def\@checkend#1{\def\reserved@a{#1}\ifx
1691 % \reserved@a\@currenvir \else\iftriplecol
1692 %\else\@badend{#1}\fi\fi}
1693
1694 \def\endgalley{\vskip1sp\endgroup\newpage
1695 \vspace*{1in}
1696 \unvbox\figinsert}
1697
1698 \def\enddraft{\vskip1sp\endgroup
1699 \ifdim\ht\figinsert <2pt\else
1700 \newpage
1701 \vspace*{1in}
1702 \unvbox\figinsert\fi}
1703
1704 \def\setboxesandredefine{%
1705 \global\setbox\dbltopins=\vbox{%
1706 \hsize=\textwidth
1707 \linewidth=\textwidth
1708 \captionwidth=\widecaptionwidth
1709 \unvbox\dbltopins
1710 %% Write dblspan bottom figures and tables into this box
1711 \redefiningtrue %
1712 \global\dblloopnum=0
1713 \loop\ifnum\dblloopnum<\dblfigandtabnumber
1714 \csname dbltopfloat\the\dblloopnum\endcsname
1715 \global\advance\dblloopnum by1\repeat
1716 \csname dbltopfloat\the\dblloopnum\endcsname%
1717 % %Save one for next page?
1718 \vskip3pt%% kludge
1719 \vskip-\intextfloatskip
1720 }
1721 %
1722 \global\setbox\endcolsavetopinsert=\vbox{%
1723 %% dropping figures and tables into this box
1724 \loopnum=0
1725 \redefiningtrue
1726 \loop\ifnum\loopnum<\figandtabnumber
1727 \csname topfloat\the\loopnum\endcsname
1728 \global\advance\loopnum by1\repeat
1729 \csname topfloat\the\loopnum\endcsname%
1730 }
1731 %
1732 \global\setbox\endcolsavebotinsert=\vbox{%
1733 %% drop figures and tables into this box
1734 \global\loopnum=0
1735 \redefiningtrue
1736 \loop\ifnum\loopnum<\figandtabnumber
1737 \csname botfloat\the\loopnum\endcsname
1738 \global\advance\loopnum by1\repeat
1739 \csname botfloat\the\loopnum\endcsname}
1740 %
1741 \global\setbox\dblbotins=\vbox{%
1742 \hsize=\textwidth
1743 \linewidth=\textwidth
1744 \captionwidth=\widecaptionwidth
1745 \unvbox\dblbotins %% avoid eradicating this if it has anything in it
1746 % Write dblspan bottom figures and tables into this box
1747 \redefiningtrue
1748 \global\dblloopnum=0
1749 \loop\ifnum\dblloopnum<\dblfigandtabnumber %%
1750 \csname dblbotfloat\the\dblloopnum\endcsname
1751 \global\advance\dblloopnum by1\repeat
1752 \csname dblbotfloat\the\dblloopnum\endcsname}%
1753 }%% end of setboxes and redefine
1754
1755 \def\settwocolboxes{%
1756 \global\setbox\dbltopins=\vbox{%
1757 \hsize=\textwidth
1758 \linewidth=\textwidth
1759 \captionwidth=\widecaptionwidth
1760 \unvbox\dbltopins
1761 % Write dblspan bottom figures and tables into this box
1762 \redefiningtrue %
1763 \global\dblloopnum=0
1764 \loop\ifnum\dblloopnum<\dblfigandtabnumber
1765 \csname dbltopfloat\the\dblloopnum\endcsname
1766 \global\advance\dblloopnum by1\repeat
1767 \csname dbltopfloat\the\dblloopnum\endcsname%
1768 %
1769 %\global\setbox\dblbotins=\vbox
1770 \hsize=\textwidth
1771 \linewidth=\textwidth
1772 \captionwidth=\widecaptionwidth
1773 \unvbox\dblbotins %% avoid eradicating this if it has anything in it
1774 % Write dblspan bottom figures and tables into this box
1775 \redefiningtrue
1776 \global\dblloopnum=0
1777 \loop\ifnum\dblloopnum<\dblfigandtabnumber %%
1778 \csname dblbotfloat\the\dblloopnum\endcsname
1779 \global\advance\dblloopnum by1\repeat
1780 \csname dblbotfloat\the\dblloopnum\endcsname%
1781 \vskip\intextfloatskip%% new++
1782 }}
1783
1784 \def\setonecolboxesandredefine{%
1785 \global\setbox\endcolsavetopinsert=\vbox{%
1786 %% dropping figures and tables into this box
1787 \loopnum=0
1788 \redefiningtrue
1789 \loop\ifnum\loopnum<\figandtabnumber
1790 \csname topfloat\the\loopnum\endcsname
1791 \expandafter\ifx\csname topfloat\the\loopnum\endcsname\relax\else
1792 \vskip12pt\goodbreak\fi
1793 \global\advance\loopnum by1\repeat
1794 \csname topfloat\the\loopnum\endcsname%
1795 }
1796 %
1797 \global\setbox\endcolsavebotinsert=\vbox{%
1798 %% drop figures and tables into this box
1799 \global\loopnum=0
1800 \redefiningtrue
1801 \loop\ifnum\loopnum<\figandtabnumber
1802 \csname botfloat\the\loopnum\endcsname
1803 % we don't want a space here because it is at the bottom of a column:
1804 %\expandafter\ifx\csname botfloat\the\loopnum\endcsname\relax\else
1805 %\vskip12pt\goodbreak\fi
1806 \global\advance\loopnum by1\repeat
1807 \csname botfloat\the\loopnum\endcsname%
1808 }
1809 %
1810 }%% end of setonecol boxes and redefine
1811
1812 \newbox\partialpage
1813 \def\process@cols#1#2{\count@#1\relax
1814 \loop #2%
1815 \advance\count@\tw@
1816 \ifnum\count@<4
1817 \repeat}
1818
1819 %%% Version for balanced column output.
1820
1821 %% this version to get topskip right on balanced page at end of article.
1822
1823 \def\Bpage@sofar{
1824 \unvbox\partialpage
1825 %% major kludge! but it works ==>>
1826 \null
1827 \vskip-\topskip
1828 \vskip-12pt
1829 %% <<==
1830 \process@cols\z@{\wd\count@\hsize}%
1831 \hbox to\textwidth{%
1832 \process@cols\tw@{\box\count@
1833 \hss\vrule\@width\columnseprule\hss}%
1834 \box\z@}}
1835
1836 %%% AH: Version for two column output. %%
1837 \def\page@sofar{\unvbox\partialpage
1838 \wd\firstcolbox\hsize
1839 \wd\secondcolbox\hsize
1840 \hbox to\textwidth{%
1841 \box\firstcolbox
1842 \hss\vrule\@width\columnseprule\hss
1843 \box\secondcolbox}%%
1844 }
1845
1846
1847 %% Variant on \@outputpage to use for floating page insert:
1848 \def\insertpage{\begingroup\catcode`\ =10
1849 \let\-\@dischyph \let\'\@acci \let\`\@accii \let\=\@acciii
1850 \if@twoside
1851 \ifodd\count\z@ \let\@thehead\@oddhead \let\@thefoot\@oddfoot
1852 \let\@themargin\oddsidemargin
1853 \else \let\@thehead\@evenhead
1854 \let\@thefoot\@evenfoot \let\@themargin\evensidemargin
1855 \fi\fi
1856 \shipout
1857 \vbox{\normalsize \baselineskip\z@ \lineskip\z@
1858 \let\par\@@par %%
1859 \vskip \topmargin \moveright\@themargin
1860 \vbox{\setbox\@tempboxa
1861 \vbox to\headheight{\vfil \hbox to\textwidth
1862 {\let\label\@gobble \let\index\@gobble
1863 \@thehead}} %%
1864 \dp\@tempboxa\z@
1865 \box\@tempboxa
1866 \vskip \headsep
1867 %% change from \@outputpage below
1868 \vbox to\textheight{\vfil
1869 \hsize=\textwidth
1870 \linewidth=\textwidth
1871 \csname pagefloat\the\pageloopnum \endcsname
1872 }
1873 \baselineskip\footskip
1874 \hbox to\textwidth{\let\label\@gobble
1875 \let\index\@gobble %%
1876 \@thefoot}}}\global\@colht\textheight
1877 \endgroup\stepcounter{page}\let\firstmark\botmark
1878 \global\advance\pageloopnum by1
1879 \expandafter\ifx\csname pagefloat\the\pageloopnum\endcsname\relax\else%
1880 \insertpage\fi%
1881 }
1882
1883 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1884
1885 \def\balance@columns{% can't throw in figs here because we
1886 % aren't doing eject, so they will be lost
1887 \ifdim\ht\dbltopins>1pt
1888 \advance\@colroom-\ht\dbltopins
1889 \advance\@colroom-\dp\dbltopins
1890 \advance\@colroom-\baselineskip
1891 \fi
1892 \ifdim\ht\dblbotins>1pt
1893 \advance\@colroom-\ht\dblbotins
1894 \advance\@colroom-\dp\dblbotins
1895 \fi
1896 \setbox\z@\vbox{\unvbox\@cclv}
1897 \dimen@\ht\z@
1898 %\advance\dimen@\dp\z@
1899 \advance\dimen@ 2\topskip
1900 \advance\dimen@-2\baselineskip %% ?? was 2\baselineskip, 4 gives better
1901 %topskip
1902 \divide\dimen@2%
1903 %
1904 {\vbadness\@M
1905 \splittopskip=\topskip
1906 \loop{\process@cols\@ne{\global\setbox\count@
1907 \box\voidb@x}}%
1908 \global\setbox\@ne\copy\z@
1909 {\process@cols\thr@@{\global\setbox\count@
1910 \vsplit\@ne to\dimen@}}%
1911 \ifdim\ht\@ne >\ht\thr@@
1912 \global\advance\dimen@\p@
1913 \repeat}
1914 %
1915 \dimen@\ht\thr@@
1916 \process@cols\z@{\@tempcnta\count@
1917 \advance\@tempcnta\@ne
1918 \setbox\count@\vtop to\dimen@ %%
1919 {\unvbox\@tempcnta}}%
1920 \global\vsize\@colroom
1921 \global\advance\vsize\ht\partialpage
1922 \Bpage@sofar}
1923
1924 \@ifundefined{emergencystretch}
1925 {\newdimen\emergencystretch}{}
1926
1927 \emergencystretch 1pt
1928
1929 \def\setemergencystretch#1#2{%
1930 \emergencystretch 4pt
1931 \multiply\emergencystretch#1}
1932
1933 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1934 %%% Figure and table captions in two column text and spanning both
1935 %%% columns.
1936
1937 %%%%%%%%%%%%%%%%%%%%%%%%%
1938 %% Single column inserts:
1939
1940 \let\savecaption\caption
1941 \let\xsavecaption\savecaption
1942
1943 \def\onecolfig{\ifvmode\else\unskip\fi
1944 \global\captypefigtrue
1945 \global\captypeplatefalse
1946 \@ifnextchar[\lookforposition{\lookforposition[e]}}
1947
1948 \def\onecolplate{\ifvmode\else\unskip\fi
1949 \global\advance\c@plate -1\relax
1950 \global\captypeplatetrue
1951 \global\captypefigfalse
1952 \@ifnextchar[\lookforposition{\lookforposition[e]}}
1953
1954 \def\onecoltable{\ifvmode\else\unskip\vskip1pt\fi\tabletextsize
1955 \global\captypefigfalse
1956 \global\captypeplatefalse
1957 \@ifnextchar[\lookforposition{\lookforposition[e]}
1958 }
1959
1960 %% This is used in case we get more than one letter, i.e.,
1961 %% \begin{figure}[htp]. This macro picks up only the first letter.
1962
1963 \def\defone#1#2*{\def\one{#1}}
1964
1965 \newcount\figandtabnumber
1966 \newbox\figandtabbox
1967 \newif\ifcaptypefig
1968 \newif\ifcaptypeplate
1969
1970 \long\def\catchcaption#1{%
1971 \ifcaptypefig%
1972 \expandafter\gdef\csname caption\the\figandtabnumber\endcsname{%
1973 \def\@captype{figure}\savecaption{#1}}%
1974 \else%
1975 \ifcaptypeplate
1976 \expandafter\gdef\csname caption\the\figandtabnumber\endcsname{%
1977 \def\@captype{plate}\savecaption{#1}}%
1978 \else
1979 \expandafter\gdef\csname caption\the\figandtabnumber\endcsname{%
1980 \def\@captype{table}\savecaption{#1}}%
1981 \fi\fi}
1982
1983 \long\def\dblcatchcaption#1{%
1984 \ifcaptypefig%
1985 \expandafter\gdef\csname dblcaption\the\dblfigandtabnumber\endcsname{%
1986 \def\@captype{figure}\savecaption{#1}}%
1987 \else%
1988 \ifcaptypeplate
1989 \expandafter\gdef\csname dblcaption\the\dblfigandtabnumber\endcsname{%
1990 \def\@captype{plate}\savecaption{#1}}%
1991 \else
1992 \expandafter\gdef\csname dblcaption\the\dblfigandtabnumber\endcsname{%
1993 \def\@captype{table}\savecaption{#1}}%
1994 \fi\fi}
1995
1996 \long\def\pcatchcaption#1{%
1997 \ifcaptypefig%
1998 \expandafter\gdef\csname pcaption\the\pagefloatnumber\endcsname{%
1999 \def\@captype{figure}\savecaption{#1}}%
2000 \else%
2001 \ifcaptypeplate
2002 \expandafter\gdef\csname pcaption\the\pagefloatnumber\endcsname{%
2003 \def\@captype{plate}\savecaption{#1}}%
2004 \else
2005 \expandafter\gdef\csname pcaption\the\pagefloatnumber\endcsname{%
2006 \def\@captype{table}\savecaption{#1}}%
2007 \fi\fi}
2008 %%%
2009
2010 \long\def\catchletteredcaption#1#2{%
2011 \ifcaptypefig%
2012 \expandafter\gdef\csname letteredcaption\the\figandtabnumber\endcsname{%
2013 \def\@captype{figure}\letteredcaption{#1}{#2}}%
2014 \else%
2015 \ifcaptypeplate
2016 \expandafter\gdef\csname letteredcaption\the\figandtabnumber\endcsname{%
2017 \def\@captype{plate}\letteredcaption{#1}{#2}}%
2018 \else
2019 \expandafter\gdef\csname letteredcaption\the\figandtabnumber\endcsname{%
2020 \def\@captype{table}\letteredcaption{#1}{#2}}%
2021 \fi\fi}
2022
2023
2024 \long\def\dblcatchletteredcaption#1#2{%
2025 \ifcaptypefig%
2026 \expandafter\gdef\csname dblletteredcaption\the\dblfigandtabnumber\endcsname{%
2027 \def\@captype{figure}%
2028 \letteredcaption{#1}{#2}}%
2029 \else%
2030 \ifcaptypeplate
2031 \expandafter\gdef\csname dblletteredcaption\the\dblfigandtabnumber\endcsname{%
2032 \def\@captype{plate}%
2033 \letteredcaption{#1}{#2}}%
2034 \else
2035 \expandafter\gdef\csname dblletteredcaption\the\dblfigandtabnumber\endcsname{%
2036 \def\@captype{table}%
2037 \letteredcaption{#1}{#2}}%
2038 \fi\fi}
2039
2040 \long\def\pcatchletteredcaption#1#2{%
2041 \ifcaptypefig%
2042 \expandafter\gdef\csname pletteredcaption\the\pagefloatnumber\endcsname{%
2043 \def\@captype{figure}%
2044 \letteredcaption{#1}{#2}}%
2045 \else%
2046 \ifcaptypeplate%
2047 \expandafter\gdef\csname pletteredcaption\the\pagefloatnumber\endcsname{%
2048 \def\@captype{plate}%
2049 \letteredcaption{#1}{#2}}%
2050 \else
2051 \expandafter\gdef\csname pletteredcaption\the\pagefloatnumber\endcsname{%
2052 \def\@captype{table}%
2053 \letteredcaption{#1}{#2}}%
2054 \fi\fi}
2055
2056 %%%
2057 \long\def\catchcontinuedcaption{%
2058 \ifcaptypefig%
2059 \expandafter\gdef\csname continuedcaption\the\figandtabnumber\endcsname{%
2060 \def\@captype{figure}\continuedcaption}%
2061 \else%
2062 \ifcaptypeplate
2063 \expandafter\gdef\csname continuedcaption\the\figandtabnumber\endcsname{%
2064 \def\@captype{plate}\continuedcaption}%
2065 \else
2066 \expandafter\gdef\csname continuedcaption\the\figandtabnumber\endcsname{%
2067 \def\@captype{table}\continuedcaption}%
2068 \fi\fi}
2069
2070 \long\def\dblcatchcontinuedcaption{%
2071 \ifcaptypefig%
2072 \expandafter\gdef\csname dblcontinuedcaption\the\dblfigandtabnumber\endcsname{%
2073 \def\@captype{figure}\continuedcaption}%
2074 \else%
2075 \ifcaptypeplate
2076 \expandafter\gdef\csname dblcontinuedcaption\the\dblfigandtabnumber\endcsname{%
2077 \def\@captype{plate}\continuedcaption}%
2078 \else
2079 \expandafter\gdef\csname dblcontinuedcaption\the\dblfigandtabnumber\endcsname{%
2080 \def\@captype{table}\continuedcaption}%
2081 \fi\fi}
2082
2083 \long\def\pcatchcontinuedcaption{%
2084 \ifcaptypefig%
2085 \expandafter\gdef\csname pcontinuedcaption\the\pagefloatnumber\endcsname{%
2086 \def\@captype{figure}\continuedcaption}%
2087 \else%
2088 \ifcaptypeplate
2089 \expandafter\gdef\csname pcontinuedcaption\the\pagefloatnumber\endcsname{%
2090 \def\@captype{plate}\continuedcaption}%
2091 \else
2092 \expandafter\gdef\csname pcontinuedcaption\the\pagefloatnumber\endcsname{%
2093 \def\@captype{table}\continuedcaption}%
2094 \fi\fi}
2095
2096 %%%
2097 \long\def\catchletteredcontinuedcaption#1{%
2098 \ifcaptypefig%
2099 \expandafter\gdef\csname letteredcontcaption\the\figandtabnumber\endcsname{%
2100 \def\@captype{figure}\letteredcontinuedcaption{#1}}%
2101 \else%
2102 \ifcaptypeplate%
2103 \expandafter\gdef\csname letteredcontcaption\the\figandtabnumber\endcsname{%
2104 \def\@captype{plate}\letteredcontinuedcaption{#1}}%
2105 \else
2106 \expandafter\gdef\csname letteredcontcaption\the\figandtabnumber\endcsname{%
2107 \def\@captype{table}\letteredcontinuedcaption{#1}}%
2108 \fi\fi}
2109
2110
2111 \long\def\dblcatchletteredcontinuedcaption#1{%
2112 \ifcaptypefig%
2113 \expandafter%
2114 \gdef\csname dblletteredcontcaption\the\dblfigandtabnumber\endcsname{%
2115 \def\@captype{figure}\letteredcontinuedcaption{#1}}%
2116 \else%
2117 \ifcaptypeplate
2118 \expandafter%
2119 \gdef\csname dblletteredcontcaption\the\dblfigandtabnumber\endcsname{%
2120 \def\@captype{plate}\letteredcontinuedcaption{#1}}%
2121 \else
2122 \expandafter%
2123 \gdef\csname dblletteredcontcaption\the\dblfigandtabnumber\endcsname{%
2124 \def\@captype{table}\letteredcontinuedcaption{#1}}%
2125 \fi\fi}
2126
2127 \long\def\pcatchletteredcontinuedcaption#1{%
2128 \ifcaptypefig%
2129 \expandafter%
2130 \gdef\csname pletteredcontcaption\the\pagefloatnumber\endcsname{%
2131 \def\@captype{figure}\letteredcontinuedcaption{#1}}%
2132 \else%
2133 \ifcaptypeplate%
2134 \expandafter%
2135 \gdef\csname pletteredcontcaption\the\pagefloatnumber\endcsname{%
2136 \def\@captype{plate}\letteredcontinuedcaption{#1}}%
2137 \else
2138 \expandafter%
2139 \gdef\csname pletteredcontcaption\the\pagefloatnumber\endcsname{%
2140 \def\@captype{table}\letteredcontinuedcaption{#1}}%
2141 \fi\fi}
2142
2143 %%%
2144
2145
2146 \newcount\pagefloatnumber
2147
2148 \let\savelabel\label
2149 \def\catchlabel#1{%
2150 \expandafter\gdef\csname label\the\figandtabnumber\endcsname{\savelabel{#1}}}
2151
2152 \def\pcatchlabel#1{%
2153 \expandafter\gdef\csname plabel\the\pagefloatnumber\endcsname{\savelabel{#1}}}
2154
2155 \def\dblcatchlabel#1{\expandafter%
2156 \gdef\csname dbllabel\the\dblfigandtabnumber\endcsname{\savelabel{#1}}}
2157
2158 %%
2159
2160 \def\startonecolfloat{%
2161 \expandafter\newbox\csname figandtabbox\the\figandtabnumber\endcsname%
2162 \global\setbox\csname figandtabbox\the\figandtabnumber\endcsname=
2163 \vbox\bgroup%
2164 \ifcaptypefig\else
2165 \ifcaptypeplate\def\@captype{plate}
2166 \else
2167 \def\@captype{table}\centering\tabletextsize\fi\fi%
2168 \let\continuedcaption\catchcontinuedcaption
2169 \let\letteredcaption\catchletteredcaption
2170 \let\letteredcontinuedcaption\catchletteredcontinuedcaption
2171 \let\caption\catchcaption
2172 \let\label\catchlabel}
2173
2174 \def\xtopfloat{topfloat}
2175 \def\xbotfloat{botfloat}
2176
2177 \newif\ifredefining
2178
2179
2180 \newbox\sizeoffloat
2181
2182 \def\endonecolfloat{%
2183 %\ifcaptypefig\else%
2184 %\ifnobottomtabline\global\nobottomtablinefalse\vskip-6.5pt\else
2185 %\vskip2pt
2186 %\thetablelines\fi\fi%
2187 %
2188 \egroup%
2189 \DonormalEndcol%
2190 %% make room in column for this insert:
2191 \setbox\sizeoffloat=\vbox{\let\unvbox\copy
2192 \let\c@table\bogus
2193 \let\c@figure\bogus
2194 \redefiningfalse \loopnum=\figandtabnumber
2195 \expandafter\csname \toporbotfloat\the\figandtabnumber\endcsname}%
2196 %%
2197 \expandafter\xdef\csname totalht\the\figandtabnumber\endcsname{%
2198 \the\ht\sizeoffloat}% <=== use before \sizeoffloat is unboxed
2199 \global\advance\figandtabnumber by1\relax}
2200
2201 \newcount\bogus
2202 \def\DonormalEndcol{%
2203 %% top float ==>
2204 \ifx\toporbotfloat\xtopfloat%
2205 %% figure ==>
2206 \ifcaptypefig%
2207 \expandafter\gdef\csname topfloat\the\figandtabnumber\endcsname{%
2208 \vbox{\vskip\PushOneColTopFig%
2209 \unvbox\csname figandtabbox\the\loopnum\endcsname%
2210 \vskip\abovefigcaptionskip%
2211 \csname caption\the\loopnum\endcsname%
2212 \csname letteredcaption\the\loopnum\endcsname%
2213 \csname continuedcaption\the\loopnum\endcsname%
2214 \csname letteredcontcaption\the\loopnum\endcsname}%
2215 \vskip\intextfloatskip%%
2216 \vskip-4pt %% probably an artifact of topskip??
2217 \ifredefining%
2218 \csname label\the\loopnum\endcsname%
2219 \expandafter\gdef\csname topfloat\the\loopnum\endcsname{}\fi}%
2220 \else%
2221 %% plate ==>
2222 \ifcaptypeplate%
2223 \expandafter\gdef\csname topfloat\the\figandtabnumber\endcsname{%
2224 \vbox{\vskip\PushOneColTopFig%
2225 \unvbox\csname figandtabbox\the\loopnum\endcsname
2226 \vskip\abovefigcaptionskip
2227 \csname caption\the\loopnum\endcsname
2228 \csname letteredcaption\the\loopnum\endcsname
2229 \csname continuedcaption\the\loopnum\endcsname
2230 \csname letteredcontcaption\the\loopnum\endcsname}
2231 \vskip\intextfloatskip %%
2232 \vskip-4pt %% probably an artifact of topskip??
2233 \ifredefining
2234 \csname label\the\loopnum\endcsname
2235 \expandafter\gdef\csname topfloat\the\loopnum\endcsname{}\fi}%
2236 %
2237 \else% table ==>
2238 \expandafter\gdef\csname topfloat\the\figandtabnumber\endcsname{%
2239 \vbox{\vskip\PushOneColTopTab %%
2240 \csname caption\the\loopnum\endcsname
2241 \csname letteredcaption\the\loopnum\endcsname
2242 \csname continuedcaption\the\loopnum\endcsname
2243 \csname letteredcontcaption\the\loopnum\endcsname
2244 \vskip\captionskip
2245 \unvbox\csname figandtabbox\the\loopnum\endcsname
2246 }\vskip\intextfloatskip %% why don't we need this?
2247 \vskip-10pt
2248 \ifredefining
2249 \csname label\the\loopnum\endcsname
2250 \expandafter\gdef\csname topfloat\the\loopnum\endcsname{}\fi}
2251 \fi\fi%
2252 %
2253 \else% bottom float
2254 %
2255 \ifcaptypefig
2256 \expandafter\gdef\csname botfloat\the\figandtabnumber\endcsname{%
2257 \vskip\intextfloatskip
2258 \vbox{\unvbox\csname figandtabbox\the\loopnum\endcsname
2259 \vskip\abovefigcaptionskip
2260 \csname caption\the\loopnum\endcsname
2261 \csname letteredcaption\the\loopnum\endcsname%
2262 \csname continuedcaption\the\loopnum\endcsname%
2263 \csname letteredcontcaption\the\loopnum\endcsname%
2264 \vskip\PushOneColBotFig%%
2265 }%
2266 \ifredefining%
2267 %\xdef\@currentlabel{\thefigure}%
2268 \csname label\the\loopnum\endcsname
2269 \expandafter\gdef\csname botfloat\the\loopnum\endcsname{}\fi}%
2270 \else
2271 \ifcaptypeplate
2272 \expandafter\gdef\csname botfloat\the\figandtabnumber\endcsname{%
2273 \vskip\intextfloatskip
2274 \vbox{\unvbox\csname figandtabbox\the\loopnum\endcsname
2275 \vskip\abovefigcaptionskip
2276 \csname caption\the\loopnum\endcsname
2277 \csname letteredcaption\the\loopnum\endcsname%
2278 \csname continuedcaption\the\loopnum\endcsname%
2279 \csname letteredcontcaption\the\loopnum\endcsname%
2280 \vskip\PushOneColBotFig%%
2281 }%
2282 \ifredefining%
2283 %\xdef\@currentlabel{\thefigure}%
2284 \csname label\the\loopnum\endcsname
2285 \expandafter\gdef\csname botfloat\the\loopnum\endcsname{}\fi}%
2286 \else% TABLE
2287 \expandafter\gdef\csname botfloat\the\figandtabnumber\endcsname{%
2288 \vskip\intextfloatskip
2289 \vbox{\csname caption\the\loopnum\endcsname
2290 \csname letteredcaption\the\loopnum\endcsname
2291 \csname continuedcaption\the\loopnum\endcsname
2292 \csname letteredcontcaption\the\loopnum\endcsname%
2293 \vskip.5\intextfloatskip
2294 \unvbox\csname figandtabbox\the\loopnum\endcsname%
2295 \vskip\PushOneColBotTab
2296 }%
2297 \ifredefining%
2298 \csname label\the\loopnum\endcsname
2299 \expandafter\gdef\csname botfloat\the\loopnum\endcsname{}\fi}%
2300 \fi\fi\fi}
2301
2302 %
2303 \def\startpagefloat{%
2304 \expandafter\newbox\csname pagebox\the\pagefloatnumber\endcsname%
2305 \global\setbox\csname pagebox\the\pagefloatnumber\endcsname=\vbox\bgroup%
2306 \hsize=\textwidth%
2307 \linewidth=\textwidth%
2308 \captionwidth=\widecaptionwidth
2309 \let\label\pcatchlabel\ifcaptypefig\else\centering\fi%
2310 \let\caption\pcatchcaption \let\letteredcaption\pcatchletteredcaption
2311 \let\continuedcaption\pcatchcontinuedcaption
2312 \let\letteredcontinuedcaption\pcatchletteredcontinuedcaption
2313 }
2314
2315 \def\endpagefloat{\egroup
2316 \DoNormalPage
2317 \global\advance\pagefloatnumber by1
2318 }
2319
2320 \def\DoNormalPage{\ifcaptypefig
2321 %
2322 \expandafter\gdef\csname pagefloat\the\pagefloatnumber\endcsname{%
2323 \vbox{\hsize=\textwidth
2324 \linewidth=\textwidth
2325 \twocolfigortabtrue
2326 \captionwidth=\widecaptionwidth
2327 \unvbox\csname pagebox\the\pageloopnum\endcsname
2328 \vskip\captionskip
2329 \csname pcaption\the\pageloopnum\endcsname
2330 \csname pletteredcaption\the\pageloopnum\endcsname
2331 \csname pcontinuedcaption\the\pageloopnum\endcsname
2332 \csname pletteredcontcaption\the\pageloopnum\endcsname
2333 } \vskip\intextfloatskip %%
2334 \xdef\@currentlabel{\thefigure}%
2335 \csname plabel\the\pageloopnum\endcsname
2336 \expandafter\gdef\csname pagefloat\the\pageloopnum\endcsname{}}%
2337 \else
2338 \ifcaptypeplate
2339 \expandafter\gdef\csname pagefloat\the\pagefloatnumber\endcsname{%
2340 \vbox{\hsize=\textwidth
2341 \linewidth=\textwidth
2342 \twocolfigortabtrue
2343 \captionwidth=\widecaptionwidth
2344 \unvbox\csname pagebox\the\pageloopnum\endcsname
2345 \vskip\captionskip
2346 \csname pcaption\the\pageloopnum\endcsname
2347 \csname pletteredcaption\the\pageloopnum\endcsname
2348 \csname pcontinuedcaption\the\pageloopnum\endcsname
2349 \csname pletteredcontcaption\the\pageloopnum\endcsname
2350 } \vskip\intextfloatskip %%
2351 \xdef\@currentlabel{\thefigure}%
2352 \csname plabel\the\pageloopnum\endcsname
2353 \expandafter\gdef\csname pagefloat\the\pageloopnum\endcsname{}}%
2354 \else
2355 \expandafter\gdef\csname pagefloat\the\pagefloatnumber\endcsname{%
2356 \vbox{%%
2357 \hsize=\textwidth
2358 \linewidth=\textwidth
2359 \iflandscapetable
2360 \dimen0=\textheight
2361 \advance\dimen0 by-\textwidth
2362 \hsize=\textheight
2363 \linewidth=\textheight\fi%
2364 \csname pcaption\the\pageloopnum\endcsname
2365 \csname pletteredcaption\the\pageloopnum\endcsname
2366 \csname pcontinuedcaption\the\pageloopnum\endcsname
2367 \csname pletteredcontcaption\the\pageloopnum\endcsname
2368 \vskip\intextfloatskip
2369 \unvbox\csname pagebox\the\pageloopnum\endcsname}
2370 \vskip\intextfloatskip %%
2371 \csname plabel\the\pageloopnum\endcsname
2372 \expandafter\gdef\csname pagefloat\the\pageloopnum\endcsname{}}\fi\fi}
2373
2374 \newif\iffirstfighere
2375 \global\firstfigheretrue
2376
2377 \newif\iffirsttabhere
2378 \global\firsttabheretrue
2379
2380 \def\dofigmessage{\iffirstfighere\global\firstfigherefalse
2381 \typeout{^^J
2382 ========================================================================
2383 ^^J
2384 C A R E F U L !!!!!^^J
2385 ^^J
2386 You have used \string\begin{figure}[h]\space !^^J
2387 If there are any figures that appear earlier on the page^^J
2388 they may be numbered incorrectly.^^J
2389 ^^J
2390 Please check this and every other page on which you have used ^^J
2391 \string\begin{figure}[h]\space !^^J
2392 ^^J
2393 ========================================================================
2394 ^^J}
2395 \else
2396 \typeout{^^J^^J
2397 C A R E F U L !! \string\begin{figure}[h] used on this page !^^J^^J}
2398 \fi}
2399
2400 \def\dotabmessage{\iffirsttabhere\global\firsttabherefalse
2401 \typeout{^^J
2402 ========================================================================
2403 ^^J
2404 C A R E F U L !!!!!^^J
2405 ^^J
2406 You have used \string\begin{table}[h]\space !^^J
2407 If there are any tables that appear earlier on the page^^J
2408 they may be numbered incorrectly.^^J
2409 ^^J
2410 Please check this and every other page on which you have used ^^J
2411 \string\begin{table}[h]\space !^^J
2412 ^^J
2413 ========================================================================
2414 ^^J}
2415 \else
2416 \typeout{^^J^^J
2417 C A R E F U L !! \string\begin{table}[h] used on this page !^^J^^J}
2418 \fi}
2419
2420 \def\lookforposition[#1]{\defone#1*%
2421 \let\go\startonecolfloat
2422 \let\endtable\endonecolfloat
2423 \let\endfigure\endonecolfloat
2424 \let\endplate\endonecolfloat
2425 \ifgalley
2426 \if\one p \def\one{s}
2427 \else
2428 \def\one{i}\fi
2429 %\else\ifappendon\def\one{h}\fi
2430 \fi%
2431 \ifjdraft
2432 \expandafter\ifx\csname setkeys\endcsname\relax\else
2433 \setkeys{Gin}{draft=false}\fi
2434 \if\one p \def\one{s}
2435 \else
2436 \def\one{i}\fi
2437 \else%\ifappendon\def\one{h}\fi
2438 \fi%
2439 \if\one h
2440 \ifcaptypeplate\else
2441 \ifcaptypefig
2442 \dofigmessage
2443 \else
2444 \dotabmessage
2445 \fi\fi%
2446 \let\go\doonecolfighere
2447 \let\endtable\endonecolfighere
2448 \let\endfigure\endonecolfighere
2449 \let\endplate\endonecolfighere
2450 \else%
2451 \if\one t%
2452 \gdef\toporbotfloat{topfloat}%
2453 \else%
2454 \if\one b%
2455 \gdef\toporbotfloat{botfloat}%
2456 \else%
2457 \if\one p%
2458 \let\go\startpagefloat%
2459 \let\endtable\endpagefloat%
2460 \let\endfigure\endpagefloat%
2461 \let\endplate\endpagefloat%
2462 \else%
2463 \if\one e% for either
2464 \ifdim\pagetotal>.6\pagegoal%
2465 \gdef\toporbotfloat{botfloat}%
2466 \else%
2467 \gdef\toporbotfloat{topfloat}%
2468 \fi%
2469 \else%
2470 \if\one i% for galley mode
2471 \let\go\dofiginsert%
2472 \let\endtable\endfiginsert%
2473 \let\endfigure\endfiginsert%
2474 \let\endplate\endfiginsert%
2475 \else%
2476 \if\one s% for special galley mode, for [p]
2477 \let\go\dodblfiginsert%
2478 \let\endtable\endspfiginsert%
2479 \let\endfigure\endspfiginsert%
2480 \let\endplate\endspfiginsert%
2481 \else%
2482 \doerr%
2483 \ifdim\pagetotal>.5\pagegoal%
2484 \gdef\toporbotfloat{botfloat}%
2485 \else%
2486 \gdef\toporbotfloat{topfloat}%
2487 \fi%
2488 \fi\fi\fi\fi\fi\fi\fi\go}
2489
2490 \newinsert\figinsert
2491 \skip\figinsert=0pt % space added when figinsert is used
2492 \count\figinsert=0 % insert magnification factor (1 to 1)
2493 \dimen\figinsert=\maxdimen % maximum space for figures
2494
2495 \def\dofiginsert{\setbox0=\vbox\bgroup
2496 \ifcaptypefig\def\@captype{figure}\else
2497 \ifcaptypeplate\def\@captype{plate}\else
2498 \def\@captype{table}\centering\tabletextsize\fi\fi}
2499 \def\endfiginsert{\egroup\insert\figinsert{\vskip24pt\vbox{\unvbox0}\vskip24pt}%
2500 \ignorespaces}
2501
2502 \def\endspfiginsert{\egroup\insert\figinsert{\newpage\vbox to\textheight{\vss
2503 \unvbox0}\newpage}%
2504 \ignorespaces}
2505
2506 \def\dodblfiginsert{\setbox0=\vbox\bgroup
2507 \captionwidth=\widecaptionwidth
2508 \hsize=\textwidth
2509 \linewidth=\textwidth
2510 \ifcaptypefig\def\@captype{figure}\else
2511 \ifcaptypeplate\def\@captype{plate}\else
2512 \def\@captype{table}\centering\fi\fi
2513 }
2514
2515 \def\enddblfiginsert{\egroup\insert\figinsert{\vskip24pt\vbox{\unvbox0}\vskip24pt}}
2516
2517 \long\def\saveherecaption#1{\gdef\thesavedcaption{\savecaption{#1}}}
2518
2519 \long\def\saveherecontinuedcaption{\gdef\thesavedcaption{\continuedcaption}}
2520
2521 \long\def\savehereletteredcaption#1#2{\gdef\thesavedcaption{%
2522 \gdef\theletter{#1}\savecaption{#2}}}
2523
2524 \long\def\savehereletteredcontinuedcaption#1{\gdef\thesavedcaption{%
2525 \letteredcontinuedcaption{#1}}}
2526
2527 \long\def\saveherelabel#1{\gdef\thesavedlabel{#1}}
2528 \saveherelabel{\relax}
2529
2530 \def\thesavedcaption{\relax}
2531
2532 \newbox\herebox
2533 %% either figure [h] or table [h]
2534 \newif\ifhere
2535 \def\doonecolfighere{\vskip1sp\bgroup%
2536 \heretrue%
2537 \ifcaptypefig\def\@captype{figure}\else%
2538 \ifcaptypeplate\def\@captype{plate}\else%
2539 \def\@captype{table}\centering\fi\fi%
2540 \setbox\herebox\vbox\bgroup%
2541 \let\label\saveherelabel%
2542 \let\caption\saveherecaption%
2543 \let\letteredcaption\savehereletteredcaption%
2544 \let\continuedcaption\saveherecontinuedcaption%
2545 \let\letteredcontinuedcaption\savehereletteredcontinuedcaption%
2546 }
2547
2548 \def\xrelax{\relax}
2549
2550 \def\endonecolfighere{%
2551 \egroup%
2552 \vskip\intextfloatskip%
2553 \vtop{\vskip-5.5pt
2554 %\ifappendon
2555 %\let\thefigure\appthefigure
2556 %\let\thetable\appthetable
2557 %\let\theplate\apptheplate
2558 %\let\savecaption\appcaption
2559 %\fi
2560 %
2561 \ifx\thesavedcaption\xrelax
2562 \unvbox\herebox
2563 \else
2564 \ifcaptypefig
2565 \unvbox\herebox
2566 \thesavedcaption
2567 \else
2568 \ifcaptypeplate
2569 \unvbox\herebox
2570 \thesavedcaption
2571 %
2572 \else
2573 %
2574 \thesavedcaption
2575 \unvbox\herebox
2576 \fi
2577 \fi\fi
2578 %
2579 \gdef\thesavedcaption{\relax}
2580 \ifx\thesavedlabel\xrelax\else%
2581 \ifcaptypefig\else\edef\@currentlabel{\thetable}\fi
2582 \savelabel{\thesavedlabel}
2583 \gdef\thesavedlabel{\relax}
2584 \fi
2585 \gdef\theletter{\relax}
2586 }\vskip1sp
2587 \egroup
2588 \vskip\intextfloatskip
2589 }
2590
2591 \newbox\endfigbox
2592
2593 \def\doerr{%
2594 \typeout{\space\space\space\space\space\space\space\space\space}
2595 \typeout{Sorry!
2596 Your choices following \string\figure\space or \string\table\space^^J%
2597 are only [h] for `here', [t] for `top', [b] for `bottom', or [p]
2598 for `page'.^^J%
2599 I have ignored the [\one] and inserted the figure or table at this
2600 point^^J%
2601 on the page. See documentation if you need more help.}
2602 \typeout{\space\space\space\space\space\space\space\space\space}}
2603
2604 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2605 %%% Inserts spanning both columns:
2606
2607 \newbox\spanbox
2608
2609 \def\centertabular{\bgroup\centering\savetabular}
2610 \def\endcentertabular{\saveendtabular\vskip1pt\egroup}
2611
2612 %%%
2613
2614 \newbox\dbltopins
2615 \newbox\dblbotins
2616
2617 \newskip\dblbotskip
2618 \dblbotskip=12pt plus 3pt
2619
2620 \def\twocolfig{\global\captypefigtrue
2621 \global\captypeplatefalse
2622 \def\@captype{figure}
2623 \@ifnextchar[\twolookforposition{\twolookforposition[t]}}%
2624
2625 \def\twocolplate{\global\captypeplatetrue
2626 \global\captypefigfalse
2627 \def\@captype{plate}
2628 \@ifnextchar[\twolookforposition{\twolookforposition[t]}}%
2629
2630 \def\twocoltable{\vskip1pt\tabletextsize
2631 \global\captypefigfalse
2632 \global\captypeplatefalse
2633 \def\@captype{table}
2634 \@ifnextchar[\twolookforposition{\twolookforposition[t]}}%
2635
2636 \newcount\dblfigandtabnumber
2637 \dblfigandtabnumber=1
2638 \newbox\dblfigandtabbox
2639
2640 \def\starttwocolfloat{\ifvmode\else\unskip\fi\expandafter%
2641 \ifx\csname dblfigandtabbox\the\dblfigandtabnumber\endcsname\relax%
2642 \expandafter%
2643 \newbox\csname dblfigandtabbox\the\dblfigandtabnumber\endcsname%
2644 \fi%
2645 \global\setbox\csname dblfigandtabbox\the\dblfigandtabnumber\endcsname=
2646 \vbox\bgroup\let\label\dblcatchlabel%
2647 %
2648 \ifcaptypefig\def\@captype{figure}\else%
2649 \ifcaptypeplate\def\@captype{plate}\else%
2650 \def\@captype{table}\centering\tabletextsize%
2651 \fi%
2652 \fi%
2653 \captionwidth=\widecaptionwidth
2654 \hsize=\textwidth
2655 \linewidth=\textwidth\relax
2656 %
2657 \let\caption\dblcatchcaption
2658 \let\letteredcaption\dblcatchletteredcaption
2659 \let\continuedcaption\dblcatchcontinuedcaption
2660 \let\letteredcontinuedcaption\dblcatchletteredcontinuedcaption
2661 \let\label\dblcatchlabel
2662 }
2663
2664 \newcount\dblloopnum
2665 \newcount\savedblfigandtabnumber
2666 %\newcount\savefigandtabnumber
2667
2668 \def\xdbltopfloat{dbltopfloat}
2669 \def\xdblbotfloat{dblbotfloat}
2670
2671 \def\endtwocolfloat{%
2672 %\ifcaptypefig\else%
2673 %\ifcaptypeplate\else%
2674 %\ifnobottomtabline\global\nobottomtablinefalse\vskip-6.5pt\else%
2675 %\vskip2pt
2676 %\thetablelines\fi\fi\fi%
2677 %
2678 \egroup%
2679 \ifx\dbltoporbotfloat\xdbltopfloat%
2680 %%++
2681 \ifcaptypefig%
2682 \expandafter\gdef\csname dbltopfloat\the\dblfigandtabnumber\endcsname{%
2683 \vbox{\vskip\PushTwoColTopFig%
2684 \copy\csname dblfigandtabbox\the\dblloopnum\endcsname%
2685 \vskip\captionskip%
2686 \csname dblcaption\the\dblloopnum\endcsname%
2687 \csname dblletteredcaption\the\dblloopnum\endcsname%
2688 \csname dblcontinuedcaption\the\dblloopnum\endcsname%
2689 \csname dblletteredcontcaption\the\dblloopnum\endcsname%
2690 \ifredefining%
2691 \xdef\@currentlabel{\thefigure}%
2692 \csname dbllabel\the\dblloopnum\endcsname\fi}%
2693 \vskip\intextfloatskip %%
2694 \vskip-5pt% because there is a space above the top of text, from topskip?
2695 \ifredefining%
2696 \expandafter\gdef\csname dbltopfloat\the\dblloopnum\endcsname{}\fi}%
2697 \else\ifcaptypeplate%
2698 \expandafter\gdef\csname dbltopfloat\the\dblfigandtabnumber\endcsname{%
2699 \vbox{\vskip\PushTwoColTopFig%
2700 \copy\csname dblfigandtabbox\the\dblloopnum\endcsname%
2701 \vskip\captionskip%
2702 \csname dblcaption\the\dblloopnum\endcsname%
2703 \csname dblletteredcaption\the\dblloopnum\endcsname%
2704 \csname dblcontinuedcaption\the\dblloopnum\endcsname%
2705 \csname dblletteredcontcaption\the\dblloopnum\endcsname%
2706 \ifredefining%
2707 \xdef\@currentlabel{\theplate}%
2708 \csname dbllabel\the\dblloopnum\endcsname\fi}%
2709 \vskip\intextfloatskip %%
2710 \vskip-5pt% because there is a space above the top of text, from topskip?
2711 \ifredefining%
2712 \expandafter\gdef\csname dbltopfloat\the\dblloopnum\endcsname{}\fi}%
2713 \else% table
2714 \expandafter\gdef\csname dbltopfloat\the\dblfigandtabnumber\endcsname{%
2715 \vbox{\vskip\PushTwoColTopTab%
2716 \csname dblcaption\the\dblloopnum\endcsname%
2717 \csname dblletteredcaption\the\dblloopnum\endcsname%
2718 \csname dblcontinuedcaption\the\dblloopnum\endcsname%
2719 \csname dblletteredcontcaption\the\dblloopnum\endcsname%
2720 \vskip\captionskip%
2721 \copy\csname dblfigandtabbox\the\dblloopnum\endcsname}%
2722 \vskip\intextfloatskip %%
2723 \vskip-5pt% because there is a space above the top of text, from topskip?
2724 \ifredefining%
2725 \csname dbllabel\the\dblloopnum\endcsname%
2726 \expandafter\gdef\csname dbltopfloat\the\dblloopnum\endcsname{}\fi}%
2727 %
2728 \fi\fi%
2729 %
2730 \else% bottom float
2731 %
2732 \ifcaptypefig%
2733 \expandafter\gdef\csname dblbotfloat\the\dblfigandtabnumber\endcsname{%
2734 \vskip\intextfloatskip%
2735 \vbox{\copy\csname dblfigandtabbox\the\dblloopnum\endcsname%
2736 \vskip\captionskip%
2737 \csname dblcaption\the\dblloopnum\endcsname%
2738 \csname dblletteredcaption\the\dblloopnum\endcsname%
2739 \csname dblcontinuedcaption\the\dblloopnum\endcsname%
2740 \csname dblletteredcontcaption\the\dblloopnum\endcsname%
2741 \ifredefining%
2742 \csname dbllabel\the\dblloopnum\endcsname\fi%
2743 \vskip\PushTwoColBotFig}%???
2744 \ifredefining%
2745 \expandafter\gdef\csname dblbotfloat\the\dblloopnum\endcsname{}\fi}%
2746 \else%
2747 %%
2748 \ifcaptypeplate%
2749 \expandafter\gdef\csname dblbotfloat\the\dblfigandtabnumber\endcsname{%
2750 \vskip\intextfloatskip%
2751 \vbox{\copy\csname dblfigandtabbox\the\dblloopnum\endcsname%
2752 \vskip\captionskip%
2753 \csname dblcaption\the\dblloopnum\endcsname%
2754 \csname dblletteredcaption\the\dblloopnum\endcsname%
2755 \csname dblcontinuedcaption\the\dblloopnum\endcsname%
2756 \csname dblletteredcontcaption\the\dblloopnum\endcsname%
2757 \ifredefining%
2758 \csname dbllabel\the\dblloopnum\endcsname\fi%
2759 \vskip\PushTwoColBotFig}%
2760 \ifredefining%
2761 \expandafter\gdef\csname dblbotfloat\the\dblloopnum\endcsname{}\fi
2762 }%
2763 \else% table
2764 \expandafter\gdef\csname dblbotfloat\the\dblfigandtabnumber\endcsname{%
2765 \vskip\intextfloatskip
2766 \vbox{%
2767 \csname dblcaption\the\dblloopnum\endcsname%
2768 \csname dblletteredcaption\the\dblloopnum\endcsname%
2769 \csname dblcontinuedcaption\the\dblloopnum\endcsname%
2770 \csname dblletteredcontcaption\the\dblloopnum\endcsname%
2771 \vskip\captionskip
2772 \ifredefining%
2773 \csname dbllabel\the\dblloopnum\endcsname\fi%
2774 \copy\csname dblfigandtabbox\the\dblloopnum\endcsname%
2775 \vskip\PushTwoColBotTab}%
2776 \ifredefining%
2777 \expandafter\gdef\csname dblbotfloat\the\dblloopnum\endcsname{}\fi}%
2778 %
2779 \fi\fi\fi%
2780 %%
2781 \global\advance\dblfigandtabnumber by1 \relax}
2782
2783 \newbox\dblspanherebox
2784
2785 \def\dodblfigurehere{\global\setbox\dblspanherebox=\vbox\bgroup
2786 \let\label\saveherelabel
2787 \ifcaptypefig\def\@captype{figure}\else
2788 \ifcaptypeplate\def\@captype{plate}\else
2789 \def\@captype{table}\centering\fi\fi
2790 \vskip\intextfloatskip
2791 \captionwidth=\widecaptionwidth
2792 \hsize=\textwidth
2793 \linewidth=\textwidth
2794 \let\label\saveherelabel
2795 \let\caption\saveherecaption
2796 \let\letteredcaption\savehereletteredcaption
2797 \let\continuedcaption\saveherecontinuedcaption
2798 \let\letteredcontinuedcaption\savehereletteredcontinuedcaption}
2799
2800 \def\enddodblfigurehere{\vskip\intextfloatskip\egroup%
2801 \aftergroup\endcolsneatly}
2802
2803
2804 %%
2805 \def\endcolsneatly{\ifdim\lastskip=2sp
2806 \vskip-9.5pt\null\fi
2807 \endtwocolumns
2808 \vbox{\vskip\intextfloatskip
2809 \captionwidth=\widecaptionwidth
2810 \ifcaptypefig\def\@captype{figure}\else
2811 \ifcaptypeplate\def\@captype{plate}\else
2812 \def\@captype{table}\centering\fi\fi
2813 %\ifappendon
2814 %\let\thefigure\appthefigure
2815 %\let\thetable\appthetable
2816 %\let\theplate\apptheplate
2817 %\let\savecaption\appcaption
2818 %\fi
2819 %
2820 \ifx\thesavedcaption\xrelax
2821 \unvbox\dblspanherebox
2822 \vskip\intextfloatskip
2823 \else
2824 \ifcaptypefig
2825 \unvbox\dblspanherebox
2826 \thesavedcaption
2827 \vskip\intextfloatskip
2828 %
2829 \else
2830 \ifcaptypeplate
2831 \unvbox\dblspanherebox
2832 \thesavedcaption
2833 \vskip\intextfloatskip
2834 %
2835 \else
2836 \vskip\intextfloatskip
2837 \thesavedcaption
2838 \unvbox\dblspanherebox
2839 \vskip\intextfloatskip
2840 \fi
2841 \fi\fi
2842 %
2843 \gdef\thesavedcaption{\relax}
2844 \ifx\thesavedlabel\xrelax\else\savelabel{\thesavedlabel}
2845 \gdef\thesavedlabel{\relax}\fi
2846 \gdef\theletter{\relax}
2847 \vskip\intextfloatskip}
2848 \twocolumns\null
2849 \vskip2sp}
2850
2851 \def\twolookforposition[#1]{\defone#1*%
2852 \let\go\starttwocolfloat%
2853 \ifgalley%
2854 \if\one p \def\one{s}%
2855 \else%
2856 \def\one{i}%
2857 \fi%
2858 \fi%
2859 \ifjdraft%
2860 \expandafter\ifx\csname setkeys\endcsname\relax\else
2861 \setkeys{Gin}{draft=false}\fi
2862 \if\one p \def\one{s}%
2863 \else%
2864 \def\one{i}%
2865 \fi%
2866 \fi%
2867 %\ifappendon\def\one{h}\fi%
2868 %%
2869 \if\one h%
2870 \ifcaptypeplate%
2871 \else%
2872 \ifcaptypefig%
2873 \dofigmessage%
2874 \else%
2875 \dotabmessage%
2876 \fi%
2877 \fi%
2878 \ifgalley%
2879 \gdef\dbltoporbotfloat{dbltopfloat}%
2880 \else% not galley ==>
2881 \let\go\dodblfigurehere%
2882 \expandafter\gdef\csname endfigure*\endcsname{\enddodblfigurehere}%
2883 \expandafter\gdef\csname endtable*\endcsname{\enddodblfigurehere}%
2884 \expandafter\gdef\csname endplate*\endcsname{\enddodblfigurehere}%
2885 \fi% end ifgalley
2886 \else%
2887 \if\one t%
2888 \gdef\dbltoporbotfloat{dbltopfloat}%
2889 \else%
2890 \if\one b%
2891 \gdef\dbltoporbotfloat{dblbotfloat}%
2892 \else%
2893 \if\one p%
2894 \let\go\startpagefloat%
2895 \expandafter\gdef\csname endfigure*\endcsname{\endpagefloat}
2896 \expandafter\gdef\csname endtable*\endcsname{\endpagefloat}
2897 \expandafter\gdef\csname endplate*\endcsname{\endpagefloat}
2898 \else%
2899 \if\one i% for galley mode
2900 \let\go\dodblfiginsert%
2901 \expandafter\gdef\csname endfigure*\endcsname{\enddblfiginsert}
2902 \expandafter\gdef\csname endtable*\endcsname{\enddblfiginsert}
2903 \expandafter\gdef\csname endplate*\endcsname{\enddblfiginsert}
2904 \else%
2905 \if\one s% for special galley mode, for [p]
2906 \let\go\dodblfiginsert%
2907 \expandafter\gdef\csname endfigure*\endcsname{\endspfiginsert}%
2908 \expandafter\gdef\csname endtable*\endcsname{\endspfiginsert}
2909 \expandafter\gdef\csname endplate*\endcsname{\endspfiginsert}
2910 \else%
2911 \doerr%
2912 \fi%
2913 \fi%
2914 \fi%
2915 \fi%
2916 \fi%
2917 \fi\go}%
2918
2919 \let\saveenddocument\enddocument
2920
2921 \def\enddocument{%
2922 \ifdim\ht\dbltopins>0pt\vbox{\unvbox\dbltopins}\fi
2923 \ifdim\ht\dblbotins>0pt\vbox{\unvbox\dblbotins}\fi
2924 \ifnum\pagefloatnumber>\pageloopnum
2925 \newpage
2926 \insertpage{\hsize=\textwidth
2927 \linewidth=\textwidth
2928 \csname pagefloat\the\pageloopnum \endcsname}\fi%
2929 \immediate\write\@auxout{\string\gdef\string\lastpage{\thepage}}
2930 \saveenddocument}
2931
2932 \splittopskip=\topskip
2933
2934 \def~{\penalty\@M{ }}
2935
2936 \def\mathleftline{\vskip-\parskip
2937 \hbox to\textwidth{\hrulefill\hskip.5\textwidth}\vskip-\abovedisplayskip}
2938
2939 \def\mathrightline{\hbox to\textwidth{\hskip.5\textwidth\hrulefill}\vskip18pt}
2940
2941 \let\topline\mathleftline
2942 \let\botline\mathrightline
2943
2944 %% End Two Column Macros
2945 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2946
2947 \let\savefigure\figure
2948 \let\saveendfigure\endfigure
2949
2950
2951 %%%Packages installing
2952 \RequirePackage{graphicx}
2953 \RequirePackage{epstopdf}
2954 \RequirePackage{amssymb}
2955 \RequirePackage{amsfonts}
2956 \RequirePackage{amsmath}
2957
2958
2959
2960 \RequirePackage[usenames]{xcolor}
2961 \definecolor{signitext}{cmyk}{1,.45,0,.18}
2962 \definecolor{signiback}{cmyk}{.15,.07,0,.03}
2963 \gdef\significancetext#1{\gdef\@significancetext{#1}}
2964 \let\@significancetext\@empty
2965
2966 \def\article{\twocolumns
2967 \bgroup
2968 \setlength{\fboxsep}{6pt}
2969 \ifx \@significancetext\@empty
2970 \renewcommand\thefootnote{}%
2971 \footnotetext{\vbox to 3.7cm{\significanceheadfont Reserved for Publication Footnotes\vfill}}%
2972 \else
2973 \renewcommand\thefootnote{}%
2974 \footnotetext{\vbox{\fcolorbox{signitext}{signiback}{\parbox{232pt}{\par\vspace*{2pt}{\significanceheadfont \color{signitext}Significance}\par\vspace*{12pt}%
2975 {\color{signitext}\significancefont\@significancetext}}}\par\vspace*{4.5pt}
2976 {\vbox to 3.7cm{\significanceheadfont Reserved for Publication Footnotes\vfill}}}}
2977 \fi
2978 \egroup
2979 }
2980
2981
2982
2983 \def\endarticle{\endtwocolumns\newpage
2984 \expandafter\gdef\csname table*\endcsname{\@dblfloat{table}}
2985 \expandafter\gdef\csname endtable*\endcsname{\end@dblfloat}
2986 \expandafter\gdef\csname figure*\endcsname{\@dblfloat{figure}}
2987 \expandafter\gdef\csname endfigure*\endcsname{\end@dblfloat}
2988 \gdef\figure{\futurelet\next\lookforbrac}}
2989
2990 \def\lookforbrac{\if\next[
2991 \let\go\figone\else \let\go\figtwo\fi\go}
2992
2993 \def\figone[#1]{\@float{figure}[#1]\hsize276pt}
2994 \def\figtwo{\@float{figure}\hsize276pt}
2995
2996
2997 \newif\ifjdraft
2998 \newdimen\captionwidth
2999 \newdimen\widecaptionwidth
3000 \newif\ifgalley
3001 \let\tabletextsize\normalsize
3002
3003
3004
3005
3006 \def\inlinefrac#1#2{%
3007 \mbox{\raisebox{.8mm}{%
3008 $\textstyle #1$%
3009 }
3010 $\!\!\! / \!\!\!$
3011 \raisebox{-.8mm}{$\textstyle #2$}}%
3012 }
3013
3014 \newcount\tablenoteloopnum
3015 \newcount\tablenotenum
3016
3017 \def\tablenote#1{\global\advance\tablenotenum by 1\relax
3018 $^{\@fnsymbol{\the\tablenotenum}}$\expandafter\gdef\csname
3019 tabnote\the\tablenotenum\endcsname{#1}}
3020
3021 \def\tablenotes{\tablenoteloopnum=\tablenotenum
3022 \global\advance\tablenoteloopnum by 1
3023 \tablenotenum=0
3024 {\figtextfont
3025 \leftskip=0pt \rightskip=\leftskip
3026 \parfillskip=0pt plus 1 fil
3027 \loop
3028 \vskip2pt
3029 \noindent
3030 \global\advance\tablenotenum by 1
3031 \ifnum\tablenotenum<\tablenoteloopnum
3032 $^{\@fnsymbol{\the\tablenotenum}}$\csname
3033 tabnote\the\tablenotenum\endcsname
3034 \repeat}
3035 }
3036
3037 %% convenient macros from author:
3038
3039
3040 \def\o{\omega}
3041 \def\pr{\partial}
3042 \def\d{\delta}
3043 \def\a{\alpha}
3044 \def\p{\phi}
3045 \def\dst{\displaystyle}
3046 \def\chit{\tilde{\chi}}
3047 \def\etat{\tilde{\eta}}
3048
3049 \def\fdb{\mathbb{R}/_{\dst{ \mathbb{Z}}}}
3050 \def\fd{\mathbb{R}/_{\scriptstyle \mathbb{Z}}}
3051 \def\f12{\frac{1}{2}}
3052 \def\fr32{\frac{3}{2}}
3053 \def\vs{\vspace{10pt}}
3054 \def\vsm{\vspace{-10pt}}
3055 \def\xb{\bar{x}}
3056 \def\yb{\bar{y}}
3057 \def\tb{\bar{t}}
3058 \def\xt{\tilde{x}}
3059 \def\yt{\tilde{y}}
3060 \def\gtt{\tilde{g}}
3061 \def\vptt{\tilde{\varphi}}
3062 \def\htt{\tilde{h}}
3063 \def\ktt{\tilde{k}}
3064 \def\ub{\bar{u}}
3065 \def\hb{\bar{h}}
3066 \def\vep{\varepsilon}
3067 \def\vs{\vspace{10pt}}
3068 \def\be{\begin{equation}}
3069 \def\ee{\end{equation}}
3070 \newcommand{\mfrac}[2]{\frac{\displaystyle{#1}}{\displaystyle{#2}}}
3071
3072
3073 \newtheorem{theorem}{Theorem}
3074 \newtheorem{lemma}{Lemma}
3075 \newtheorem{corollary}[theorem]{Corollary}
3076 \newtheorem{proposition}[theorem]{Proposition}
3077 \newtheorem{definition}{Def\,inition}
3078 \newtheorem{claim}{Claim}
3079 \newtheorem{conjecture}[theorem]{Conjecture}
3080 \newtheorem{observation}[theorem]{Observation}
3081 \newtheorem{problem}[theorem]{Problem}
3082 \newtheorem{notation}[theorem]{Notation}
3083 \newtheorem{alemma}{Lemma}
3084 \newtheorem{remark}{Remark}
3085 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3086
3087
3088 \def\acknowledgments{\vskip14pt\bgroup\footnotesize\baselineskip 8pt
3089 \materialfont
3090 \def\textit##1{{\materialitfont ##1}}
3091 \def\it{\materialitfont}
3092 \def\bf{\materialbffont}
3093 \def\textbf##1{{\materialbffont ##1}}
3094 \noindent{\bf ACKNOWLEDGMENTS.} \relax\ignorespaces}
3095 \def\endacknowledgments{\vskip1sp\egroup}
3096
3097 %% Just in case author enters any of the below, it will still work correctly
3098 \let\acknowledgment\acknowledgements
3099 \let\endacknowledgment\endacknowledgments
3100
3101 \let\acknowledgement\acknowledgements
3102 \let\endacknowledgement\endacknowledgments
3103
3104 \let\acknowledgements\acknowledgements
3105 \let\endacknowledgements\endacknowledgments
3106
3107 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3108 %% April 25, 2006
3109 \let\dospecialaccents\relax
3110 \def\blackbox#1{}
3111
3112 % turn off side squares
3113 \def\dosidesquare#1#2#3{}
3114 \let\resetsidesquares\relax
3115 \let\makesidesquares\relax
3116 \newif\iffirsttime
3117
3118 \def\thanks#1{\footnotemark \protected@xdef \@thanks
3119 {\@thanks \protect \footnotetext [\the \c@footnote ]{\hsize=247pt\relax #1}}}
3120
3121 %% Keywords
3122 {\global\let\saveline|
3123 \gdef\linewithspace{\hskip3pt$\saveline$\hskip6pt}
3124 \catcode`|=\active
3125 \gdef\keywords{\bgroup\catcode`|=\active\xkeywords}
3126 \gdef\xkeywords#1{\vskip1sp\noindent{\let|=\linewithspace
3127 \affilfont#1}\vskip11pt\egroup}
3128 }
3129
3130 \def\abbreviations#1{\vskip1sp\noindent{\affilfont Abbreviations: #1}\vskip12pt}
3131
3132 %% Authors can change this dimension to move the
3133 %% printed page up or down on the physical page. Making
3134 %% the negative dimension larger will move it up on the
3135 %% page, smaller will move it down.
3136
3137 \voffset-.75in
3138
3139 %%% Default copyright year
3140 \copyrightyear{2007}
3141
3142 \def\conflictofinterest#1{{\let\@thefnmark\relax\@footnotetext{\vrule height8pt width0pt\relax\hsize=247pt
3143 \relax\footnotesize\footnotefont #1\vrule depth 6pt width0pt}}}
3144
3145 \def\footcomment#1{{\let\@thefnmark\relax\@footnotetext{\vrule height8pt width0pt\relax\hsize=247pt\relax\footnotesize\footnotefont #1\vrule depth 6pt width0pt}}}
3146
3147 \def\track#1{\footcomment{#1}}
3148
3149 \url{www.pnas.org --- ---}
3150 \issuedate{Issue Date}
3151 \copyrightyear{2007}
3152 \volume{Volume}
3153 \issuenumber{Issue Number}
3154 %\setcounter{page}{2687}
3155 \footlineauthor{Footline Author}
3156
3157 \long\def\@footnotetext#1{\insert\footins{%
3158 \reset@font\footnotesize
3159 \interlinepenalty\interfootnotelinepenalty
3160 \splittopskip\footnotesep
3161 \splitmaxdepth \dp\strutbox \floatingpenalty \@MM
3162 \hsize\columnwidth \@parboxrestore
3163 \protected@edef\@currentlabel{%
3164 \csname p@footnote\endcsname\@thefnmark
3165 }%
3166 \color@begingroup
3167 \@makefntext{%
3168 \rule\z@\footnotesep\ignorespaces\footnotefont
3169 \hsize=247pt
3170 #1\@finalstrut\strutbox}%
3171 \color@endgroup}}%
3172
3173
3174 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3175 %% Special Use Fonts
3176 %%
3177
3178 %% Computer Modern font calls. These will be redefined
3179 %% if PostScript fonts are used, \usepackage{pnastwof}
3180
3181 %% Times-Roman
3182 \def\timesroman{cmr10 }
3183 \def\timesbold{cmbx10 }
3184 \def\timesitalic{cmti10 }
3185 \def\timesbolditalic{cmbx10 }
3186
3187 %% Helvetica
3188 \def\helvetica{cmss10 }
3189 \def\helveticabold{cmssbx10 }
3190 \def\helveticaboldoblique{cmssbx10 }
3191 \def\helveticaoblique{cmssi10 }
3192
3193 \def\frutiger{cmss10 }
3194 \def\frutigermed{cmss10 }
3195 \def\frutigerbold{cmssbx10 }
3196 \def\frutigerboldoblique{cmssi10 }
3197 \def\frutigeroblique{cmssi10 }
3198
3199 \let\frutigerboldcondensed\helveticabold
3200
3201 %% Special Use Fonts ==>>
3202
3203
3204 \font\footnotefont\helvetica at 6pt
3205
3206 \font\dropcapfont=\frutigerbold at 26pt
3207 \font\sideboxfont= \helvetica at 6pt
3208
3209 %% Running feet
3210 \font\footlinefont=\frutiger at6.5pt%7pt
3211 \font\footlineit=\helveticaoblique at6.5pt%7pt
3212 \font\foliofont=\frutigerbold at6.5pt%7pt
3213
3214 \font\titlefont=\frutigerboldcondensed at 22pt % 24pt baseline
3215 \font\authorfont=\frutigerbold at 9pt % 11 pt baseline
3216 \font\affilfont=\frutiger at 7pt % 8pt baseline
3217
3218
3219 \font\copyrightfont=\frutiger at 6pt
3220 \font\copyrighttextfont=\frutiger at 6pt
3221
3222 %% Abstract fonts
3223 \font\xabstractfont=\frutigerbold at 8pt
3224 \def\abstractfont{\sf\xabstractfont\dospecialaccents}
3225 \font\abstractit=\helveticaboldoblique at 8pt
3226
3227 %% Section fonts
3228 \font\sectionfont=\frutigerbold at 10pt
3229 \font\subsectionfont=\frutigerbold at9pt
3230
3231 \font\significanceheadfont=\frutigerbold at 9pt
3232 \font\significancefont=\frutigerbold at 8pt
3233
3234
3235 %% Theorem fonts
3236 \font\theoremfont=\frutigerbold at 8pt
3237
3238 %ok
3239 %% Caption
3240 \font\fignumfont=\frutigerbold at 9pt
3241 \font\xfigtextfont=\frutiger at 7pt
3242 \def\figtextfont{\small\dospecialaccents\xfigtextfont}
3243
3244 %% Table font
3245 \font\tabletextfont=\frutiger at 9pt
3246 \font\tabtextfont\frutigerbold at 9pt
3247 \font\tabnumfont\frutigerbold at 9pt
3248
3249 %% Materials and Methods Fonts
3250 \font\materialfont=\frutiger at 7pt
3251 \font\materialbffont=\helveticabold at 7pt
3252 \font\materialitfont=\helveticaboldoblique at 7pt
3253
3254 %% Bibliography fonts
3255 \font\xbibfont=\frutigerbold at 6pt
3256 \def\bibfont{\sf\xbibfont\dospecialaccents}
3257 \font\bibitfont\helveticaboldoblique at 6pt
3258 \font\bibbffont\helveticabold at 6pt
3259
3260 %% dec 4, 2006
3261 \def\@tabular{\global\tablenotenum=0\relax
3262 \leavevmode \hbox \bgroup $\let\@acol\@tabacol
3263 \let\@classz\@tabclassz
3264 \let\@classiv\@tabclassiv \let\\\@tabularcr\@tabarray}
3265
3266 %% dec 4, 2006
3267 \def\@tabular{\global\tablenotenum=0\relax
3268 \leavevmode \hbox \bgroup $\let\@acol\@tabacol
3269 \let\@classz\@tabclassz
3270 \let\@classiv\@tabclassiv \let\\\@tabularcr\@tabarray}
3271
3272 %%%%%%% Jan 2008 Changes:
3273 \def\materials{\vskip6pt\bgroup
3274 \parskip=8pt
3275 \baselineskip=9pt
3276 \materialfont
3277 \def\textit##1{{\materialitfont ##1}}
3278 \def\it{\materialitfont}
3279 \def\bf{\materialbffont}
3280 \def\textbf##1{{\materialbffont ##1}}
3281 \def\section##1{\noindent{\materialbffont ##1. }}
3282 \def\subsection##1{\noindent{\materialbffont ##1. }}
3283 \noindent {\subsectionfont Materials and Methods}\\[2pt]
3284 }
3285 \def\endmaterials{\vskip1sp\egroup}
3286
3287
3288 \def\appendix{\originalappendix
3289 \vskip12pt\noindent{\subsectionfont Appendix}\@ifnextchar[{\xappendix}{\yappendix}}
3290
3291 \def\xappendix[#1]{\subsectionfont:\hskip10pt\relax #1\vskip2pt
3292 \normalsize\noindent\ignorespaces}
3293 \def\yappendix{\vskip2pt\normalsize\noindent\ignorespaces}
3294
3295 \widowpenalty=10000
3296 \clubpenalty=10000
3297
3298 \newbox\tablewide
3299 \def\endtabular{\crcr\egroup\egroup $\egroup\egroup
3300 \centerline{\vbox{\hsize\wd\tablewide
3301 \currtabcaption\vskip1pt
3302 }}
3303 \dimen0=\wd\tablewide
3304 \centerline{\hbox{\unhbox\tablewide}}
3305 \centerline{\vtop{\hsize=\dimen0 \tablenotes}}
3306 \global\let\currtabcaption\relax}
3307
3308 \expandafter \let \csname endtabular*\endcsname = \endtabular
3309
3310 \def\tabular{\global\setbox\tablewide\hbox\bgroup
3311 \let\@halignto\@empty\@tabular}
3312
3313 \@namedef{tabular*}#1{%
3314 \global\setbox\tablewide\hbox\bgroup
3315 \setlength\dimen@{#1}%
3316 \edef\@halignto{to\the\dimen@}\@tabular}
3317
3318 \newcommand\originalappendix{\par
3319 \setcounter{section}{0}%
3320 \setcounter{subsection}{0}%
3321 \gdef\thesection{\@Alph\c@section}}
3322
3323 \let\currtabcaption\relax
3324
3325
3326 \def\footcomment#1{\typeout{^^J^^J The \string\footcomment{}\space command is
3327 No Longer Used^^J^^J}}
3328
3329 \def\track#1{\typeout{^^J^^J The \string\track{}\space command is
3330 No Longer Used^^J^^J}}
3331
3332 \def\conflictofinterest#1{\typeout{^^J^^J The \string\conflictofinterest{}\space command is
3333 No Longer Used^^J^^J}}
3334
3335 %% nothing will happen, so PNAS can get info, but nothing will be printed
3336 \def\nothanks#1{}
3337
3338 \let\thanks\nothanks
3339
3340
3341 % substitute for \footcomment:
3342
3343 \def\abbreviations#1{\vskip1sp\noindent{\affilfont Abbreviations: #1}
3344 \vskip12pt}
3345 \endinput
3346 Change Log:
3347 October 18, 2006
3348 Changed the counter used in loop in maketitle to
3349 fix bug that prevented all affiliations from being
3350 listed; added $\saveline$ to make line work right
3351 in keywords
3352
3353 dec 4, 2006: fixed bug in table notes, by
3354 resetting tablenotenum every time tabular
3355 is used
3356
3357 %\def\currversion{October 18, 2006}
3358 %\def\currversion{July 10, 2006}
3359 %\def\currversion{May 1, 2006}
3360 %\def\currversion{August 27, 2004}