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 (10 years, 9 months ago) by plouden
File size: 99874 byte(s)
Log Message:
adding PNAS template

File Contents

# User Rev Content
1 plouden 4241 %\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}