%%% ====================================================================
%%%  @LaTeX-style-file{
%%%     author          = "Alan Jeffrey",
%%%     version         = "1.1",
%%%     date            = "02 June 1992",
%%%     time            = "14:58:36 BST",
%%%     filename        = "msam.sty",
%%%     address         = "School of Cognitive and Computing Sciences
%%%                        University of Sussex
%%%                        Brighton BN1 9QH
%%%                        UK",
%%%     telephone       = "+44 273 606755 x 3238",
%%%     FAX             = "+44 273 678188",
%%%     checksum        = "23694 285 580 10809",
%%%     email           = "alanje@cogs.sussex.ac.uk",
%%%     codetable       = "ISO/ASCII",
%%%     keywords        = "LaTeX fonts AMS",
%%%     supported       = "yes",
%%%     abstract        = "This module imports the AMS A symbol font.",
%%%     docstring       = "This module imports the AMS A symbol font.
%%%                        It uses the module document style option,
%%%                        which allows symbols to be loaded
%%%                        individually, thus bypassing the need for
%%%                        \newsymbol, and for the user to need to
%%%                        know where each symbol is in the font
%%%                        layout.
%%%
%%%                        It is described in stmaryrd.tex.
%%%
%%%                        Copyright 1992 Alan Jeffrey.
%%%
%%%                        The checksum field above contains a CRC-16
%%%                        checksum as the first value, followed by the
%%%                        equivalent of the standard UNIX wc (word
%%%                        count) utility output of lines, words, and
%%%                        characters.  This is produced by Robert
%%%                        Solovay's checksum utility.",
%%%     package         = "St Mary's Road",
%%%     dependencies    = "module.sty",
%%%  }
%%% ====================================================================
%%%
%%% 23 May 1991, v1.01: file created.
%%%
%%% 21 Jun 1991, v1.02: Updated for the new module.sty.
%%%
%%% 7 Jul 1991, v1.03: Added \sqsubset and \sqsupset.
%%%
%%% 15 Aug 1991, v1.04: Added \checkmark.
%%%
%%% 2 Jun 1992, v1.1: Added the headers.

% 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\sqsubset"3!40\fi
\ifdef\then\mathchardef\sqsupset"3!41\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

\ifdef\then\textchardef\checkmark"!58\fi

% Change the catcode of ! back to other.

\catcode`\!=12

% Set our own name:

\settag\modulemsamloaded

% And that's it.
