summaryrefslogtreecommitdiff
path: root/macros/plain/contrib/plstmary
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
committerNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
commite0c6872cf40896c7be36b11dcc744620f10adf1d (patch)
tree60335e10d2f4354b0674ec22d7b53f0f8abee672 /macros/plain/contrib/plstmary
Initial commit
Diffstat (limited to 'macros/plain/contrib/plstmary')
-rw-r--r--macros/plain/contrib/plstmary/README50
-rw-r--r--macros/plain/contrib/plstmary/plstmary-doc.pdfbin0 -> 147866 bytes
-rw-r--r--macros/plain/contrib/plstmary/plstmary-doc.tex463
-rw-r--r--macros/plain/contrib/plstmary/stmary.tex260
4 files changed, 773 insertions, 0 deletions
diff --git a/macros/plain/contrib/plstmary/README b/macros/plain/contrib/plstmary/README
new file mode 100644
index 0000000000..59fda31371
--- /dev/null
+++ b/macros/plain/contrib/plstmary/README
@@ -0,0 +1,50 @@
+plstmary: St. Mary's Road symbols for plainTeX
+----------------------------------------------
+
+LEGAL STUFF:
+
+ This is public domain software. All files of the plstmary distribution
+ (listed below) may be distributed and/or modified without restriction.
+
+ While every effort has been made to make plstmary useful, it comes
+ with no warranty, expressed or implied.
+
+MANIFEST:
+
+This distribution consists of the files
+
+ * stmary.tex Macros for use in plain TeX.
+ * README What you are reading now.
+ * plstmary-doc.pdf Documentation.
+ * plstmary-doc.tex Documentation source (tex, etex or pdftex).
+
+DESCRIPTION:
+
+(See plstmary-doc for more details.)
+
+The command names used to produce the symbols are the same as those used
+in the stmaryrd package for LaTeX.
+
+The file stmary.tex loads amssym.tex. Three of the commands defined in
+amssym.tex are redefined by stmary.tex, but the originals are saved
+under different names.
+
+By default, the symbols are provided for use in 10 point documents.
+Commands for selecting different sizes are defined. These commands also
+affect the size of the AMS symbols, but have no effect on other math
+fonts nor on the text fonts.
+
+VERSIONS:
+ 0.5 -- 2013/05/09 Autoloading of amssym, size changing for AMS
+ fonts, and saving of changed AMS commands.
+ 0.4 -- 2013/04/16 Correct \lbag, \Lbag, \binampersand and
+ \bindnasrepma
+ 0.3 -- 2013/03/28 Complete reorganization of internal macros,
+ 0.2 -- 2010/12/05 Typos corrected
+ 0.1 -- 2007/04/02 Initial version
+
+--
+Dan Luecking luecking at uark dot edu
+Department of Mathematical Sciences
+1 University of Arkansas
+Fayetteville, AR 72701 USA
diff --git a/macros/plain/contrib/plstmary/plstmary-doc.pdf b/macros/plain/contrib/plstmary/plstmary-doc.pdf
new file mode 100644
index 0000000000..1bfa27753c
--- /dev/null
+++ b/macros/plain/contrib/plstmary/plstmary-doc.pdf
Binary files differ
diff --git a/macros/plain/contrib/plstmary/plstmary-doc.tex b/macros/plain/contrib/plstmary/plstmary-doc.tex
new file mode 100644
index 0000000000..8b7c99cd7e
--- /dev/null
+++ b/macros/plain/contrib/plstmary/plstmary-doc.tex
@@ -0,0 +1,463 @@
+\input stmary
+\def\br{\hfil\break}
+\def\cmd#1{{\tt\string#1}}
+\font\headfont=cmr12
+\font\headsf=cmss12
+\hsize 6.5in \vsize 8.9in \hoffset 0pt \voffset 0pt
+
+\centerline{\headsf
+ plstmary: \headfont St.\ Mary's Road Font for Plain \TeX}
+\centerline{Version: \plstmaryversion}
+\medskip
+\centerline{Dan Luecking}
+\centerline{\tt luecking $\inplus$ uark $\boxdot$ edu}
+\bigskip
+
+\noindent The plstmary package provides plain TeX support for the St.\
+Mary's Road symbol font. After inputting the macro file {\tt
+stmary.tex}, all the symbols in the tables below become defined. The two
+commands {\cmd\oast} and {\cmd\ocircle} require the AMS symbol font {\tt
+msam}, so {\tt stmary.tex} automatically inputs {\tt amssym.tex}. (These
+symbols are the same as {\cmd\circledast} and {\cmd\circledcirc},
+defined in {\tt amssym.tex}. The point of defining them is to have
+matching `{\cmd\o}\dots' and `{\cmd\varo}\dots' pairs for all circles.)
+
+All the command names are the same as those in the LaTeX package {\tt
+stmaryrd.sty}. More details on the symbols and their usage may be found
+in the documentation of the LaTeX stmaryrd package.
+
+Some command names defined in the {\tt stmary.tex} overwrite command
+names in the {\tt amssym.tex}. The original definitions are stored in
+alternative commands. The affected commands are {\cmd\bigtriangledown},
+{\cmd\bigtriangleup} and {\cmd\boxdot}. The AMS versions are obtained
+with {\tt \string\amsbigtriangledown}, {\cmd\amsbigtriangleup} and
+{\cmd\amsboxdot}.
+
+The plstmary package allows minimal size changing. By default it
+produces symbols intended for ten point documents. It also supports
+eight, nine, eleven, and twelve point sizes. Use one of the following
+commands to change size:\hfil\break
+\indent{\cmd\stmaryrdeightpoint},\quad
+{\tt\ \string\stmaryrdninepoint},\br
+\indent{\cmd\stmaryrdelevenpoint},\quad
+{\cmd\stmaryrdtwelvepoint},\br
+\indent{\cmd\stmaryrdtenpoint} \ (to restore the default if it has been
+changed).\br
+These commands affect only the St.\ Mary Road symbols and, for
+convenience, the AMS fonts. They have no effect on the body text font
+nor on any other mathematical fonts. For changing the sizes of standard
+plain TeX fonts, you must either load a package for that purpose, of
+define your own macros.
+
+In order to get actual error-free output from these commands, one needs
+to have the St.\ Mary Road fonts and the AMS fonts installed, but those
+are available in all the major free TeX distributions: TeX Live, MiKTeX
+and MacTeX.
+
+\bigskip
+\leftline{\bf Legal stuff}
+
+\medskip
+\noindent The St.\ Mary's Road metafont code is copyright \copyright
+1991-1994 by Jeremy Gibbons and Alan Jeffrey. The fonts in PS type1
+format (i.e., {\tt .afm} and {\tt .pfb} files) are copyright \copyright
+1998 by Taco Hoekwater. All rights are reserved to the respective
+authors.
+
+This plstmary distribution is placed in the public domain. Do with it as
+you wish.
+
+While every effort has been made to make plstmary useful, it comes with
+no warranty, expressed or implied.
+
+\bigskip
+\leftline{\bf Acknowledgements}
+I am indebted to the creators of the fonts and of the stmaryrd
+LaTeX package. The file {\tt stmary.tex} is largely a reduction to plain
+TeX macros and TeX primitives of the code in {\tt stmaryrd.sty}.
+
+\bigskip
+\leftline{\bf Caveats}
+
+\medskip
+\noindent Some features of the LaTeX package have not been implemented
+in plstmary. For example, normally the symbol obtained with
+{\cmd\oplus} has thin strokes while {\cmd\varoplus} has
+thicker strokes. The LaTeX package can be loaded with the {\tt
+heavycircles} option to reverse this for all the circled symbols. This
+is not implemented in plstmary. Also, the LaTeX package has the {\tt
+only} option, allowing selected commands to be defined and no others.
+This is not implemented in plstmary.
+
+Also, I have made the following corrections (or possibly mistakes).
+(1)~In {\tt stmaryrd.sty}, the commands {\cmd\lbag} and
+{\cmd\rbag} are defined as binary operations, but the
+documentation says they are delimiters. In {\tt stmary.tex}, I have
+defined them as delimiters. (2)~In {\tt stmaryrd.sty}, the commands
+{\cmd\binampersand} and {\cmd\bindnasrepma} are defined as
+delimiters, but their names clearly imply that they are intended to be
+binary operations (and the stmaryrd package documentation does not list
+them among the delimiters). In {\tt stmary.tex}, I have defined them as
+binary operations. I have no idea if I have chosen the correct usages
+for these four commands, and I would be happy to change them back if
+someone would let me know.
+
+\medskip
+\bigskip
+\filbreak
+\halign{%
+\strut\quad\tt#\hfil\quad
+& #\hfil\qquad
+& \tt#\hfil\quad
+& #\hfil\enspace\cr
+\bf Binary operations\hidewidth\cr
+\noalign{\smallskip\hrule\smallskip}
+ \string\Yup
+&$\Yup$
+&\string\Ydown
+&$\Ydown$\cr
+ \string\Yleft
+&$\Yleft$
+&\string\Yright
+&$\Yright$\cr
+ \string\binampersand
+&$\binampersand$
+&\string\bindnasrepma
+&$\bindnasrepma$\cr
+ \string\varcurlyvee
+&$\varcurlyvee$
+&\string\varcurlywedge
+&$\varcurlywedge$\cr
+ \string\minuso
+&$\minuso$
+&\string\baro
+&$\baro$\cr
+ \string\sslash
+&$\sslash$
+&\string\bbslash
+&$\bbslash$\cr
+ \string\moo
+&$\moo$
+&\string\merge
+&$\merge$\cr
+ \string\nplus
+&$\nplus$
+&\string\boxbar
+&$\boxbar$\cr
+ \string\boxdot
+&$\boxdot$
+&\string\amsboxdot
+&$\amsboxdot$\cr
+ \string\boxslash
+&$\boxslash$
+&\string\boxbslash
+&$\boxbslash$\cr
+ \string\boxcircle
+&$\boxcircle$
+&\string\boxbox
+&$\boxbox$\cr
+ \string\boxempty
+&$\boxempty$
+&\string\boxast
+&$\boxast$\cr
+ \string\vartimes
+&$\vartimes$
+&\string\fatsemi
+&$\fatsemi$\cr
+ \string\fatslash
+&$\fatslash$
+&\string\fatbslash
+&$\fatbslash$\cr
+ \string\varbigcirc
+&$\varbigcirc$
+&\string\leftslice
+&$\leftslice$\cr
+ \string\rightslice
+&$\rightslice$
+&\string\varotimes
+&$\varotimes$\cr
+ \string\oast
+&$\oast$
+&\string\varoast
+&$\varoast$\cr
+ \string\obar
+&$\obar$
+&\string\varobar
+&$\varobar$\cr
+ \string\obslash
+&$\obslash$
+&\string\varobslash
+&$\varobslash$\cr
+ \string\ocircle
+&$\ocircle$
+&\string\varocircle
+&$\varocircle$\cr
+ \string\varoplus
+&$\varoplus$
+&\string\varominus
+&$\varominus$\cr
+ \string\olessthan
+&$\olessthan$
+&\string\varolessthan
+&$\varolessthan$\cr
+ \string\ogreaterthan
+&$\ogreaterthan$
+&\string\varogreaterthan
+&$\varogreaterthan$\cr
+ \string\ovee
+&$\ovee$
+&\string\varovee
+&$\varovee$\cr
+ \string\owedge
+&$\owedge$
+&\string\varowedge
+&$\varowedge$\cr
+ \string\varoslash
+&$\varoslash$
+&\string\varodot
+&$\varodot$\cr
+ \string\oblong
+&$\oblong$
+&\string\talloblong
+&$\talloblong$\cr
+ \string\interleave
+&$\interleave$
+&&\cr
+\noalign{\smallskip\hrule}
+}
+
+\medskip
+\bigskip
+\filbreak
+\halign{%
+\strut\quad \tt#\hfil\quad & #\hfil\qquad
+ & \tt#\hfil\quad & #\hfil\enspace\cr
+\bf Relations\hidewidth\cr
+\noalign{\smallskip\hrule\smallskip}
+%
+ \string\inplus
+&$\inplus$
+&\string\niplus
+&$\niplus$\cr
+ \string\subsetplus
+&$\subsetplus$
+&\string\supsetplus
+&$\supsetplus$\cr
+ \string\subsetpluseq
+&$\subsetpluseq$
+&\string\supsetpluseq
+&$\supsetpluseq$\cr
+ \string\shortuparrow
+&$\shortuparrow$
+&\string\shortdownarrow
+&$\shortdownarrow$\cr
+ \string\nnwarrow
+&$\nnwarrow$
+&\string\nnearrow
+&$\nnearrow$\cr
+ \string\sswarrow
+&$\sswarrow$
+&\string\ssearrow
+&$\ssearrow$\cr
+ \string\curlywedgeuparrow
+&$\curlywedgeuparrow$
+&\string\curlywedgedownarrow
+&$\curlywedgedownarrow$\cr
+ \string\curlyveedownarrow
+&$\curlyveedownarrow$
+&\string\curlyveeuparrow
+&$\curlyveeuparrow$\cr
+ \string\trianglelefteqslant
+&$\trianglelefteqslant$
+&\string\trianglerighteqslant
+&$\trianglerighteqslant$\cr
+ \string\ntrianglelefteqslant
+&$\ntrianglelefteqslant$
+&\string\ntrianglerighteqslant
+&$\ntrianglerighteqslant$\cr
+\noalign{\smallskip\hrule}
+}
+
+\medskip
+\bigskip
+\filbreak
+\halign{%
+\strut\quad \tt#\hfil\quad & #\hfil\qquad
+ & \tt#\hfil\quad & #\hfil\enspace\cr
+\bf Arrows\hidewidth\cr
+\noalign{\smallskip\hrule\smallskip}
+%
+ \string\leftrightarroweq
+&$\leftrightarroweq$
+&\string\shortrightarrow
+&$\shortrightarrow$\cr
+ \string\shortleftarrow
+&$\shortleftarrow$
+&\string\rightarrowtriangle
+&$\rightarrowtriangle$\cr
+ \string\leftarrowtriangle
+&$\leftarrowtriangle$
+&\string\leftrightarrowtriangle
+&$\leftrightarrowtriangle$\cr
+\string\Mapsto
+&$\Mapsto$
+&\string\Longmapsto
+&$\Longmapsto$\cr
+\string\mapsfrom
+&$\mapsfrom$
+&\string\Mapsfrom
+&$\Mapsfrom$\cr
+\string\longmapsfrom
+&$\longmapsfrom$
+&\string\Longmapsfrom
+&$\Longmapsfrom$\cr
+\noalign{\smallskip\hrule}
+}
+
+\medskip
+\bigskip
+\noindent The commands {\cmd\arrownot} and {\cmd\Arrownot}
+can be placed in front of horizontal arrows to negate them:
+{\cmd\arrownot\cmd\rightarrow} produces
+ $\arrownot\rightarrow$ and
+ {\cmd\Arrownot\cmd\Rightarrow} produces
+ $\Arrownot\Rightarrow$.
+For long arrows, there are {\cmd\longarrownot}{\cmd\longrightarrow}:
+$\longarrownot\longrightarrow$ \ and {\cmd\Longarrownot}{\cmd\Longrightarrow}:
+ $\Longarrownot\Longrightarrow$.
+\medskip
+\bigskip
+\filbreak
+\halign{%
+\strut\quad \tt#\hfil\quad & #\hfil\qquad
+ &\tt#\hfil\quad & #\hfil\enspace\cr
+\bf Big operators\hidewidth\cr
+\noalign{\smallskip\hrule\smallskip}
+ \string\bigtriangledown
+&$\bigtriangledown$
+&\string\bigtriangleup
+&$\bigtriangleup$\cr
+ \string\amsbigtriangledown
+&$\amsbigtriangledown$
+&\string\amsbigtriangleup
+&$\amsbigtriangleup$\cr
+ \string\bigcurlyvee
+&$\bigcurlyvee$
+&\string\bigcurlywedge
+&$\bigcurlywedge$\cr
+ \string\bigsqcap
+&$\bigsqcap$
+&\string\bigbox
+&$\bigbox$\cr
+ \string\bigparallel
+&$\bigparallel$
+&\string\biginterleave
+&$\biginterleave$\cr
+ \string\bignplus
+&$\bignplus$\cr
+\noalign{\smallskip\hrule}
+}
+
+\medskip
+\bigskip
+\filbreak
+\halign{%
+\strut\quad \tt#\hfil\quad & #\hfil\qquad
+ &\tt#\hfil\quad & #\hfil\enspace\cr
+\bf Delimiters\hidewidth\cr
+\noalign{\smallskip\hrule\smallskip}
+ \string\lbag
+&$\lbag$
+&\string\rbag
+&$\rbag$\cr
+ \string\Lbag
+&$\Lbag$
+&\string\Rbag
+&$\Rbag$\cr
+ \string\llparenthesis
+&$\llparenthesis$
+&\string\rrparenthesis
+&$\rrparenthesis$\cr
+ \string\llfloor
+&$\llfloor$
+&\string\rrfloor
+&$\rrfloor$\cr
+ \string\llceil
+&$\llceil$
+&\string\rrceil
+&$\rrceil$\cr
+\noalign{\smallskip\hrule}
+}
+
+\medskip
+\bigskip
+\filbreak
+\halign{%
+\strut\quad \tt#\hfil\quad & #\hfil\qquad
+ &\tt#\hfil\quad & #\hfil\enspace\cr
+\bf Expandable delimiters\hidewidth\cr
+\noalign{\smallskip\hrule\smallskip}
+ \string\llbracket
+&$\llbracket$
+&\string\rrbracket
+&$\rrbracket$\cr
+\noalign{\smallskip\hrule}
+}
+
+\vskip-\baselineskip
+\noindent
+Examples of expanded double brackets:\quad
+$
+\left\llbracket \matrix{a\cr} \right\rrbracket\quad
+\left\llbracket \matrix{a\cr b\cr} \right\rrbracket\quad
+\left\llbracket \matrix{a\cr b\cr c\cr} \right\rrbracket\quad
+\left\llbracket \matrix{a\cr b\cr c\cr d\cr} \right\rrbracket\quad
+\left\llbracket \matrix{a\cr b\cr c\cr d\cr e\cr} \right\rrbracket\quad
+\left\llbracket \matrix{a\cr b\cr c\cr d\cr e\cr f\cr} \right\rrbracket
+$
+
+\vskip-\baselineskip
+\filbreak
+\halign{%
+\strut\quad \tt#\hfil\quad & #\hfil\qquad
+ &\tt#\hfil\quad & #\hfil\enspace\cr
+\bf Miscellaneous\hidewidth\cr
+\noalign{\smallskip\hrule\smallskip}
+ \string\lightning
+&$\lightning$
+&\string\varcopyright
+&$\varcopyright$\cr
+\noalign{\smallskip\hrule}
+}
+
+\medskip
+\bigskip
+\filbreak
+\noindent
+\leftline{\bf Size changing}
+
+\medskip\noindent
+{8pt: \stmaryrdeightpoint $\lbag x \inplus a \rbag \amsboxdot b$.\quad
+ 9pt: \stmaryrdninepoint$\lbag x \inplus a \rbag \amsboxdot b$.\quad
+10pt: \stmaryrdtenpoint$\lbag x \inplus a \rbag \amsboxdot b$.\quad
+11pt: \stmaryrdelevenpoint$\lbag x \inplus a \rbag \amsboxdot b$.\quad
+12pt: \stmaryrdtwelvepoint$\lbag x \inplus a \rbag \amsboxdot b$.}
+
+\bigskip
+\leftline{\bf Version history}
+
+\medskip
+\noindent
+ 0.5 --- 2013/05/09\quad Autoloading AMS symbols. Size changing for
+ AMS, saving AMS definitions.\br
+ 0.4 --- 2013/04/16\quad Corrected \cmd\lbag, \cmd\Lbag,
+ \cmd\binampersand{} and \cmd\bindnasrepma\br
+ 0.3 --- 2013/03/28\quad Reorganized internal macros\br
+ 0.2 --- 2010/12/05\quad Typos corrected\br
+ 0.1 --- 2007/04/02\quad Initial version
+
+
+\medskip
+\noindent
+
+\bye
diff --git a/macros/plain/contrib/plstmary/stmary.tex b/macros/plain/contrib/plstmary/stmary.tex
new file mode 100644
index 0000000000..076cab1d1e
--- /dev/null
+++ b/macros/plain/contrib/plstmary/stmary.tex
@@ -0,0 +1,260 @@
+% Loads stmaryrd symbols for 10pt plain TeX documents.
+%
+\ifx\plstmaryversion\UndEfInEd\else\expandafter\endinput\fi
+\def\plstmaryversion{0.5c}%
+\edef\stmaryrestorecatcodes{%
+ \catcode`\noexpand\@=\number\catcode`\@\relax
+ \catcode`\noexpand\!=\number\catcode`\!\relax
+ \newlinechar=\number\newlinechar\relax
+}%
+% Announce ourself
+\newlinechar`\^^J
+\immediate\write16{%
+plstmary package: plain TeX macros for St. Mary's Road symbol font.^^J}
+%
+\newfam\stmaryrdfam
+%
+\font\stmaryfive stmary5
+\font\stmarysix stmary6
+\font\stmaryseven stmary7
+\font\stmaryeight stmary8
+\font\stmarynine stmary9
+\font\stmaryten stmary10
+\font\stmaryeleven stmary10 at10.95pt
+\font\stmarytwelve stmary10 at12pt
+%
+% AMS fonts: 10, 7 and 5 pt sizes loaded in amssym.tex.
+% St. Mary Road only needs msam, but we load msbm as well.
+%
+\input amssym
+\font\twelvemsa = msam10 at 12pt
+\font\elevenmsa = msam10 at 10.95pt
+\font\ninemsa = msam9
+\font\eightmsa = msam8
+\font\sixmsa = msam6
+\font\twelvemsb = msbm10 at 12pt
+\font\elevenmsb = msbm10 at 10.95pt
+\font\ninemsb = msbm9
+\font\eightmsb = msbm8
+\font\sixmsb = msbm6
+%
+\def\stmaryrdeightpoint{%
+ \textfont\stmaryrdfam \stmaryeight
+ \scriptfont\stmaryrdfam \stmarysix
+ \scriptscriptfont\stmaryrdfam \stmaryfive
+ \amseightpoint
+}%
+\def\amseightpoint{%
+ \textfont\msafam \eightmsa
+ \scriptfont\msafam \sixmsa
+ \scriptscriptfont\msafam \fivemsa
+ \textfont\msbfam \eightmsb
+ \scriptfont\msbfam \sixmsb
+ \scriptscriptfont\msbfam \fivemsb
+}%
+%
+\def\stmaryrdninepoint{%
+ \textfont\stmaryrdfam \stmarynine
+ \scriptfont\stmaryrdfam \stmaryseven
+ \scriptscriptfont\stmaryrdfam \stmaryfive
+ \amsninepoint
+}%
+\def\amsninepoint{%
+ \textfont\msafam \ninemsa
+ \scriptfont\msafam \sevenmsa
+ \scriptscriptfont\msafam \fivemsa
+ \textfont\msbfam \ninemsb
+ \scriptfont\msbfam \sevenmsb
+ \scriptscriptfont\msbfam \fivemsb
+}%
+%
+\def\stmaryrdtenpoint{%
+ \textfont\stmaryrdfam \stmaryten
+ \scriptfont\stmaryrdfam \stmaryseven
+ \scriptscriptfont\stmaryrdfam \stmaryfive
+ \amstenpoint
+}%
+\def\amstenpoint{%
+ \textfont\msafam \tenmsa
+ \scriptfont\msafam \sevenmsa
+ \scriptscriptfont\msafam \fivemsa
+ \textfont\msbfam \tenmsb
+ \scriptfont\msbfam \sevenmsb
+ \scriptscriptfont\msbfam \fivemsb
+}%
+%
+\def\stmaryrdelevenpoint{%
+ \textfont\stmaryrdfam \stmaryeleven
+ \scriptfont\stmaryrdfam \stmaryeight
+ \scriptscriptfont\stmaryrdfam \stmarysix
+ \amselevenpoint
+}%
+\def\amselevenpoint{%
+ \textfont\msafam \elevenmsa
+ \scriptfont\msafam \eightmsa
+ \scriptscriptfont\msafam \sixmsa
+ \textfont\msbfam \elevenmsb
+ \scriptfont\msbfam \eightmsb
+ \scriptscriptfont\msbfam \sixmsb
+}%
+%
+\def\stmaryrdtwelvepoint{%
+ \textfont\stmaryrdfam \stmarytwelve
+ \scriptfont\stmaryrdfam \stmaryeight
+ \scriptscriptfont\stmaryrdfam \stmarysix
+ \amstwelvepoint
+}%
+\def\amstwelvepoint{%
+ \textfont\msafam \twelvemsa
+ \scriptfont\msafam \eightmsa
+ \scriptscriptfont\msafam \sixmsa
+ \textfont\msbfam \twelvemsb
+ \scriptfont\msbfam \eightmsb
+ \scriptscriptfont\msbfam \sixmsb
+}%
+\let\amsboxdot\boxdot
+\let\amsbigtriangledown\bigtriangledown
+\let\amsbigtriangleup\bigtriangleup
+%
+\catcode`\@=11
+%
+\catcode`\!\active
+\edef!{\ifcase\stmaryrdfam
+ 0\or 1\or 2\or 3\or 4\or 5\or 6\or 7\or
+ 8\or 9\or A\or B\or C\or D\or E\or F\fi}%
+%
+\def\stm@op #1#2{\mathchardef#1"1!#2}%
+\def\stm@bin #1#2{\mathchardef#1"2!#2}%
+\def\stm@rel #1#2{\mathchardef#1"3!#2}%
+\def\stm@open #1#2{\mathchardef#1"4!#2}%
+\def\stm@close#1#2{\mathchardef#1"5!#2}%
+\stm@rel \shortleftarrow{00}%
+\stm@rel \shortrightarrow{01}%
+\stm@rel \shortuparrow{02}%
+\stm@rel \shortdownarrow{03}%
+\stm@bin \Yup{04}%
+\stm@bin \Ydown{05}%
+\stm@bin \Yleft{06}%
+\stm@bin \Yright{07}%
+\stm@bin \varcurlyvee{08}%
+\stm@bin \varcurlywedge{09}%
+\stm@bin \minuso{0A}%
+\stm@bin \baro{0B}%
+\stm@bin \sslash{0C}%
+\stm@bin \bbslash{0D}%
+\stm@bin \moo{0E}%
+\stm@bin \varotimes{0F}%
+\stm@bin \varoast{10}%
+\stm@bin \varobar{11}%
+\stm@bin \varodot{12}%
+\stm@bin \varoslash{13}%
+\stm@bin \varobslash{14}%
+\stm@bin \varocircle{15}%
+\stm@bin \varoplus{16}%
+\stm@bin \varominus{17}%
+\stm@bin \boxast{18}%
+\stm@bin \boxbar{19}%
+\stm@bin \boxdot{1A}%
+\stm@bin \boxslash{1B}%
+\stm@bin \boxbslash{1C}%
+\stm@bin \boxcircle{1D}%
+\stm@bin \boxbox{1E}%
+\stm@bin \boxempty{1F}%
+\mathchardef\lightning"0!20
+\stm@bin \merge{21}%
+\stm@bin \vartimes{22}%
+\stm@bin \fatsemi{23}%
+\stm@rel \sswarrow{24}%
+\stm@rel \ssearrow{25}%
+\stm@rel \curlywedgeuparrow{26}%
+\stm@rel \curlywedgedownarrow{27}%
+\stm@bin \fatslash{28}%
+\stm@bin \fatbslash{29}%
+\stm@open \lbag{2A}%
+\stm@close\rbag{2B}%
+\stm@bin \varbigcirc{2C}%
+\stm@rel \leftrightarroweq{2D}%
+\stm@rel \curlyveedownarrow{2E}%
+\stm@rel \curlyveeuparrow{2F}%
+\stm@rel \nnwarrow{30}%
+\stm@rel \nnearrow{31}%
+\stm@bin \leftslice{32}%
+\stm@bin \rightslice{33}%
+\stm@bin \varolessthan{34}%
+\stm@bin \varogreaterthan{35}%
+\stm@bin \varovee{36}%
+\stm@bin \varowedge{37}%
+\stm@bin \talloblong{38}%
+\stm@bin \interleave{39}%
+\stm@bin \obar{3A}%
+\stm@bin \obslash{3B}%
+\stm@bin \olessthan{3C}%
+\stm@bin \ogreaterthan{3D}%
+\stm@bin \ovee{3E}%
+\stm@bin \owedge{3F}%
+\stm@bin \oblong{40}%
+\stm@rel \inplus{41}%
+\stm@rel \niplus{42}%
+\stm@bin \nplus{43}%
+\stm@rel \subsetplus{44}%
+\stm@rel \supsetplus{45}%
+\stm@rel \subsetpluseq{46}%
+\stm@rel \supsetpluseq{47}%
+\stm@open \Lbag{48}%
+\stm@close\Rbag{49}%
+\edef\llbracket{\delimiter"4!4A!71}%
+\edef\rrbracket{\delimiter"5!4B!79}%
+\stm@open \llparenthesis{4C}%
+\stm@close\rrparenthesis{4D}%
+\stm@bin \binampersand{4E}%
+\stm@bin \bindnasrepma{4F}%
+\stm@rel \trianglelefteqslant{50}%
+\stm@rel \trianglerighteqslant{51}%
+\stm@rel \ntrianglelefteqslant{52}%
+\stm@rel \ntrianglerighteqslant{53}%
+\stm@open \llfloor{54}%
+\stm@close\rrfloor{55}%
+\stm@open \llceil{56}%
+\stm@close\rrceil{57}%
+\stm@rel \arrownot{58}%
+\stm@rel \Arrownot{59}%
+\stm@rel \Mapstochar{5A}%
+\stm@rel \mapsfromchar{5B}%
+\stm@rel \Mapsfromchar{5C}%
+\stm@rel \leftrightarrowtriangle{5D}%
+\stm@rel \leftarrowtriangle{5E}%
+\stm@rel \rightarrowtriangle{5F}%
+\stm@op \bigtriangledown{60}%
+\stm@op \bigtriangleup{61}%
+\stm@op \bigcurlyvee{62}%
+\stm@op \bigcurlywedge{63}%
+\stm@op \bigsqcap{64}%
+\stm@op \bigbox{65}%
+\stm@op \bigparallel{66}%
+\stm@op \biginterleave{67}%
+\stm@op \bignplus{70}%
+%
+\let\oast\circledast % msam "7E
+\let\ocircle\circledcirc % msam "7D
+%
+\def\@tempa#1{%
+ \def\varcopyright{%
+ {\ooalign{\hfil\raise.07ex\hbox{c}\hfil\crcr\mathhexbox#12C}}}}%
+\expandafter\@tempa!%
+%
+% The long arrow negations.
+%
+\def\longarrownot{\mathrel{\mkern5.5mu\arrownot\mkern-5.5mu}}%
+\def\Longarrownot{\mathrel{\mkern5.5mu\Arrownot\mkern-5.5mu}}%
+%
+% The variants on \mapsto:
+%
+\def\Mapsto{\Mapstochar\Rightarrow}%
+\def\mapsfrom{\leftarrow\mapsfromchar}%
+\def\Mapsfrom{\Leftarrow\Mapsfromchar}%
+\def\Longmapsto{\Mapstochar\Longrightarrow}%
+\def\longmapsfrom{\longleftarrow\mapsfromchar}%
+\def\Longmapsfrom{\Longleftarrow\Mapsfromchar}%
+%
+\stmaryrestorecatcodes
+\stmaryrdtenpoint