 %%%%% osumrip.sty %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  %% OSU Math Research Institute Publications Style File
  %% Version of 1 Feb June, 1991
  %% This is the style file for preprints 
  %% to be submitted for the 
  %% THE PROCEEDINGS OF THE RESEARCH SEMESTER 
  %% IN LOW DIMENSIONAL TOPOLOGY OSU 1990.
 
  %% See Guidelines for authors in osuGuide.tex
  %% And osutest.tex
 
 %%%%% CONTACTING THE EDITORS %%%%% 
  %% c/o W. Neumann
  %% Math Dept OSU,
  %% Rm 100, W. 17th Ave.
  %% Columbus Ohio 43201, USA
 
  %% Email: neumann@function.mps.ohio-state.edu
  %% and    siebenma@FRLAL51.bitnet
 
 %%%%% FORBID REREADING %%%%%

  \ifx\osumriploaded\MYundefined  
    %\immediate\write16{Now loading osumrip.sty.}
  \else
    \immediate\write16{osumrip.sty ALREADY loaded.}
  \endinput\fi

  \def\osumriploaded{\relax}% now loaded

 

 %%%%% PARAMETERS %%%%% 
  \magnification=1200 
  \hoffset=.35truein  % depends on your environment
  %\voffset=0truein  % depends on your environment
  \hsize=355pt %*******do not change
  \vsize = 500 pt%...
  \baselineskip=11pt 
  \lineskip=1.1pt
  \lineskiplimit=.8pt
  \topskip=12pt 
  \bigskipamount=10pt plus 4pt minus 1pt
  \hfuzz=\hsize
  \overfullrule = 0 pt 
  \vbadness=10000
  \hbadness=10000
  \nopagenumbers
  \widowpenalty=5000
  \pageno=1
  \footline{\ifnum \pageno>0 \hss\tenrm\folio\hss\fi}
  \mathsurround=1pt
  \def\prose{\kern\mathsurround}

  \def\StdPretolerance{100}
  \tolerance=\StdPretolerance

  \def\StdParskip{0pt}   % Larry wants 2pt plus 1pt
  \parskip=\StdParskip
  \parindent=0.5cm
 
  \def\tenpoint{}
 
  %%%%% FONTS %%%%%
 
  \font\Bigbf=cmbx10 at 14.4pt 
  \font\twelvebf=cmbx12
  \font\tenbf=cmbx10
  \font\tenbi=cmbxti10
  \font\tensmc=cmcsc10
 
 \def\bi{\tenbi}
 \def\smc{\tensmc}
 
 \def \Smallfonts {\relax } % will be redefined for amsppt.sty
 %%% If amsppt.sty is loaded (either version)
   %% then use \eightpoint of amsppt.sty
  \ifx\amspptloaded@AmS\relax
     \def\Smallfonts{\eightpoint}
  \fi
  \def\next{AMSPPT}
  \ifx\styname\next 
     \def\Smallfonts{\eightpoint}
  \fi
   
 
  \def\Hfont{\Bigbf}
  \def\Authorfont{\twelvebf}
  \def\HHfont{\twelvebf} 
  \def\HHHfont{\tenbf}
  \def\Figurefont{\bf}% may later be smaller in 9 point parts
  \def\Bibfont{\tenbf}
  
 \def \thfont {\smc }
 \def \pffont {\smc }
 \def \rkfont {\smc }
 \def \dffont {\smc }
 \def \egfont {\smc }
 
  %If you need symbols from the AMS math fonts and 
  %don't know how to include them, please let us know.


 
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
  %%% Beyond this point we use some control sequences 
  %%% that are 'padlocked'  with @ of category 11
 
  \chardef\CatAt\the\catcode`\@
  \catcode`\@=11

 %%temporarily suppress Plain's logging of allocations
 \let\wlog@ld\wlog 
 \def\wlog#1{\relax} 


   \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}


 %%%% Tools
  %%
 %%%%
 %% ORDERED-SUBSET INCLUSION RELATION 
 %% syntax \IN@0...@...@ %
 %% hopefully 0 will never change its catcode 
 %% \IN@0#1@#2@ : is  #1 in #2 
 %% sets \ifIN@ as result code
 %% 
 %% cf. Spivak's \in@#1#2
 %% degeneracy bugs of Spivak's version (fixed??):
 %% \in@{}{1} gives false tho \in@ {}{21} gives true
 %% \in@{}{} crashes
 %% 
 
 \newif\ifIN@
 \def\m@rker{\m@@rker}
 \def\IN@{\expandafter\INN@\expandafter}
 \long\def\INN@0#1@#2@{\long\def\NI@##1#1##2##3\ENDNI@
    {\ifx\m@rker##2\IN@false\else\IN@true\fi}%
     \expandafter\NI@#2@@#1\m@rker\ENDNI@}
     %% need @@ if both spaces or null
     %% 0 allows letter or space as #1 in syntax
     %% condensations possible \ENDNI@ and @@ to \NI@

  %%%  \SPLIT@@0#1@#2@  :  Split 1st exp of #2 at 1st exp of #1
   %% \Initialtoks@ , \Terminaltoks@ will contain pieces
  \newtoks\Initialtoks@  \newtoks\Terminaltoks@
  \def\SPLIT@{\expandafter\SPLITT@\expandafter}
  \def\SPLITT@0#1@#2@{\def\TTILPS@##1#1##2@{%
     \Initialtoks@{##1}\Terminaltoks@{##2}}\expandafter\TTILPS@#2@}

 %%%% MACROS TO TRIM  \ForeTrim@0#1@ and \Trim@0#1@  
   %% result appears in \Trimtoks@
   %% LIMITATION: assume no multiple spaces to trim

  \newtoks\Trimtoks@

  %%% \ForeTrim@0#1@ trims initial space of first erpansion of #1
   %% #1 of form \the\toks0 or \mymacro
 \def\ForeTrim@{\expandafter\ForeTrim@@\expandafter}
 \def\ForePrim@0 #1@{\Trimtoks@{#1}}
 \def\ForeTrim@@0#1@{\IN@0\m@rker. @\m@rker.#1@%
     \ifIN@\ForePrim@0#1@%
     \else\Trimtoks@\expandafter{#1}\fi}
   %%\m@rker expands here to \m@@rker since spot initial,
   %% so no confusuion with \m@rker

  %%% \Trim@0#1@ trims init and terminal spaces 
   %% Same syntax.
   %% Warns if internal spaces found.
   %% 
  \def\Trim@0#1@{%
      \ForeTrim@0#1@%
      \IN@0 @\the\Trimtoks@ @%
        \ifIN@ 
             \SPLIT@0 @\the\Trimtoks@ @\Trimtoks@\Initialtoks@
             \IN@0\the\Terminaltoks@ @ @%
                 \ifIN@
                 \else \Trimtoks@ {FigNameWithSpace}%
                 \fi
        \fi
      }


  
 %%%%% CHAPTER AND SECTION HEADINGS %%%%% 
  %%
  %% Chapter heading macro which also 
  %% sets the automatic footnote count register to 0
 
 %%% Type in the chapter head like this: % 
  %% 
  %% \H  <The article title>
  %% 
  %% M. Jones  \%  the author, initials first
  %% 
  %%  <The text>
 
 \def\Hrule{\hrule width0pt height0pt}
  %\nobreak\hrule\nobreak
% \newdimen\ForgettableGap
% \ForgettableGap=36pt

 \newskip\LastSkip
 \def\SaveLastSkip{\LastSkip\lastskip}
 \def\RestoreLastSkip{\vskip-\LastSkip\vskip\LastSkip}

 % No indent after a heading:
 \def\NoindentAfter{\everypar={\setbox0=\lastbox\everypar={}}}

 \long\def\H#1\par#2\par{\notenumber=0%
    \hbox to 0pt{}\vskip15pt plus 1pt 
    {\baselineskip=15pt plus 1pt\parindent=0pt\parskip=0pt\frenchspacing
    \leftskip=0pt plus .2\hsize minus .1\hsize 
    \rightskip=0pt plus .2\hsize minus .1\hsize 
    \def\\{\unskip\break} 
    \pretolerance=10000 \Hfont #1\unskip\break
    \vskip20pt plus 1pt\Authorfont #2\unskip\break\par}
    \vskip20pt plus 1pt%
    \NoindentAfter\par\rm
    }
 
 \def\chapterhead{}
 \def\authorhead{}

  %%% SECTION HEADINGS
 %%
 %% \HH 7. Heading
 %% 
 %% Following text

 %%
 %% \HHH 7.1. Subheading
 %% 
 %% Following text

 %% As usual, the blank lines are required syntax.
 %% 
 %% The definitions are complicated by an effort to
 %% (i) prevent pagebreak after a heading
 %% (ii) make postheading space depend on what follows
 %% 

 \newdimen\PageRemainder
  \def\SetPageRemainder{\PageRemainder=\pagegoal\advance\PageRemainder by
   -1\pagetotal}
 
  \def\Rpt@{}\def\Rpt@@{}
  
  \long\def\HH#1\par{\par%A
  \SaveLastSkip\removelastskip\goodbreak
  \ifdim\LastSkip<24pt%\ForgettableGap
     \LastSkip 24pt plus 1pt\fi
  \SetPageRemainder\advance\PageRemainder-\LastSkip
  \ifdim\PageRemainder<150pt
       \edef\Rpt@{remain = \the\PageRemainder\noexpand\\
                pagetotal=\the\pagetotal\noexpand\\
                           pagegoal=\the\pagegoal}%
          \else\def\Rpt@{}\fi
   \ifdim\PageRemainder<72pt %%Old 97.2pt reduced 24pt (approx)
             \edef\Rpt@@{\noexpand\\
                      Had HH PageRemainder$<$72pt\noexpand\\
                      Hence forced break!}%
     \vskip 0pt plus .1\PageRemainder\eject %% Pull it out a bit
    \else\edef\Rpt@@{}
    \fi
    \vskip\LastSkip\Hrule %%%%%%%%\Hrule added
    \pretolerance=10000\rightskip=0pt plus 3em%B 
    \hangafter1 \hangindent=2.2em%   
    \noindent
    \HHfont \unskip \Ednote{\Rpt@\Rpt@@}%
            \def\Rpt@{}\def\Rpt@@{}%
            \ignorespaces
            #1\par\rightskip=0pt\pretolerance=\StdPretolerance%
      \NoindentAfter\tenpoint\rm\vskip 8pt plus 1pt minus 1pt}
 
  \long\def\HHH#1\par{\par%
  \SaveLastSkip\removelastskip\goodbreak
  \ifdim\LastSkip<10pt%\ForgettableGap
     \LastSkip 10pt plus 1pt\fi
  \SetPageRemainder\advance\PageRemainder-\LastSkip
  \ifdim\PageRemainder<150pt
       \edef\Rpt@{remain = \the\PageRemainder\noexpand\\
                pagetotal=\the\pagetotal\noexpand\\
                           pagegoal=\the\pagegoal}%
          \else\def\Rpt@{}\fi
   \ifdim\PageRemainder<60pt  %%Try this!!!!!!!!!!!!!!!!!!!!!!!!!!!!
             \edef\Rpt@@{\noexpand\\
                      Had HHH PageRemainder$<$60pt\noexpand\\
                      Hence forced break!}%
       \vskip 0pt plus .1\PageRemainder\eject %% Pull it out a bit
   \else\edef\Rpt@@{}
   \fi
   \vskip\LastSkip\Hrule\par\noindent
   \HHHfont \unskip\Ednote{\Rpt@\Rpt@@}\ignorespaces
   #1\unskip.\quad\rm\ignorespaces
   \ignorepars}
       
  \long\def\ignorepars#1\par{\def\Test{#1}%
     \ifx\Test\Empty\def\This{\ignorepars}%
        \else\def\This{\Test\par}\fi
           \This}
 
 
 %%%%% PROCLAMATIONS %%%%% 
  %% 
  %% \th <theorem title>(Blank Line)<theorem statement>\endth
  %% \pf <proof title>(Blank Line)<proof body>\qed
  %% \df <definition title>(Blank Line)<definition body>\enddf
  %% \rk <remark title>(Blank Line)<definition body>\endrk
  %% \eg <example title>(Blank Line)<example body>\endeg
 
 \def\ProcBreak{\par\ifdim\lastskip<8pt%\ForgettableGap
    \removelastskip
    \penalty-200\vskip8pt plus1pt\fi}

 \def \th #1\par{\ProcBreak \noindent
   {\thfont\ignorespaces #1\unskip.}\quad\it}
 \def \endth {\ProcBreak\rm }
 
  %% the theorem statement will be in italic by default
 
 \def\pf #1\par{\ProcBreak % 
    \noindent\pffont#1\unskip:\kern.5pt
       \raise-.4pt\hbox{---}\quad\rm}
 
  \def \endpf {\ProcBreak } %% \qed is alternative
 
 
  %% A Box for the Quod est demonstrandum:   
  \def\qedbox{\hbox{\vbox{
    \hrule width0.2cm height0.2pt 
    \hbox to 0.2cm{\vrule height 0.2cm width 0.2pt 
             \hfil\vrule height0.2cm width 0.2pt}
    \hrule width0.2cm height 0.2pt}}}
 
 
  %% Typing in \qed makes the qedbox right justified: 
  \def\qed{\ifmmode\qedbox
    \else\hglue4mm\unskip\hfill\qedbox\ProcBreak\fi} 

  \def \rk #1\par{\ProcBreak
     \noindent{\rkfont\ignorespaces #1\unskip.}\quad\rm}
  
  \def \endrk {\ProcBreak }
 
  \def \df #1\par{\ProcBreak 
     \noindent{\dffont\ignorespaces #1\unskip.}\quad\rm}
  
  \def \enddf {\ProcBreak }
 
  \def \eg #1\par{\ProcBreak 
     \noindent{\egfont\ignorespaces #1\unskip.}\quad\rm}
  
  \def \endeg {\ProcBreak }
 
 %%%   Traditional amsTeX syntax:
  %%    program it if desired in terms of the above macros 
  %%
  %%   \Thm{<theorem title>}<theorem statement>\endThm
  %%   \Prf{<proof title>}<proof body>\qed
  %%   \Def{<definition title>}<definition body>\endDef
  %%   \Rmk{<remark title>}<definition body>\endRmk
  %%   \Ex{<example title>}<example body>\endEx
  %%
  %% for example thus
  %% \def\Thm#1{\pf#1\par} \def\endThm{\endth}
  

  %%%%% ITEMS
  %%%% making the hanging indents left justified:
  %%%% Use \Item and  \ItemItem in place of \item and  \itemitem 
  %%%% Collision of tags and text prevented 
  %%%% by having tags push text WN11-91
  %%%% Easy hang adjustments provided  LS11-91
  %%%% see \Max...Tag{...} below and osuparam.sty
  %%%% Five item types are all treated similarly:
  %%%% \Item, \ItemItem, \Nr, \rf, \FootItem@
  %%%% (last is used in \Footnote and \Note).
  %%%% They are very similar and could be derived
  %%%% from a single catch-all macro.
  %%%% Changes of "style" and "hang" persist;
  %%%% you can make them temporary using braces.
  %%%% To make a hang zero set tag to a large negative kern,
  %%%% eg \MaxItemItemTag{\kern-10000pt}
  %%%% (negative hangs give zero hang)

  \newdimen\Overhang

   \def\litem{\message{ !!! litem should become Item !!!}}

 %% \MaxTag@#1#2#3#4#5 %
 %% #1 tagtype; #2 tag; #3 post tag gap; #4 tagstyle #5 min hang
   \def\MaxTag@#1#2#3#4#5{\setbox0=\hbox{#4\ignorespaces#2\unskip}%
     \dimen0=\wd0\advance\dimen0 by#3
     \ifdim\dimen0<#5\relax\dimen0=#5\fi
     \expandafter\edef\csname #1Hang\endcsname{\the\dimen0}}

 \def\MaxItemTag#1{\MaxTag@{Item}{#1}{.4em}{\ItemStyle}{\parindent}}%
 \def\MaxItemItemTag#1{%
        \MaxTag@{ItemItem}{#1}{.4em}{\ItemItemStyle}{\parindent}}
 \def\MaxNrTag#1{\MaxTag@{Nr}{#1}{.5em}{\NrStyle}{\parindent}}
 \def\MaxReferenceTag#1{%
        \MaxTag@{Reference}{[#1]}{.6em}{\Smallfonts}{\parindent}}
 \def\MaxFootTag#1{\MaxTag@{Foot}{#1}{.4em}{\Smallfonts}{\z@}}

  %% \SetOverhang@ will prevent for tag-text collision
  \def\SetOverhang@{\Overhang=.8\dimen0%
     \advance\Overhang by \wd0\relax%nec!
     \ifdim\Overhang>\hangindent\relax%nec!
       \advance\Overhang by .25\dimen0%
       \Ednote{Tag is pushing text.}
     \else\Overhang=\hangindent
     \fi}

   %%% \Item
   \def\Item#1{\par\noindent
      \hangafter1\hangindent=\ItemHang
      \setbox0=\hbox{\ItemStyle\ignorespaces#1\unskip}%
      \dimen0=.4em\SetOverhang@% dimen0 is extra space
      \rlap{\box0}\kern\Overhang\ignorespaces}

   \def\ItemStyle{\rm}%% 
   \MaxItemTag{(iii)}%% 
         
   %%% \ItemItem
   \def\ItemItem#1{\par\noindent
      \hangafter1\hangindent=\ItemItemHang
      \setbox0=\hbox{\ItemItemStyle\ignorespaces#1\unskip}%
      \dimen0=.4em\SetOverhang@
      \advance\hangindent by \ItemHang
      \kern\ItemHang\rlap{\box0}%
      \kern\Overhang\ignorespaces}

    \def\ItemItemStyle{\rm}%% 
    \MaxItemItemTag{(iii)}%%

  %%%% \Nr Items without hanging indentation
  \def\Nr#1{\par\noindent\hangindent=\NrHang %not really a hang
    \setbox0=\hbox{\NrStyle\ignorespaces#1\unskip}%
    \dimen0=.5em\SetOverhang@% dimen0 is extra space
    \rlap{\box0}\kern\Overhang
    \hangindent=\z@\ignorespaces}

   \def\NrStyle{\rm}%% 
   \MaxNrTag{(2)}%% 

  %%%% Roster (not compulsory)
  %%  endRoster has to remember \lastskip (e.g. from a \qed) through \egroup.
   \newskip\Rosterskip\Rosterskip 1pt plus1pt %% modifiable
   \def\Roster{\par\ifdim\lastskip<\Rosterskip\removelastskip\vskip\Rosterskip\fi
    \bgroup}
   \def\endRoster{\par\global\edef\LastSkip@{\the\lastskip}\removelastskip
       \egroup\penalty-50\LastSkip\LastSkip@\relax
       \ifdim\LastSkip<\Rosterskip\LastSkip\Rosterskip\fi
       \vskip\LastSkip}%%changed Feb/5/92 WN

 %%%%% EMPHASIS %%%%% 
  %% 
  %% \em{<emphasized text>}
  %% \Em{<strongly emphasized text>}
 
 \long\def \em #1{{%
   \it{#1}\unskip\/}}
 
 \long\def \Em #1{{%
   \bi{#1}\unskip\/}}
 
 %%%%% VERTICAL SPACING %%%%% 
  %% 
  %% \skipaline
  
  \def\skipaline{\vskip12pt plus 1pt}
 
 %%%%% REFERENCES %%%%% 
  %% 
  %% \cite{Thu2,Chap 7}  %% is borrowed from AmSTeX amsppt.sty
  %% 

\def\cite#1{%\relaxnext@
    \def\nextiii@##1,##2\end@{{\frenchspacing\bf
      \lBr\ignorespaces##1\unskip{\rm,~\ignorespaces##2}\rBr}}%
    \IN@0,@#1@%
    \ifIN@\def\next{\nextiii@#1\end@}\else
    \def\next{{\bf\lBr#1\rBr}}\fi\next}

 
 %%%%% BIBLIOGRAPHY %%%%% 
  %% 
  %%           \Bib    References 
  %% 

  %%    \rf{Th1}  W.P. Thurston, ...
  %%    \rf{Th2}
  %% 
  %%    \endBib

  %%%%% An alternative to \rf{<tag>} <the reference> is
  %% \ref <tag>
  %%
  %% <author(s)>
  %%
  %% <title>
  %%
  %% <the rest>
  %%
  
   \def \Bib#1\par{%
       \par\removelastskip\SetPageRemainder
       \ifdim\PageRemainder < 97pt
        \ifdim\PageRemainder > 0pt
        \vfill\eject
       \fi\fi
    \ProcBreak \par\begingroup\parskip=0 pt%
    \goodbreak \vskip 15 pt plus 10 pt
    \noindent\null\hfill\Bibfont% \kern??pt%  (center over what?)
      \ignorespaces #1\unskip\hfill\null\par 
    \frenchspacing \Smallfonts\rm
    \parskip=2.5 pt plus 1 pt minus.5pt%
    \nobreak\vskip 12pt plus 2pt minus2pt\nobreak
    \leftskip=0 pt \baselineskip=10.5pt}

     %% Bugfix 12-91: \centerline{} in \Bib could
     %% anull \MaxReferenceTag effect

 \def\ReferenceTagSlide{0em}
  \def\ReferenceTagGap{.5em}
  \def\ReferenceHang{30pt}

  \def \rf#1{\par\noindent
     \hangafter1\hangindent=\ReferenceHang      
     \setbox0=\hbox{\Smallfonts[\ignorespaces#1\unskip]}%        
     \dimen0=\ReferenceTagGap\SetOverhang@
     \rlap{\kern\ReferenceTagSlide\box0}%       
     \kern\Overhang\ignorespaces}


  \def\ref#1\par#2\par#3\par#4\par{%
     \rf{#1}#2\unskip,\ #3\unskip,\
     #4\unskip.}

  \def\endBib{\par\endgroup\vskip 12pt minus 6pt }


 
 %%%%% COORDINATES %%%%% 
  %% 
  %% \Coordinates
  %% <your institution>\\
  %% <paper mail address>\\
  %% <more of it>
  %% 
  %% Email: <electronic mail address>
  %% \endCoordinates
 
 
  \def\Coordinates{\bigskip\bigskip
     \vtop\bgroup\leftskip=\parindent
    \parskip=3pt \parindent=0pt\pretolerance=10000%
    \def\\{\hfil \break} \frenchspacing\rm }
    
  \def\endCoordinates{\par\egroup}

  \def\at{{\char64 }}  
 

%%%%% FOOTNOTES %%%%%
  %%
  %% \note{<the footnote>}  %will be numbered automatically
  %% \footnote{<marker>}{<the footnote>}

  \newcount\notenumber
  \def\clearnotenumber{\notenumber=0}
  \def\note{\advance\notenumber by 1
    \footnote{\the\notenumber)}}

  \def\footnotespacing{\frenchspacing}

 %% The following modifies Plain TeX definitions, qv
  \def\footnote#1{\let\@sf\empty
    %{(the text)} is read later
    \ifhmode\edef\@sf{\spacefactor\the\spacefactor}\/\fi
    \sam${}^{\fam0 #1}$\@sf\vfootnote{#1}}%

  \def\vfootnote#1{\insert\footins\bgroup
     \interlinepenalty100 \splittopskip=1pt
     \floatingpenalty=20000
     \leftskip=0pt\rightskip=0pt%
     \parindent=.3em%% adjust
     \Smallfonts\rm%%osudeG added \Smallfonts
     \FootItem@{#1}%\strut% not nec
     \futurelet\next\fo@t}

  \def\FootItem@#1{\par\hangafter1\hangindent=\FootHang
     \setbox0=\hbox{\ignorespaces#1\unskip}%
     \dimen0=.4em\SetOverhang@% dimen0 is extra space
     \noindent\rlap{\box0}\kern\Overhang\ignorespaces}

  \MaxFootTag{2)}%%

  \def\fo@t{\ifcat\bgroup\noexpand\next \let\next\f@@t
    \else\let\next\f@t\fi \next}
  \def\f@@t{\bgroup\aftergroup\@foot\let\next}
  \def\f@t#1{\baselineskip=10pt\lineskip=1pt
            \lineskiplimit=0pt #1\@foot}%
     %%osudeG added \baselineskip=? pt\lineskiplimit=0pt
  \def\@foot{%%% special strut osu for end of each note
        \hbox{\vrule height0pt depth5pt width0pt}
        \egroup}
  \skip\footins=12 pt plus 0pt minus 0pt %% was \bigskipamount
    %% space added when footnote is present
  \count\footins=1000 % footnote magnification factor (1 to 1)
  \dimen\footins=8in % maximum footnotes per page

 %%%% Altenatives
  \let\Note\note
  \let\Footnote\footnote
  \let\Ninepoint\ninepoint

  %%%%% MISCELLANEOUS %%%%%
  %%
  %% marker before English punctuation in displayed math
  \def\prose{\kern1.5pt}
 

 \def \Blackbox
   {\leavevmode\hskip .3pt \vbox
   {\hrule height 5pt\hbox{\hskip 4.5pt}}\hskip .5pt}

 \def \XX{\Blackbox\kern.5pt\Blackbox} %% editorial use

  \def\at{{\char64 }}
  
  \def\.{.\kern1pt}

  %% unbreakable hyphen (by local change of hyphenchar to -1)
    \def\Hyphen{\edef\this{\the\hyphenchar\font}%
          \hyphenchar\font=-1\char\this\hyphenchar\font=\this}

   %% Prose In Math or Display Changed 6/9/92 WDN
 \ifx\undefined\text
  \def\text#1{\hbox{\rm #1}}\fi %% AMSTeX is more sophisticated

  %% Math Object Names (multi-character math object names)
 \def\mop#1{\mathop{\strut\rm #1}\nolimits} %%\nolimits can be cancelled
                                     % by a following \limits if wanted

  %%%%% some MATH ACCENTS %%%%%
  %% 
 
 \newcount\Ht %pg121; Height register, used in Linefigure & accents

 \def \Acc{\expandafter }

 \def\swthat{\raise -1.1 ex\hbox{$\widehat{}$}}
 \def\swttilde{\raise -1.2 ex\hbox{$\widetilde{}$}}
 \def \overdot{{\raise .2 ex \hbox to 0pt {\hss\bf\smash{.}\hss}}}
 \def \overcircle{{\raise .1 ex \hbox to 0pt
    {\mathsurround=0pt$\eightpoint\scriptstyle\hss\circ\hss$}}}


 \def \Mathaccent#1#2{{\mathsurround=0 pt% E.g. #1=\widehat
  \setbox4=\hbox{$\vphantom{#2}$}
  \Ht=\ht4 %pg120
  \setbox5=\hbox{${#1}$}
  \setbox6=\hbox{${#2}$}
  \setbox7=\hbox to .5\wd6{}
  \copy7\kern .1\Ht \raise\Ht sp\hbox{\copy5}\kern-.1\Ht 
  \copy7\llap{\box6}
  }}%italic test or other needed; oops, index height slightly raised
  %%extra braces 9-90


  \def \Overdot #1{\Mathaccent {\overdot} {#1}}

  \def \Overcircle #1{\Mathaccent {\overcircle} {#1}}

  \def \SwtHat #1{\Mathaccent {\swthat} {#1}}

  \def \SwtTilde #1{\Mathaccent {\swttilde} {#1}}

  \def\SwtCheck #1{
  \ifmmode \check{#1}%
    \else \v {#1}%
    \fi}


 %%  \barpartial : bar over partial is common, tailor!
 \def\barpartial {%
   \kern .17 em 
    \overline {\kern -.17 em\partial\kern-.03 em}%
    \kern .03 em}


 %%%   BETTER OVERLINE
 %% The typist is expected to use \overline,
 %% but the results are disappointing.
 %% \Overline is an improvement for upright characters
 %% \SOverline for characters that slant (most do!)
 %% Suggestion to typographer:
 %% substitute \overline ---> \SOverline
 %% as a first step, and then improve individual cases
 %% using \Overline, or by handsetting
 %%
 \def\Overline#1{\setbox1=\hbox{\sam ${#1}$}%
      \ifdim \wd1 > 6pt
    \kern .11 em
    \overline {\kern -.11 em#1\kern-.14 em}
    \kern .14 em 
  \else
    \kern .03 em 
    \overline {\kern -.03 em#1\kern-.04 em}
    \kern .04 em 
  \fi}

 \def\SOverline#1{\setbox1=\hbox{\sam ${#1}$}%
      \ifdim \wd1 > 7pt
    \kern .22 em 
    \overline {\kern -.22 em#1\kern-.09 em}%
    \kern .09 em 
  \else
    \kern .10 em 
    \overline {\kern -.10 em#1\kern-.04 em}%
    \kern .04 em 
  \fi}

  %%% BETTER UNDERLINE
  %% similarly 

 \def\Underline#1{\setbox1=\hbox{\sam ${#1}$}%
      \ifdim \wd1 > 6pt
    \kern .11 em
    \underline {\kern -.11 em#1\kern-.14 em}
    \kern .14 em 
  \else
    \kern .03 em 
    \underline {\kern -.03 em#1\kern-.04 em}
    \kern .04 em 
  \fi}

 \def\SUnderline#1{\setbox1=\hbox{\sam ${#1}$}%
      \ifdim \wd1 > 7pt
    \kern .04 em 
    \underline {\kern -.04 em#1\kern-.2 em}%
    \kern .2 em 
  \else
    \kern .0 em 
    \underline {\kern -.0 em#1\kern-.15 em}%
    \kern .15 em 
  \fi}

 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  %%
 %%%%%   BoxedEPS.tex FOR FIGURE INSERTS OF EPSF NORM  %%%%%
 %%%%%   (EPSF = Encapsulated PostScript File)
  %%
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  %%  
 %%%  AUTHOR: Laurent Siebenmann
  %%    lcs@matups.matups.fr
  %%  
 %%%  VERSIONS: Feb 1991 -- 24 April, 1992
  %%  
 %%%  SOMMAIRE: BoxedEPS.tex d\'efinit des macro-commandes
  %%    qui permettent d'int\'egrer dans un document TeX des 
  %%    objets graphiques d\'ecrits par fichier de norme EPSF,
  %%    tout en accordant a chacun le statut d'une bo\^ite TeX ayant 
  %%    les bonnes dimensions.  La (seule!) contribution unique 
  %%    de ce fichier est de faire cela d'une fa{\c}con universelle.
  %%    C'est a dire de fa{\c}con \`a pouvoir commod\'ement 
  %%    servir avec tout pilote d'imprimante de norme 
  %%    PostScript --- malgr\'e l'absence d'une norme 
  %%    pour \special. 
  %%  
 %%%  POSTINGS: anonymous ftp 
  %%  ---  ftp 130.84.128.100 (alias rsovax.circe.fr); 
  %%  login: anonymous; password: <anything>; directory 
  %%  [anonymous.siebenmann].  This is the master copy in 1992.
  %%  
  %%  ---  ftp 129.69.1.12 (alias rusinfo.rus.uni-stuttgart.de);
  %%  login: anonymous; password: <anything>; 
  %%  directory hints .../tex/graphics/...
  %%  
 %%%% DOCUMENTATION:
  %%  --- see BoxedEPS.doc
  %%  
 %%%% ACTIVATION:
  %%    by a driver-by-driver protocol
  %%    see \SetTexturesEPSFSpecial 
  %%    and its companions below.
  %%  

 \ifx\MYUNDEFINED\BoxedEPSF
   \let\temp\relax
 \else
   \message{}
   \message{ !!! BoxedEPS %
         or BoxedArt macros already defined !!!}
   \let\temp\endinput
 \fi
  \temp
 
 \chardef\CatAt\the\catcode`\@
 \catcode`\@=11
 \chardef\C@tColon\the\catcode`\:
 \chardef\C@tSemicolon\the\catcode`\;
 \chardef\C@tQmark\the\catcode`\?
 \chardef\C@tEmark\the\catcode`\!

 \def\PunctOther@{\catcode`\:=12
   \catcode`\;=12 \catcode`\?=12 \catcode`\!=12}
 \PunctOther@

 %%temporarily suppress Plain's logging of allocations
 \let\wlog@ld\wlog 
 \def\wlog#1{\relax} 

 %% New for TOOLS
 \newif\ifIN@
 \newdimen\XShift@ \newdimen\YShift@ 
 \newtoks\Realtoks
 
 %%% New for Boxed EPSF
  %
 \newdimen\Wd@ \newdimen\Ht@
 \newdimen\Wd@@ \newdimen\Ht@@
 %
 \newdimen\TT@
 \newdimen\LT@
 \newdimen\BT@
 \newdimen\RT@
 %
 \newdimen\XSlide@ \newdimen\YSlide@ 
 %
 \newdimen\TheScale  %% secretly scale in mils: 1pt= 1mil 
 \newdimen\FigScale  %% secretly scale in mils: 1pt= 1mil 
 %
 \newdimen\ForcedDim@@

 \newtoks\EPSFDirectorytoks@
 \newtoks\EPSFNametoks@
 \newtoks\BdBoxtoks@
 \newtoks\LLXtoks@  %% useful info for Oz
 \newtoks\LLYtoks@  

  
 \newif\ifNotIn@
 \newif\ifForcedDim@
 \newif\ifForceOn@
 \newif\ifForcedHeight@
 \newif\ifPSOrigin

 \newread\EPSFile@ 
 
 %%%% MESSAGES (separate macro needed for Europe)
  %%  
  \def\ms@g{\immediate\write16}

 %%%% WORD-PROCESSING MACROS
  %%
  %%% \IN@0#1@#2@ : Is 1st exp of #1 in 1st exp of #2 ??
   %% Answer in \ifIN@
 \newif\ifIN@\def\IN@{\expandafter\INN@\expandafter}
  \long\def\INN@0#1@#2@{\long\def\NI@##1#1##2##3\ENDNI@
    {\ifx\m@rker##2\IN@false\else\IN@true\fi}%
     \expandafter\NI@#2@@#1\m@rker\ENDNI@}
  \def\m@rker{\m@@rker}

  %%%  \SPLIT@0#1@#2@  :  Split 1st exp of #2 at 1st exp of #1
   %%  \Initialtoks@ , \Terminaltoks@ will contain pieces
  \newtoks\Initialtoks@  \newtoks\Terminaltoks@
  \def\SPLIT@{\expandafter\SPLITT@\expandafter}
  \def\SPLITT@0#1@#2@{\def\TTILPS@##1#1##2@{%
     \Initialtoks@{##1}\Terminaltoks@{##2}}\expandafter\TTILPS@#2@}

 %%%% MACROS TO TRIM  \ForeTrim@0#1@ and \Trim@0#1@  
   %% result appears in \Trimtoks@
   %% LIMITATION: assume no multiple spaces to trim

  \newtoks\Trimtoks@

  %%% \ForeTrim@0#1@ trims initial space of first erpansion of #1
   %% #1 of form \the\toks0 or \mymacro
 \def\ForeTrim@{\expandafter\ForeTrim@@\expandafter}
 \def\ForePrim@0 #1@{\Trimtoks@{#1}}
 \def\ForeTrim@@0#1@{\IN@0\m@rker. @\m@rker.#1@%
     \ifIN@\ForePrim@0#1@%
     \else\Trimtoks@\expandafter{#1}\fi}
   %%\m@rker expands here to \m@@rker since spot initial,
   %% so no confusuion with \m@rker

  %%% \Trim@0#1@ trims init and terminal spaces 
   %% Same syntax.
   %% Warns if internal spaces found.
   %% 
  \def\Trim@0#1@{%
      \ForeTrim@0#1@%
      \IN@0 @\the\Trimtoks@ @%
        \ifIN@ 
             \SPLIT@0 @\the\Trimtoks@ @\Trimtoks@\Initialtoks@
             \IN@0\the\Terminaltoks@ @ @%
                 \ifIN@
                 \else \Trimtoks@ {FigNameWithSpace}%
                 \fi
        \fi
      }


  %%%% MATH MACROS (provisional)
    %% use dimen registers for reals; unit 1pt
    %% (numerical dimension arguments OK unless contrary noted)

  %%%% One needs the point token seq (pt with cat 12) USES dimen 0
   \newtoks\pt@ks
   \def \getpt@ks 0.0#1@{\pt@ks{#1}}
   \dimen0=0pt\relax\expandafter\getpt@ks\the\dimen0@

   %%% Convert dimen to "decimal multiplier"% USES dimens 0,2
  \newtoks\Realtoks% the output!
  \def\Real#1{%
    \dimen2=#1%
      \SPLIT@0\the\pt@ks @\the\dimen2@%%  lop off the points
       \Realtoks=\Initialtoks@%\showthe\Realtoks
            }

   %%% Multiplication 
      % USES dimens 0,2,4,6; preserves args; output \Product
   \newdimen\Product
   \def\Mult#1#2{%
     \dimen4=#1\relax
     \dimen6=#2%
     \Real{\dimen4}%
     \Product=\the\Realtoks\dimen6%
        }

   %%% Inverse 
     % USES dimens 0; preserves arg; output \Inverse
 \newdimen\Inverse
 \newdimen\hmxdim@ \hmxdim@=8192pt%halfmaxdimen
 \def\Invert#1{%
  \Inverse=\hmxdim@
  \dimen0=#1%
  \divide\Inverse \dimen0%
  \multiply\Inverse 8}

 %%% \Rescale#1#2#3  % USES dimens 0,2,4,6
  %%  alters dimen register #1 by ratio #2/#3 
  %%  where #2,#3 can be raw dimensions OR dimen registers
   \def\Rescale#1#2#3{% Adequate accuracy. Can improve. 
              \divide #1 by 100\relax
              \dimen2=#3\divide\dimen2 by 100 \Invert{\dimen2}% 
              \Mult{#1}{#2}%
              \Mult\Product\Inverse 
              #1=\Product}

 %%% \Scale#1 scales dimen register #1 
   %  by dimen register real \TheScale; USES dimens 0
  \def\Scale#1{\dimen0=\TheScale %
      \divide #1 by  1280 %% 1280*5120*10=1000*2^16 
      \divide \dimen0 by 5120 % 
      \multiply#1 by \dimen0 
      \divide#1 by 10   %% max size of #1 about 32000/10 pt
     }
 
 %%% SCRUNCHING BOXES AND SHIFTING CONTENTS
  %% TeX has to do this in general
  %% since some drivers do not let 
  %% one do it readily using Postscript

 \newbox\scrunchbox

 %%% \Scrunched#1 puts #1 in an hbox
  %%    then in effect zeros the dimensions of this box
 \def\Scrunched#1{{\setbox\scrunchbox\hbox{#1}%
   \wd\scrunchbox=0pt
   \ht\scrunchbox=0pt
   \dp\scrunchbox=0pt
   \box\scrunchbox}}

  %%% \Shifted@#1 puts #1 in \hbox 
   %% then locates basepoint to bottom left corner
   %% then translates ink only by \XShift@,\YShift@
   %% with Postscript convention
   %% For simplicity use only on scrunched boxes
  %\newdimen\XShift@ 
  %\newdimen\YShift@ 
 \def\Shifted@#1{%
   \vbox {\kern-\YShift@
       \hbox {\kern\XShift@\hbox{#1}\kern-\XShift@}%
           \kern\YShift@}}

  %%% \cBoxedEPSF#1 the main macro
   %%  component macros are explained in order below

 \def\cBoxedEPSF#1{{{}\leavevmode %{} fixes box mirage for \Mas
   \ReadNameAndScale@{#1}%
   \SetEPSFSpec@
   \ReadEPSFile@ \ReadBdB@x  
   %% Calculations
     \TrimFigDims@ 
     \CalculateFigScale@  
     \ScaleFigDims@
     \SetInkShift@
   \hbox{$\mathsurround=0pt\relax
         \vcenter{\hbox{%
             \FrameSpider{\hskip-.4pt\vrule}%
             \vbox to \Ht@{\offinterlineskip\parindent=\z@%
                \FrameSpider{\vskip-.4pt\hrule}\vfil 
                \hbox to \Wd@{\hfil}%
                \vfil
                \InkShift@{\EPSFSpecial{\EPSFSpec@}{\FigSc@leReal}}%
             \FrameSpider{\hrule\vskip-.4pt}}%
         \FrameSpider{\vrule\hskip-.4pt}}}%
     $}%
    \CleanRegisters@ 
    \ms@g{ *** Box composed for the % 
         EPSF file \the\EPSFNametoks@}%
    }}      %% double brace for amstex \allign, \alligned, ...

 
 \def\tBoxedEPSF#1{\setbox4\hbox{\cBoxedEPSF{#1}}%
     \setbox4\hbox{\raise -\ht4 \hbox{\box4}}%
     \box4
      }

 \def\bBoxedEPSF#1{\setbox4\hbox{\cBoxedEPSF{#1}}%
     \setbox4\hbox{\raise \dp4 \hbox{\box4}}%
     \box4
      }

  \let\BoxedEPSF\cBoxedEPSF% default setting

  %% Some compatibility with BoxedArt.tex
   %
   \let\BoxedArt\BoxedEPSF

  %% Some compatibility with Sweet-teX
   %
  \def\gLinefigure[#1scaled#2]_#3{%
        \BoxedEPSF{#3 scaled #2}}
    
  %% Some compatibility with Rokicki's dvips
   %
  \let\EPSFbox\bBoxedEPSF \let\EPSFfile\bBoxedEPSF
  
  \def\EPSFxsize{\afterassignment\ForceW@\ForcedDim@@}
      \def\ForceW@{\ForcedDim@true\ForcedHeight@false}
  
  \def\EPSFysize{\afterassignment\ForceH@\ForcedDim@@}
      \def\ForceH@{\ForcedDim@true\ForcedHeight@true}


 %%% \ReadNameAndScale@#1
  %
 \def\ReadNameAndScale@#1{\IN@0 scaled@#1@% DOUBLE BARRELED
   \ifIN@\ReadNameAndScale@@0#1@%
   \else \ReadNameAndScale@@0#1 scaled\DefaultMilScale @
   \fi}
  
 \def\ReadNameAndScale@@0#1scaled#2@{% HELPER MACRO
    \let\OldBackslash@\\%
    \def\\{\OtherB@ckslash}%
    \edef\temp@{#1}%
    \Trim@0\temp@ @%
    \EPSFNametoks@\expandafter{\the\Trimtoks@ }%
    \FigScale=#2 pt%
    \let\\\OldBackslash@
    }
 
 \def\SetDefaultEPSFScale#1{%
      \global\def\DefaultMilScale{#1}}

 \SetDefaultEPSFScale{1000}


 %%% \ReadEPSFile@
  %
 \def \SetBogusBbox@{%
     \global\BdBoxtoks@{ BoundingBox:0 0 100 100 }%
     \global\def\BdBoxLine@{ BoundingBox:0 0 100 100 }%
     \ms@g{ !!! Will use placeholder !!!}%
     }

 {\catcode`\%=12\gdef\P@S@{%!}} %% %! min sign of PS file

 \def\ReadEPSFile@{%\show\EPSFSpec@%
     \openin\EPSFile@\EPSFSpec@
     \relax  %necessary to prevent precocious expansion of \ifeof
  \ifeof\EPSFile@
     \ms@g{}%
     \ms@g{ !!! EPS FILE \the\EPSFDirectorytoks@
       \the\EPSFNametoks@\ WAS NOT FOUND !!!}
     \SetBogusBbox@
  \else%\fi
   \begingroup%%
   \catcode`\%=12\catcode`\:=12\catcode`\!=12
   \catcode`\G=14\catcode`\\=14\relax% 14 is comment
   \global\read\EPSFile@ to \BdBoxLine@%\show\BdBoxLine@
   \IN@0\P@S@ @\BdBoxLine@ @%
   \ifIN@ %% %! accepted as %!PS so do BdBox search!!
     \NotIn@true
     \loop   
       \ifeof\EPSFile@\NotIn@false 
         \ms@g{}%
         \ms@g{ !!! BoundingBox NOT FOUND IN %
            \the\EPSFDirectorytoks@\the\EPSFNametoks@\ !!! }%
         \SetBogusBbox@
       \else\global\read\EPSFile@ to \BdBoxLine@
       %\show\BdBoxLine@
       \fi
       \global\BdBoxtoks@\expandafter{\BdBoxLine@}%
       \IN@0BoundingBox:@\the\BdBoxtoks@ @%
       \ifIN@\NotIn@false\fi%
     \ifNotIn@\repeat
   \else
         \ms@g{}%
         \ms@g{ !!! \the\EPSFNametoks@\ not PS!\  !!!}%
         \SetBogusBbox@
   \fi
  \endgroup\relax
  \fi
  \closein\EPSFile@ 
   }


  %%% \ReadBdB@x
   % Rmk For simplicity 0 not used in syntax 
   %  of \ReadBdB@x@,  \ReadBdB@x@@ 
  \def\ReadBdB@x{% PART 0
   \expandafter\ReadBdB@x@\the\BdBoxtoks@ @}
  
  \def\ReadBdB@x@#1BoundingBox:#2@{% PART 1
    \ForeTrim@0#2@%
    \IN@0atend@\the\Trimtoks@ @%
       \ifIN@\Trimtoks@={0 0 100 100 }%
         \ms@g{}%
         \ms@g{ !!! BoundingBox not found in %
         \the\EPSFDirectorytoks@\the\EPSFNametoks@\space !!!}%
         \ms@g{ !!! It must not be at end of EPSF !!!}%
         \ms@g{ !!! Will use placeholder !!!}%
       \fi%% cf \SetBogusBbox@
    \expandafter\ReadBdB@x@@\the\Trimtoks@ @%
   }
    
  \def\ReadBdB@x@@#1 #2 #3 #4@{% PART 2
      \Wd@=#3bp\advance\Wd@ by -#1bp%
      \Ht@=#4bp\advance\Ht@ by-#2bp%
       \Wd@@=\Wd@ \Ht@@=\Ht@ %% useful info for Clark
       \LLXtoks@={#1}\LLYtoks@={#2}%% useful info for Oz
      \ifPSOrigin\XShift@=-#1bp\YShift@=-#2bp\fi 
     }

  %%% \SetEPSFDirectory 
   %
   \def\G@bbl@#1{}
   \bgroup
     \global\edef\OtherB@ckslash{\expandafter\G@bbl@\string\\}
   \egroup

  \def\SetEPSFDirectory{%  Part 1
           \bgroup\PunctOther@\relax
           \let\\\OtherB@ckslash
           \SetEPSFDirectory@}

 \def\SetEPSFDirectory@#1{% Part 2
    \edef\temp@{#1}%
    \Trim@0\temp@ @%  result in \Trimtoks@
    \global\toks1\expandafter{\the\Trimtoks@ }\relax
    \egroup
    \EPSFDirectorytoks@=\toks1
    }

  %%% \SetEPSFSpec@
 \def\SetEPSFSpec@{%
     \bgroup
     \let\\=\OtherB@ckslash
     \global\edef\EPSFSpec@{%
        \the\EPSFDirectorytoks@\the\EPSFNametoks@}%
     \global\edef\EPSFSpec@{\EPSFSpec@}%
     \egroup}
   

 %%% \TrimFigDims@ 
  % 
 \def\TrimTop#1{\advance\TT@ by #1}
 \def\TrimLeft#1{\advance\LT@ by #1}
 \def\TrimBottom#1{\advance\BT@ by #1}
 \def\TrimRight#1{\advance\RT@ by #1}

 \def\TrimBoundingBox#1{%
   \TrimTop{#1}%
   \TrimLeft{#1}%
   \TrimBottom{#1}%
   \TrimRight{#1}%
       }

 \def\TrimFigDims@{%
    \advance\Wd@ by -\LT@ 
    \advance\Wd@ by -\RT@ \RT@=\z@
    \advance\Ht@ by -\TT@ \TT@=\z@
    \advance\Ht@ by -\BT@ 
    }


 %%% \CalculateFigScale@
  %
  \def\ForceWidth#1{\ForcedDim@true
       \ForcedDim@@#1\ForcedHeight@false}
  
  \def\ForceHeight#1{\ForcedDim@true
       \ForcedDim@@=#1\ForcedHeight@true}

  \def\ForceOn{\ForceOn@true}
  \def\ForceOff{\ForceOn@false\ForcedDim@false}
  
  \def\epsfxsize{\afterassignment\ForceW@\ForcedDim@@}
      \def\ForceW@{\ForcedDim@true\ForcedHeight@false}
  
  \def\epsfysize{\afterassignment\ForceH@\ForcedDim@@}
      \def\ForceH@{\ForcedDim@true\ForcedHeight@true}
  
  \def\CalculateFigScale@{%
            %Have default \FigScale or read \FigScale
     \ifForcedDim@\FigScale=1000pt% %% start afresh
           \ifForcedHeight@
                \Rescale\FigScale\ForcedDim@@\Ht@
           \else
                \Rescale\FigScale\ForcedDim@@\Wd@
           \fi
     \fi
     \Real{\FigScale}%
     \edef\FigSc@leReal{\the\Realtoks}%
     }
   
  \def\ScaleFigDims@{\TheScale=\FigScale
      \ifForcedDim@
           \ifForcedHeight@ \Ht@=\ForcedDim@@  \Scale\Wd@
           \else \Wd@=\ForcedDim@@ \Scale\Ht@
           \fi
      \else \Scale\Wd@\Scale\Ht@        
      \fi
      \ifForceOn@\relax\else\global\ForcedDim@false\fi
      \Scale\LT@\Scale\BT@  %%%\Scale\Wd@\Scale\Ht@
      \Scale\XShift@\Scale\YShift@
      }
      
  %%% \ShowReservedBoxes
   %%  shows (prints) corrected scaled and positioned
   %%  bounding boxes; for diagnostics
  %%% \HideReservedBoxes makes them invisible again
   %%
 \def\HideReservedBoxes{\global\def\FrameSpider##1{\null}}
 \def\ShowReservedBoxes{\global\def\FrameSpider##1{##1}}
 \let\HideDisplacementBoxes\HideReservedBoxes  %% some synonyms
 \let\ShowDisplacementBoxes\ShowReservedBoxes
 \let\HideFigureFrames\HideReservedBoxes
 \let\ShowFigureFrames\ShowReservedBoxes
  \ShowDisplacementBoxes
 
  %%% \hSlide#1, \vSlide#1
   %%
 \def\hSlide#1{\advance\XSlide@ by #1}
 \def\vSlide#1{\advance\YSlide@ by #1}
 
  %%% \SetInkShift@, \InkShift@#1
   %%
  \def\SetInkShift@{%
            \advance\XShift@ by -\LT@
            \advance\XShift@ by \XSlide@
            \advance\YShift@ by -\BT@
            \advance\YShift@ by -\YSlide@
             }
   %
  \def\InkShift@#1{\Shifted@{\Scrunched{#1}}}
 
  %%% \CleanRegisters@
   %
  \def\CleanRegisters@{%
      \globaldefs=1\relax
        \XShift@=\z@\YShift@=\z@\XSlide@=\z@\YSlide@=\z@
        \TT@=\z@\LT@=\z@\BT@=\z@\RT@=\z@
      \globaldefs=0\relax}

 %%% Special syntax for several drivers. The macros 
  %% \SetTexturesEPSFSpecial  %% Textures 
  %% \SetUnixCoopEPSFSpecial %% dvi2ps early unix 
  %% \SetBetcholsheimEPSFSpecial %% dvi2ps by S.P.Betcholsheim
  %% \SetLisEPSFSpecial %% dvi2ps by Tony Lis
  %% \SetRokickiEPSFSpecial  %% dvips by Tom Rokicki
  %% \SetOzTeXEPSFSpecial  %% OzTeX by Andrew Trevorrow
  %% \SetOzTeXPreviewedEPSFSpecial %% OzTeX >= 1.42 by Andrew Trevorrow
  %% \SetPSprintEPSFSpecial %% PSprint by Andrew Trevorrow
  %% \SetArborEPSFSpecial  %% ArborTeX DVILASER/PS
  %% \SetClarkEPSFSpecial %% dvitops by James Clark
  %% \SetDVIPSoneEPSFSpecial %% DVIPSONE of Y&Y 
  %% \SetBeebeEPSFSpecial %% DVIALW by N. Beebe
  %% \SetNorthlakeEPSFSpecial %% Northlake Software
  %% \SetStandardEPSFSpecial %% Nonexistant: Placebo below
  %% These macros adapt to various drivers roughly
  %% by (re-)defining the macro \EPSFSpecial#1#2, where
  %% #1 = EPS file pathname (use \\ for the letter backslash)
  %% #2 = scale in mils 
  %% Be wary of using strange characters in pathnames!
 
 %% Textures, Blue Sky Research, Barry Smith
 \def\SetTexturesEPSFSpecial{\PSOriginfalse%\PSOrigintrue
  \gdef\EPSFSpecial##1##2{\relax
    \edef\specialthis{##2}%
    \SPLIT@0.@\specialthis.@\relax
    %\showthe\Initialtoks@
    \special{illustration ##1 scaled
                        \the\Initialtoks@}}}
 
  %% Unix : dvi2ps by:  Mark Senn, Stephan  Bechtolsheim,  
   % Bob  Brown, Richard, Furuta, James Schaad, 
   % Robert  Wells, Norm Hutchinson, Neal Holtz.
   % Introduced by B. Horn <bkph@ai.mit.edu>
  \def\SetUnixCoopEPSFSpecial{\PSOrigintrue % Please test!
   \gdef\EPSFSpecial##1##2{%
      \dimen4=##2pt% convert real to dimen
      \divide\dimen4 by 1000\relax
      \Real{\dimen4}%dimens 0,2 used here
      \edef\Aux@{\the\Realtoks}%  
      %%convert dimen to real
      \special{psfile=##1\space 
        hscale=\Aux@\space
        vscale=\Aux@}}}

  %% dvi2ps by S.P. Bechtolsheim,
   % implantations? ; dates?; availability?
   % Introduced by B. Horn <bkph@ai.mit.edu>; please test!!
  \def\SetBechtolsheimEPSFSpecial{\PSOrigintrue 
   \gdef\EPSFSpecial##1##2{%
      \dimen4=##2pt% convert real to dimen
      \divide\dimen4 by 1000\relax
      \Real{\dimen4}% dimens 0,2 used here
      \edef\Aux@{\the\Realtoks}%  
      %%convert dimen to real
      \special{ps: psfiginit}%
      \special{ps: literal 1 1 0 0 1 1 startTexFig
           \the\mag\space 1000 div \Aux@\space mul 
           \the\mag\space 1000 div \Aux@\space mul scale}%
      \special{ps: include  ##1}%
      \special{ps: literal endTexFig}%
        }}

  %% dvi2ps by Tony Lis,
   % implantations? ; dates?; availability?
   % Introduced by B. Horn <bkph@ai.mit.edu>; please test!!
  \def\SetLisEPSFSpecial{\PSOrigintrue 
   \gdef\EPSFSpecial##1##2{%
      \dimen4=##2pt% convert real to dimen
      \divide\dimen4 by 1000\relax
      \Real{\dimen4}% dimens 0,2 used here
      \edef\Aux@{\the\Realtoks}%  
      %%convert dimen to real
      \special{pstext="1 1 0 0 1 1 startTexFig\space
           \the\mag\space 1000 div \Aux@\space mul 
           \the\mag\space 1000 div \Aux@\space mul scale}%
      \special{psfile=##1}%
      \special{pstext=endTexFig}%
        }}

  %% dvips by Tom Rokicki; driver in portable C 
   % This driver improves on dvi2ps; its Postscript
   % output is thee times as compact as that 
   % produced by dvi2ps
   % Introduced by W.D. Neumann <neumann@mps.ohio-state.edu>
  \def\SetRokickiEPSFSpecial{\PSOrigintrue 
   \gdef\EPSFSpecial##1##2{%
      \dimen4=##2pt% convert real to dimen
      \divide\dimen4 by 10\relax
      \Real{\dimen4}% dimens 0,2 used here
      \edef\Aux@{\the\Realtoks}%  
      %%convert dimen to real
      \special{psfile="##1"\space 
        hscale=\Aux@\space
        vscale=\Aux@}}}

  \def\SetInlineRokickiEPSFSpecial{\PSOrigintrue 
   \gdef\EPSFSpecial##1##2{%
      \dimen4=##2pt% convert real to dimen
      \divide\dimen4 by 1000\relax
      \Real{\dimen4}% dimens 0,2 used here
      \edef\Aux@{\the\Realtoks}%  
      %%convert dimen to real
      \special{ps::[begin] 1 1 0 0 1 1 startTexFig\space
           \the\mag\space 1000 div \Aux@\space mul 
           \the\mag\space 1000 div \Aux@\space mul scale}%
      \special{ps: plotfile ##1}%
      \special{ps::[end] endTexFig}%
        }}

  %% OzTeX (all versions; no preview), by AndrewTrevorrow, 
  \def\SetOzTeXEPSFSpecial{\PSOriginfalse % artifice; see below
  \gdef\EPSFSpecial##1##2{%note order
     \special{##1\space 
       ##2 1000 div \the\mag\space 1000 div mul
       ##2 1000 div \the\mag\space 1000 div mul scale
       \the\LLXtoks@\space neg 
       \the\LLYtoks@\space neg translate
             }}} 
  
 %%  OzTeX (beta versions 1.41-2), by Andrew Trevorrow
 %  complete public domain TeX for Macintosh
 %  Send 10 UNFORMATTED 800K disks 
 %  with return postage 
 %  Peter Abbott, Computing Service, 
 %  Aston University, Aston Triangle, Birmingham B4 7ET
 \def\SetOzTeXPreviewedEPSFSpecial{\PSOrigintrue
 \gdef\EPSFSpecial##1##2{%
 \dimen4=##2pt%% convert real to dimen
 \divide\dimen4 by 1000\relax
 \Real{\dimen4}%% dimens 0,2 used here
 \edef\Aux@{\the\Realtoks}%% convert dimen to real
 \special{epsf="##1"\space scale=\Aux@}%
 }} 

 %% PSprint,  by AndrewTrevorrow for VaX VMS
  % diagnosed and tested 2-91 by Max Calviani 
  % <ISICA@ASTRPD.infn.it>
  \let\SetPSprintEPSFSpecial\SetOzTeXEPSFSpecial
  \let\SetPsprintEPSFSpecial\SetOzTeXEPSFSpecial

 %% DVILASER/PS driver originally written by David Fuchs
  % marketed and supported by ArborTeXt  535 W. William St.
  % Suite 300, Ann Arbor, MI 48103, U.S.A
  % (313) 996-3566 (313) 996-3573
  % help@arbortext.com, Andrew Dobrowolski
 \def\SetArborEPSFSpecial{\PSOriginfalse % check!
   \gdef\EPSFSpecial##1##2{%
     \edef\specialthis{##2}%
     \SPLIT@0.@\specialthis.@\relax % suppress decimals (nec!)
     \special{ps: epsfile ##1\space \the\Initialtoks@}}}

 %% dvitops, (c) James Clark <jjc@jclark.uucp>
  % public domain; distributed by UK TeX Archive
  % computers: unix, msdos, vms, primos and vm/cms,
  % (introduced by S. Ratz <spqr@uk.ac.southampton.ecs>)
 \def\SetClarkEPSFSpecial{\PSOriginfalse % please test!
   \gdef\EPSFSpecial##1##2{%
     \Rescale {\Wd@@}{##2pt}{1000pt}%
     \Rescale {\Ht@@}{##2pt}{1000pt}%
     \special{dvitops: import 
           ##1\space\the\Wd@@\space\the\Ht@@}}}

 %% DVIPSONE, for PC compatibles
  % Y&Y, 106 Indian Hill, Carlisle MA 01741, USA
  % (508) 371-3286
  % (introduced by B. Horn <bkph@ai.mit.edu>)
  \let\SetDVIPSONEEPSFSpecial\SetUnixCoopEPSFSpecial
  \let\SetDVIPSoneEPSFSpecial\SetUnixCoopEPSFSpecial

 %% DVIALW by N. Beebe, public domain, charge $100 
  % DVI Driver Distribution, Center for Scientific Computing,
  % Department of Mathematics, 220 South Physics Building,
  % University of Utah, Salt Lake City, UT 84112, USA
  % (introduced by B. Horn <bkph@ai.mit.edu>)
  \def\SetBeebeEPSFSpecial{%please test!
   \PSOriginfalse% 
   \gdef\EPSFSpecial##1##2{\relax
    \special{language "PS"
      literal "##2 1000 div ##2 1000 div scale
      position = "bottom left",
      include "##1"}}}
  \let\SetDVIALWEPSFSpecial\SetBeebeEPSFSpecial

 %% Northlake software
  \def\SetNorthlakeEPSFSpecial{\PSOrigintrue
   \gdef\EPSFSpecial##1##2{%
     \edef\specialthis{##2}%
     \SPLIT@0.@\specialthis.@\relax % suppress decimals (nec!)
     \special{insert ##1,magnification=\the\Initialtoks@}}}


 \def\SetStandardEPSFSpecial{%
   \gdef\EPSFSpecial##1##2{%
     \ms@g{}
     \ms@g{%
       !!! Sorry! There is still no standard for \string%
       \special\ EPSF integration !!!}%
     \ms@g{%
      --- So you will have to identify your driver using a command}%
     \ms@g{%
      --- of the form \string\Set...EPSFSpecial, in order to get}%
     \ms@g{%
      --- your graphics to print.  See BoxedEPS.doc.}%
     \ms@g{}
     \KillEPSFSpecial
     }}

  \def\KillEPSFSpecial{\gdef\EPSFSpecial##1##2{}}

  \SetStandardEPSFSpecial %% currently gives warning
 
 \let\wlog\wlog@ld %%restore logging 

 \catcode`\:=\C@tColon
 \catcode`\;=\C@tSemicolon
 \catcode`\?=\C@tQmark
 \catcode`\!=\C@tEmark

 \catcode`\@=\CatAt

%%%%%%%%%%%% ASCII Character test
 %
 %       Upper case letters: ABCDEFGHIJKLMNOPQRSTUVWXYZ
 %       Lower case letters: abcdefghijklmnopqrstuvwxyz
 %                                   Digits: 0123456789
 % Square, curly, angle braces, parentheses: [] {} <> ()
 %           Backslash, slash, vertical bar: \ / |
 %                              Punctuation: . ? ! , : ;
 %          Underscore, hyphen, equals sign: _ - =
 %                Quotes--right left double: ' ` "
 %"at", "number" "dollar", "percent", "and": @ # $ % &
 %           "hat", "star", "plus", "tilde": ^ * + ~
 %
 %%%%%%%%%%%%%%%%%%%%%%%%
 %
 % Une seule erreur de transmission peut empoisoner un programme!
 %
 % A single transmission error can poison a whole program.
 %
 %%%%%%%%%%%%%%%%%%%%%%%%
\let\epsffile\EPSFfile
 
  %%%%% \FigureTitle %%%%% 
  \def\FigureTitle#1{\medskip%
        \centerline{\Figurefont #1\unskip}%
        }  
    
  \catcode`\@=11
     
 %%%%% COMPATIBILITY with osudeG.sty    
  %%
 \let\Mas\relax\let\mas\relax
 \let\Sam\relax\let\sam\relax
 \let\HideEdStuff\relax
 \let\PrintEdStuff\relax
 \let\KillEdStuff\relax
 \let\ShowEdStuff\relax
 \let\change\relax
 \let\beginchange\relax
 \let\endchange\relax
 \let\cbar\relax
 \let\ccbar\relax
 \let\Ninepoint\relax
 \let\ninepoint\relax
 \def\StdMathsurround{\dimen0}
 \let\LoadCMFonts\relax 
 \let\LoadPSFonts\relax 
 \let\LoadNinepoint\relax 
 \let\lBr[ 
 \let\rBr] 
 \let\SetdeGEPSFSpecial\relax
 \def\cal{\fam\tw@}

 \def\SetAuthorHead#1{}
 \def\SetTitleHead#1{}
 \def\ednote#1{}
 \def\Ednote#1{}
 
 
 %%% AmS vs Plain differences 
  \ifx\amstexloaded@\relax 
     %\message{amstex is loaded}%
     %% forget the text only warnings incompatible with Plain
          \def\textonlyfont@#1#2{\def#1{#2}}
          \def\textfont@#1#2{\def#1{#2}}
  \else 
     %\message{amstex is NOT loaded}
   \fi 
   
 %%% Restoring 
   \let\wlog\wlog@ld %%restore logging 
   \catcode`\@=\CatAt  %%12 or 13

  \endinput
 





