diff options
Diffstat (limited to 'Master/texmf-dist/tex/plain/mnras/mn.tex')
-rw-r--r-- | Master/texmf-dist/tex/plain/mnras/mn.tex | 3034 |
1 files changed, 3034 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/plain/mnras/mn.tex b/Master/texmf-dist/tex/plain/mnras/mn.tex new file mode 100644 index 00000000000..cf6b0cbedcd --- /dev/null +++ b/Master/texmf-dist/tex/plain/mnras/mn.tex @@ -0,0 +1,3034 @@ +% MN.TEX (Computer Modern version) +% +% plain TeX single / double column macros for the +% Monthly Notices of Royal Astronomical Society +% +% v1.5 (mn.tex) --- released 25th August 1994 (M. Reed) +% v1.4 " --- released 22nd February 1994 +% v1.3 (mnd.tex) --- released 28th November 1992 +% v1.26 " --- released 1st August 1992 +% v1.25 " --- released 25th February 1992 +% +% Copyright Cambridge University Press +% +% > Incorporating special symbol code from laa.sty v1.1 (25th Feb 1991) +% used with the permission of Springer Verlag. +% > Incorporating parts of mssymb.tex (8th July 1987). +% > Incorporating NewFont.sty v ALPHA patchlevel 8 (16th August 1994). + +\catcode `\@=11 % @ signs are letters + +\def\@version{1.5} +\def\@verdate{25th Aug 1994} + + +% Fonts: Computer Modern / Monotype Times (CUP only) +% +% Font family sizes available: +% 8pt, 9pt, 10pt, 11pt, 14pt and 17pt. +% +% Faces available: +% \rm, math italic, symbol, \it, \bf, \sl, \tt, \sc, \sf, \cal, \em, +% \mit and \oldstyle. + +% define the typeface in use + +\newif\ifprod@font + +\ifx\@typeface\undefined + \def\@typeface{Comp. Modern}\prod@fontfalse +\else + \prod@fonttrue % We want Times +\fi + +\def\newfam{\alloc@8\fam\chardef\sixt@@n} % made not outer + +\ifprod@font +% +\font\fiverm=mtr10 at 5pt +\font\fivebf=mtbx10 at 5pt +\font\fiveit=mtti10 at 5pt +\font\fivesl=mtsl10 at 5pt +\font\fivett=cmtt8 at 5pt \hyphenchar\fivett=-1 +\font\fivecsc=mtcsc10 at 5pt +\font\fivesf=mtss10 at 5pt +\font\fivei=mtmi10 at 5pt \skewchar\fivei='177 +\font\fivesy=mtsy10 at 5pt \skewchar\fivesy='60 + +\font\sixrm=mtr10 at 6pt +\font\sixbf=mtbx10 at 6pt +\font\sixit=mtti10 at 6pt +\font\sixsl=mtsl10 at 6pt +\font\sixtt=cmtt8 at 6pt \hyphenchar\sixtt=-1 +\font\sixcsc=mtcsc10 at 6pt +\font\sixsf=mtss10 at 6pt +\font\sixi=mtmi10 at 6pt \skewchar\sixi='177 +\font\sixsy=mtsy10 at 6pt \skewchar\sixsy='60 + +\font\sevenrm=mtr10 at 7pt +\font\sevenbf=mtbx10 at 7pt +\font\sevenit=mtti10 at 7pt +\font\sevensl=mtsl10 at 7pt +\font\seventt=cmtt8 at 7pt \hyphenchar\seventt=-1 +\font\sevencsc=mtcsc10 at 7pt +\font\sevensf=mtss10 at 7pt +\font\seveni=mtmi10 at 7pt \skewchar\seveni='177 +\font\sevensy=mtsy10 at 7pt \skewchar\sevensy='60 + +\font\eightrm=mtr10 at 8pt +\font\eightbf=mtbx10 at 8pt +\font\eightit=mtti10 at 8pt +\font\eighti=mtmi10 at 8pt \skewchar\eighti='177 +\font\eightsy=mtsy10 at 8pt \skewchar\eightsy='60 +\font\eightsl=mtsl10 at 8pt +\font\eighttt=cmtt8 \hyphenchar\eighttt=-1 +\font\eightcsc=mtcsc10 at 8pt +\font\eightsf=mtss10 at 8pt + +\font\ninerm=mtr10 at 9pt +\font\ninebf=mtbx10 at 9pt +\font\nineit=mtti10 at 9pt +\font\ninei=mtmi10 at 9pt \skewchar\ninei='177 +\font\ninesy=mtsy10 at 9pt \skewchar\ninesy='60 +\font\ninesl=mtsl10 at 9pt +\font\ninett=cmtt9 \hyphenchar\ninett=-1 +\font\ninecsc=mtcsc10 at 9pt +\font\ninesf=mtss10 at 9pt + +\font\tenrm=mtr10 +\font\tenbf=mtbx10 +\font\tenit=mtti10 +\font\teni=mtmi10 \skewchar\teni='177 +\font\tensy=mtsy10 \skewchar\tensy='60 +\font\tenex=cmex10 +\font\tensl=mtsl10 +\font\tentt=cmtt10 \hyphenchar\tentt=-1 +\font\tencsc=mtcsc10 +\font\tensf=mtss10 + +\font\elevenrm=mtr10 at 11pt +\font\elevenbf=mtbx10 at 11pt +\font\elevenit=mtti10 at 11pt +\font\eleveni=mtmi10 at 11pt \skewchar\eleveni='177 +\font\elevensy=mtsy10 at 11pt \skewchar\elevensy='60 +\font\elevensl=mtsl10 at 11pt +\font\eleventt=cmtt10 at 11pt \hyphenchar\eleventt=-1 +\font\elevencsc=mtcsc10 at 11pt +\font\elevensf=mtss10 at 11pt + +\font\twelverm=mtr10 at 12pt +\font\twelvebf=mtbx10 at 12pt +\font\twelveit=mtti10 at 12pt +\font\twelvesl=mtsl10 at 12pt +\font\twelvett=cmtt12 \hyphenchar\twelvett=-1 +\font\twelvecsc=mtcsc10 at 12pt +\font\twelvesf=mtss10 at 12pt +\font\twelvei=mtmi10 at 12pt \skewchar\twelvei='177 +\font\twelvesy=mtsy10 at 12pt \skewchar\twelvesy='60 + +\font\fourteenrm=mtr10 at 14pt +\font\fourteenbf=mtbx10 at 14pt +\font\fourteenit=mtti10 at 14pt +\font\fourteeni=mtmi10 at 14pt \skewchar\fourteeni='177 +\font\fourteensy=mtsy10 at 14pt \skewchar\fourteensy='60 +\font\fourteensl=mtsl10 at 14pt +\font\fourteentt=cmtt12 at 14pt \hyphenchar\fourteentt=-1 +\font\fourteencsc=mtcsc10 at 14pt +\font\fourteensf=mtss10 at 14pt + +\font\seventeenrm=mtr10 at 17pt +\font\seventeenbf=mtbx10 at 17pt +\font\seventeenit=mtti10 at 17pt +\font\seventeeni=mtmi10 at 17pt \skewchar\seventeeni='177 +\font\seventeensy=mtsy10 at 17pt \skewchar\seventeensy='60 +\font\seventeensl=mtsl10 at 17pt +\font\seventeentt=cmtt12 at 17pt \hyphenchar\seventeentt=-1 +\font\seventeencsc=mtcsc10 at 17pt +\font\seventeensf=mtss10 at 17pt +% +\else +% +\font\fiverm=cmr5 +\font\fivei=cmmi5 \skewchar\fivei='177 +\font\fivesy=cmsy5 \skewchar\fivesy='60 +\font\fivebf=cmbx5 + +\font\sixrm=cmr6 +\font\sixi=cmmi6 \skewchar\sixi='177 +\font\sixsy=cmsy6 \skewchar\sixsy='60 +\font\sixbf=cmbx6 + +\font\sevenrm=cmr7 +\font\sevenit=cmti7 +\font\seveni=cmmi7 \skewchar\seveni='177 +\font\sevensy=cmsy7 \skewchar\sevensy='60 +\font\sevenbf=cmbx7 + +\font\eightrm=cmr8 +\font\eightbf=cmbx8 +\font\eightit=cmti8 +\font\eighti=cmmi8 \skewchar\eighti='177 +\font\eightsy=cmsy8 \skewchar\eightsy='60 +\font\eightsl=cmsl8 +\font\eighttt=cmtt8 \hyphenchar\eighttt=-1 +\font\eightcsc=cmcsc10 at 8pt +\font\eightsf=cmss8 + +\font\ninerm=cmr9 +\font\ninebf=cmbx9 +\font\nineit=cmti9 +\font\ninei=cmmi9 \skewchar\ninei='177 +\font\ninesy=cmsy9 \skewchar\ninesy='60 +\font\ninesl=cmsl9 +\font\ninett=cmtt9 \hyphenchar\ninett=-1 +\font\ninecsc=cmcsc10 at 9pt +\font\ninesf=cmss9 + +\font\tenrm=cmr10 +\font\tenbf=cmbx10 +\font\tenit=cmti10 +\font\teni=cmmi10 \skewchar\teni='177 +\font\tensy=cmsy10 \skewchar\tensy='60 +\font\tenex=cmex10 +\font\tensl=cmsl10 +\font\tentt=cmtt10 \hyphenchar\tentt=-1 +\font\tencsc=cmcsc10 +\font\tensf=cmss10 + +\font\elevenrm=cmr10 scaled \magstephalf +\font\elevenbf=cmbx10 scaled \magstephalf +\font\elevenit=cmti10 scaled \magstephalf +\font\eleveni=cmmi10 scaled \magstephalf \skewchar\eleveni='177 +\font\elevensy=cmsy10 scaled \magstephalf \skewchar\elevensy='60 +\font\elevensl=cmsl10 scaled \magstephalf +\font\eleventt=cmtt10 scaled \magstephalf \hyphenchar\eleventt=-1 +\font\elevencsc=cmcsc10 scaled \magstephalf +\font\elevensf=cmss10 scaled \magstephalf + +\font\twelverm=cmr10 scaled \magstep1 +\font\twelvebf=cmbx10 scaled \magstep1 +\font\twelvei=cmmi10 scaled \magstep1 \skewchar\twelvei='177 +\font\twelvesy=cmsy10 scaled \magstep1 \skewchar\twelvesy='60 + +\font\fourteenrm=cmr10 scaled \magstep2 +\font\fourteenbf=cmbx10 scaled \magstep2 +\font\fourteenit=cmti10 scaled \magstep2 +\font\fourteeni=cmmi10 scaled \magstep2 \skewchar\fourteeni='177 +\font\fourteensy=cmsy10 scaled \magstep2 \skewchar\fourteensy='60 +\font\fourteensl=cmsl10 scaled \magstep2 +\font\fourteentt=cmtt10 scaled \magstep2 \hyphenchar\fourteentt=-1 +\font\fourteencsc=cmcsc10 scaled \magstep2 +\font\fourteensf=cmss10 scaled \magstep2 + +\font\seventeenrm=cmr10 scaled \magstep3 +\font\seventeenbf=cmbx10 scaled \magstep3 +\font\seventeenit=cmti10 scaled \magstep3 +\font\seventeeni=cmmi10 scaled \magstep3 \skewchar\seventeeni='177 +\font\seventeensy=cmsy10 scaled \magstep3 \skewchar\seventeensy='60 +\font\seventeensl=cmsl10 scaled \magstep3 +\font\seventeentt=cmtt10 scaled \magstep3 \hyphenchar\seventeentt=-1 +\font\seventeencsc=cmcsc10 scaled \magstep3 +\font\seventeensf=cmss10 scaled \magstep3 +% +\fi + +\def\hexnumber#1{\ifcase#1 0\or1\or2\or3\or4\or5\or6\or7\or8\or9\or + A\or B\or C\or D\or E\or F\fi} + +\def\makestrut{% + \setbox\strutbox=\hbox{% + \vrule height.7\baselineskip depth.3\baselineskip width \z@}% +} + +\def\baselinestretch{1} +\newskip\tmp@bls + +\def\b@ls#1{% set baseline using \baselinestretch as a scale factor + \tmp@bls=#1\relax + \baselineskip=#1\relax\makestrut + \normalbaselineskip=\baselinestretch\tmp@bls + \normalbaselines +} + +\def\nostb@ls#1{% set baseline skip ignoring \baselinestretch + \normalbaselineskip=#1\relax + \normalbaselines + \makestrut +} + + +% families \itfam, \slfam, \bffam, \ttfam defined in PLAIN. +% +% \itfam is \fam4 +% \slfam is \fam5 +% \bffam is \fam6 +% \ttfam is \fam7 + +\newfam\scfam % \fam8 +\newfam\sffam % \fam9 + +\def\mit{\fam\@ne} +\def\cal{\fam\tw@} +\def\em{\ifdim\fontdimen1\font>\z@ \rm\else\it\fi} + +\textfont3=\tenex +\scriptfont3=\tenex +\scriptscriptfont3=\tenex + +\setbox0=\hbox{\tenex B} \p@renwd=\wd0 % width of the big left ( + +\def\eightpoint{% 8^6^5 on 10pt + \def\rm{\fam0\eightrm}% + \textfont0=\eightrm \scriptfont0=\sixrm \scriptscriptfont0=\fiverm% + \textfont1=\eighti \scriptfont1=\sixi \scriptscriptfont1=\fivei% + \textfont2=\eightsy \scriptfont2=\sixsy \scriptscriptfont2=\fivesy% + \textfont\itfam=\eightit\def\it{\fam\itfam\eightit}% + \ifprod@font + \scriptfont\itfam=\sixit + \scriptscriptfont\itfam=\fiveit + \else + \scriptfont\itfam=\eightit + \scriptscriptfont\itfam=\eightit + \fi + \textfont\bffam=\eightbf% + \scriptfont\bffam=\sixbf% + \scriptscriptfont\bffam=\fivebf% + \def\bf{\fam\bffam\eightbf}% + \textfont\slfam=\eightsl\def\sl{\fam\slfam\eightsl}% + \ifprod@font + \scriptfont\slfam=\sixsl + \scriptscriptfont\slfam=\fivesl + \else + \scriptfont\slfam=\eightsl + \scriptscriptfont\slfam=\eightsl + \fi + \textfont\ttfam=\eighttt\def\tt{\fam\ttfam\eighttt}% + \ifprod@font + \scriptfont\ttfam=\sixtt + \scriptscriptfont\ttfam=\fivett + \else + \scriptfont\ttfam=\eighttt + \scriptscriptfont\ttfam=\eighttt + \fi + \textfont\scfam=\eightcsc\def\sc{\fam\scfam\eightcsc}% + \ifprod@font + \scriptfont\scfam=\sixcsc + \scriptscriptfont\scfam=\fivecsc + \else + \scriptfont\scfam=\eightcsc + \scriptscriptfont\scfam=\eightcsc + \fi + \textfont\sffam=\eightsf\def\sf{\fam\sffam\eightsf}% + \ifprod@font + \scriptfont\sffam=\sixsf + \scriptscriptfont\sffam=\fivesf + \else + \scriptfont\sffam=\eightsf + \scriptscriptfont\sffam=\eightsf + \fi + \def\oldstyle{\fam\@ne\eighti}% + \b@ls{10pt}\rm\@viiipt% +} +\def\@viiipt{} + +\def\ninepoint{% 9^6^5 on 11pt (two col) / 12 (single col) + \def\rm{\fam0\ninerm}% + \textfont0=\ninerm \scriptfont0=\sixrm \scriptscriptfont0=\fiverm% + \textfont1=\ninei \scriptfont1=\sixi \scriptscriptfont1=\fivei% + \textfont2=\ninesy \scriptfont2=\sixsy \scriptscriptfont2=\fivesy% + \textfont\itfam=\nineit\def\it{\fam\itfam\nineit}% + \ifprod@font + \scriptfont\itfam=\sixit + \scriptscriptfont\itfam=\fiveit + \else + \scriptfont\itfam=\nineit + \scriptscriptfont\itfam=\nineit + \fi + \textfont\bffam=\ninebf% + \scriptfont\bffam=\sixbf% + \scriptscriptfont\bffam=\fivebf% + \def\bf{\fam\bffam\ninebf}% + \textfont\slfam=\ninesl\def\sl{\fam\slfam\ninesl}% + \ifprod@font + \scriptfont\slfam=\sixsl + \scriptscriptfont\slfam=\fivesl + \else + \scriptfont\slfam=\ninesl + \scriptscriptfont\slfam=\ninesl + \fi + \textfont\ttfam=\ninett\def\tt{\fam\ttfam\ninett}% + \ifprod@font + \scriptfont\ttfam=\sixtt + \scriptscriptfont\ttfam=\fivett + \else + \scriptfont\ttfam=\ninett + \scriptscriptfont\ttfam=\ninett + \fi + \textfont\scfam=\ninecsc\def\sc{\fam\scfam\ninecsc}% + \ifprod@font + \scriptfont\scfam=\sixcsc + \scriptscriptfont\scfam=\fivecsc + \else + \scriptfont\scfam=\ninecsc + \scriptscriptfont\scfam=\ninecsc + \fi + \textfont\sffam=\ninesf\def\sf{\fam\sffam\ninesf}% + \ifprod@font + \scriptfont\sffam=\sixsf + \scriptscriptfont\sffam=\fivesf + \else + \scriptfont\sffam=\ninesf + \scriptscriptfont\sffam=\ninesf + \fi + \def\oldstyle{\fam\@ne\ninei}% + \b@ls{\TextLeading plus \Feathering}\rm\@ixpt% +} +\def\@ixpt{} + +\def\tenpoint{% 10^7^5 on 11pt + \def\rm{\fam0\tenrm}% + \textfont0=\tenrm \scriptfont0=\sevenrm \scriptscriptfont0=\fiverm% + \textfont1=\teni \scriptfont1=\seveni \scriptscriptfont1=\fivei% + \textfont2=\tensy \scriptfont2=\sevensy \scriptscriptfont2=\fivesy% + \textfont\itfam=\tenit\def\it{\fam\itfam\tenit}% + \ifprod@font + \scriptfont\itfam=\sevenit + \scriptscriptfont\itfam=\fiveit + \else + \scriptfont\itfam=\tenit + \scriptscriptfont\itfam=\tenit + \fi + \textfont\bffam=\tenbf% + \scriptfont\bffam=\sevenbf% + \scriptscriptfont\bffam=\fivebf% + \def\bf{\fam\bffam\tenbf}% + \textfont\slfam=\tensl\def\sl{\fam\slfam\tensl}% + \ifprod@font + \scriptfont\slfam=\sevensl + \scriptscriptfont\slfam=\fivesl + \else + \scriptfont\slfam=\tensl + \scriptscriptfont\slfam=\tensl + \fi + \textfont\ttfam=\tentt\def\tt{\fam\ttfam\tentt}% + \ifprod@font + \scriptfont\ttfam=\seventt + \scriptscriptfont\ttfam=\fivett + \else + \scriptfont\ttfam=\tentt + \scriptscriptfont\ttfam=\tentt + \fi + \textfont\scfam=\tencsc\def\sc{\fam\scfam\tencsc}% + \ifprod@font + \scriptfont\scfam=\sevencsc + \scriptscriptfont\scfam=\fivecsc + \else + \scriptfont\scfam=\tencsc + \scriptscriptfont\scfam=\tencsc + \fi + \textfont\sffam=\tensf\def\sf{\fam\sffam\tensf}% + \ifprod@font + \scriptfont\sffam=\sevensf + \scriptscriptfont\sffam=\fivesf + \else + \scriptfont\sffam=\tensf + \scriptscriptfont\sffam=\tensf + \fi + \def\oldstyle{\fam\@ne\teni}% + \b@ls{11pt}\rm\@xpt% +} +\def\@xpt{} + +\def\elevenpoint{% 11^8^6 on 13pt + \def\rm{\fam0\elevenrm}% + \textfont0=\elevenrm \scriptfont0=\eightrm \scriptscriptfont0=\sixrm% + \textfont1=\eleveni \scriptfont1=\eighti \scriptscriptfont1=\sixi% + \textfont2=\elevensy \scriptfont2=\eightsy \scriptscriptfont2=\sixsy% + \textfont\itfam=\elevenit\def\it{\fam\itfam\elevenit}% + \ifprod@font + \scriptfont\itfam=\eightit + \scriptscriptfont\itfam=\sixit + \else + \scriptfont\itfam=\elevenit + \scriptscriptfont\itfam=\elevenit + \fi + \textfont\bffam=\elevenbf% + \scriptfont\bffam=\eightbf% + \scriptscriptfont\bffam=\sixbf% + \def\bf{\fam\bffam\elevenbf}% + \textfont\slfam=\elevensl\def\sl{\fam\slfam\elevensl}% + \ifprod@font + \scriptfont\slfam=\eightsl + \scriptscriptfont\slfam=\sixsl + \else + \scriptfont\slfam=\elevensl + \scriptscriptfont\slfam=\elevensl + \fi + \textfont\ttfam=\eleventt\def\tt{\fam\ttfam\eleventt}% + \ifprod@font + \scriptfont\ttfam=\eighttt + \scriptscriptfont\ttfam=\sixtt + \else + \scriptfont\ttfam=\eleventt + \scriptscriptfont\ttfam=\eleventt + \fi + \textfont\scfam=\elevencsc\def\sc{\fam\scfam\elevencsc}% + \ifprod@font + \scriptfont\scfam=\eightcsc + \scriptscriptfont\scfam=\sixcsc + \else + \scriptfont\scfam=\elevencsc + \scriptscriptfont\scfam=\elevencsc + \fi + \textfont\sffam=\elevensf\def\sf{\fam\sffam\elevensf}% + \ifprod@font + \scriptfont\sffam=\eightsf + \scriptscriptfont\sffam=\sixsf + \else + \scriptfont\sffam=\elevensf + \scriptscriptfont\sffam=\elevensf + \fi + \def\oldstyle{\fam\@ne\eleveni}% + \b@ls{13pt}\rm\@xipt% +} +\def\@xipt{} + +\def\fourteenpoint{% 14^10^7 on 17pt + \def\rm{\fam0\fourteenrm}% + \textfont0\fourteenrm \scriptfont0\tenrm \scriptscriptfont0\sevenrm% + \textfont1\fourteeni \scriptfont1\teni \scriptscriptfont1\seveni% + \textfont2\fourteensy \scriptfont2\tensy \scriptscriptfont2\sevensy% + \textfont\itfam=\fourteenit\def\it{\fam\itfam\fourteenit}% + \ifprod@font + \scriptfont\itfam=\tenit + \scriptscriptfont\itfam=\sevenit + \else + \scriptfont\itfam=\fourteenit + \scriptscriptfont\itfam=\fourteenit + \fi + \textfont\bffam=\fourteenbf% + \scriptfont\bffam=\tenbf% + \scriptscriptfont\bffam=\sevenbf% + \def\bf{\fam\bffam\fourteenbf}% + \textfont\slfam=\fourteensl\def\sl{\fam\slfam\fourteensl}% + \ifprod@font + \scriptfont\slfam=\tensl + \scriptscriptfont\slfam=\sevensl + \else + \scriptfont\slfam=\fourteensl + \scriptscriptfont\slfam=\fourteensl + \fi + \textfont\ttfam=\fourteentt\def\tt{\fam\ttfam\fourteentt}% + \ifprod@font + \scriptfont\ttfam=\tentt + \scriptscriptfont\ttfam=\seventt + \else + \scriptfont\ttfam=\fourteentt + \scriptscriptfont\ttfam=\fourteentt + \fi + \textfont\scfam=\fourteencsc\def\sc{\fam\scfam\fourteencsc}% + \ifprod@font + \scriptfont\scfam=\tencsc + \scriptscriptfont\scfam=\sevencsc + \else + \scriptfont\scfam=\fourteencsc + \scriptscriptfont\scfam=\fourteencsc + \fi + \textfont\sffam=\fourteensf\def\sf{\fam\sffam\fourteensf}% + \ifprod@font + \scriptfont\sffam=\tensf + \scriptscriptfont\sffam=\sevensf + \else + \scriptfont\sffam=\fourteensf + \scriptscriptfont\sffam=\fourteensf + \fi + \def\oldstyle{\fam\@ne\fourteeni}% + \b@ls{17pt}\rm\@xivpt% +} +\def\@xivpt{} + +\def\seventeenpoint{% 17^12^10 on 20pt + \def\rm{\fam0\seventeenrm}% + \textfont0\seventeenrm \scriptfont0\twelverm \scriptscriptfont0\tenrm% + \textfont1\seventeeni \scriptfont1\twelvei \scriptscriptfont1\teni% + \textfont2\seventeensy \scriptfont2\twelvesy \scriptscriptfont2\tensy% + \textfont\itfam=\seventeenit\def\it{\fam\itfam\seventeenit}% + \ifprod@font + \scriptfont\itfam=\twelveit + \scriptscriptfont\itfam=\tenit + \else + \scriptfont\itfam=\seventeenit + \scriptscriptfont\itfam=\seventeenit + \fi + \textfont\bffam=\seventeenbf% + \scriptfont\bffam=\twelvebf% + \scriptscriptfont\bffam=\tenbf% + \def\bf{\fam\bffam\seventeenbf}% + \textfont\slfam=\seventeensl\def\sl{\fam\slfam\seventeensl}% + \ifprod@font + \scriptfont\slfam=\twelvesl + \scriptscriptfont\slfam=\tensl + \else + \scriptfont\slfam=\seventeensl + \scriptscriptfont\slfam=\seventeensl + \fi + \textfont\ttfam=\seventeentt\def\tt{\fam\ttfam\seventeentt}% + \ifprod@font + \scriptfont\ttfam=\twelvett + \scriptscriptfont\ttfam=\tentt + \else + \scriptfont\ttfam=\seventeentt + \scriptscriptfont\ttfam=\seventeentt + \fi + \textfont\scfam=\seventeencsc\def\sc{\fam\scfam\seventeencsc}% + \ifprod@font + \scriptfont\scfam=\twelvecsc + \scriptscriptfont\scfam=\tencsc + \else + \scriptfont\scfam=\seventeencsc + \scriptscriptfont\scfam=\seventeencsc + \fi + \textfont\sffam=\seventeensf\def\sf{\fam\sffam\seventeensf}% + \ifprod@font + \scriptfont\sffam=\twelvesf + \scriptscriptfont\sffam=\tensf + \else + \scriptfont\sffam=\seventeensf + \scriptscriptfont\sffam=\seventeensf + \fi + \def\oldstyle{\fam\@ne\seventeeni}% + \b@ls{20pt}\rm\@xviipt% +} +\def\@xviipt{} + +\lineskip=1pt \normallineskip=\lineskip +\lineskiplimit=\z@ \normallineskiplimit=\lineskiplimit + + +% BOLD MATH SYMBOLS + +\def\loadboldmathnames{% + \def\balpha{{\bmath{\alpha}}}% + \def\bbeta{{\bmath{\beta}}}% + \def\bgamma{{\bmath{\gamma}}}% + \def\bdelta{{\bmath{\delta}}}% + \def\bepsilon{{\bmath{\epsilon}}}% + \def\bzeta{{\bmath{\zeta}}}% + \def\boldeta{{\bmath{\eta}}}% + \def\btheta{{\bmath{\theta}}}% + \def\biota{{\bmath{\iota}}}% + \def\bkappa{{\bmath{\kappa}}}% + \def\blambda{{\bmath{\lambda}}}% + \def\bmu{{\bmath{\mu}}}% + \def\bnu{{\bmath{\nu}}}% + \def\bxi{{\bmath{\xi}}}% + \def\bpi{{\bmath{\pi}}}% + \def\brho{{\bmath{\rho}}}% + \def\bsigma{{\bmath{\sigma}}}% + \def\btau{{\bmath{\tau}}}% + \def\bupsilon{{\bmath{\upsilon}}}% + \def\bphi{{\bmath{\phi}}}% + \def\bchi{{\bmath{\chi}}}% + \def\bpsi{{\bmath{\psi}}}% + \def\bomega{{\bmath{\omega}}}% + \def\bvarepsilon{{\bmath{\varepsilon}}}% + \def\bvartheta{{\bmath{\vartheta}}}% + \def\bvarpi{{\bmath{\varpi}}}% + \def\bvarrho{{\bmath{\varrho}}}% + \def\bvarsigma{{\bmath{\varsigma}}}% + \def\bvarphi{{\bmath{\varphi}}}% + \def\baleph{{\bmath{\aleph}}}% + \def\bimath{{\bmath{\imath}}}% + \def\bjmath{{\bmath{\jmath}}}% + \def\bell{{\bmath{\ell}}}% + \def\bwp{{\bmath{\wp}}}% + \def\bRe{{\bmath{\Re}}}% + \def\bIm{{\bmath{\Im}}}% + \def\bpartial{{\bmath{\partial}}}% + \def\binfty{{\bmath{\infty}}}% + \def\bprime{{\bmath{\prime}}}% + \def\bemptyset{{\bmath{\emptyset}}}% + \def\bnabla{{\bmath{\nabla}}}% + \def\btop{{\bmath{\top}}}% + \def\bbot{{\bmath{\bot}}}% + \def\btriangle{{\bmath{\triangle}}}% + \def\bforall{{\bmath{\forall}}}% + \def\bexists{{\bmath{\exists}}}% + \def\bneg{{\bmath{\neg}}}% + \def\bflat{{\bmath{\flat}}}% + \def\bnatural{{\bmath{\natural}}}% + \def\bsharp{{\bmath{\sharp}}}% + \def\bclubsuit{{\bmath{\clubsuit}}}% + \def\bdiamondsuit{{\bmath{\diamondsuit}}}% + \def\bheartsuit{{\bmath{\heartsuit}}}% + \def\bspadesuit{{\bmath{\spadesuit}}}% + \def\bsmallint{{\bmath{\smallint}}}% + \def\btriangleleft{{\bmath{\triangleleft}}}% + \def\btriangleright{{\bmath{\triangleright}}}% + \def\bbigtriangleup{{\bmath{\bigtriangleup}}}% + \def\bbigtriangledown{{\bmath{\bigtriangledown}}}% + \def\bwedge{{\bmath{\wedge}}}% + \def\bvee{{\bmath{\vee}}}% + \def\bcap{{\bmath{\cap}}}% + \def\bcup{{\bmath{\cup}}}% + \def\bddagger{{\bmath{\ddagger}}}% + \def\bdagger{{\bmath{\dagger}}}% + \def\bsqcap{{\bmath{\sqcap}}}% + \def\bsqcup{{\bmath{\sqcup}}}% + \def\buplus{{\bmath{\uplus}}}% + \def\bamalg{{\bmath{\amalg}}}% + \def\bdiamond{{\bmath{\diamond}}}% + \def\bbullet{{\bmath{\bullet}}}% + \def\bwr{{\bmath{\wr}}}% + \def\bdiv{{\bmath{\div}}}% + \def\bodot{{\bmath{\odot}}}% + \def\boslash{{\bmath{\oslash}}}% + \def\botimes{{\bmath{\otimes}}}% + \def\bominus{{\bmath{\ominus}}}% + \def\boplus{{\bmath{\oplus}}}% + \def\bmp{{\bmath{\mp}}}% + \def\bpm{{\bmath{\pm}}}% + \def\bcirc{{\bmath{\circ}}}% + \def\bbigcirc{{\bmath{\bigcirc}}}% + \def\bsetminus{{\bmath{\setminus}}}% + \def\bcdot{{\bmath{\cdot}}}% + \def\bast{{\bmath{\ast}}}% + \def\btimes{{\bmath{\times}}}% + \def\bstar{{\bmath{\star}}}% + \def\bpropto{{\bmath{\propto}}}% + \def\bsqsubseteq{{\bmath{\sqsubseteq}}}% + \def\bsqsupseteq{{\bmath{\sqsupseteq}}}% + \def\bparallel{{\bmath{\parallel}}}% + \def\bmid{{\bmath{\mid}}}% + \def\bdashv{{\bmath{\dashv}}}% + \def\bvdash{{\bmath{\vdash}}}% + \def\bnearrow{{\bmath{\nearrow}}}% + \def\bsearrow{{\bmath{\searrow}}}% + \def\bnwarrow{{\bmath{\nwarrow}}}% + \def\bswarrow{{\bmath{\swarrow}}}% + \def\bLeftrightarrow{{\bmath{\Leftrightarrow}}}% + \def\bLeftarrow{{\bmath{\Leftarrow}}}% + \def\bRightarrow{{\bmath{\Rightarrow}}}% + \def\bleq{{\bmath{\leq}}}% + \def\bgeq{{\bmath{\geq}}}% + \def\bsucc{{\bmath{\succ}}}% + \def\bprec{{\bmath{\prec}}}% + \def\bapprox{{\bmath{\approx}}}% + \def\bsucceq{{\bmath{\succeq}}}% + \def\bpreceq{{\bmath{\preceq}}}% + \def\bsupset{{\bmath{\supset}}}% + \def\bsubset{{\bmath{\subset}}}% + \def\bsupseteq{{\bmath{\supseteq}}}% + \def\bsubseteq{{\bmath{\subseteq}}}% + \def\bin{{\bmath{\in}}}% + \def\bni{{\bmath{\ni}}}% + \def\bgg{{\bmath{\gg}}}% + \def\bll{{\bmath{\ll}}}% + \def\bnot{{\bmath{\not}}}% + \def\bleftrightarrow{{\bmath{\leftrightarrow}}}% + \def\bleftarrow{{\bmath{\leftarrow}}}% + \def\brightarrow{{\bmath{\rightarrow}}}% + \def\bmapstochar{{\bmath{\mapstochar}}}% + \def\bsim{{\bmath{\sim}}}% + \def\bsimeq{{\bmath{\simeq}}}% + \def\bperp{{\bmath{\perp}}}% + \def\bequiv{{\bmath{\equiv}}}% + \def\basymp{{\bmath{\asymp}}}% + \def\bsmile{{\bmath{\smile}}}% + \def\bfrown{{\bmath{\frown}}}% + \def\bleftharpoonup{{\bmath{\leftharpoonup}}}% + \def\bleftharpoondown{{\bmath{\leftharpoondown}}}% + \def\brightharpoonup{{\bmath{\rightharpoonup}}}% + \def\brightharpoondown{{\bmath{\rightharpoondown}}}% + \def\blhook{{\bmath{\lhook}}}% + \def\brhook{{\bmath{\rhook}}}% + \def\bldotp{{\bmath{\ldotp}}}% + \def\bcdotp{{\bmath{\cdotp}}}% +} + +% Make \, work in non-math mode +\def\,{\relax\ifmmode \mskip\thinmuskip\else \thinspace\fi} +\let\protect=\relax + +\long\def\@ifundefined#1#2#3{\expandafter\ifx\csname + #1\endcsname\relax#2\else#3\fi} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% NewFont.sty: ALPHA VERSION patchlevel 8, 16th August 1994, M. Reed + +% \addtom@thgroup{math font loading info} +% Adds to internal \math@groups definition, which is executed at the end +% of each size changing command. It is called by \NewSymbolFont. + +\newtoks\math@groups \math@groups={} +\def\addtom@thgroup#1#2{#1\expandafter{\the#1#2}} % \mac={new\the\mac} + + +% Make TeX change the values of \s@ze, \ss@ze, \sss@ze when \@npt is +% executed. This makes it possible for math characters to be loaded +% at the correct size automatically when the size is changed. + +% \addtosizeh@ok{x}{10}{7}{5} + +\def\addtosizeh@ok#1#2#3#4{% + \expandafter\def\csname @#1pt\endcsname{% + \def\s@ze{#2}\def\ss@ze{#3}\def\sss@ze{#4}\the\math@groups% + }% +} + + +% \resetsizehook allows the size parameters to be reset after \addtosizeh@ok +% has been called (it re-defines \@npt). +% e.g JFM which requires \xpt to have 10.5pt instead of 10pt. +% Note: \resetsizehook must be used in the preamble BEFORE any +% \New... commands. + +% e.g. \resetsizehook{x}{10.5}{7}{5} + +\let\resetsizehook=\addtosizeh@ok + + +% Standard LaTeX sizes + +\ifprod@font +% \addtosizeh@ok{v} {5} {5} {5} +% \addtosizeh@ok{vi} {6} {6} {6} +% \addtosizeh@ok{vii} {7} {6} {5} + \addtosizeh@ok{viii} {8} {6} {5} + \addtosizeh@ok{ix} {9} {6} {5} + \addtosizeh@ok{x} {10}{7} {5} + \addtosizeh@ok{xi} {11}{8} {6} +% \addtosizeh@ok{xii} {12}{8} {6} + \addtosizeh@ok{xiv} {14}{10} {7} + \addtosizeh@ok{xvii} {17}{12}{10} +% \addtosizeh@ok{xx} {20}{14}{12} +% \addtosizeh@ok{xxv} {25}{20}{17} +\else +% \addtosizeh@ok{v} {5} {5} {5} +% \addtosizeh@ok{vi} {6} {6} {6} +% \addtosizeh@ok{vii} {7} {6} {5} + \addtosizeh@ok{viii} {8} {6} {5} + \addtosizeh@ok{ix} {9} {6} {5} + \addtosizeh@ok{x} {10} {7} {5} + \addtosizeh@ok{xi} {10.95} {8} {6} +% \addtosizeh@ok{xii} {12} {8} {6} + \addtosizeh@ok{xiv} {14.4} {10} {7} + \addtosizeh@ok{xvii} {17.28} {12} {10} +% \addtosizeh@ok{xx} {20.74} {14.4} {12} +% \addtosizeh@ok{xxv} {24.88} {20.74} {17.28} +\fi + + +\def\get@font#1#2#3{% + \edef\fonts@ze{\romannumeral#3}% 10 -> x + \edef\fontn@me{\fonts@ze#1}% AMSa -> xAMSa + \@ifundefined{\fontn@me}% + {%%\typeout{defining \fontn@me}% + \global\expandafter\font\csname \fontn@me\endcsname=#2 at #3pt}% + {}% +} + +\def\ass@tfont#1#2{% + \xdef\fam@name{\csname #1\endcsname}% + \xdef\font@name{\csname #2\endcsname}% + \let\textfont@name\font@name + \textfont\fam@name\textfont@name +} + +\def\ass@sfont#1#2{% + \xdef\fam@name{\csname #1\endcsname}% + \xdef\font@name{\csname #2\endcsname}% + \let\textfont@name\font@name + \scriptfont\fam@name\textfont@name +} + +\def\ass@ssfont#1#2{% + \xdef\fam@name{\csname #1\endcsname}% + \xdef\font@name{\csname #2\endcsname}% + \let\textfont@name\font@name + \scriptscriptfont\fam@name\textfont@name +} + + +% fam name base font (allocates a \newfam) +% \NewSymbolFont {AMSa} {mtxm10} + +\def\NewSymbolFont#1#2{% + \expandafter\ifx\csname sym#1fam\endcsname\relax % if not defined + \expandafter\newfam\csname sym#1fam\endcsname + \expandafter\edef\csname sym#1fam\endcsname{\the\allocationnumber}% + \addtom@thgroup\math@groups{% + \get@font{#1}{#2}{\s@ze}% + \ass@tfont{sym#1fam}{\fontn@me}% + \get@font{#1}{#2}{\ss@ze}% + \ass@sfont{sym#1fam}{\fontn@me}% + \get@font{#1}{#2}{\sss@ze}% + \ass@ssfont{sym#1fam}{\fontn@me}% + }% + \else + \errmessage{Family `#1' already defined}% + \fi +} + + +% symbol type fam pos (hex) +% \NewMathSymbol {\blacksquare} {0} {AMSa} {04} + +\def\NewMathSymbol#1#2#3#4{% + \edef\f@mly{\expandafter\hexnumber{\csname sym#3fam\endcsname}}% + \mathchardef#1="#2\f@mly#4\relax +} + + +% macro name type fam1 pos fam2 pos +% \NewMathDelimiter{\ulcorner} {4} {AMSa} {70} {AMSb} {70} + +\newif\ifd@f + +\def\NewMathDelimiter#1#2#3#4#5#6{% + \d@ftrue + \expandafter\ifx\csname sym#3fam\endcsname\relax + \d@ffalse \errmessage{Family `#3' is not defined}% + \fi + \expandafter\ifx\csname sym#5fam\endcsname\relax + \d@ffalse \errmessage{Family `#5' is not defined}% + \fi + \ifd@f + \edef\f@mly{\expandafter\hexnumber{\csname sym#3fam\endcsname}}% + \edef\f@mlytw@{\expandafter\hexnumber{\csname sym#5fam\endcsname}}% + \xdef#1{\delimiter"#2\f@mly #4\f@mlytw@ #6\relax}% + \fi +} + + +% macro name base font skewchar setting e.g '60 (octal) +% \NewMathAlphabet {mathbssi} {mtmisb10} {} + +\def\setboxz@h{\setbox\z@\hbox} +\def\wdz@{\wd\z@} +\def\boxz@{\box\z@} +\def\setbox@ne{\setbox\@ne} +\def\wd@ne{\wd\@ne} + +\def\math@atom#1#2{% + \binrel@{#1}\binrel@@{#2}} +\def\binrel@#1{\setboxz@h{\thinmuskip0mu + \medmuskip\m@ne mu\thickmuskip\@ne mu$#1\m@th$}% + \setbox@ne\hbox{\thinmuskip0mu\medmuskip\m@ne mu\thickmuskip + \@ne mu${}#1{}\m@th$}% + \setbox\tw@\hbox{\hskip\wd@ne\hskip-\wdz@}} +\def\binrel@@#1{\ifdim\wd2<\z@\mathbin{#1}\else\ifdim\wd\tw@>\z@ + \mathrel{#1}\else{#1}\fi\fi} + +\def\m@thit{1} + +\def\set@skchar#1{\global\expandafter\skewchar + \csname\fontn@me\endcsname=#1\relax} + +\def\NewMathAlphabet#1#2#3{% + \def\tst{#3}% + \ifx\tst\empty\else % if a \skewchar setting is present + \expandafter\gdef\csname #1@sc\endcsname{}% \def\cmd@sc{..} + \fi + % + \expandafter\def\csname #1\endcsname{% \def\cmd{\protect\@cmd} + \protect\csname @#1\endcsname}% + % + \expandafter\def\csname @#1\endcsname##1{% \def\@cmd{..} + {% + \begingroup + \get@font{#1}{#2}{\s@ze}% + \@ifundefined{#1@sc}{}{\set@skchar{#3}}% + \ass@tfont{m@thit}{\fontn@me}% + \get@font{#1}{#2}{\ss@ze}% + \@ifundefined{#1@sc}{}{\set@skchar{#3}}% + \ass@sfont{m@thit}{\fontn@me}% + \get@font{#1}{#2}{\sss@ze}% + \@ifundefined{#1@sc}{}{\set@skchar{#3}}% + \ass@ssfont{m@thit}{\fontn@me}% + % + \math@atom{##1}{% + \mathchoice% + {\hbox{$\m@th\displaystyle##1$}}% + {\hbox{$\m@th\textstyle##1$}}% + {\hbox{$\m@th\scriptstyle##1$}}% + {\hbox{$\m@th\scriptscriptstyle##1$}}}% + \endgroup + }% + }% +} + + +% macro name base font hyphenchar setting e.g -1 (off) +% \NewTextAlphabet {textbfit} {mtbxti10} {} + +% save a family if \NewTextAlphabet is not used. +\newif\iffirstta \firsttatrue + +\def\set@hchar#1{\global\expandafter\hyphenchar + \csname\fontn@me\endcsname=#1\relax} + +\def\NewTextAlphabet#1#2#3{% + \iffirstta + \global\firsttafalse + \newfam\scratchfam + \edef\scrt@fam{\the\allocationnumber}% + \fi + \def\tst{#3}% + \ifx\tst\empty\else % if a \hyphenchar setting is required + \expandafter\gdef\csname #1@hc\endcsname{}% \def\cmd@sc{..} + \fi + % + \expandafter\def\csname #1\endcsname{% \def\cmd{\protect\t@cmd} + \protect\csname t@#1\endcsname}% + % + \long\expandafter\def\csname t@#1\endcsname##1{% \def\t@cmd{..} + \ifmmode + \typeout{Warning: do not use \expandafter\string\csname #1\endcsname + \space in math mode}\fi% + {% + \get@font{#1}{#2}{\s@ze}\let\t@xtfnt=\fontn@me\relax + \@ifundefined{#1@hc}{}{\set@hchar{#3}}% + \ass@tfont{scrt@fam}{\fontn@me}% + \get@font{#1}{#2}{\ss@ze}% + \@ifundefined{#1@hc}{}{\set@hchar{#3}}% + \ass@sfont{scrt@fam}{\fontn@me}% + \get@font{#1}{#2}{\sss@ze}% + \@ifundefined{#1@hc}{}{\set@hchar{#3}}% + \ass@ssfont{scrt@fam}{\fontn@me}% + \fam\scratchfam\csname\t@xtfnt\endcsname + ##1% + }% + }% + % + \expandafter\def\csname #1shape% \def\cmdshape{\protect\@cmdshape} + \endcsname{\protect\csname @#1shape\endcsname}% + % + \expandafter\def\csname @#1shape\endcsname{% \def\@cmdshape + \ifmmode + \typeout{Warning: do not use \expandafter\string\csname + #1shape\endcsname \space in math mode}\fi + % + \get@font{#1}{#2}{\s@ze}\let\t@xtfnt=\fontn@me\relax + \@ifundefined{#1@hc}{}{\set@hchar{#3}}% + \ass@tfont{scrt@fam}{\fontn@me}% + \get@font{#1}{#2}{\ss@ze}% + \@ifundefined{#1@hc}{}{\set@hchar{#3}}% + \ass@sfont{scrt@fam}{\fontn@me}% + \get@font{#1}{#2}{\sss@ze}% + \@ifundefined{#1@hc}{}{\set@hchar{#3}}% + \ass@ssfont{scrt@fam}{\fontn@me}% + \fam\scratchfam\csname\t@xtfnt\endcsname + }% +} + + +% \bmath{math text} + +\ifprod@font + \def\math@itfnt{mtmib10} + \def\math@syfnt{mtbsy10} +\else + \def\math@itfnt{cmmib10} + \def\math@syfnt{cmbsy10} +\fi + +\def\m@thsy{2} + +\def\bmath{\protect\@bmath} +\def\@bmath#1{% + {% + \begingroup + \get@font{mthit}{\math@itfnt}{\s@ze}\set@skchar{'177}% + \ass@tfont{m@thit}{\fontn@me}% + \get@font{mthit}{\math@itfnt}{\ss@ze}\set@skchar{'177}% + \ass@sfont{m@thit}{\fontn@me}% + \get@font{mthit}{\math@itfnt}{\sss@ze}\set@skchar{'177}% + \ass@ssfont{m@thit}{\fontn@me}% + % + \get@font{mthsy}{\math@syfnt}{\s@ze}\set@skchar{'60}% + \ass@tfont{m@thsy}{\fontn@me}% + \get@font{mthsy}{\math@syfnt}{\ss@ze}\set@skchar{'60}% + \ass@sfont{m@thsy}{\fontn@me}% + \get@font{mthsy}{\math@syfnt}{\sss@ze}\set@skchar{'60}% + \ass@ssfont{m@thsy}{\fontn@me}% + % + \math@atom{#1}{% + \mathchoice% + {\hbox{$\m@th\displaystyle#1$}}% + {\hbox{$\m@th\textstyle#1$}}% + {\hbox{$\m@th\scriptstyle#1$}}% + {\hbox{$\m@th\scriptscriptstyle#1$}}}% + \endgroup + }% +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +% Astronomy and Astrophysics symbol macros + +\def\la{\mathrel{\mathchoice {\vcenter{\offinterlineskip\halign{\hfil +$\displaystyle##$\hfil\cr<\cr\sim\cr}}} +{\vcenter{\offinterlineskip\halign{\hfil$\textstyle##$\hfil\cr +<\cr\sim\cr}}} +{\vcenter{\offinterlineskip\halign{\hfil$\scriptstyle##$\hfil\cr +<\cr\sim\cr}}} +{\vcenter{\offinterlineskip\halign{\hfil$\scriptscriptstyle##$\hfil\cr +<\cr\sim\cr}}}}} + +\def\ga{\mathrel{\mathchoice {\vcenter{\offinterlineskip\halign{\hfil +$\displaystyle##$\hfil\cr>\cr\sim\cr}}} +{\vcenter{\offinterlineskip\halign{\hfil$\textstyle##$\hfil\cr +>\cr\sim\cr}}} +{\vcenter{\offinterlineskip\halign{\hfil$\scriptstyle##$\hfil\cr +>\cr\sim\cr}}} +{\vcenter{\offinterlineskip\halign{\hfil$\scriptscriptstyle##$\hfil\cr +>\cr\sim\cr}}}}} + +\def\getsto{\mathrel{\mathchoice {\vcenter{\offinterlineskip +\halign{\hfil +$\displaystyle##$\hfil\cr\gets\cr\to\cr}}} +{\vcenter{\offinterlineskip\halign{\hfil$\textstyle##$\hfil\cr\gets +\cr\to\cr}}} +{\vcenter{\offinterlineskip\halign{\hfil$\scriptstyle##$\hfil\cr\gets +\cr\to\cr}}} +{\vcenter{\offinterlineskip\halign{\hfil$\scriptscriptstyle##$\hfil\cr +\gets\cr\to\cr}}}}} + +\def\cor{\mathrel{\mathchoice {\hbox{$\widehat=$}}{\hbox{$\widehat=$}} +{\hbox{$\scriptstyle\hat=$}} +{\hbox{$\scriptscriptstyle\hat=$}}}} + +\def\lid{\mathrel{\mathchoice {\vcenter{\offinterlineskip\halign{\hfil +$\displaystyle##$\hfil\cr<\cr\noalign{\vskip1.2pt}=\cr}}} +{\vcenter{\offinterlineskip\halign{\hfil$\textstyle##$\hfil\cr<\cr +\noalign{\vskip1.2pt}=\cr}}} +{\vcenter{\offinterlineskip\halign{\hfil$\scriptstyle##$\hfil\cr<\cr +\noalign{\vskip1pt}=\cr}}} +{\vcenter{\offinterlineskip\halign{\hfil$\scriptscriptstyle##$\hfil\cr +<\cr +\noalign{\vskip0.9pt}=\cr}}}}} + +\def\gid{\mathrel{\mathchoice {\vcenter{\offinterlineskip\halign{\hfil +$\displaystyle##$\hfil\cr>\cr\noalign{\vskip1.2pt}=\cr}}} +{\vcenter{\offinterlineskip\halign{\hfil$\textstyle##$\hfil\cr>\cr +\noalign{\vskip1.2pt}=\cr}}} +{\vcenter{\offinterlineskip\halign{\hfil$\scriptstyle##$\hfil\cr>\cr +\noalign{\vskip1pt}=\cr}}} +{\vcenter{\offinterlineskip\halign{\hfil$\scriptscriptstyle##$\hfil\cr +>\cr +\noalign{\vskip0.9pt}=\cr}}}}} + +\def\sol{\mathrel{\mathchoice {\vcenter{\offinterlineskip\halign{\hfil +$\displaystyle##$\hfil\cr\sim\cr<\cr}}} +{\vcenter{\offinterlineskip\halign{\hfil$\textstyle##$\hfil\cr\sim\cr +<\cr}}} +{\vcenter{\offinterlineskip\halign{\hfil$\scriptstyle##$\hfil\cr\sim\cr +<\cr}}} +{\vcenter{\offinterlineskip\halign{\hfil$\scriptscriptstyle##$\hfil\cr +\sim\cr<\cr}}}}} + +\def\sog{\mathrel{\mathchoice {\vcenter{\offinterlineskip\halign{\hfil +$\displaystyle##$\hfil\cr\sim\cr>\cr}}} +{\vcenter{\offinterlineskip\halign{\hfil$\textstyle##$\hfil\cr\sim\cr +>\cr}}} +{\vcenter{\offinterlineskip\halign{\hfil$\scriptstyle##$\hfil\cr +\sim\cr>\cr}}} +{\vcenter{\offinterlineskip\halign{\hfil$\scriptscriptstyle##$\hfil\cr +\sim\cr>\cr}}}}} + +\def\lse{\mathrel{\mathchoice {\vcenter{\offinterlineskip\halign{\hfil +$\displaystyle##$\hfil\cr<\cr\simeq\cr}}} +{\vcenter{\offinterlineskip\halign{\hfil$\textstyle##$\hfil\cr +<\cr\simeq\cr}}} +{\vcenter{\offinterlineskip\halign{\hfil$\scriptstyle##$\hfil\cr +<\cr\simeq\cr}}} +{\vcenter{\offinterlineskip\halign{\hfil$\scriptscriptstyle##$\hfil\cr +<\cr\simeq\cr}}}}} + +\def\gse{\mathrel{\mathchoice {\vcenter{\offinterlineskip\halign{\hfil +$\displaystyle##$\hfil\cr>\cr\simeq\cr}}} +{\vcenter{\offinterlineskip\halign{\hfil$\textstyle##$\hfil\cr +>\cr\simeq\cr}}} +{\vcenter{\offinterlineskip\halign{\hfil$\scriptstyle##$\hfil\cr +>\cr\simeq\cr}}} +{\vcenter{\offinterlineskip\halign{\hfil$\scriptscriptstyle##$\hfil\cr +>\cr\simeq\cr}}}}} + +\def\grole{\mathrel{\mathchoice {\vcenter{\offinterlineskip\halign{\hfil +$\displaystyle##$\hfil\cr>\cr\noalign{\vskip-1.5pt}<\cr}}} +{\vcenter{\offinterlineskip\halign{\hfil$\textstyle##$\hfil\cr +>\cr\noalign{\vskip-1.5pt}<\cr}}} +{\vcenter{\offinterlineskip\halign{\hfil$\scriptstyle##$\hfil\cr +>\cr\noalign{\vskip-1pt}<\cr}}} +{\vcenter{\offinterlineskip\halign{\hfil$\scriptscriptstyle##$\hfil\cr +>\cr\noalign{\vskip-0.5pt}<\cr}}}}} + +\def\leogr{\mathrel{\mathchoice {\vcenter{\offinterlineskip\halign{\hfil +$\displaystyle##$\hfil\cr<\cr\noalign{\vskip-1.5pt}>\cr}}} +{\vcenter{\offinterlineskip\halign{\hfil$\textstyle##$\hfil\cr +<\cr\noalign{\vskip-1.5pt}>\cr}}} +{\vcenter{\offinterlineskip\halign{\hfil$\scriptstyle##$\hfil\cr +<\cr\noalign{\vskip-1pt}>\cr}}} +{\vcenter{\offinterlineskip\halign{\hfil$\scriptscriptstyle##$\hfil\cr +<\cr\noalign{\vskip-0.5pt}>\cr}}}}} + +\def\loa{\mathrel{\mathchoice {\vcenter{\offinterlineskip\halign{\hfil +$\displaystyle##$\hfil\cr<\cr\approx\cr}}} +{\vcenter{\offinterlineskip\halign{\hfil$\textstyle##$\hfil\cr +<\cr\approx\cr}}} +{\vcenter{\offinterlineskip\halign{\hfil$\scriptstyle##$\hfil\cr +<\cr\approx\cr}}} +{\vcenter{\offinterlineskip\halign{\hfil$\scriptscriptstyle##$\hfil\cr +<\cr\approx\cr}}}}} + +\def\goa{\mathrel{\mathchoice {\vcenter{\offinterlineskip\halign{\hfil +$\displaystyle##$\hfil\cr>\cr\approx\cr}}} +{\vcenter{\offinterlineskip\halign{\hfil$\textstyle##$\hfil\cr +>\cr\approx\cr}}} +{\vcenter{\offinterlineskip\halign{\hfil$\scriptstyle##$\hfil\cr +>\cr\approx\cr}}} +{\vcenter{\offinterlineskip\halign{\hfil$\scriptscriptstyle##$\hfil\cr +>\cr\approx\cr}}}}} + +\def\sun{\hbox{$\odot$}} +\def\degr{\hbox{$^\circ$}} +\def\diameter{{\ifmmode\mathchoice +{\ooalign{\hfil\hbox{$\displaystyle/$}\hfil\crcr +{\hbox{$\displaystyle\mathchar"20D$}}}} +{\ooalign{\hfil\hbox{$\textstyle/$}\hfil\crcr +{\hbox{$\textstyle\mathchar"20D$}}}} +{\ooalign{\hfil\hbox{$\scriptstyle/$}\hfil\crcr +{\hbox{$\scriptstyle\mathchar"20D$}}}} +{\ooalign{\hfil\hbox{$\scriptscriptstyle/$}\hfil\crcr +{\hbox{$\scriptscriptstyle\mathchar"20D$}}}} +\else{\ooalign{\hfil/\hfil\crcr\mathhexbox20D}}% +\fi}} + +\def\sq{\ifmmode\squareforqed\else{\unskip\nobreak\hfil +\penalty50\hskip1em\null\nobreak\hfil\squareforqed +\parfillskip=0pt\finalhyphendemerits=0\endgraf}\fi} +\def\squareforqed{\hbox{\rlap{$\sqcap$}$\sqcup$}} + +\def\fd{\hbox{$.\!\!^{\rm d}$}} +\def\fh{\hbox{$.\!\!^{\rm h}$}} +\def\fm{\hbox{$.\!\!^{\rm m}$}} +\def\fs{\hbox{$.\!\!^{\rm s}$}} +\def\fdg{\hbox{$.\!\!^\circ$}} +\def\farcm{\hbox{$.\mkern-4mu^\prime$}} +\def\farcs{\hbox{$.\!\!^{\prime\prime}$}} +\def\fp{\hbox{$.\!\!^{\scriptscriptstyle\rm p}$}} +\def\arcmin{\hbox{$^\prime$}} +\def\arcsec{\hbox{$^{\prime\prime}$}} + +% Simulated Blackboard Bold symbols + +\def\bbbr{{\rm I\!R}} +\def\bbbm{{\rm I\!M}} +\def\bbbn{{\rm I\!N}} +\def\bbbf{{\rm I\!F}} +\def\bbbh{{\rm I\!H}} +\def\bbbk{{\rm I\!K}} +\def\bbbp{{\rm I\!P}} +\def\bbbone{{\mathchoice {\rm 1\mskip-4mu l} {\rm 1\mskip-4mu l} +{\rm 1\mskip-4.5mu l} {\rm 1\mskip-5mu l}}} +\def\bbbc{{\mathchoice {\setbox0=\hbox{$\displaystyle\rm C$}\hbox{\hbox +to0pt{\kern0.4\wd0\vrule height0.9\ht0\hss}\box0}} +{\setbox0=\hbox{$\textstyle\rm C$}\hbox{\hbox +to0pt{\kern0.4\wd0\vrule height0.9\ht0\hss}\box0}} +{\setbox0=\hbox{$\scriptstyle\rm C$}\hbox{\hbox +to0pt{\kern0.4\wd0\vrule height0.9\ht0\hss}\box0}} +{\setbox0=\hbox{$\scriptscriptstyle\rm C$}\hbox{\hbox +to0pt{\kern0.4\wd0\vrule height0.9\ht0\hss}\box0}}}} +\def\bbbq{{\mathchoice {\setbox0=\hbox{$\displaystyle\rm +Q$}\hbox{\raise +0.15\ht0\hbox to0pt{\kern0.4\wd0\vrule height0.8\ht0\hss}\box0}} +{\setbox0=\hbox{$\textstyle\rm Q$}\hbox{\raise +0.15\ht0\hbox to0pt{\kern0.4\wd0\vrule height0.8\ht0\hss}\box0}} +{\setbox0=\hbox{$\scriptstyle\rm Q$}\hbox{\raise +0.15\ht0\hbox to0pt{\kern0.4\wd0\vrule height0.7\ht0\hss}\box0}} +{\setbox0=\hbox{$\scriptscriptstyle\rm Q$}\hbox{\raise +0.15\ht0\hbox to0pt{\kern0.4\wd0\vrule height0.7\ht0\hss}\box0}}}} +\def\bbbt{{\mathchoice {\setbox0=\hbox{$\displaystyle\rm +T$}\hbox{\hbox to0pt{\kern0.3\wd0\vrule height0.9\ht0\hss}\box0}} +{\setbox0=\hbox{$\textstyle\rm T$}\hbox{\hbox +to0pt{\kern0.3\wd0\vrule height0.9\ht0\hss}\box0}} +{\setbox0=\hbox{$\scriptstyle\rm T$}\hbox{\hbox +to0pt{\kern0.3\wd0\vrule height0.9\ht0\hss}\box0}} +{\setbox0=\hbox{$\scriptscriptstyle\rm T$}\hbox{\hbox +to0pt{\kern0.3\wd0\vrule height0.9\ht0\hss}\box0}}}} +\def\bbbs{{\mathchoice +{\setbox0=\hbox{$\displaystyle \rm S$}\hbox{\raise0.5\ht0\hbox +to0pt{\kern0.35\wd0\vrule height0.45\ht0\hss}\hbox +to0pt{\kern0.55\wd0\vrule height0.5\ht0\hss}\box0}} +{\setbox0=\hbox{$\textstyle \rm S$}\hbox{\raise0.5\ht0\hbox +to0pt{\kern0.35\wd0\vrule height0.45\ht0\hss}\hbox +to0pt{\kern0.55\wd0\vrule height0.5\ht0\hss}\box0}} +{\setbox0=\hbox{$\scriptstyle \rm S$}\hbox{\raise0.5\ht0\hbox +to0pt{\kern0.35\wd0\vrule height0.45\ht0\hss}\raise0.05\ht0\hbox +to0pt{\kern0.5\wd0\vrule height0.45\ht0\hss}\box0}} +{\setbox0=\hbox{$\scriptscriptstyle\rm S$}\hbox{\raise0.5\ht0\hbox +to0pt{\kern0.4\wd0\vrule height0.45\ht0\hss}\raise0.05\ht0\hbox +to0pt{\kern0.55\wd0\vrule height0.45\ht0\hss}\box0}}}} +\def\bbbz{{\mathchoice {\hbox{$\sf\textstyle Z\kern-0.4em Z$}} +{\hbox{$\sf\textstyle Z\kern-0.4em Z$}} +{\hbox{$\sf\scriptstyle Z\kern-0.3em Z$}} +{\hbox{$\sf\scriptscriptstyle Z\kern-0.2em Z$}}}} + + +% NUMBER THE DESIGN ELEMENTS + +\def\Nulle{0} % null element +\def\Afe{1} % author affiliation +\def\Hae{2} % heading A +\def\Hbe{3} % heading B +\def\Hce{4} % heading C +\def\Hde{5} % heading D + + +% TEMPORARY REGISTERS + +\newcount\LastMac \LastMac=\Nulle + +\newskip\half \half=5.5pt plus 1.5pt minus 2.25pt +\newskip\one \one=11pt plus 3pt minus 5.5pt +\newskip\onehalf \onehalf=16.5pt plus 5.5pt minus 8.25pt +\newskip\two \two=22pt plus 5.5pt minus 11pt + +\def\Half{\addvspace{\half}} +\def\One{\addvspace{\one}} +\def\OneHalf{\addvspace{\onehalf}} +\def\Two{\addvspace{\two}} + +\def\Referee{% produce version for refereeing + \def\baselinestretch{2}% + \ninepoint +} + +\def\Raggedright{% set lines unjustified + \rightskip=\z@ plus \hsize\relax +} + +\def\Fullout{% set lines justified + \rightskip=\z@\relax +} + +\def\Hang#1#2{% set hanging indentation + \hangindent=#1% + \hangafter=#2\relax +} + +\def\makeatletter{\catcode `\@=11\relax} +\def\makeatother{\catcode `\@=12\relax} + + +% Pagestyles + +\newif\ifsp@page +\def\pagestyle#1{\csname ps@#1\endcsname} +\def\thispagestyle#1{\global\sp@pagetrue\gdef\sp@type{#1}} + +\def\ps@titlepage{% + \def\@oddhead{\eightpoint\noindent \the\CatchLine + \ifprod@font\else\qquad Printed\ \today\qquad + (MN plain \TeX\ macros\ v\@version)\fi \hfil}% + \let\@evenhead=\@oddhead +} + +\def\ps@headings{% + \def\@oddhead{\elevenpoint\it\noindent + \hfill\the\RightHeader\hskip1.5em\rm\folio}% + \def\@evenhead{\elevenpoint\noindent + \folio\hskip1.5em\it\the\LeftHeader\hfill}% +} + +\def\ps@plate{% + \def\@oddhead{\eightpoint\noindent\plt@cap\hfil}% + \def\@evenhead{\eightpoint\noindent\plt@cap\hfil}% +} + + +% DESIGN ELEMENT DEFINITIONS + +% Article opening + +\def\title#1{% article title + \bgroup + \vbox to 8pt{\vss}% + \seventeenpoint + \Raggedright + \noindent \strut{\bf #1}\par + \egroup +} + +\def\author#1{% article author(s) + \bgroup + \ifnum\LastMac=\Afe \OneHalf\else \vskip 21pt\fi + \fourteenpoint + \Raggedright + \noindent \strut #1\par + \vskip 3pt% + \egroup +} + +\def\affiliation#1{% author(s) affiliation + \bgroup + \vskip -4pt% + \eightpoint + \Raggedright + \noindent \strut {\it #1}\par + \egroup + \LastMac=\Afe\relax +} + +\def\acceptedline#1{% acceptance date + \bgroup + \Two + \eightpoint + \Raggedright + \noindent \strut #1\par + \egroup +} + +\long\def\abstract#1{% + \bgroup + \vskip 20pt% + \everypar{\Hang{11pc}{0}}% + \noindent{\ninebf ABSTRACT}\par + \tenpoint + \Fullout + \noindent #1\par + \egroup +} + +\long\def\keywords#1{% keywords + \bgroup + \Half + \everypar{\Hang{11pc}{0}}% + \tenpoint + \Fullout + \noindent\hbox{\bf Key words:}\ #1\par + \egroup +} + + +% The \maketitle macro ensures that the two spanning material appears +% at the top of the first page, and that it has two lines of space +% underneath it. If you forget this in you input, no output will be produced. +% The \BeginOpening (alias \begintopmatter) macro should be called at the +% very start of the input file, so that it is in force when the document +% starts. This ensures that when \maketitle is called that the group is +% closed, and the material gets printed. + +\def\maketitle{% + \EndOpening + \ifsinglecol \else \MakePage\fi +} + + +% Page offset + +\def\pageoffset#1#2{\hoffset=#1\relax\voffset=#2\relax} + + +% Counter setup + +\def\@nameuse#1{\csname #1\endcsname} +\def\arabic#1{\@arabic{\@nameuse{#1}}} +\def\alph#1{\@alph{\@nameuse{#1}}} +\def\Alph#1{\@Alph{\@nameuse{#1}}} +\def\@arabic#1{\number #1} +\def\@Alph#1{\ifcase#1\or A\or B\or C\or D\else\@Ialph{#1}\fi} +\def\@Ialph#1{\ifcase#1\or \or \or \or \or E\or F\or G\or H\or I\or J\or + K\or L\or M\or N\or O\or P\or Q\or R\or S\or T\or U\or V\or W\or X\or + Y\or Z\else\errmessage{Counter out of range}\fi} +\def\@alph#1{\ifcase#1\or a\or b\or c\or d\else\@ialph{#1}\fi} +\def\@ialph#1{\ifcase#1\or \or \or \or \or e\or f\or g\or h\or i\or j\or + k\or l\or m\or n\or o\or p\or q\or r\or s\or t\or u\or v\or w\or x\or y\or + z\else\errmessage{Counter out of range}\fi} + + +% Equation auto-numbering + +\newcount\Eqnno +\newcount\SubEqnno + +\def\theeq{\arabic{Eqnno}} +\def\thesubeq{\alph{SubEqnno}} + +\def\stepeq{\relax + \global\SubEqnno \z@ + \global\advance\Eqnno \@ne\relax + {\rm (\theeq)}% +} + +\def\startsubeq{\relax + \global\SubEqnno \z@ + \global\advance\Eqnno \@ne\relax + \stepsubeq +} + +\def\stepsubeq{\relax + \global\advance\SubEqnno \@ne\relax + {\rm (\theeq\thesubeq)}% +} + + +% Headings + +\newcount\Sec % heading auto number counters +\newcount\SecSec +\newcount\SecSecSec + +\def\thesection{\arabic{Sec}} +\def\thesubsection{\thesection.\arabic{SecSec}} +\def\thesubsubsection{\thesubsection.\arabic{SecSecSec}} + + +\Sec=\z@ + +\def\:{\let\@sptoken= } \: % this makes \@sptoken a space token +\def\:{\@xifnch} \expandafter\def\: {\futurelet\@tempc\@ifnch} + +\def\@ifnextchar#1#2#3{% + \let\@tempMACe #1% + \def\@tempMACa{#2}% + \def\@tempMACb{#3}% + \futurelet \@tempMACc\@ifnch% +} + +\def\@ifnch{% +\ifx \@tempMACc \@sptoken% + \let\@tempMACd\@xifnch% +\else% + \ifx \@tempMACc \@tempMACe% + \let\@tempMACd\@tempMACa% + \else% + \let\@tempMACd\@tempMACb% + \fi% +\fi% +\@tempMACd% +} + +\def\@ifstar#1#2{\@ifnextchar *{\def\@tempMACa*{#1}\@tempMACa}{#2}} + +\newskip\@tempskipb + +\def\addvspace#1{% + \ifvmode\else \endgraf\fi% + \ifdim\lastskip=\z@% + \vskip #1\relax% + \else% + \@tempskipb#1\relax\@xaddvskip% + \fi% +} + +\def\@xaddvskip{% + \ifdim\lastskip<\@tempskipb% + \vskip-\lastskip% + \vskip\@tempskipb\relax% + \else% + \ifdim\@tempskipb<\z@% + \ifdim\lastskip<\z@ \else% + \advance\@tempskipb\lastskip% + \vskip-\lastskip\vskip\@tempskipb% + \fi% + \fi% + \fi% +} + +\newskip\@tmpSKIP + +\def\addpen#1{% + \ifvmode + \if@nobreak + \else + \ifdim\lastskip=\z@ + \penalty#1\relax + \else + \@tmpSKIP=\lastskip + \vskip -\lastskip + \penalty#1\vskip\@tmpSKIP + \fi + \fi + \fi +} + +\newcount\@clubpen \@clubpen=\clubpenalty +\newif\if@nobreak \@nobreakfalse + +\def\@noafterindent{% + \global\@nobreaktrue + \everypar{\if@nobreak + \global\@nobreakfalse + \clubpenalty \@M + {\setbox\z@\lastbox}% + \LastMac=\Nulle\relax% + \else + \clubpenalty \@clubpen + \everypar{}% + \fi}% +} + +\newcount\gds@cbrk \gds@cbrk=-300 + +\def\@nohdbrk{\interlinepenalty \@M\relax} + +\let\@par=\par +\def\@restorepar{\def\par{\@par}} + +\newif\if@endpe \@endpefalse + +\def\@doendpe{\@endpetrue \@nobreakfalse \LastMac=\Nulle\relax% + \def\par{\@restorepar\everypar{}\par\@endpefalse}% + \everypar{\setbox\z@\lastbox\everypar{}\@endpefalse}% +} + +\def\section{\@ifstar{\@ssection}{\@section}} + +\def\@section#1{% heading A (\section{....}) + \if@nobreak + \everypar{}% + \ifnum\LastMac=\Hae \addvspace{\half}\fi + \else + \addpen{\gds@cbrk}% + \addvspace{\two}% + \fi + \bgroup + \ninepoint\bf + \Raggedright + \global\advance\Sec \@ne + \ifappendix + \global\Eqnno=\z@ \global\SubEqnno=\z@\relax + \def\ch@ck{#1}% + \ifx\ch@ck\empty \def\c@lon{}\else\def\c@lon{:}\fi + \noindent\@nohdbrk APPENDIX\ \thesection\c@lon\hskip 0.5em% + \uppercase{#1}\par + \else + \noindent\@nohdbrk\thesection\hskip 1pc \uppercase{#1}\par + \fi + \global\SecSec=\z@ + \egroup + \nobreak + \vskip\half + \nobreak + \@noafterindent + \LastMac=\Hae\relax +} + +\def\@ssection#1{% main section heading (\section*{....}) + \if@nobreak + \everypar{}% + \ifnum\LastMac=\Hae \addvspace{\half}\fi + \else + \addpen{\gds@cbrk}% + \addvspace{\two}% + \fi + \bgroup + \ninepoint\bf + \Raggedright +% \ifappendix +% \global\Eqnno=\z@ \global\SubEqnno=\z@\relax % mh in apps dont reset +% \noindent\@nohdbrk APPENDIX:\hskip 0.5em% +% \uppercase{#1}\par +% \else + \noindent\@nohdbrk\uppercase{#1}\par +% \fi + \egroup + \nobreak + \vskip\half + \nobreak + \@noafterindent + \LastMac=\Hae\relax +} + +\def\subsection{\@ifstar{\@ssubsection}{\@subsection}} + +\def\@subsection#1{% heading B + \if@nobreak + \everypar{}% + \ifnum\LastMac=\Hae \addvspace{1pt plus 1pt minus .5pt}\fi + \else + \addpen{\gds@cbrk}% + \addvspace{\onehalf}% + \fi + \bgroup + \ninepoint\bf + \Raggedright + \global\advance\SecSec \@ne + \noindent\@nohdbrk\thesubsection \hskip 1pc\relax #1\par + \global\SecSecSec=\z@ + \egroup + \nobreak + \vskip\half + \nobreak + \@noafterindent + \LastMac=\Hbe\relax +} + +\def\@ssubsection#1{% heading B* + \if@nobreak + \everypar{}% + \ifnum\LastMac=\Hae \addvspace{1pt plus 1pt minus .5pt}\fi + \else + \addpen{\gds@cbrk}% + \addvspace{\onehalf}% + \fi + \bgroup + \ninepoint\bf + \Raggedright + \noindent\@nohdbrk #1\par + \egroup + \nobreak + \vskip\half + \nobreak + \@noafterindent + \LastMac=\Hbe\relax +} + +\def\subsubsection{\@ifstar{\@ssubsubsection}{\@subsubsection}} + +\def\@subsubsection#1{% heading C + \if@nobreak + \everypar{}% + \ifnum\LastMac=\Hbe \addvspace{1pt plus 1pt minus .5pt}\fi + \else + \addpen{\gds@cbrk}% + \addvspace{\onehalf}% + \fi + \bgroup + \ninepoint\it + \Raggedright + \global\advance\SecSecSec \@ne + \noindent\@nohdbrk\thesubsubsection \hskip 1pc\relax #1\par + \egroup + \nobreak + \vskip\half + \nobreak + \@noafterindent + \LastMac=\Hce\relax +} + +\def\@ssubsubsection#1{% heading C* + \if@nobreak + \everypar{}% + \ifnum\LastMac=\Hbe \addvspace{1pt plus 1pt minus .5pt}\fi + \else + \addpen{\gds@cbrk}% + \addvspace{\onehalf}% + \fi + \bgroup + \ninepoint\it + \Raggedright + \noindent\@nohdbrk #1\par + \egroup + \nobreak + \vskip\half + \nobreak + \@noafterindent + \LastMac=\Hce\relax +} + +\def\paragraph#1{% heading D + \if@nobreak + \everypar{}% + \else + \addpen{\gds@cbrk}% + \addvspace{\one}% + \fi% + \bgroup% + \ninepoint\it + \noindent #1\ \nobreak% + \egroup + \LastMac=\Hde\relax + \ignorespaces +} + + +% Appendix + +\newif\ifappendix + +\def\appendix{% + \global\appendixtrue + \def\thesection{\Alph{Sec}}% + \def\thesubsection{\thesection\arabic{SecSec}}% + \def\theeq{\thesection\arabic{Eqnno}}% + \Sec=\z@ \SecSec=\z@ \SecSecSec=\z@ \Eqnno=\z@ \SubEqnno=\z@\relax +} + + +% Text + +\let\tx=\relax % provided for backward compatibility + + +% Lists + +\def\beginlist{% + \par\if@nobreak \else\addvspace{\half}\fi% + \bgroup% + \ninepoint + \let\item=\list@item% +} + +\def\list@item{% + \par\noindent\hskip 1em\relax% + \ignorespaces% +} + +\def\endlist{\par\egroup\addvspace{\half}\@doendpe} + + +% References + +\def\beginrefs{% + \par + \bgroup + \eightpoint + \Fullout + \let\bibitem=\bib@item +} + +\def\bib@item{% + \par\parindent=1.5em\Hang{1.5em}{1}% + \everypar={\Hang{1.5em}{1}\ignorespaces}% + \noindent\ignorespaces +} + +\def\endrefs{\par\egroup\@doendpe} + + +% Page heads + +\newtoks\CatchLine + +\def\@journal{Mon.\ Not.\ R.\ Astron.\ Soc.\ } % The journal title string +\def\@pubyear{1994} % Assign a default publication year +\def\@pagerange{000--000} % Assign a default page-range +\def\@volume{000} % Assign a default volume number +\def\@microfiche{} % + +\def\pubyear#1{\gdef\@pubyear{#1}\@makecatchline} +\def\pagerange#1{\gdef\@pagerange{#1}\@makecatchline} +\def\volume#1{\gdef\@volume{#1}\@makecatchline} +\def\microfiche#1{\gdef\@microfiche{and Microfiche\ #1}\@makecatchline} + +\def\@makecatchline{% + \global\CatchLine{% + {\rm \@journal {\bf \@volume},\ \@pagerange\ (\@pubyear)\ \@microfiche}}% +} + +\@makecatchline % Assign a catchline, using the above defaults + +\newtoks\LeftHeader +\def\shortauthor#1{% left page head + \global\LeftHeader{#1}% +} + +\newtoks\RightHeader +\def\shorttitle#1{% right page head + \global\RightHeader{#1}% +} + +\def\PageHead{% recto/verso running heads + \begingroup + \ifsp@page + \csname ps@\sp@type\endcsname + \global\sp@pagefalse + \fi + \ifodd\pageno + \let\the@head=\@oddhead + \else + \let\the@head=\@evenhead + \fi + \vbox to \z@{\vskip-22.5\p@% + \hbox to \PageWidth{\vbox to8.5\p@{}% + \the@head + }% + \vss}% + \endgroup + \nointerlineskip +} + +\def\today{% + \number\day\space + \ifcase\month\or January\or February\or March\or April\or May\or June\or + July\or August\or September\or October\or November\or December\fi + \space\number\year% +} + +\def\PageFoot{} % No page footer as default + +\def\authorcomment#1{% + \gdef\PageFoot{% + \nointerlineskip% + \vbox to 22pt{\vfil% + \hbox to \PageWidth{\elevenpoint\noindent \hfil #1 \hfil}}% + }% +} + + +% Plate pages + +\newif\ifplate@page +\newbox\plt@box + +\def\beginplatepage{% + \let\plate=\plate@head + \let\caption=\fig@caption + \global\setbox\plt@box=\vbox\bgroup + \TEMPDIMEN=\PageWidth % For \fig@caption test + \hsize=\PageWidth\relax +} + +\def\endplatepage{\par\egroup\global\plate@pagetrue} +\def\plate@head#1{\gdef\plt@cap{#1}} + +% Letters option + +\def\letters{% + \gdef\folio{\ifnum\pageno<\z@ L\romannumeral-\pageno + \else L\number\pageno \fi}% +} + + +% Math setup + +% The standard math indentation +\newdimen\mathindent + +\global\mathindent=\z@ +\global\everydisplay{\global\@dspwd=\displaywidth\displaysetup} + +% New versions of \displaylines, \eqalign, \eqalignno for +% when non-centered math is in use. + +\def\@displaylines#1{% (for non-centered math) + {}$\displ@y\hbox{\vbox{\halign{$\@lign\hfil\displaystyle##\hfil$\crcr + #1\crcr}}}${}% +} + +\def\@eqalign#1{\null\vcenter{\openup\jot\m@th% (for non-centered math) + \ialign{\strut\hfil$\displaystyle{##}$&$\displaystyle{{}##}$\hfil + \crcr#1\crcr}}% +} + +\def\@eqalignno#1{% (for non-centered math) + \global\advance\@dspwd by -\mathindent% + {}$\displ@y\hbox{\vbox{\halign to\@dspwd% + {\hfil$\@lign\displaystyle{##}$\tabskip\z@skip + &$\@lign\displaystyle{{}##}$\hfil\tabskip\centering + &\llap{$\@lign##$}\tabskip\z@skip\crcr + #1\crcr}}}${}% +} + +% When equations are flushleft ensure, that \displaylines, +% \eqalign, \eqalignno and \leqalignno point to the new versions of +% the macros. Also make \leqalignno act like \eqalignno, otherwise the +% equation text would `crash' into the equation number. + +\global\let\displaylines=\@displaylines +\global\let\eqalign=\@eqalign +\global\let\eqalignno=\@eqalignno +\global\let\leqalignno=\@eqalignno + +\newdimen\@dspwd \@dspwd=\z@ +\newif\if@eqno +\newif\if@leqno +\newtoks\@eqn +\newtoks\@eq + +\def\displaysetup#1$${\displaytest#1\eqno\eqno\displaytest} + +\def\displaytest#1\eqno#2\eqno#3\displaytest{% + \if!#3!\ldisplaytest#1\leqno\leqno\ldisplaytest + \else\@eqnotrue\@leqnofalse\@eqn={#2}\@eq={#1}\fi + \generaldisplay$$} + +\def\ldisplaytest#1\leqno#2\leqno#3\ldisplaytest{% +\@eq={#1}% + \if!#3!\@eqnofalse\else\@eqnotrue\@leqnotrue + \@eqn={#2}\fi} + +\def\generaldisplay{% + \if@eqno + \if@leqno + \hbox to \displaywidth{\noindent + \rlap{$\displaystyle\the\@eqn$}% + \hskip\mathindent$\displaystyle\the\@eq$\hfil}% + \else + \hbox to \displaywidth{\noindent + \hskip\mathindent + $\displaystyle\the\@eq$\hfil$\displaystyle\the\@eqn$}% + \fi + \else + \hbox to \displaywidth{\noindent + \hskip\mathindent$\displaystyle\the\@eq$\hfil}% + \fi +} + + +% Finishing notice + +\def\@notice{% + \par\Two% + \noindent{\b@ls{11pt}\ninerm This paper has been produced using the + Royal Astronomical Society/Blackwell Science \TeX\ macros.\par}% +} + +% redefine \bye to output our identification notice : +\outer\def\bye{\@notice\par\vfill\supereject\end} + + +% define a sign on : + +\def\start@mess{% + Monthly notices of the RAS journal style (\@typeface)\space + v\@version,\space \@verdate.% +} + +\everyjob{\Warn{\start@mess}} + + +% Two-column macros + +%--------------------------------------------------------% +% INITIALISATION % +%--------------------------------------------------------% + +\newif\if@debug \@debugfalse % when false, only warnings displayed + +\def\Print#1{\if@debug\immediate\write16{#1}\else \fi} +\def\Warn#1{\immediate\write16{#1}} +\def\wlog#1{} + +\newcount\Iteration % temporary loop counter + +\def\Single{0} \def\Double{1} % ItemSPAN's +\def\Figure{0} \def\Table{1} % ItemTYPE's + +\def\InStack{0} % ItemSTATUS +\def\InZoneA{1} +\def\InZoneB{2} +\def\InZoneC{3} + +\newcount\TEMPCOUNT % temporary count register +\newdimen\TEMPDIMEN % temporary dimen register +\newbox\TEMPBOX % temporary box register +\newbox\VOIDBOX % a box which is permenately void + +\newcount\LengthOfStack % number of items currently in stack +\newcount\MaxItems % maximum number of items allowed in stack +\newcount\StackPointer +\newcount\Point % used in calculation for generating the + % physical address of an item in the stack. +\newcount\NextFigure % number of next figure to be output +\newcount\NextTable % number of next table to be output +\newcount\NextItem % Next item to consider by order in stack + +\newcount\StatusStack % set to point to top of STATUS stack +\newcount\NumStack % set to point to top of NUMBER stack +\newcount\TypeStack % set to point to top of TYPE stack +\newcount\SpanStack % set to point to top of SPAN stack +\newcount\BoxStack % set to point to top of BOX stack + +\newcount\ItemSTATUS % status of present item +\newcount\ItemNUMBER % number of present item +\newcount\ItemTYPE % type of present item +\newcount\ItemSPAN % span of present item +\newbox\ItemBOX % box of present item +\newdimen\ItemSIZE % size of present item + % (calculated by GetItemBOX) + +\newdimen\PageHeight % vertical measure of full page +\newdimen\TextLeading % distance between baselines of body text +\newdimen\Feathering % amount of interline stretch +\newcount\LinesPerPage % height of page in text lines +\newdimen\ColumnWidth % width of 1 column of text +\newdimen\ColumnGap % size of gap between columns +\newdimen\PageWidth % = \ColumnWidth * 2 + \ColumnGap +\newdimen\BodgeHeight % Bodge to align figures and tables with text +\newcount\Leading % Set to same as \TextLeading above + +\newdimen\ZoneBSize % size of items in ZoneB +\newdimen\TextSize % size of text in ZoneB +\newbox\ZoneABOX % contains Zone A material +\newbox\ZoneBBOX % contains Zone B material +\newbox\ZoneCBOX % contains Zone C material + +\newif\ifFirstSingleItem +\newif\ifFirstZoneA +\newif\ifMakePageInComplete +\newif\ifMoreFigures \MoreFiguresfalse % set true in join stack +\newif\ifMoreTables \MoreTablesfalse % set true in join stack + +\newif\ifFigInZoneB % used to determine in which zone an item +\newif\ifFigInZoneC % will be placed based on what is in other +\newif\ifTabInZoneB % zones already for a given page. +\newif\ifTabInZoneC + +\newif\ifZoneAFullPage + +\newbox\MidBOX % = LeftBOX+gap+RightBOX +\newbox\LeftBOX +\newbox\RightBOX +\newbox\PageBOX % complete made-up page + +\newif\ifLeftCOL % flags first pass through output routine +\LeftCOLtrue + +\newdimen\ZoneBAdjust + +\newcount\ItemFits +\def\Yes{1} +\def\No{2} + +\def\LineAdjust#1{\global\ZoneBAdjust=#1\TextLeading\relax} + + +% Setup file. + +\MaxItems=15 +\NextFigure=\z@ % used for article opening +\NextTable=\@ne + +\BodgeHeight=6pt +\TextLeading=11pt % baselineskip of body text +\Leading=11 +\Feathering=\z@ % amount of interline stretch +\LinesPerPage=61 % number of text lines per full page -1 +\topskip=\TextLeading +\ColumnWidth=20pc % width of text columns +\ColumnGap=2pc % gap between columns + +\newskip\ItemSepamount % space between floats +\ItemSepamount=\TextLeading plus \TextLeading minus 4pt + +\parskip=\z@ plus .1pt +\parindent=18pt +\widowpenalty=\z@ +\clubpenalty=10000 +\tolerance=1500 +\hbadness=1500 +\abovedisplayskip=6pt plus 2pt minus 1pt +\belowdisplayskip=6pt plus 2pt minus 1pt +\abovedisplayshortskip=6pt plus 2pt minus 1pt +\belowdisplayshortskip=6pt plus 2pt minus 1pt + +\frenchspacing + +\ninepoint % start main text size + +\PageHeight=682pt +\PageWidth=2\ColumnWidth +\advance\PageWidth by \ColumnGap + +\pagestyle{headings} + + +%--------------------------------------------------------% +% STACKS % +%--------------------------------------------------------% + +% THE ITEM STACK +% The item stack contains contains figures and tables +% in the order in which they appear in the article source +% code. + +% allocate stack space + +\newcount\DUMMY \StatusStack=\allocationnumber +\newcount\DUMMY \newcount\DUMMY \newcount\DUMMY +\newcount\DUMMY \newcount\DUMMY \newcount\DUMMY +\newcount\DUMMY \newcount\DUMMY \newcount\DUMMY +\newcount\DUMMY \newcount\DUMMY \newcount\DUMMY +\newcount\DUMMY \newcount\DUMMY \newcount\DUMMY + +\newcount\DUMMY \NumStack=\allocationnumber +\newcount\DUMMY \newcount\DUMMY \newcount\DUMMY +\newcount\DUMMY \newcount\DUMMY \newcount\DUMMY +\newcount\DUMMY \newcount\DUMMY \newcount\DUMMY +\newcount\DUMMY \newcount\DUMMY \newcount\DUMMY +\newcount\DUMMY \newcount\DUMMY \newcount\DUMMY + +\newcount\DUMMY \TypeStack=\allocationnumber +\newcount\DUMMY \newcount\DUMMY \newcount\DUMMY +\newcount\DUMMY \newcount\DUMMY \newcount\DUMMY +\newcount\DUMMY \newcount\DUMMY \newcount\DUMMY +\newcount\DUMMY \newcount\DUMMY \newcount\DUMMY +\newcount\DUMMY \newcount\DUMMY \newcount\DUMMY + +\newcount\DUMMY \SpanStack=\allocationnumber +\newcount\DUMMY \newcount\DUMMY \newcount\DUMMY +\newcount\DUMMY \newcount\DUMMY \newcount\DUMMY +\newcount\DUMMY \newcount\DUMMY \newcount\DUMMY +\newcount\DUMMY \newcount\DUMMY \newcount\DUMMY +\newcount\DUMMY \newcount\DUMMY \newcount\DUMMY + +\newbox\DUMMY \BoxStack=\allocationnumber +\newbox\DUMMY \newbox\DUMMY \newbox\DUMMY +\newbox\DUMMY \newbox\DUMMY \newbox\DUMMY +\newbox\DUMMY \newbox\DUMMY \newbox\DUMMY +\newbox\DUMMY \newbox\DUMMY \newbox\DUMMY +\newbox\DUMMY \newbox\DUMMY \newbox\DUMMY + +\def\wlog{\immediate\write\m@ne} + +% \GetItemSTATUS, \GetItemNUMBER, \GetItemTYPE, \GetItemSPAN, +% \GetItemBox +% are used to get details of a particular item from the item +% stack. The argument to each of these is the items position +% in the stack (usually \StackPointer)...not the items number. + +\def\GetItemAll#1{% + \GetItemSTATUS{#1} + \GetItemNUMBER{#1} + \GetItemTYPE{#1} + \GetItemSPAN{#1} + \GetItemBOX{#1} +} + +% Note: \LeaveStack uses this routine. Do not destroy \Point +\def\GetItemSTATUS#1{% + \Point=\StatusStack + \advance\Point by #1 + \global\ItemSTATUS=\count\Point +} + +% Note: \LeaveStack uses this routine. Do not destroy \Point +\def\GetItemNUMBER#1{% + \Point=\NumStack + \advance\Point by #1 + \global\ItemNUMBER=\count\Point +} + +% Note: \LeaveStack uses this routine. Do not destroy \Point +\def\GetItemTYPE#1{% + \Point=\TypeStack + \advance\Point by #1 + \global\ItemTYPE=\count\Point +} + +% Note: \LeaveStack uses this routine. Do not destroy \Point +\def\GetItemSPAN#1{% + \Point\SpanStack + \advance\Point by #1 + \global\ItemSPAN=\count\Point +} + +% Note: \LeaveStack uses this routine. Do not destroy \Point +\def\GetItemBOX#1{% + \Point=\BoxStack + \advance\Point by #1 + \global\setbox\ItemBOX=\vbox{\copy\Point} + \global\ItemSIZE=\ht\ItemBOX + \global\advance\ItemSIZE by \dp\ItemBOX + \TEMPCOUNT=\ItemSIZE + \divide\TEMPCOUNT by \Leading + \divide\TEMPCOUNT by 65536 + \advance\TEMPCOUNT \@ne + \ItemSIZE=\TEMPCOUNT pt + \global\multiply\ItemSIZE by \Leading +} + +% item joins stack + +\def\JoinStack{% + \ifnum\LengthOfStack=\MaxItems % stack is full of items + \Warn{WARNING: Stack is full...some items will be lost!} + \else + \Point=\StatusStack + \advance\Point by \LengthOfStack + \global\count\Point=\ItemSTATUS + \Point=\NumStack + \advance\Point by \LengthOfStack + \global\count\Point=\ItemNUMBER + \Point=\TypeStack + \advance\Point by \LengthOfStack + \global\count\Point=\ItemTYPE + \Point\SpanStack + \advance\Point by \LengthOfStack + \global\count\Point=\ItemSPAN + \Point=\BoxStack + \advance\Point by \LengthOfStack + \global\setbox\Point=\vbox{\copy\ItemBOX} + \global\advance\LengthOfStack \@ne + \ifnum\ItemTYPE=\Figure % used in \MakePage + \global\MoreFigurestrue + \else + \global\MoreTablestrue + \fi + \fi +} + +% item leaves stack +% #1=physical position of the item to be removed + +\def\LeaveStack#1{% + {\Iteration=#1 + \loop + \ifnum\Iteration<\LengthOfStack + \advance\Iteration \@ne + \GetItemSTATUS{\Iteration} + \advance\Point by \m@ne + \global\count\Point=\ItemSTATUS + \GetItemNUMBER{\Iteration} + \advance\Point by \m@ne + \global\count\Point=\ItemNUMBER + \GetItemTYPE{\Iteration} + \advance\Point by \m@ne + \global\count\Point=\ItemTYPE + \GetItemSPAN{\Iteration} + \advance\Point by \m@ne + \global\count\Point=\ItemSPAN + \GetItemBOX{\Iteration} + \advance\Point by \m@ne + \global\setbox\Point=\vbox{\copy\ItemBOX} + \repeat} + \global\advance\LengthOfStack by \m@ne +} + +% clean stack +% This routine scans through the stack and removes anything +% that does not have STATUS=\InStack. + +\newif\ifStackNotClean + +\def\CleanStack{% + \StackNotCleantrue + {\Iteration=\z@ + \loop + \ifStackNotClean + \GetItemSTATUS{\Iteration} + \ifnum\ItemSTATUS=\InStack + \advance\Iteration \@ne + \else + \LeaveStack{\Iteration} + \fi + \ifnum\LengthOfStack<\Iteration + \StackNotCleanfalse + \fi + \repeat} +} + +% Find item. +% This macro searches from the top to the bottom of the +% stack for an item of a specified type and number. +% #1=type, #2=number +% If the specified item is found, then \StackPointer is set +% to point to it, else \StackPointer=-1. +% This routine is used to find the next figure or table +% by number. + +\def\FindItem#1#2{% + \global\StackPointer=\m@ne % assume item isn't in stack for now + {\Iteration=\z@ + \loop + \ifnum\Iteration<\LengthOfStack + \GetItemSTATUS{\Iteration} + \ifnum\ItemSTATUS=\InStack + \GetItemTYPE{\Iteration} + \ifnum\ItemTYPE=#1 + \GetItemNUMBER{\Iteration} + \ifnum\ItemNUMBER=#2 + \global\StackPointer=\Iteration + \Iteration=\LengthOfStack % terminate loop + \fi + \fi + \fi + \advance\Iteration \@ne + \repeat} +} + +% Find next type +% This macro searches from the top to the bottom of the stack +% looking for the first item which has STATUS=\InStack. +% If it is a figure then a figure is what will be considered +% next by \MakePage else table. + +\def\FindNext{% + \global\StackPointer=\m@ne % assume stack is empty for now + {\Iteration=\z@ + \loop + \ifnum\Iteration<\LengthOfStack + \GetItemSTATUS{\Iteration} + \ifnum\ItemSTATUS=\InStack + \GetItemTYPE{\Iteration} + \ifnum\ItemTYPE=\Figure + \ifMoreFigures + \global\NextItem=\Figure + \global\StackPointer=\Iteration + \Iteration=\LengthOfStack % terminate loop + \fi + \fi + \ifnum\ItemTYPE=\Table + \ifMoreTables + \global\NextItem=\Table + \global\StackPointer=\Iteration + \Iteration=\LengthOfStack % terminate loop + \fi + \fi + \fi + \advance\Iteration \@ne + \repeat} +} + +% Change status +% Macro to change the status of a specified item in stack. +% #1=item, #2=new status + +\def\ChangeStatus#1#2{% + \Point=\StatusStack + \advance\Point by #1 + \global\count\Point=#2 +} + + +%--------------------------------------------------------% +% MAKEPAGE % +%--------------------------------------------------------% + +% This macro is called at the start of every new page +% including the first. It scans through the stack picking +% out items which should be placed on this page. It then +% leaves space for the items to be placed later. The routine +% terminates when either there is no room on the page to +% fit the next figure or table, or there are no more items +% in the stack. + +\def\Zone{\InZoneA} + +\ZoneBAdjust=\z@ + +\def\MakePage{% allocate space on this page for stack items + \global\ZoneBSize=\PageHeight + \global\TextSize=\ZoneBSize + \global\ZoneAFullPagefalse + \global\topskip=\TextLeading + \MakePageInCompletetrue + \MoreFigurestrue + \MoreTablestrue + \FigInZoneBfalse + \FigInZoneCfalse + \TabInZoneBfalse + \TabInZoneCfalse + \global\FirstSingleItemtrue + \global\FirstZoneAtrue + \global\setbox\ZoneABOX=\box\VOIDBOX + \global\setbox\ZoneBBOX=\box\VOIDBOX + \global\setbox\ZoneCBOX=\box\VOIDBOX + \loop + \ifMakePageInComplete + \FindNext + \ifnum\StackPointer=\m@ne + \NextItem=\m@ne + \MoreFiguresfalse + \MoreTablesfalse + \fi + \ifnum\NextItem=\Figure + \FindItem{\Figure}{\NextFigure} + \ifnum\StackPointer=\m@ne \global\MoreFiguresfalse + \else + \GetItemSPAN{\StackPointer} + \ifnum\ItemSPAN=\Single \def\Zone{\InZoneB}\relax + \ifFigInZoneC \global\MoreFiguresfalse\fi + \else + \def\Zone{\InZoneA} + \ifFigInZoneB \def\Zone{\InZoneC}\fi + \fi + \fi + \ifMoreFigures\Print{}\FigureItems\fi + \fi +\ifnum\NextItem=\Table + \FindItem{\Table}{\NextTable} + \ifnum\StackPointer=\m@ne \global\MoreTablesfalse + \else + \GetItemSPAN{\StackPointer} + \ifnum\ItemSPAN=\Single\relax + \ifTabInZoneC \global\MoreTablesfalse\fi + \else + \def\Zone{\InZoneA} + \ifTabInZoneB \def\Zone{\InZoneC}\fi + \fi + \fi + \ifMoreTables\Print{}\TableItems\fi + \fi + \MakePageInCompletefalse % assume page is complete + \ifMoreFigures\MakePageInCompletetrue\fi + \ifMoreTables\MakePageInCompletetrue\fi + \repeat +%\Print{TextSize=\the\TextSize} +%\Print{ZoneBSize=\the\ZoneBSize} + \ifZoneAFullPage + \global\TextSize=\z@ + \global\ZoneBSize=\z@ + \global\vsize=\z@\relax + \global\topskip=\z@\relax + \vbox to \z@{\vss} + \eject + \else + \global\advance\ZoneBSize by -\ZoneBAdjust + \global\vsize=\ZoneBSize + \global\hsize=\ColumnWidth + \global\ZoneBAdjust=\z@ + \ifdim\TextSize<23pt + \Warn{} + \Warn{* Making column fall short: TextSize=\the\TextSize *} + \vskip-\lastskip\eject\fi + \fi +} + +\def\MakeRightCol{% allocate space for the right column of text + \global\TextSize=\ZoneBSize + \MakePageInCompletetrue + \MoreFigurestrue + \MoreTablestrue + \global\FirstSingleItemtrue + \global\setbox\ZoneBBOX=\box\VOIDBOX + \def\Zone{\InZoneB} + \loop + \ifMakePageInComplete + \FindNext + \ifnum\StackPointer=\m@ne + \NextItem=\m@ne + \MoreFiguresfalse + \MoreTablesfalse + \fi + \ifnum\NextItem=\Figure + \FindItem{\Figure}{\NextFigure} + \ifnum\StackPointer=\m@ne \MoreFiguresfalse + \else + \GetItemSPAN{\StackPointer} + \ifnum\ItemSPAN=\Double\relax + \MoreFiguresfalse\fi + \fi + \ifMoreFigures\Print{}\FigureItems\fi + \fi + \ifnum\NextItem=\Table + \FindItem{\Table}{\NextTable} + \ifnum\StackPointer=\m@ne \MoreTablesfalse + \else + \GetItemSPAN{\StackPointer} + \ifnum\ItemSPAN=\Double\relax + \MoreTablesfalse\fi + \fi + \ifMoreTables\Print{}\TableItems\fi + \fi + \MakePageInCompletefalse % assume page is complete + \ifMoreFigures\MakePageInCompletetrue\fi + \ifMoreTables\MakePageInCompletetrue\fi + \repeat + \ifZoneAFullPage + \global\TextSize=\z@ + \global\ZoneBSize=\z@ + \global\vsize=\z@\relax + \global\topskip=\z@\relax + \vbox to \z@{\vss} + \eject + \else + \global\vsize=\ZoneBSize + \global\hsize=\ColumnWidth + \ifdim\TextSize<23pt + \Warn{} + \Warn{* Making column fall short: TextSize=\the\TextSize *} + \vskip-\lastskip\eject\fi +\fi +} + +\def\FigureItems{% Stack pointer points to next figure + \Print{Considering...} + \ShowItem{\StackPointer} + \GetItemBOX{\StackPointer} % auto calculates ItemSIZE + \GetItemSPAN{\StackPointer} + \CheckFitInZone % check to see if item fits + \ifnum\ItemFits=\Yes + \ifnum\ItemSPAN=\Single + \ChangeStatus{\StackPointer}{\InZoneB} % flag to be output + \global\FigInZoneBtrue + \ifFirstSingleItem + \hbox{}\vskip-\BodgeHeight + \global\advance\ItemSIZE by \TextLeading + \fi + \unvbox\ItemBOX\ItemSep + \global\FirstSingleItemfalse + \global\advance\TextSize by -\ItemSIZE% allocate space + \global\advance\TextSize by -\TextLeading + \else + \ifFirstZoneA + \global\advance\ItemSIZE by \TextLeading + \global\FirstZoneAfalse\fi + \global\advance\TextSize by -\ItemSIZE + \global\advance\TextSize by -\TextLeading + \global\advance\ZoneBSize by -\ItemSIZE + \global\advance\ZoneBSize by -\TextLeading + \ifFigInZoneB\relax + \else + \ifdim\TextSize<3\TextLeading + \global\ZoneAFullPagetrue + \fi + \fi + \ChangeStatus{\StackPointer}{\Zone} + \ifnum\Zone=\InZoneC \global\FigInZoneCtrue\fi + \fi + \Print{TextSize=\the\TextSize} + \Print{ZoneBSize=\the\ZoneBSize} + \global\advance\NextFigure \@ne + \Print{This figure has been placed.} + \else + \Print{No space available for this figure...holding over.} + \Print{} + \global\MoreFiguresfalse + \fi +} + +\def\TableItems{% Stack pointer points to next table + \Print{Considering...} + \ShowItem{\StackPointer} + \GetItemBOX{\StackPointer} % auto calculates ItemSIZE + \GetItemSPAN{\StackPointer} + \CheckFitInZone % check to see of item fits in Zone + \ifnum\ItemFits=\Yes + \ifnum\ItemSPAN=\Single + \ChangeStatus{\StackPointer}{\InZoneB} + \global\TabInZoneBtrue + \ifFirstSingleItem + \hbox{}\vskip-\BodgeHeight + \global\advance\ItemSIZE by \TextLeading + \fi + \unvbox\ItemBOX\ItemSep + \global\FirstSingleItemfalse + \global\advance\TextSize by -\ItemSIZE + \global\advance\TextSize by -\TextLeading + \else + \ifFirstZoneA + \global\advance\ItemSIZE by \TextLeading + \global\FirstZoneAfalse\fi + \global\advance\TextSize by -\ItemSIZE + \global\advance\TextSize by -\TextLeading + \global\advance\ZoneBSize by -\ItemSIZE + \global\advance\ZoneBSize by -\TextLeading + \ifFigInZoneB\relax + \else + \ifdim\TextSize<3\TextLeading + \global\ZoneAFullPagetrue + \fi + \fi + \ChangeStatus{\StackPointer}{\Zone} + \ifnum\Zone=\InZoneC \global\TabInZoneCtrue\fi + \fi +% \Print{TextSize=\the\TextSize} +% \Print{ZoneBSize=\the\ZoneBSize} + \global\advance\NextTable \@ne + \Print{This table has been placed.} + \else + \Print{No space available for this table...holding over.} + \Print{} + \global\MoreTablesfalse + \fi +} + +% These macros check to see if an item of ItemSIZE will +% fit in a particular zone. If it will, then ItemFits +% will be set true else false. + +\def\CheckFitInZone{% +{\advance\TextSize by -\ItemSIZE + \advance\TextSize by -\TextLeading + \ifFirstSingleItem + \advance\TextSize by \TextLeading + \fi + \ifnum\Zone=\InZoneA\relax + \else \advance\TextSize by -\ZoneBAdjust + \fi + \ifdim\TextSize<3\TextLeading \global\ItemFits=\No + \else \global\ItemFits=\Yes\fi} +} + +\def\BeginOpening{% + % start 9pt a.s.a.p. so that \New.. commands get a chance to init. + \ninepoint + \thispagestyle{titlepage}% + \global\setbox\ItemBOX=\vbox\bgroup% + \hsize=\PageWidth% + \hrule height \z@ + \ifsinglecol\vskip 6pt\fi % Bodge, to get same pos. as two-column! +} + +\let\begintopmatter=\BeginOpening % alias for \BeginOpening + +\def\EndOpening{% + \One% 1 line fixed space below opening + \egroup + \ifsinglecol + \box\ItemBOX% + \vskip\TextLeading plus 2\TextLeading% var. space: min 1, max 3 lines + \@noafterindent + \else + \ItemNUMBER=\z@% + \ItemTYPE=\Figure + \ItemSPAN=\Double + \ItemSTATUS=\InStack + \JoinStack + \fi +} + + +% Figures + +\newif\if@here \@herefalse + +\def\no@float{\global\@heretrue} +\let\nofloat=\relax % only enabled for one column + +\def\beginfigure{% + \@ifstar{\global\@dfloattrue \@bfigure}{\global\@dfloatfalse \@bfigure}% +} + +\def\@bfigure#1{% + \par + \if@dfloat + \ItemSPAN=\Double + \TEMPDIMEN=\PageWidth + \else + \ItemSPAN=\Single + \TEMPDIMEN=\ColumnWidth + \fi + \ifsinglecol + \TEMPDIMEN=\PageWidth + \else + \ItemSTATUS=\InStack + \ItemNUMBER=#1% + \ItemTYPE=\Figure + \fi + \bgroup + \hsize=\TEMPDIMEN + \global\setbox\ItemBOX=\vbox\bgroup + \eightpoint\nostb@ls{10pt}% + \let\caption=\fig@caption + \ifsinglecol \let\nofloat=\no@float\fi +} + +\def\fig@caption#1{% + \vskip 5.5pt plus 6pt% + \bgroup % grouping and size change needed for plate pages + \eightpoint\nostb@ls{10pt}% + \setbox\TEMPBOX=\hbox{#1}% + \ifdim\wd\TEMPBOX>\TEMPDIMEN + \noindent \unhbox\TEMPBOX\par + \else + \hbox to \hsize{\hfil\unhbox\TEMPBOX\hfil}% + \fi + \egroup +} + +\def\endfigure{% + \par\egroup % end \vbox + \egroup + \ifsinglecol + \if@here \midinsert\global\@herefalse\else \topinsert\fi + \unvbox\ItemBOX + \endinsert + \else + \JoinStack + \Print{Processing source for figure \the\ItemNUMBER}% + \fi +} + + +% Tables + +\newbox\tab@cap@box +\def\tab@caption#1{\global\setbox\tab@cap@box=\hbox{#1\par}} + +\newtoks\tab@txt@toks +\long\def\tab@txt#1{\global\tab@txt@toks={#1}\global\table@txttrue} + +\newif\iftable@txt \table@txtfalse +\newif\if@dfloat \@dfloatfalse + +\def\begintable{% + \@ifstar{\global\@dfloattrue \@btable}{\global\@dfloatfalse \@btable}% +} + +\def\@btable#1{% + \par + \if@dfloat + \ItemSPAN=\Double + \TEMPDIMEN=\PageWidth + \else + \ItemSPAN=\Single + \TEMPDIMEN=\ColumnWidth + \fi + \ifsinglecol + \TEMPDIMEN=\PageWidth + \else + \ItemSTATUS=\InStack + \ItemNUMBER=#1% + \ItemTYPE=\Table + \fi + \bgroup + \eightpoint\nostb@ls{10pt}% + \global\setbox\ItemBOX=\vbox\bgroup + \let\caption=\tab@caption + \let\tabletext=\tab@txt + \ifsinglecol \let\nofloat=\no@float\fi +} + +\def\endtable{% + \par\egroup % end \vbox + \egroup + \setbox\TEMPBOX=\hbox to \TEMPDIMEN{% + \eightpoint\nostb@ls{10pt}% + \hss + \vbox{% + \hsize=\wd\ItemBOX + \ifvoid\tab@cap@box + \else + \noindent\unhbox\tab@cap@box + \vskip 5.5pt plus 6pt% + \fi + \box\ItemBOX + \iftable@txt + \vskip 10pt% + \noindent\the\tab@txt@toks + \global\table@txtfalse + \fi + }% + \hss + }% + \ifsinglecol + \if@here \midinsert\global\@herefalse\else \topinsert\fi + \box\TEMPBOX + \endinsert + \else + \global\setbox\ItemBOX=\box\TEMPBOX + \JoinStack + \Print{Processing source for table \the\ItemNUMBER}% + \fi +} + + +\def\UnloadZoneA{% +\FirstZoneAtrue + \Iteration=\z@ + \loop + \ifnum\Iteration<\LengthOfStack + \GetItemSTATUS{\Iteration} + \ifnum\ItemSTATUS=\InZoneA + \GetItemBOX{\Iteration} + \ifFirstZoneA \vbox to \BodgeHeight{\vfil}% + \FirstZoneAfalse\fi + \unvbox\ItemBOX\ItemSep + \LeaveStack{\Iteration} + \else + \advance\Iteration \@ne + \fi + \repeat +} + +\def\UnloadZoneC{% +\Iteration=\z@ + \loop + \ifnum\Iteration<\LengthOfStack + \GetItemSTATUS{\Iteration} + \ifnum\ItemSTATUS=\InZoneC + \GetItemBOX{\Iteration} + \ItemSep\unvbox\ItemBOX + \LeaveStack{\Iteration} + \else + \advance\Iteration \@ne + \fi + \repeat +} + + +%--------------------------------------------------------% +% DIAGNOSTICS % +%--------------------------------------------------------% + +\def\ShowItem#1{% Show details of on item entry in stack + {\GetItemAll{#1} + \Print{\the#1: + {TYPE=\ifnum\ItemTYPE=\Figure Figure\else Table\fi} + {NUMBER=\the\ItemNUMBER} + {SPAN=\ifnum\ItemSPAN=\Single Single\else Double\fi} + {SIZE=\the\ItemSIZE}}} +} + +\def\ShowStack{% + \Print{} + \Print{LengthOfStack = \the\LengthOfStack} + \ifnum\LengthOfStack=\z@ \Print{Stack is empty}\fi + \Iteration=\z@ + \loop + \ifnum\Iteration<\LengthOfStack + \ShowItem{\Iteration} + \advance\Iteration \@ne + \repeat +} + +\def\B#1#2{% +\hbox{\vrule\kern-0.4pt\vbox to #2{% +\hrule width #1\vfill\hrule}\kern-0.4pt\vrule} +} + + +%-------------------------------------------------------% +% SINGLE COLUMN OUTPUT ROUTINE % +%-------------------------------------------------------% + +\newif\ifsinglecol \singlecolfalse + +\def\onecolumn{% + \global\output={\singlecoloutput}% + \global\hsize=\PageWidth + \global\vsize=\PageHeight + \global\ColumnWidth=\hsize + \global\TextLeading=12pt + \global\Leading=12 + \global\singlecoltrue + \global\let\onecolumn=\relax% stop them using \onecolumn again + \global\let\footnote=\sing@footnote% enable footnotes + \global\let\vfootnote=\sing@vfootnote + \ninepoint % reset \baselineskip after leading change + \message{(Single column)}% +} + +\def\singlecoloutput{% + \shipout\vbox{\PageHead\pagebody\PageFoot}% + \advancepageno +% + \ifplate@page + \shipout\vbox{% + \sp@pagetrue + \def\sp@type{plate}% + \global\plate@pagefalse + \PageHead\vbox to \PageHeight{\unvbox\plt@box\vfil}\PageFoot% + }% + \message{[plate]}% + \advancepageno + \fi +% + \ifnum\outputpenalty>-\@MM \else\dosupereject\fi% +} + +\def\ItemSep{\vskip\ItemSepamount\relax} + +\def\ItemSepbreak{\par\ifdim\lastskip<\ItemSepamount + \removelastskip\penalty-200\ItemSep\fi% +} + +% Modify plain's \endinsert so that the mn's spacing is used + +\let\@@endinsert=\endinsert % save plain's original \endinsert + +\def\endinsert{\egroup % finish the \vbox + \if@mid \dimen@\ht\z@ \advance\dimen@\dp\z@ \advance\dimen@12\p@ + \advance\dimen@\pagetotal \advance\dimen@-\pageshrink + \ifdim\dimen@>\pagegoal\@midfalse\p@gefalse\fi\fi + \if@mid \ItemSep\box\z@\ItemSepbreak + \else\insert\topins{\penalty100 % floating insertion + \splittopskip\z@skip + \splitmaxdepth\maxdimen \floatingpenalty\z@ + \ifp@ge \dimen@\dp\z@ + \vbox to\vsize{\unvbox\z@\kern-\dimen@}% depth is zero + \else \box\z@\nobreak\ItemSep\fi}\fi\endgroup% +} + + +% Footnotes (only enabled in single column) + +\def\gobbleone#1{} +\def\gobbletwo#1#2{} +\let\footnote=\gobbletwo % Gobble footnote's unless enabled by \onecolumn +\let\vfootnote=\gobbleone + +\def\sing@footnote#1{\let\@sf\empty % parameter #2 (the text) is read later + \ifhmode\edef\@sf{\spacefactor\the\spacefactor}\/\fi + \hbox{$^{\hbox{\eightpoint #1}}$}\@sf\sing@vfootnote{#1}% +} + +\def\sing@vfootnote#1{\insert\footins\bgroup\eightpoint\b@ls{9pt}% + \interlinepenalty\interfootnotelinepenalty + \splittopskip\ht\strutbox % top baseline for broken footnotes + \splitmaxdepth\dp\strutbox \floatingpenalty\@MM + \leftskip\z@skip \rightskip\z@skip \spaceskip\z@skip \xspaceskip\z@skip + \noindent $^{\scriptstyle\hbox{#1}}$\hskip 4pt% + \footstrut\futurelet\next\fo@t% +} + +% Kill footnote rule +\def\footnoterule{\kern-3\p@ \hrule height \z@ \kern 3\p@} + +\skip\footins=19.5pt plus 12pt minus 1pt +\count\footins=1000 +\dimen\footins=\maxdimen + + +% Landscape + +\def\landscape{% + \global\TEMPDIMEN=\PageWidth + \global\PageWidth=\PageHeight + \global\PageHeight=\TEMPDIMEN + \global\let\landscape=\relax% stop them using \landscape again. + \onecolumn + \message{(landscape)}% + \raggedbottom +} + + +%-------------------------------------------------------% +% TWO COLUMN OUTPUT ROUTINE % +%-------------------------------------------------------% + +\output{% + \ifLeftCOL + \global\setbox\LeftBOX=\vbox to \ZoneBSize{\box255\unvbox\ZoneBBOX}% + \global\LeftCOLfalse + \MakeRightCol + \else + \setbox\RightBOX=\vbox to \ZoneBSize{\box255\unvbox\ZoneBBOX}% + \setbox\MidBOX=\hbox{\box\LeftBOX\hskip\ColumnGap\box\RightBOX}% + \setbox\PageBOX=\vbox to \PageHeight{% + \UnloadZoneA\box\MidBOX\UnloadZoneC}% + \shipout\vbox{\PageHead\box\PageBOX\PageFoot}% + \advancepageno +% + \ifplate@page + \shipout\vbox{% + \sp@pagetrue + \def\sp@type{plate}% + \global\plate@pagefalse + \PageHead\vbox to \PageHeight{\unvbox\plt@box\vfil}\PageFoot% + }% + \message{[plate]}% + \advancepageno + \fi +% + \global\LeftCOLtrue + \CleanStack + \MakePage + \fi +} + + +% Startup message + +\Warn{\start@mess} + +\newif\ifCUPmtplainloaded % for use in documents +\ifprod@font + \global\CUPmtplainloadedtrue +\fi + +\def\mnmacrosloaded{} % so articles can see if a format file has been used. + +\catcode `\@=12 % @ signs are non-letters + +% \dump + +% end of mn.tex |