% Filename msam.sty
% Author Alan Jeffrey
% E-mail jeffrey@cs.chalmers.se
% Last modified 21 Jun 1991

% Copyright 1991 AlanJeffrey.

% 23 May 1991: file created.
%
% 21 Jun 1991: Updated for the new module.sty.

% This is the module for importing the AMS A symbol font.
% It's pretty incomplete at the moment, and specifically doesn't
% understand the \substitutesymbols tag.
%
% But it's a start.

\@ifundefined{modulemoduleloaded}{\input module.sty}{}

% The first time the module is loaded, we grab the fonts.

\iftest \tagisset\modulemsamloaded \then \else

   \iftest \tagisset\newfontselection \then

      \new@mathgroup\msa@group
      \define@mathgroup\mv@normal\msa@group{msa}{m}{n}
      \define@mathgroup\mv@bold\msa@group{msa}{m}{n}

      \new@fontshape{msa}{m}{n}{%
         <5>msam5%
         <6>msam6%
         <7>msam7%
         <8>msam8%
         <9>msam9%
         <10>msam10%
         <11>msam10 at10.95pt%
         <12>msam10 at12pt%
         <14>msam10 at14.4pt%
         <17>msam10 at17.28pt%
         <20>msam10 at20.736pt%
         <25>msam10 at24.8832pt}{}

   \else

      \newfam\msa@group

      \font\msamfiv  msam5
      \font\msamsix  msam6
      \font\msamsev  msam7
      \font\msamegt  msam8
      \font\msamnin  msam9
      \font\msamten  msam10
      \font\msamelv  msam10 at10.95pt
      \font\msamtwl  msam10 at12pt
      \font\msamfrtn msam10 at14.4pt
      \font\msamsvtn msam10 at17.28pt
      \font\msamtwty msam10 at20.736pt
      \font\msamtwfv msam10 at24.8832pt

      \@addfontinfo\@vpt{\textfont\msa@group\msamfiv
         \scriptfont\msa@group\msamfiv
         \scriptscriptfont\msa@group\msamfiv}
      \@addfontinfo\@vipt{\textfont\msa@group\msamsix
         \scriptfont\msa@group\msamsix
         \scriptscriptfont\msa@group\msamsix}
      \@addfontinfo\@viipt{\textfont\msa@group\msamsev
         \scriptfont\msa@group\msamsix
         \scriptscriptfont\msa@group\msamfiv}
      \@addfontinfo\@viiipt{\textfont\msa@group\msamegt
         \scriptfont\msa@group\msamsix
         \scriptscriptfont\msa@group\msamfiv}
      \@addfontinfo\@ixpt{\textfont\msa@group\msamnin
         \scriptfont\msa@group\msamsix
         \scriptscriptfont\msa@group\msamfiv}
      \@addfontinfo\@xpt{\textfont\msa@group\msamten
         \scriptfont\msa@group\msamsev
         \scriptscriptfont\msa@group\msamfiv}
      \@addfontinfo\@xipt{\textfont\msa@group\msamelv
         \scriptfont\msa@group\msamsev
         \scriptscriptfont\msa@group\msamfiv}
      \@addfontinfo\@xiipt{\textfont\msa@group\msamtwl
         \scriptfont\msa@group\msamegt
         \scriptscriptfont\msa@group\msamsix}
      \@addfontinfo\@xivpt{\textfont\msa@group\msamfrtn
         \scriptfont\msa@group\msamten
         \scriptscriptfont\msa@group\msamsev}
      \@addfontinfo\@xviipt{\textfont\msa@group\msamsvtn
         \scriptfont\msa@group\msamtwl
         \scriptscriptfont\msa@group\msamten}
      \@addfontinfo\@xxpt{\textfont\msa@group\msamtwty
         \scriptfont\msa@group\msamfrtn
         \scriptscriptfont\msa@group\msamtwl}
      \@addfontinfo\@xxvpt{\textfont\msa@group\msamtwfv
         \scriptfont\msa@group\msamtwty
         \scriptscriptfont\msa@group\msamsvtn}
   \fi

\fi

% For the rest of the style, ! is the hex number of the family.

\catcode`\!\active
\edef!{\hexnumber@\msa@group}

% Then we load those symbols!

\ifdef\then\mathchardef\square"0!03\fi
\ifdef\then\mathchardef\blacksquare"0!04\fi
\ifdef\then\mathchardef\lozenge"0!06\fi
\ifdef\then\mathchardef\blacklozenge"0!07\fi
\ifdef\then\mathchardef\backprime"0!38\fi
\ifdef\then\mathchardef\bigstar"0!46\fi
\ifdef\then\mathchardef\blacktriangledown"0!48\fi
\ifdef\then\mathchardef\blacktriangle"0!4E\fi
\ifdef\then\mathchardef\triangledown"0!4F\fi
\ifdef\then\mathchardef\measuredangle"0!5D\fi
\ifdef\then\mathchardef\sphericalangle"0!5E\fi
\ifdef\then\mathchardef\circledS"0!73\fi
\ifdef\then\mathchardef\complement"0!7B\fi

\ifdef\then\mathchardef\boxdot"2!00\fi
\ifdef\then\mathchardef\boxplus"2!01\fi
\ifdef\then\mathchardef\boxtimes"2!02\fi
\ifdef\then\mathchardef\centerdot"2!05\fi
\ifdef\then\mathchardef\boxminus"2!0C\fi
\ifdef\then\mathchardef\veebar"2!59\fi
\ifdef\then\mathchardef\barwedge"2!5A\fi
\ifdef\then\mathchardef\doublebarwedge"2!5B\fi
\ifdef\then\mathchardef\Cup"2!64\fi
\ifdef\then\mathchardef\doublecup"2!64\fi
\ifdef\then\mathchardef\Cap"2!65\fi
\ifdef\then\mathchardef\doublecap"2!65\fi
\ifdef\then\mathchardef\curlywedge"2!66\fi
\ifdef\then\mathchardef\curlyvee"2!67\fi
\ifdef\then\mathchardef\leftthreetimes"2!68\fi
\ifdef\then\mathchardef\rightthreetimes"2!69\fi
\ifdef\then\mathchardef\dotplus"2!75\fi
\ifdef\then\mathchardef\intercal"2!7C\fi
\ifdef\then\mathchardef\circledcirc"2!7D\fi
\ifdef\then\mathchardef\circledast"2!7E\fi
\ifdef\then\mathchardef\circleddash"2!7F\fi

\ifdef\then\mathchardef\circlearrowright"3!08\fi
\ifdef\then\mathchardef\circlearrowleft"3!09\fi
\ifdef\then\mathchardef\rightleftharpoons"3!0A\fi
\ifdef\then\mathchardef\leftrightharpoons"3!0B\fi
\ifdef\then\mathchardef\twoheadrightarrow"3!10\fi
\ifdef\then\mathchardef\twoheadleftarrow"3!11\fi
\ifdef\then\mathchardef\leftleftarrows"3!12\fi
\ifdef\then\mathchardef\rightrightarrows"3!13\fi
\ifdef\then\mathchardef\upuparrows"3!14\fi
\ifdef\then\mathchardef\downdownarrows"3!15\fi
\ifdef\then\mathchardef\upharpoonright"3!16\fi
\ifdef\then\mathchardef\restriction"3!16\fi
\ifdef\then\mathchardef\downharpoonright"3!17\fi
\ifdef\then\mathchardef\upharpoonleft"3!18\fi
\ifdef\then\mathchardef\downharpoonleft"3!19\fi
\ifdef\then\mathchardef\rightarrowtail"3!1A\fi
\ifdef\then\mathchardef\leftarrowtail"3!1B\fi
\ifdef\then\mathchardef\leftrightarrows"3!1C\fi
\ifdef\then\mathchardef\rightleftarrows"3!1D\fi
\ifdef\then\mathchardef\rightsquigarrow"3!20\fi
\ifdef\then\mathchardef\leftrightsquigarrow"3!21\fi
\ifdef\then\mathchardef\looparrowleft"3!22\fi
\ifdef\then\mathchardef\looparrowright"3!23\fi
\ifdef\then\mathchardef\Rrightarrow"3!56\fi
\ifdef\then\mathchardef\Lleftarrow"3!57\fi

\ifdef\then\mathchardef\Vdash"3!0D\fi
\ifdef\then\mathchardef\Vvdash"3!0E\fi
\ifdef\then\mathchardef\vDash"3!0F\fi
\ifdef\then\mathchardef\Lsh"3!1E\fi
\ifdef\then\mathchardef\Rsh"3!1F\fi
\ifdef\then\mathchardef\circeq"3!24\fi
\ifdef\then\mathchardef\succsim"3!25\fi
\ifdef\then\mathchardef\gtrsim"3!26\fi
\ifdef\then\mathchardef\gtrapprox"3!27\fi
\ifdef\then\mathchardef\multimap"3!28\fi
\ifdef\then\mathchardef\therefore"3!29\fi
\ifdef\then\mathchardef\because"3!2A\fi
\ifdef\then\mathchardef\doteqdot"3!2B\fi
\ifdef\then\mathchardef\Doteq"3!2B\fi
\ifdef\then\mathchardef\triangleq"3!2C\fi
\ifdef\then\mathchardef\precsim"3!2D\fi
\ifdef\then\mathchardef\lesssim"3!2E\fi
\ifdef\then\mathchardef\lessapprox"3!2F\fi
\ifdef\then\mathchardef\eqslantless"3!30\fi
\ifdef\then\mathchardef\eqslantgtr"3!31\fi
\ifdef\then\mathchardef\curlyeqprec"3!32\fi
\ifdef\then\mathchardef\curlyeqsucc"3!33\fi
\ifdef\then\mathchardef\preccurlyeq"3!34\fi
\ifdef\then\mathchardef\leqq"3!35\fi
\ifdef\then\mathchardef\leqslant"3!36\fi
\ifdef\then\mathchardef\lessgtr"3!37\fi
\ifdef\then\mathchardef\risingdotseq"3!3A\fi
\ifdef\then\mathchardef\fallingdotseq"3!3B\fi
\ifdef\then\mathchardef\succcurlyeq"3!3C\fi
\ifdef\then\mathchardef\geqq"3!3D\fi
\ifdef\then\mathchardef\geqslant"3!3E\fi
\ifdef\then\mathchardef\gtrless"3!3F\fi
\ifdef\then\mathchardef\vartriangleright"3!42\fi
\ifdef\then\mathchardef\vartriangleleft"3!43\fi
\ifdef\then\mathchardef\trianglerighteq"3!44\fi
\ifdef\then\mathchardef\trianglelefteq"3!45\fi
\ifdef\then\mathchardef\between"3!47\fi
\ifdef\then\mathchardef\blacktriangleright"3!49\fi
\ifdef\then\mathchardef\blacktriangleleft"3!4A\fi
\ifdef\then\mathchardef\vartriangle"3!4D\fi
\ifdef\then\mathchardef\eqcirc"3!50\fi
\ifdef\then\mathchardef\lesseqgtr"3!51\fi
\ifdef\then\mathchardef\gtreqless"3!52\fi
\ifdef\then\mathchardef\lesseqqgtr"3!53\fi
\ifdef\then\mathchardef\gtreqqless"3!54\fi
\ifdef\then\mathchardef\varpropto"3!5F\fi
\ifdef\then\mathchardef\smallsmile"3!60\fi
\ifdef\then\mathchardef\smallfrown"3!61\fi
\ifdef\then\mathchardef\Subset"3!62\fi
\ifdef\then\mathchardef\Supset"3!63\fi
\ifdef\then\mathchardef\subseteqq"3!6A\fi
\ifdef\then\mathchardef\supseteqq"3!6B\fi
\ifdef\then\mathchardef\bumpeq"3!6C\fi
\ifdef\then\mathchardef\Bumpeq"3!6D\fi
\ifdef\then\mathchardef\lll"3!6E\fi
\ifdef\then\mathchardef\llless"3!6E\fi
\ifdef\then\mathchardef\ggg"3!6F\fi
\ifdef\then\mathchardef\gggtr"3!6F\fi
\ifdef\then\mathchardef\pitchfork"3!74\fi
\ifdef\then\mathchardef\backsim"3!76\fi
\ifdef\then\mathchardef\backsimeq"3!77\fi

% Change the catcode of ! back to other.

\catcode`\!=12

% Set our own name:

\settag\modulemsamloaded

% And that's it.
