1 % \iffalse meta-comment
3 % Copyright (C) 1997-2003 by Michael J. Downes
4 % Copyright (C) 2007 by Morten Hoegholm <mh.ctan@gmail.com>
6 % This work may be distributed and/or modified under the
7 % conditions of the LaTeX Project Public License, either
8 % version 1.3 of this license or (at your option) any later
9 % version. The latest version of this license is in
10 % http://www.latex-project.org/lppl.txt
11 % and version 1.3 or later is part of all distributions of
12 % LaTeX version 2005/12/01 or later.
14 % This work has the LPPL maintenance status "maintained".
16 % This Current Maintainer of this work is Morten Hoegholm.
18 % This work consists of the main source file flexisym.dtx
19 % and the derived files
20 % flexisym.sty, flexisym.pdf, flexisym.ins, flexisym.drv,
21 % cmbase.sym, msabm.sym.
24 % CTAN:macros/latex/contrib/mh/flexisym.dtx
25 % CTAN:macros/latex/contrib/mh/flexisym.pdf
28 % (a) If flexisym.ins is present:
30 % (b) Without flexisym.ins:
32 % (c) If you insist on using LaTeX
33 % latex \let\install=y\input{flexisym.dtx}
34 % (quote the arguments according to the demands of your shell)
37 % (a) If flexisym.drv is present:
39 % (b) Without flexisym.drv:
40 % latex flexisym.dtx; ...
41 % The class ltxdoc loads the configuration file ltxdoc.cfg
42 % if available. Here you can specify further options, e.g.
43 % use A4 as paper format:
44 % \PassOptionsToClass{a4paper}{article}
46 % Programm calls to get the documentation (example):
47 % pdflatex flexisym.dtx
48 % makeindex -s gind.ist flexisym.idx
49 % pdflatex flexisym.dtx
50 % makeindex -s gind.ist flexisym.idx
51 % pdflatex flexisym.dtx
54 % TDS:tex/latex/mh/flexisym.sty
55 % TDS:tex/latex/mh/cmbase.sym
56 % TDS:tex/latex/mh/mathpazo.sym
57 % TDS:tex/latex/mh/mathptmx.sym
58 % TDS:tex/latex/mh/msabm.sym
59 % TDS:doc/latex/mh/flexisym.pdf
60 % TDS:source/latex/mh/flexisym.dtx
66 \ifcase 0\ifx\install y1\fi\expandafter
67 \ifx\csname processbatchFile\endcsname\relax\else1\fi
68 \ifx\fmtname\x\else 1\fi\relax
69 \else\csname fi\endcsname
73 \Msg{************************************************************************}
75 \Msg{* Package: flexisym 2007/12/19 v0.96 Flexisym (MH)}
76 \Msg{************************************************************************}
83 This is a generated file.
85 Copyright (C) 1997-2003 by Michael J. Downes
86 Copyright (C) 2007 by Morten Hoegholm <mh.ctan@gmail.com>
88 This work may be distributed and/or modified under the
89 conditions of the LaTeX Project Public License, either
90 version 1.3 of this license or (at your option) any later
91 version. The latest version of this license is in
92 http://www.latex-project.org/lppl.txt
93 and version 1.3 or later is part of all distributions of
94 LaTeX version 2005/12/01 or later.
96 This work has the LPPL maintenance status "maintained".
98 This Current Maintainer of this work is Morten Hoegholm.
100 This work consists of the main source file flexisym.dtx
101 and the derived files
102 flexisym.sty, flexisym.pdf, flexisym.ins, flexisym.drv,
103 cmbase.sym, mathpazo.sym, mathptmx.sym, msabm.sym.
108 \file{flexisym.ins}{\from{flexisym.dtx}{install}}%
109 \file{flexisym.drv}{\from{flexisym.dtx}{driver}}%
110 \usedir{tex/latex/mh}%
111 \file{flexisym.sty}{\from{flexisym.dtx}{package}}%
112 \file{cmbase.sym}{\from{flexisym.dtx}{cmbase}}%
113 \file{mathpazo.sym}{\from{flexisym.dtx}{mathpazo}}%
114 \file{mathptmx.sym}{\from{flexisym.dtx}{mathptmx}}%
115 \file{msabm.sym}{\from{flexisym.dtx}{msabm}}%
119 \Msg{************************************************************************}
121 \Msg{* To finish the installation you have to move the following}
122 \Msg{* files into a directory searched by TeX:}
124 \Msg{* flexisym.sty, cmbase.sym, mathpazo.sym, mathptmx.sym, msabm.sym}
126 \Msg{* To produce the documentation run the file `flexisym.drv'}
127 \Msg{* through LaTeX.}
129 \Msg{* Happy TeXing!}
131 \Msg{************************************************************************}
139 \NeedsTeXFormat{LaTeX2e}
140 \ProvidesFile{flexisym.drv}%
141 [2007/12/19 v0.96 flexisym (MH)]
142 \documentclass{ltxdoc}
145 \setcounter{IndexColumns}{2}
146 \providecommand*\pkg[1]{\textsf{#1}}
147 \providecommand*\cls[1]{\textsf{#1}}
148 \providecommand*\opt[1]{\texttt{#1}}
149 \providecommand*\env[1]{\texttt{#1}}
150 \providecommand*\fn[1]{\texttt{#1}}
152 \providecommand{\AmS}{{\protect\AmSfont
153 A\kern-.1667em\lower.5ex\hbox{M}\kern-.125emS}}
154 \providecommand{\AmSfont}{%
155 \usefont{OMS}{cmsy}{\if\expandafter\@car\f@series\@nil bb\else m\fi}{n}}
157 \newenvironment{aside}{\begin{quote}\bfseries}{\end{quote}}
159 \DocInput{flexisym.dtx}
164 % \title{The \textsf{flexisym} package}
165 % \date{2007/12/19 v0.96}
166 % \author{Morten H\o gholm \\\texttt{mh.ctan@gmail.com}}
170 % \part*{User's guide}
172 % For now, the user's guide is in breqn.
175 % \part*{Implementation}
181 \ProvidesPackage{flexisym}[2007/12/19 v0.96]
182 \let\@xp\expandafter \let\@nx\noexpand
184 \@nx\AtEndOfPackage{%
185 \catcode\number`\"=\number\catcode`\"
192 \DeclareOption{robust}{%
194 \ifx\protect\@typeset@protect \else\protect#1\@xp\@gobblefour\fi
197 \def\mg@bin{2}% binary operators
198 \def\mg@rel{2}% relations
199 %%\def\mg@nre{B}% negated relations
200 \def\mg@del{3}% delimiters
201 %%\def\mg@arr{B}% arrows
202 \def\mg@acc{0}% accents
203 \def\mg@cop{3}% cumulative operators (sum, int)
204 \def\mg@latin{1}% (Latin) letters
205 \def\mg@greek{1}% (lowercase) Greek
206 \def\mg@Greek{0}% (capital) Greek
207 %%\def\mg@bflatin{4}% bold upright Latin letters ?
208 %%\def\mg@Bbb{B}% blackboard bold
209 \def\mg@cal{2}% script/calligraphic
210 %%\def\mg@frak{5}% Fraktur letters
211 \def\mg@digit{0}% decimal digits % 1 = oldstyle, 0 = capital
212 \expandafter\let\csname MathChar \endcsname\mathchar
213 \expandafter\let\csname Delimiter \endcsname\delimiter
214 \expandafter\let\csname Radical \endcsname\radical
215 \newcommand{\MathChar}{}
216 \edef\MathChar{\csname MathChar \endcsname\noexpand\string}
217 \newcommand{\Delimiter}{}
218 \edef\Delimiter{\csname Delimiter \endcsname\noexpand\string}
219 \newcommand{\Radical}{}
220 \edef\Radical{\csname Radical \endcsname\noexpand\string}
221 \let\sumlimits\displaylimits
222 \let\intlimits\nolimits
223 \let\namelimits\displaylimits
224 \edef\m@Ord#1#2#3{\csname MathChar \endcsname"0#1#2#3 }
225 \edef\m@Var#1#2#3{\csname MathChar \endcsname"7#1#2#3 }
226 \edef\m@Bin#1#2#3{\csname MathChar \endcsname"2#1#2#3 }
227 \edef\m@Rel#1#2#3{\csname MathChar \endcsname"3#1#2#3 }
228 \edef\m@Pun#1#2#3{\csname MathChar \endcsname"6#1#2#3 }
229 \edef\m@COs#1#2#3{\csname MathChar \endcsname"1#1#2#3 \sumlimits}
230 \edef\m@COi#1#2#3{\csname MathChar \endcsname"1#1#2#3 \intlimits}
231 \def\delim@a#1#2#3#4{\ifx\relax#1#2#3#4\else#1\fi #2#3#4}
232 \def\delim@b#1#2#3#4{\ifx\relax#1#2#3#4\else#1\fi }
234 \@nx\@xp\@nx\delim@a\@nx\csname sd@##1##2##3\@nx\endcsname ##1##2##3 }
235 \edef\m@DeL#1#2#3{\csname Delimiter \endcsname"4\@tempa}
236 \edef\m@DeR#1#2#3{\csname Delimiter \endcsname"5\@tempa}
237 \edef\m@DeB#1#2#3{\csname Delimiter \endcsname"0\@tempa}
238 \edef\m@DeA#1#2#3{\csname Delimiter \endcsname"3\@tempa}
239 \edef\m@Rad#1#2#3{\csname Radical \endcsname"\@tempa}
240 \def\do#1#2{\@xp\def\csname sd@#1\endcsname{#2}}
271 \def\m@Acc#1#2#3#4{\mathaccent"#1#2#3{#4}}
273 \let\@symtype\@firstofone
274 \def\@symOrd#1#2{\@symtype\mathord{\OrdSymbol{#2}}}
275 \def\@symVar{\@symOrd}
276 \def\@symBin#1#2{\@symtype\mathbin{\OrdSymbol{#2}}}
277 \def\@symRel#1#2{\@symtype\mathrel{\OrdSymbol{#2}}}
278 \def\@symPun#1#2{\@symtype\mathpunct{\OrdSymbol{#2}}}
279 \def\@symCOi#1#2{\@symtype{\mathop{\OrdSymbol{#2}}\intlimits}}
280 \def\@symCOs#1#2{\@symtype{\mathop{\OrdSymbol{#2}}\sumlimits}}
281 \def\@symOpe#1#2{\@symtype\mathopen{\OrdSymbol{#2}}}
282 \def\@symClo#1#2{\@symtype\mathclose{\OrdSymbol{#2}}}
283 \def\@symDeL#1#2{\@symtype\mathopen{\OrdSymbol{#2}}}
284 \def\@symDeR#1#2{\@symtype\mathclose{\OrdSymbol{#2}}}
285 \def\@symDeB#1#2{\@symtype\mathord{\OrdSymbol{#2}}}
286 \def\@symInn#1#2{\@symtype\mathinner{\OrdSymbol{#2}}}
287 \def\@xnce#1{\@xp\@nx\csname#1\endcsname}
288 \let\sym@global\global
289 \def\DeclareFlexSymbol#1#2#3#4{%
291 \edef\@tempb{\@nx\@sym\@nx#1\@xnce{m@#2}\@xnce{mg@#3}#4}%
293 \sym@global\let#1\@tempb
295 \sym@global\mathcode`#1="8000\relax
297 \lowercase{\sym@global\let~\@tempb}%
301 \def\DeclareFlexCompoundSymbol#1#2#3{%
302 \@xp\DeclareRobustCommand\@xp#1\@xp{\csname @sym#2\endcsname#1{#3}}%
303 \sym@global\let#1#1\relax
305 \DeclareRobustCommand\textchar{\text@char\textfont}
306 \DeclareRobustCommand\scriptchar{\text@char\scriptfont}%
307 \def\text@char@a{\?\endgroup}%
308 \def\text@char@sym#1#2#3{%
310 \let\@sym\relax % defense against infinite loops
311 \the\text@script@char#3%
312 \afterassignment\text@char@a
315 \def\text@char#1#2{\begingroup\check@mathfonts
316 \let\text@script@char#1\let\@sym\text@char@sym
317 \let\@symtype\@secondoftwo \let\OrdSymbol\@firstofone
318 \let\ifmmode\iftrue \everymath{$\@gobble}%$
319 \def\mkern{\muskip\z@}\let\mskip\mkern
320 \ifcat\relax\noexpand#2#2%
322 \lccode`\~=\expandafter`\string#2\relax
327 \providecommand\textprime{}
328 \DeclareRobustCommand\textprime{\leavevmode
329 \raise.8ex\hbox{\text@char\scriptfont\prime}%
331 \@ifundefined{resetMathstrut@}{}{%
332 \def\resetMathstrut@{%
333 \setbox\z@\hbox{\textchar\vert}%
334 \ht\Mathstrutbox@\ht\z@ \dp\Mathstrutbox@\dp\z@
337 \@ifundefined{rightarrowfill@}{}{%
338 \def\rightarrowfill@#1{\m@th\setboxz@h{$#1\relbar$}\ht\z@\z@
339 $#1\copy\z@\mkern-6mu\cleaders
340 \hbox{$#1\mkern-2mu\box\z@\mkern-2mu$}\hfill
341 \mkern-6mu\OrdSymbol{\rightarrow}$}
342 \def\leftarrowfill@#1{\m@th\setboxz@h{$#1\relbar$}\ht\z@\z@
343 $#1\OrdSymbol{\leftarrow}\mkern-6mu\cleaders
344 \hbox{$#1\mkern-2mu\copy\z@\mkern-2mu$}\hfill
346 \def\leftrightarrowfill@#1{\m@th\setboxz@h{$#1\relbar$}\ht\z@\z@
347 $#1\OrdSymbol{\leftarrow}\mkern-6mu\cleaders
348 \hbox{$#1\mkern-2mu\box\z@\mkern-2mu$}\hfill
349 \mkern-6mu\OrdSymbol{\rightarrow}$}
351 \def\binrel@sym#1#2#3#4#5{%
353 \ifx\m@Ord#2\@nx\@symOrd
354 \else\ifx\m@Var#2\@nx\@symVar
355 \else\ifx\m@COs#2\@nx\@symCOs
356 \else\ifx\m@COi#2\@nx\@symCOi
357 \else\ifx\m@Bin#2\@nx\@symBin
358 \else\ifx\m@Rel#2\@nx\@symRel
359 \else\ifx\m@Pun#2\@nx\@symPun
360 \else\@nx\@symErr \fi\fi\fi\fi\fi\fi\fi
361 ?{\@nx\OrdSymbol{##1}}}%
364 \def\@symOrd##1##2{\gdef\binrel@@####1{\@symOrd##1{\OrdSymbol{####1}}}}%
365 \def\@symVar##1##2{\gdef\binrel@@####1{\@symVar##1{\OrdSymbol{####1}}}}%
366 \def\@symCOs##1##2{\gdef\binrel@@####1{\@symCOs##1{\OrdSymbol{####1}}}}%
367 \def\@symCOi##1##2{\gdef\binrel@@####1{\@symCOi##1{\OrdSymbol{####1}}}}%
368 \def\@symBin##1##2{\gdef\binrel@@####1{\@symBin##1{\OrdSymbol{####1}}}}%
369 \def\@symRel##1##2{\gdef\binrel@@####1{\@symRel##1{\OrdSymbol{####1}}}}%
370 \def\@symPun##1##2{\gdef\binrel@@####1{\@symPun##1{\OrdSymbol{####1}}}}%
374 \let\mathchoice\@gobblethree
375 \let\@sym\binrel@sym \binrel@a
378 \def\@symextension{sym}
379 \newcommand\usesymbols[1]{%
380 \@for\@tempb:=#1\do{%
381 \@xp\@onefilewithoptions\@xp{\@tempb}[][]\@symextension
384 \newcommand\ProvidesSymbols[1]{\ProvidesFile{#1.sym}}
385 \DeclareRobustCommand{\not}[1]{\@symRel\not{\OrdSymbol{\notRel#1}}}
386 \DeclareRobustCommand{\OrdSymbol}[1]{%
387 \begingroup\mathchars@reset#1\endgroup
389 \def\mathchars@reset{\let\@sym\@sym@ord \let\@symtype\@symtype@ord
390 \let\OrdSymbol\relax}
391 \def\@symtype@ord#1#{}% a strange sort of \@gobble
392 \def\@sym@ord#1#2{\@xp\@sym@ord@a\string#2\@nil}%
394 \lccode`\.=`\@ \lowercase{\endgroup
395 \def\@sym@ord@a#1.}#2#3\@nil#4#5#6{%
396 \csname MathChar \endcsname"0%
397 \if D#2\@xp\delim@b\csname sd@#4#5#6\endcsname#4#5#6
404 % Before declaring any math characters active, we have to take care of
405 % a small problem with \pkg{amsmath} v2.x, if it is loaded before
406 % \pkg{flexisym}. \cs{std@minus} and \cs{std@equal} are defined as
408 % \mathchardef\std@minus\mathcode`\-\relax
409 % \mathchardef\std@equal\mathcode`\=\relax
411 % in \fn{amsmath.sty} and again \cs{AtBeginDocument}. The
414 % In case some alternative math fonts are loaded
415 % later. [\fn{amsmath.dtx}]
417 % The problem arises because \pkg{flexisym} sets the mathcode of all
418 % symbols to $32768$ which is illegal for a \cs{mathchardef}.
420 % We have to remove the assignments from the \cs{AtBeginDocument} hook
421 % as they will cause an error there.
423 \@ifpackageloaded{amsmath}{%
426 % Split the contents of \cs{@begindocumenthook} by reading what we
427 % search for as a delimited argument and ensure these two assignments
428 % do not take place. It is questionable if anything reasonable can be
429 % done to them. In the case of a package such as \pkg{mathpazo} which defines
431 %\DeclareMathSymbol{=}{\mathrel}{upright}{"3D}
433 % the \cs{Relbar} will look wrong if we don't use the correct
434 % symbol. The way to solve this is define additional \fn{.sym} files
435 % which contain the definition of \cs{relbar} and \cs{Relbar}
436 % needed. We need those additional files anyway for things like
439 \long\def\next#1\mathchardef\std@minus\mathcode`\-\relax
440 \mathchardef\std@equal\mathcode`\=\relax#2\flexi@stop{%
442 \xdef\@begindocumenthook{\the\toks@}%
444 \expandafter\next\@begindocumenthook\flexi@stop
449 % There is problem when using \cs{DeclareMathOperator} as the
450 % operators defined call a command \cs{newmcodes@} which relies on the
451 % mathcode of \texttt{-} being less than 32768. We delay the
452 % definition \cs{AtBeginDocument} in case \pkg{amssymb} hasn't been
457 \mathcode `\'39\mathcode `\*42\mathcode `\."613A
458 \ifnum\mathcode`\-=45
461 % The extra check. Don't do anything if \texttt{-} is math active.
463 \ifnum\mathcode`\-=32768
465 \mathchardef \std@minus \mathcode `\-\relax
468 \mathcode `\-45 \mathcode `\/47\mathcode `\:"603A\relax
473 % And we then continue with the options.
475 \DeclareOption{mathstyleoff}{\PassOptionsToPackage{mathactivechars}{mathstyle}}
476 \DeclareOption{cmbase}{\usesymbols{cmbase}}
477 \DeclareOption{mathpazo}{\usesymbols{mathpazo}}
478 \DeclareOption{mathptmx}{\usesymbols{mathptmx}}
479 \ExecuteOptions{cmbase}
480 \ProcessOptions\relax
481 \renewcommand{\lnot}{\neg}
482 \renewcommand{\land}{\wedge}
483 \renewcommand{\lor}{\vee}
484 \renewcommand{\le}{\leq}
485 \renewcommand{\ge}{\geq}
486 \renewcommand{\ne}{\neq}
487 \renewcommand{\owns}{\ni}
488 \renewcommand{\gets}{\leftarrow}
489 \renewcommand{\to}{\rightarrow}
490 \renewcommand{\|}{\Vert}
491 \RequirePackage{mathstyle}
495 % \section{cmbase, mathpazo, mathptmx}
498 % For each math font package we define a corresponding symbol file
499 % with extension \fn{sym}. The Computer Modern base is called
500 % \opt{cmbase} and \opt{mathpazo} and \opt{mathptmx} corresponds to
501 % the packages. The definitions are almost identical as they mostly
502 % concern the positions in the math font encodings. Look for
503 % differences in \cs{joinord}, \cs{relbar} and \cs{Relbar}. If you
504 % inspect the source code, you'll see that the support for
505 % \pkg{mathptmx} didn't require any work but I thought it better to
506 % create a \fn{sym} file to maintain a uniform interface.
509 % Open question on \verb"!" and \verb"?": maybe they
510 % should have type `Pun' instead of `DeR'. Need to
511 % search for uses in math in AMS archives. Or, maybe add a special
512 % `Clo' type for them: non-extensible closing delimiter.
517 % Default mathgroup setup.
519 %<*cmbase|mathpazo|mathptmx>
520 %<cmbase>\ProvidesSymbols{cmbase}[2007/12/19 v0.92]
521 %<mathpazo>\ProvidesSymbols{mathpazo}[2007/12/19 v0.2]
522 %<mathptmx>\ProvidesSymbols{mathptmx}[2007/12/19 v0.2]
523 \@xp\xdef\csname mg@OT1\endcsname{\hexnumber@\symoperators}
524 \@xp\xdef\csname mg@OML\endcsname{\hexnumber@\symletters}
525 \@xp\xdef\csname mg@OMS\endcsname{\hexnumber@\symsymbols}
526 \@xp\xdef\csname mg@OMX\endcsname{\hexnumber@\symlargesymbols}
527 \gdef\mg@bin{\mg@OMS}
528 \gdef\mg@del{\mg@OMX}
529 \xdef\mg@digit{\@xp\@nx\csname mg@OT1\endcsname}
530 \gdef\mg@latin{\mg@OML}
531 \global\let\mg@Latin\mg@latin
532 \global\let\mg@greek\mg@latin
533 \global\let\mg@Greek\mg@digit
534 \global\let\mg@rel\mg@bin
535 \global\let\mg@ord\mg@bin
536 \global\let\mg@cop\mg@del
540 % Symbols from the 128-character \fn{cmr} encoding.
541 % Paren and square bracket delimiters from this encoding are covered
542 % by the definitions in the \fn{cmex} section, however.
544 \DeclareFlexSymbol{!} {Pun}{OT1}{21}
545 \DeclareFlexSymbol{+} {Bin}{OT1}{2B}
546 \DeclareFlexSymbol{:} {Rel}{OT1}{3A}
547 \DeclareFlexSymbol{\colon}{Pun}{OT1}{3A}
548 \DeclareFlexSymbol{;} {Pun}{OT1}{3B}
549 \DeclareFlexSymbol{=} {Rel}{OT1}{3D}
550 \DeclareFlexSymbol{?} {Pun}{OT1}{3F}
552 % \AmS\TeX, and therefore the \pkg{amsmath} package, make the
553 % uppercase Greek letters class 0 (nonvariable) instead of 7
554 % (variable), to eliminate the glaring inconsistency with lowercase
555 % Greek. (In plain \TeX , \verb"{\bf\Delta}" works, while
556 % \verb"{\bf\delta}" doesn't. ) Let us try to make them both
557 % variable (fonts permitting) instead of nonvariable.
559 \DeclareFlexSymbol{\Gamma} {Var}{Greek}{00}
560 \DeclareFlexSymbol{\Delta} {Var}{Greek}{01}
561 \DeclareFlexSymbol{\Theta} {Var}{Greek}{02}
562 \DeclareFlexSymbol{\Lambda} {Var}{Greek}{03}
563 \DeclareFlexSymbol{\Xi} {Var}{Greek}{04}
564 \DeclareFlexSymbol{\Pi} {Var}{Greek}{05}
565 \DeclareFlexSymbol{\Sigma} {Var}{Greek}{06}
566 \DeclareFlexSymbol{\Upsilon}{Var}{Greek}{07}
567 \DeclareFlexSymbol{\Phi} {Var}{Greek}{08}
568 \DeclareFlexSymbol{\Psi} {Var}{Greek}{09}
569 \DeclareFlexSymbol{\Omega} {Var}{Greek}{0A}
573 \DeclareFlexSymbol{0}{Var}{digit}{30}
574 \DeclareFlexSymbol{1}{Var}{digit}{31}
575 \DeclareFlexSymbol{2}{Var}{digit}{32}
576 \DeclareFlexSymbol{3}{Var}{digit}{33}
577 \DeclareFlexSymbol{4}{Var}{digit}{34}
578 \DeclareFlexSymbol{5}{Var}{digit}{35}
579 \DeclareFlexSymbol{6}{Var}{digit}{36}
580 \DeclareFlexSymbol{7}{Var}{digit}{37}
581 \DeclareFlexSymbol{8}{Var}{digit}{38}
582 \DeclareFlexSymbol{9}{Var}{digit}{39}
584 % Symbols from the 128-character \fn{cmmi} encoding.
586 \DeclareFlexSymbol{,}{Pun}{OML}{3B}
587 \DeclareFlexSymbol{.}{Ord}{OML}{3A}
588 \DeclareFlexSymbol{/}{Ord}{OML}{3D}
589 \DeclareFlexSymbol{<}{Rel}{OML}{3C}
590 \DeclareFlexSymbol{>}{Rel}{OML}{3E}
592 % To do: make the Var property of lc Greek work properly.
594 \DeclareFlexSymbol{\alpha}{Var}{greek}{0B}
595 \DeclareFlexSymbol{\beta}{Var}{greek}{0C}
596 \DeclareFlexSymbol{\gamma}{Var}{greek}{0D}
597 \DeclareFlexSymbol{\delta}{Var}{greek}{0E}
598 \DeclareFlexSymbol{\epsilon}{Var}{greek}{0F}
599 \DeclareFlexSymbol{\zeta}{Var}{greek}{10}
600 \DeclareFlexSymbol{\eta}{Var}{greek}{11}
601 \DeclareFlexSymbol{\theta}{Var}{greek}{12}
602 \DeclareFlexSymbol{\iota}{Var}{greek}{13}
603 \DeclareFlexSymbol{\kappa}{Var}{greek}{14}
604 \DeclareFlexSymbol{\lambda}{Var}{greek}{15}
605 \DeclareFlexSymbol{\mu}{Var}{greek}{16}
606 \DeclareFlexSymbol{\nu}{Var}{greek}{17}
607 \DeclareFlexSymbol{\xi}{Var}{greek}{18}
608 \DeclareFlexSymbol{\pi}{Var}{greek}{19}
609 \DeclareFlexSymbol{\rho}{Var}{greek}{1A}
610 \DeclareFlexSymbol{\sigma}{Var}{greek}{1B}
611 \DeclareFlexSymbol{\tau}{Var}{greek}{1C}
612 \DeclareFlexSymbol{\upsilon}{Var}{greek}{1D}
613 \DeclareFlexSymbol{\phi}{Var}{greek}{1E}
614 \DeclareFlexSymbol{\chi}{Var}{greek}{1F}
615 \DeclareFlexSymbol{\psi}{Var}{greek}{20}
616 \DeclareFlexSymbol{\omega}{Var}{greek}{21}
617 \DeclareFlexSymbol{\varepsilon}{Var}{greek}{22}
618 \DeclareFlexSymbol{\vartheta}{Var}{greek}{23}
619 \DeclareFlexSymbol{\varpi}{Var}{greek}{24}
620 \DeclareFlexSymbol{\varrho}{Var}{greek}{25}
621 \DeclareFlexSymbol{\varsigma}{Var}{greek}{26}
622 \DeclareFlexSymbol{\varphi}{Var}{greek}{27}
624 % Note that in plain \TeX\ \cs{imath} and \cs{jmath} are
625 % not variable-font. But if a \verb"j" changes font to, let's
626 % say, sans serif or calligraphic, a dotless \verb"j" in the same
627 % context should change font in the same way.
629 \DeclareFlexSymbol{\imath}{Var}{OML}{7B}
630 \DeclareFlexSymbol{\jmath}{Var}{OML}{7C}
631 \DeclareFlexSymbol{\ell}{Ord}{OML}{60}
632 \DeclareFlexSymbol{\wp}{Ord}{OML}{7D}
633 \DeclareFlexSymbol{\partial}{Ord}{OML}{40}
634 \DeclareFlexSymbol{\flat}{Ord}{OML}{5B}
635 \DeclareFlexSymbol{\natural}{Ord}{OML}{5C}
636 \DeclareFlexSymbol{\sharp}{Ord}{OML}{5D}
637 \DeclareFlexSymbol{\triangleleft}{Bin}{OML}{2F}
638 \DeclareFlexSymbol{\triangleright}{Bin}{OML}{2E}
639 \DeclareFlexSymbol{\star}{Bin}{OML}{3F}
640 \DeclareFlexSymbol{\smile}{Rel}{OML}{5E}
641 \DeclareFlexSymbol{\frown}{Rel}{OML}{5F}
642 \DeclareFlexSymbol{\leftharpoonup}{Rel}{OML}{28}
643 \DeclareFlexSymbol{\leftharpoondown}{Rel}{OML}{29}
644 \DeclareFlexSymbol{\rightharpoonup}{Rel}{OML}{2A}
645 \DeclareFlexSymbol{\rightharpoondown}{Rel}{OML}{2B}
646 \DeclareFlexSymbol{a}{Var}{latin}{61}
647 \DeclareFlexSymbol{b}{Var}{latin}{62}
648 \DeclareFlexSymbol{c}{Var}{latin}{63}
649 \DeclareFlexSymbol{d}{Var}{latin}{64}
650 \DeclareFlexSymbol{e}{Var}{latin}{65}
651 \DeclareFlexSymbol{f}{Var}{latin}{66}
652 \DeclareFlexSymbol{g}{Var}{latin}{67}
653 \DeclareFlexSymbol{h}{Var}{latin}{68}
654 \DeclareFlexSymbol{i}{Var}{latin}{69}
655 \DeclareFlexSymbol{j}{Var}{latin}{6A}
656 \DeclareFlexSymbol{k}{Var}{latin}{6B}
657 \DeclareFlexSymbol{l}{Var}{latin}{6C}
658 \DeclareFlexSymbol{m}{Var}{latin}{6D}
659 \DeclareFlexSymbol{n}{Var}{latin}{6E}
660 \DeclareFlexSymbol{o}{Var}{latin}{6F}
661 \DeclareFlexSymbol{p}{Var}{latin}{70}
662 \DeclareFlexSymbol{q}{Var}{latin}{71}
663 \DeclareFlexSymbol{r}{Var}{latin}{72}
664 \DeclareFlexSymbol{s}{Var}{latin}{73}
665 \DeclareFlexSymbol{t}{Var}{latin}{74}
666 \DeclareFlexSymbol{u}{Var}{latin}{75}
667 \DeclareFlexSymbol{v}{Var}{latin}{76}
668 \DeclareFlexSymbol{w}{Var}{latin}{77}
669 \DeclareFlexSymbol{x}{Var}{latin}{78}
670 \DeclareFlexSymbol{y}{Var}{latin}{79}
671 \DeclareFlexSymbol{z}{Var}{latin}{7A}
672 \DeclareFlexSymbol{A}{Var}{Latin}{41}
673 \DeclareFlexSymbol{B}{Var}{Latin}{42}
674 \DeclareFlexSymbol{C}{Var}{Latin}{43}
675 \DeclareFlexSymbol{D}{Var}{Latin}{44}
676 \DeclareFlexSymbol{E}{Var}{Latin}{45}
677 \DeclareFlexSymbol{F}{Var}{Latin}{46}
678 \DeclareFlexSymbol{G}{Var}{Latin}{47}
679 \DeclareFlexSymbol{H}{Var}{Latin}{48}
680 \DeclareFlexSymbol{I}{Var}{Latin}{49}
681 \DeclareFlexSymbol{J}{Var}{Latin}{4A}
682 \DeclareFlexSymbol{K}{Var}{Latin}{4B}
683 \DeclareFlexSymbol{L}{Var}{Latin}{4C}
684 \DeclareFlexSymbol{M}{Var}{Latin}{4D}
685 \DeclareFlexSymbol{N}{Var}{Latin}{4E}
686 \DeclareFlexSymbol{O}{Var}{Latin}{4F}
687 \DeclareFlexSymbol{P}{Var}{Latin}{50}
688 \DeclareFlexSymbol{Q}{Var}{Latin}{51}
689 \DeclareFlexSymbol{R}{Var}{Latin}{52}
690 \DeclareFlexSymbol{S}{Var}{Latin}{53}
691 \DeclareFlexSymbol{T}{Var}{Latin}{54}
692 \DeclareFlexSymbol{U}{Var}{Latin}{55}
693 \DeclareFlexSymbol{V}{Var}{Latin}{56}
694 \DeclareFlexSymbol{W}{Var}{Latin}{57}
695 \DeclareFlexSymbol{X}{Var}{Latin}{58}
696 \DeclareFlexSymbol{Y}{Var}{Latin}{59}
697 \DeclareFlexSymbol{Z}{Var}{Latin}{5A}
699 % The \cs{ldotPun} glyph is used in constructing the
700 % \cs{ldots} symbol. It is just a period with a different math
701 % symbol class. \cs{lhookRel} and \cs{rhookRel} are used
702 % in a similar way for building hooked arrow symbols.
704 \DeclareFlexSymbol{\ldotPun}{Pun}{OML}{3A}
706 \DeclareFlexSymbol{\lhookRel}{Rel}{OML}{2C}
707 \DeclareFlexSymbol{\rhookRel}{Rel}{OML}{2D}
709 % Symbols from the 128-character \fn{cmsy} encoding.
711 \DeclareFlexSymbol{*}{Bin}{bin}{03} % \ast
712 \DeclareFlexSymbol{-}{Bin}{bin}{00}
713 \DeclareFlexSymbol{|}{Ord}{OMS}{6A}
714 \DeclareFlexSymbol{\aleph}{Ord}{ord}{40}
715 \DeclareFlexSymbol{\Re}{Ord}{ord}{3C}
716 \DeclareFlexSymbol{\Im}{Ord}{ord}{3D}
717 \DeclareFlexSymbol{\infty}{Ord}{ord}{31}
718 \DeclareFlexSymbol{\prime}{Ord}{ord}{30}
719 \DeclareFlexSymbol{\emptyset}{Ord}{ord}{3B}
720 \DeclareFlexSymbol{\nabla}{Ord}{ord}{72}
721 \DeclareFlexSymbol{\top}{Ord}{ord}{3E}
722 \DeclareFlexSymbol{\bot}{Ord}{ord}{3F}
723 \DeclareFlexSymbol{\triangle}{Ord}{ord}{34}
724 \DeclareFlexSymbol{\forall}{Ord}{ord}{38}
725 \DeclareFlexSymbol{\exists}{Ord}{ord}{39}
726 \DeclareFlexSymbol{\neg}{Ord}{ord}{3A}
727 \DeclareFlexSymbol{\clubsuit}{Ord}{ord}{7C}
728 \DeclareFlexSymbol{\diamondsuit}{Ord}{ord}{7D}
729 \DeclareFlexSymbol{\heartsuit}{Ord}{ord}{7E}
730 \DeclareFlexSymbol{\spadesuit}{Ord}{ord}{7F}
731 \DeclareFlexSymbol{\smallint}{COs}{OMS}{73}
735 \DeclareFlexSymbol{\bigtriangleup}{Bin}{bin}{34}
736 \DeclareFlexSymbol{\bigtriangledown}{Bin}{bin}{35}
737 \DeclareFlexSymbol{\wedge}{Bin}{bin}{5E}
738 \DeclareFlexSymbol{\vee}{Bin}{bin}{5F}
739 \DeclareFlexSymbol{\cap}{Bin}{bin}{5C}
740 \DeclareFlexSymbol{\cup}{Bin}{bin}{5B}
741 \DeclareFlexSymbol{\ddagger}{Bin}{bin}{7A}
742 \DeclareFlexSymbol{\dagger}{Bin}{bin}{79}
743 \DeclareFlexSymbol{\sqcap}{Bin}{bin}{75}
744 \DeclareFlexSymbol{\sqcup}{Bin}{bin}{74}
745 \DeclareFlexSymbol{\uplus}{Bin}{bin}{5D}
746 \DeclareFlexSymbol{\amalg}{Bin}{bin}{71}
747 \DeclareFlexSymbol{\diamond}{Bin}{bin}{05}
748 \DeclareFlexSymbol{\bullet}{Bin}{bin}{0F}
749 \DeclareFlexSymbol{\wr}{Bin}{bin}{6F}
750 \DeclareFlexSymbol{\div}{Bin}{bin}{04}
751 \DeclareFlexSymbol{\odot}{Bin}{bin}{0C}
752 \DeclareFlexSymbol{\oslash}{Bin}{bin}{0B}
753 \DeclareFlexSymbol{\otimes}{Bin}{bin}{0A}
754 \DeclareFlexSymbol{\ominus}{Bin}{bin}{09}
755 \DeclareFlexSymbol{\oplus}{Bin}{bin}{08}
756 \DeclareFlexSymbol{\mp}{Bin}{bin}{07}
757 \DeclareFlexSymbol{\pm}{Bin}{bin}{06}
758 \DeclareFlexSymbol{\circ}{Bin}{bin}{0E}
759 \DeclareFlexSymbol{\bigcirc}{Bin}{bin}{0D}
760 \DeclareFlexSymbol{\setminus}{Bin}{bin}{6E}
761 \DeclareFlexSymbol{\cdot}{Bin}{bin}{01}
762 \DeclareFlexSymbol{\ast}{Bin}{bin}{03}
763 \DeclareFlexSymbol{\times}{Bin}{bin}{02}
767 \DeclareFlexSymbol{\propto}{Rel}{rel}{2F}
768 \DeclareFlexSymbol{\sqsubseteq}{Rel}{rel}{76}
769 \DeclareFlexSymbol{\sqsupseteq}{Rel}{rel}{77}
770 \DeclareFlexSymbol{\parallel}{Rel}{rel}{6B}
771 \DeclareFlexSymbol{\mid}{Rel}{rel}{6A}
772 \DeclareFlexSymbol{\dashv}{Rel}{rel}{61}
773 \DeclareFlexSymbol{\vdash}{Rel}{rel}{60}
774 \DeclareFlexSymbol{\nearrow}{Rel}{rel}{25}
775 \DeclareFlexSymbol{\searrow}{Rel}{rel}{26}
776 \DeclareFlexSymbol{\nwarrow}{Rel}{rel}{2D}
777 \DeclareFlexSymbol{\swarrow}{Rel}{rel}{2E}
778 \DeclareFlexSymbol{\Leftrightarrow}{Rel}{rel}{2C}
779 \DeclareFlexSymbol{\Leftarrow}{Rel}{rel}{28}
780 \DeclareFlexSymbol{\Rightarrow}{Rel}{rel}{29}
781 \DeclareFlexSymbol{\leq}{Rel}{rel}{14}
782 \DeclareFlexSymbol{\geq}{Rel}{rel}{15}
783 \DeclareFlexSymbol{\succ}{Rel}{rel}{1F}
784 \DeclareFlexSymbol{\prec}{Rel}{rel}{1E}
785 \DeclareFlexSymbol{\approx}{Rel}{rel}{19}
786 \DeclareFlexSymbol{\succeq}{Rel}{rel}{17}
787 \DeclareFlexSymbol{\preceq}{Rel}{rel}{16}
788 \DeclareFlexSymbol{\supset}{Rel}{rel}{1B}
789 \DeclareFlexSymbol{\subset}{Rel}{rel}{1A}
790 \DeclareFlexSymbol{\supseteq}{Rel}{rel}{13}
791 \DeclareFlexSymbol{\subseteq}{Rel}{rel}{12}
792 \DeclareFlexSymbol{\in}{Rel}{rel}{32}
793 \DeclareFlexSymbol{\ni}{Rel}{rel}{33}
794 \DeclareFlexSymbol{\gg}{Rel}{rel}{1D}
795 \DeclareFlexSymbol{\ll}{Rel}{rel}{1C}
796 \DeclareFlexSymbol{\leftrightarrow}{Rel}{rel}{24}
797 \DeclareFlexSymbol{\leftarrow}{Rel}{rel}{20}
798 \DeclareFlexSymbol{\rightarrow}{Rel}{rel}{21}
799 \DeclareFlexSymbol{\sim}{Rel}{rel}{18}
800 \DeclareFlexSymbol{\simeq}{Rel}{rel}{27}
801 \DeclareFlexSymbol{\perp}{Rel}{rel}{3F}
802 \DeclareFlexSymbol{\equiv}{Rel}{rel}{11}
803 \DeclareFlexSymbol{\asymp}{Rel}{rel}{10}
805 % The \cs{notRel} glyph is a special zero-width glyph intended only
806 % for use in constructing negated symbols. \cs{mapstoRel} and
807 % \cs{cdotPun} have similar but more restricted applications.
809 \DeclareFlexSymbol{\notRel}{Rel}{rel}{36}
810 \DeclareFlexSymbol{\mapstoOrd}{Ord}{OMS}{37}
811 \DeclareFlexSymbol{\cdotOrd}{Ord}{OMS}{01}
812 \def\cdotp{\mathpunct{\cdotOrd}}
814 % Symbols from the 128-character \fn{cmex} encoding.
815 % \verb"COs" stands for `cumulative operator
817 % \verb"COi" stands for `cumulative operator
818 % (integral-like)'. These typically differ only in the
819 % default placement of limits. \verb"cop" stands for
820 % `cumulative operator math group'.
822 \DeclareFlexSymbol{\coprod}{COs}{cop}{60}
823 \DeclareFlexSymbol{\bigvee}{COs}{cop}{57}
824 \DeclareFlexSymbol{\bigwedge}{COs}{cop}{56}
825 \DeclareFlexSymbol{\biguplus}{COs}{cop}{55}
826 \DeclareFlexSymbol{\bigcap}{COs}{cop}{54}
827 \DeclareFlexSymbol{\bigcup}{COs}{cop}{53}
828 \DeclareFlexSymbol{\int}{COi}{cop}{52}
829 \DeclareFlexSymbol{\prod}{COs}{cop}{51}
830 \DeclareFlexSymbol{\sum}{COs}{cop}{50}
831 \DeclareFlexSymbol{\bigotimes}{COs}{cop}{4E}
832 \DeclareFlexSymbol{\bigoplus}{COs}{cop}{4C}
833 \DeclareFlexSymbol{\bigodot}{COs}{cop}{4A}
834 \DeclareFlexSymbol{\oint}{COi}{cop}{48}
835 \DeclareFlexSymbol{\bigsqcup}{COs}{cop}{46}
838 % \verb"DeL" stands for `delimiter (left)'.
839 % \verb"DeR" stands for `delimiter (right)'.
840 % \verb"DeB" stands for `delimiter (bidirectional)'.
841 % The principal encoding point for an extensible delimiter is the
842 % first link in the list of linked sizes as specified in the font metric
844 % For a math encoding such as OT1/OML/OMS/OMX where not all sizes of a
845 % given delimiter reside in a given font, the extra encoding point for the
846 % smallest delimiter must be supplied by defining
850 % where G is the mathgroup and XX is the hexadecimal glyph position.
852 \DeclareFlexSymbol{\rangle}{DeR}{del}{0B}
853 \DeclareFlexSymbol{\langle}{DeL}{del}{0A}
854 \DeclareFlexSymbol{\rbrace}{DeR}{del}{09}
855 \DeclareFlexSymbol{\lbrace}{DeL}{del}{08}
856 \DeclareFlexSymbol{\rceil}{DeR}{del}{07}
857 \DeclareFlexSymbol{\lceil}{DeL}{del}{06}
858 \DeclareFlexSymbol{\rfloor}{DeR}{del}{05}
859 \DeclareFlexSymbol{\lfloor}{DeL}{del}{04}
860 \DeclareFlexSymbol{(}{DeL}{del}{00}
861 \DeclareFlexSymbol{)}{DeR}{del}{01}
862 \DeclareFlexSymbol{[}{DeL}{del}{02}
863 \DeclareFlexSymbol{]}{DeR}{del}{03}
864 \DeclareFlexSymbol{\lVert}{DeL}{del}{0D}
865 \DeclareFlexSymbol{\rVert}{DeR}{del}{0D}
866 \DeclareFlexSymbol{\lvert}{DeL}{del}{0C}
867 \DeclareFlexSymbol{\rvert}{DeR}{del}{0C}
868 \DeclareFlexSymbol{\Vert}{DeB}{del}{0D}
869 \DeclareFlexSymbol{\vert}{DeB}{del}{0C}
871 % Maybe make the vert bars mathord instead of delimiter, to discourage
874 \DeclareFlexSymbol{|}{DeB}{del}{0C}
875 \DeclareFlexSymbol{/}{DeB}{del}{0E}
879 % These wacky delimiters need to be supported I guess for
880 % compabitility reasons.
881 % The DeA delimiter type is a special case used only for these
884 \DeclareFlexSymbol{\lmoustache}{DeL}{del}{40}
885 \DeclareFlexSymbol{\rmoustache}{DeR}{del}{41}
886 \DeclareFlexSymbol{\lgroup}{DeL}{del}{3A}
887 \DeclareFlexSymbol{\rgroup}{DeR}{del}{3B}
888 \DeclareFlexSymbol{\bracevert}{DeB}{del}{3E}
889 \DeclareFlexSymbol{\arrowvert}{DeB}{del}{3C}
890 \DeclareFlexSymbol{\Arrowvert}{DeB}{del}{3D}
891 \DeclareFlexSymbol{\uparrow}{DeA}{del}{78}
892 \DeclareFlexSymbol{\downarrow}{DeA}{del}{79}
893 \DeclareFlexSymbol{\updownarrow}{DeA}{del}{3F}
894 \DeclareFlexSymbol{\Uparrow}{DeA}{del}{7E}
895 \DeclareFlexSymbol{\Downarrow}{DeA}{del}{7F}
896 \DeclareFlexSymbol{\Updownarrow}{DeA}{del}{77}
897 \DeclareFlexSymbol{\backslash}{DeB}{del}{0F}
903 % \section{Some compound symbols}
904 % The following symbols are not robust in standard \LaTeX\
905 % because they use \verb"#" or \cs{mathpalette} (which is not
906 % robust and contains a \verb"#" in its expansion): \cs{angle},
907 % \cs{cong}, \cs{notin}, \cs{rightleftharpoons}.
909 % In this definition of \cs{hbar}, the symbol is cobbled together
910 % from a math italic h and the cmr overbar accent glyph.
912 \DeclareFlexSymbol{\hbarOrd}{Ord}{OT1}{16}
913 \DeclareFlexCompoundSymbol{\hbar}{Ord}{\hbarOrd\mkern-9mu h}
915 % For \cs{surd}, the interior symbol gets math class 1
916 % (cumulative operator) to make the glyph vertically centered on the
917 % math axis, but the desired horizontal spacing is the spacing for a
918 % mathord. (Couldn't it just be class mathopen, though? )
920 \DeclareFlexSymbol{\surdOrd}{Ord}{OMS}{70}
921 \DeclareFlexCompoundSymbol{\surd}{Ord}{\mathop{\surdOrd}}
923 % As shown in this definition of \cs{angle}, rule dimens are not
924 % allowed to use math-units, unfortunately.
926 \DeclareFlexCompoundSymbol{\angle}{Ord}{%
928 $\m@th\scriptstyle##$\crcr
929 \notRel\mathrel{\mkern14mu}\crcr
930 \noalign{\nointerlineskip}%
931 \mkern2.5mu\leaders\hrule \@height.34pt\hfill\mkern2.5mu\crcr
935 % The \cs{not} function, which is defined in the \pkg{flexisym}
936 % package, requires a suitably defined \cs{notRel} symbol.
938 \DeclareFlexCompoundSymbol{\neq}{Rel}{\not{=}}
942 \DeclareFlexCompoundSymbol{\mapsto}{Rel}{\mapstoOrd\rightarrow}
944 % The \cs{@vereq} function ends by centering the whole
945 % construction on the math axis, unlike \cs{buildrel} where the base
946 % symbol remains at its normal altitude. Furthermore,
947 % \cs{@vereq} leaves the math style of the top symbol as given
948 % instead of downsizing to scriptstyle.
950 \DeclareFlexCompoundSymbol{\cong}{Rel}{\mathpalette\@vereq\sim}
952 % The \cs{m@th} in the \fn{fontmath.ltx} definition of
953 % \cs{notin} is superfluous unless \cs{c@ncel} doesn't include
954 % it (which was perhaps true in an older version of
957 \providecommand*\joinord{}
958 %<cmbase|mathptmx>\renewcommand*\joinord{\mkern-3mu }
959 %<mathpazo>\renewcommand*\joinord{\mkern-3.45mu }
960 \DeclareFlexCompoundSymbol{\notin}{Rel}{\mathpalette\c@ncel\in}
961 \DeclareFlexCompoundSymbol{\rightleftharpoons}{Rel}{\mathpalette\rlh@{}}
962 \DeclareFlexCompoundSymbol{\doteq}{Rel}{\buildrel\textstyle.\over=}
963 \DeclareFlexCompoundSymbol{\hookrightarrow}{Rel}{\lhookRel\joinord\rightarrow}
964 \DeclareFlexCompoundSymbol{\hookleftarrow}{Rel}{\leftarrow\joinord\rhookRel}
965 \DeclareFlexCompoundSymbol{\bowtie}{Rel}{\triangleright\joinord\triangleleft}
966 \DeclareFlexCompoundSymbol{\models}{Rel}{\vert\joinord=}
967 \DeclareFlexCompoundSymbol{\Longrightarrow}{Rel}{\Relbar\joinord\Rightarrow}
968 \DeclareFlexCompoundSymbol{\longrightarrow}{Rel}{\relbar\joinord\rightarrow}
969 \DeclareFlexCompoundSymbol{\Longleftarrow}{Rel}{\Leftarrow\joinord\Relbar}
970 \DeclareFlexCompoundSymbol{\longleftarrow}{Rel}{\leftarrow\joinord\relbar}
971 \DeclareFlexCompoundSymbol{\longmapsto}{Rel}{\mapstochar\longrightarrow}
972 \DeclareFlexCompoundSymbol{\longleftrightarrow}{Rel}{\leftarrow\joinord\rightarrow}
973 \DeclareFlexCompoundSymbol{\Longleftrightarrow}{Rel}{\Leftarrow\joinord\Rightarrow}
975 % Here is what you get from the old definition of \cs{iff}.
977 % \glue 2.77771 plus 2.77771
978 % \glue(\thickmuskip) 2.77771 plus 2.77771
980 % \hbox(0.0+0.0)x-1.66663
984 % \glue 2.77771 plus 2.77771
985 % \glue(\thickmuskip) 2.77771 plus 2.77771
987 % Looks like it could be simplified slightly. But it's not so
988 % easy as it looks to do it without screwing up the line breaking
992 \mskip\thickmuskip\Longleftrightarrow\mskip\thickmuskip
995 % Some dotly symbols.
997 \DeclareFlexCompoundSymbol{\cdots}{Inn}{\cdotp\cdotp\cdotp}%
998 \DeclareFlexCompoundSymbol{\vdots}{Ord}{%
999 \vbox{\baselineskip4\p@ \lineskiplimit\z@
1000 \kern6\p@\hbox{.}\hbox{.}\hbox{.}}}
1001 \DeclareFlexCompoundSymbol{\ddots}{Inn}{%
1003 \vbox{\kern7\p@\hbox{.}}\mkern2mu%
1004 \raise4\p@\hbox{.}\mkern2mu\raise\p@\hbox{.}\mkern1mu%
1009 \def\relbar{\begingroup \def\smash@{tb}% in case amsmath is loaded
1010 \mathpalette\mathsm@sh{\mathchar"200 }\endgroup}
1012 % For \cs{Relbar} we take an equal sign of class $0$ (Ord) from the
1013 % operator family. For \fn{cmr} and \pkg{mathptmx} we know this is
1016 %<cmbase|mathptmx>\def\Relbar{\mathchar"3D }
1018 % For the \pkg{mathpazo} setup we need to use the equal sign from
1019 % \fn{cmr} and so must insert class $0$ and use the symbol from the
1022 %<mathpazo>\edef\Relbar{\mathchar\string"\hexnumber@\symupright3D }
1026 %</cmbase|mathpazo|mathptmx>
1028 % Various synonyms such as \cs{le} for \cs{leq} and
1029 % \cs{to} for \cs{rightarrow} are defined in
1030 % \pkg{flexisym} with \cs{def} instead of \cs{let}, for
1031 % slower execution speed but smaller chance of synchronization
1038 \ProvidesSymbols{msabm}[2001/09/08 v0.91]
1041 \RequirePackage{amsfonts}\relax
1044 \@xp\xdef\csname mg@MSA\endcsname{\hexnumber@\symAMSa}%
1045 \@xp\xdef\csname mg@MSB\endcsname{\hexnumber@\symAMSb}%
1048 \DeclareFlexSymbol{\boxdot} {Bin}{MSA}{00}
1049 \DeclareFlexSymbol{\boxplus} {Bin}{MSA}{01}
1050 \DeclareFlexSymbol{\boxtimes} {Bin}{MSA}{02}
1051 \DeclareFlexSymbol{\square} {Ord}{MSA}{03}
1052 \DeclareFlexSymbol{\blacksquare} {Ord}{MSA}{04}
1053 \DeclareFlexSymbol{\centerdot} {Bin}{MSA}{05}
1054 \DeclareFlexSymbol{\lozenge} {Ord}{MSA}{06}
1055 \DeclareFlexSymbol{\blacklozenge} {Ord}{MSA}{07}
1056 \DeclareFlexSymbol{\circlearrowright} {Rel}{MSA}{08}
1057 \DeclareFlexSymbol{\circlearrowleft} {Rel}{MSA}{09}
1061 %%\DeclareFlexSymbol{\rightleftharpoons}{Rel}{MSA}{0A}
1062 \DeclareFlexSymbol{\leftrightharpoons} {Rel}{MSA}{0B}
1063 \DeclareFlexSymbol{\boxminus} {Bin}{MSA}{0C}
1064 \DeclareFlexSymbol{\Vdash} {Rel}{MSA}{0D}
1065 \DeclareFlexSymbol{\Vvdash} {Rel}{MSA}{0E}
1066 \DeclareFlexSymbol{\vDash} {Rel}{MSA}{0F}
1067 \DeclareFlexSymbol{\twoheadrightarrow} {Rel}{MSA}{10}
1068 \DeclareFlexSymbol{\twoheadleftarrow} {Rel}{MSA}{11}
1069 \DeclareFlexSymbol{\leftleftarrows} {Rel}{MSA}{12}
1070 \DeclareFlexSymbol{\rightrightarrows} {Rel}{MSA}{13}
1071 \DeclareFlexSymbol{\upuparrows} {Rel}{MSA}{14}
1072 \DeclareFlexSymbol{\downdownarrows} {Rel}{MSA}{15}
1073 \DeclareFlexSymbol{\upharpoonright} {Rel}{MSA}{16}
1074 \let\restriction\upharpoonright
1075 \DeclareFlexSymbol{\downharpoonright} {Rel}{MSA}{17}
1076 \DeclareFlexSymbol{\upharpoonleft} {Rel}{MSA}{18}
1077 \DeclareFlexSymbol{\downharpoonleft}{Rel}{MSA}{19}
1078 \DeclareFlexSymbol{\rightarrowtail} {Rel}{MSA}{1A}
1079 \DeclareFlexSymbol{\leftarrowtail} {Rel}{MSA}{1B}
1080 \DeclareFlexSymbol{\leftrightarrows}{Rel}{MSA}{1C}
1081 \DeclareFlexSymbol{\rightleftarrows}{Rel}{MSA}{1D}
1082 \DeclareFlexSymbol{\Lsh} {Rel}{MSA}{1E}
1083 \DeclareFlexSymbol{\Rsh} {Rel}{MSA}{1F}
1084 \DeclareFlexSymbol{\rightsquigarrow} {Rel}{MSA}{20}
1085 \DeclareFlexSymbol{\leftrightsquigarrow}{Rel}{MSA}{21}
1086 \DeclareFlexSymbol{\looparrowleft} {Rel}{MSA}{22}
1087 \DeclareFlexSymbol{\looparrowright} {Rel}{MSA}{23}
1088 \DeclareFlexSymbol{\circeq} {Rel}{MSA}{24}
1089 \DeclareFlexSymbol{\succsim} {Rel}{MSA}{25}
1090 \DeclareFlexSymbol{\gtrsim} {Rel}{MSA}{26}
1091 \DeclareFlexSymbol{\gtrapprox} {Rel}{MSA}{27}
1092 \DeclareFlexSymbol{\multimap} {Rel}{MSA}{28}
1093 \DeclareFlexSymbol{\therefore} {Rel}{MSA}{29}
1094 \DeclareFlexSymbol{\because} {Rel}{MSA}{2A}
1095 \DeclareFlexSymbol{\doteqdot} {Rel}{MSA}{2B}
1097 \DeclareFlexSymbol{\triangleq} {Rel}{MSA}{2C}
1098 \DeclareFlexSymbol{\precsim} {Rel}{MSA}{2D}
1099 \DeclareFlexSymbol{\lesssim} {Rel}{MSA}{2E}
1100 \DeclareFlexSymbol{\lessapprox} {Rel}{MSA}{2F}
1101 \DeclareFlexSymbol{\eqslantless} {Rel}{MSA}{30}
1102 \DeclareFlexSymbol{\eqslantgtr} {Rel}{MSA}{31}
1103 \DeclareFlexSymbol{\curlyeqprec} {Rel}{MSA}{32}
1104 \DeclareFlexSymbol{\curlyeqsucc} {Rel}{MSA}{33}
1105 \DeclareFlexSymbol{\preccurlyeq} {Rel}{MSA}{34}
1106 \DeclareFlexSymbol{\leqq} {Rel}{MSA}{35}
1107 \DeclareFlexSymbol{\leqslant} {Rel}{MSA}{36}
1108 \DeclareFlexSymbol{\lessgtr} {Rel}{MSA}{37}
1109 \DeclareFlexSymbol{\backprime} {Ord}{MSA}{38}
1110 \DeclareFlexSymbol{\risingdotseq} {Rel}{MSA}{3A}
1111 \DeclareFlexSymbol{\fallingdotseq}{Rel}{MSA}{3B}
1112 \DeclareFlexSymbol{\succcurlyeq} {Rel}{MSA}{3C}
1113 \DeclareFlexSymbol{\geqq} {Rel}{MSA}{3D}
1114 \DeclareFlexSymbol{\geqslant} {Rel}{MSA}{3E}
1115 \DeclareFlexSymbol{\gtrless} {Rel}{MSA}{3F}
1119 %% \DeclareFlexSymbol{\sqsubset} {Rel}{MSA}{40}
1120 %% \DeclareFlexSymbol{\sqsupset} {Rel}{MSA}{41}
1121 \DeclareFlexSymbol{\vartriangleright}{Rel}{MSA}{42}
1122 \DeclareFlexSymbol{\vartriangleleft} {Rel}{MSA}{43}
1123 \DeclareFlexSymbol{\trianglerighteq} {Rel}{MSA}{44}
1124 \DeclareFlexSymbol{\trianglelefteq} {Rel}{MSA}{45}
1125 \DeclareFlexSymbol{\bigstar} {Ord}{MSA}{46}
1126 \DeclareFlexSymbol{\between} {Rel}{MSA}{47}
1127 \DeclareFlexSymbol{\blacktriangledown} {Ord}{MSA}{48}
1128 \DeclareFlexSymbol{\blacktriangleright} {Rel}{MSA}{49}
1129 \DeclareFlexSymbol{\blacktriangleleft} {Rel}{MSA}{4A}
1130 \DeclareFlexSymbol{\vartriangle} {Rel}{MSA}{4D}
1131 \DeclareFlexSymbol{\blacktriangle} {Ord}{MSA}{4E}
1132 \DeclareFlexSymbol{\triangledown} {Ord}{MSA}{4F}
1133 \DeclareFlexSymbol{\eqcirc} {Rel}{MSA}{50}
1134 \DeclareFlexSymbol{\lesseqgtr} {Rel}{MSA}{51}
1135 \DeclareFlexSymbol{\gtreqless} {Rel}{MSA}{52}
1136 \DeclareFlexSymbol{\lesseqqgtr} {Rel}{MSA}{53}
1137 \DeclareFlexSymbol{\gtreqqless} {Rel}{MSA}{54}
1138 \DeclareFlexSymbol{\Rrightarrow} {Rel}{MSA}{56}
1139 \DeclareFlexSymbol{\Lleftarrow} {Rel}{MSA}{57}
1140 \DeclareFlexSymbol{\veebar} {Bin}{MSA}{59}
1141 \DeclareFlexSymbol{\barwedge} {Bin}{MSA}{5A}
1142 \DeclareFlexSymbol{\doublebarwedge} {Bin}{MSA}{5B}
1146 %%\DeclareFlexSymbol{\angle} {Ord}{MSA}{5C}
1147 \DeclareFlexSymbol{\measuredangle} {Ord}{MSA}{5D}
1148 \DeclareFlexSymbol{\sphericalangle} {Ord}{MSA}{5E}
1149 \DeclareFlexSymbol{\varpropto} {Rel}{MSA}{5F}
1150 \DeclareFlexSymbol{\smallsmile} {Rel}{MSA}{60}
1151 \DeclareFlexSymbol{\smallfrown} {Rel}{MSA}{61}
1152 \DeclareFlexSymbol{\Subset} {Rel}{MSA}{62}
1153 \DeclareFlexSymbol{\Supset} {Rel}{MSA}{63}
1154 \DeclareFlexSymbol{\Cup} {Bin}{MSA}{64}
1156 \DeclareFlexSymbol{\Cap} {Bin}{MSA}{65}
1158 \DeclareFlexSymbol{\curlywedge} {Bin}{MSA}{66}
1159 \DeclareFlexSymbol{\curlyvee} {Bin}{MSA}{67}
1160 \DeclareFlexSymbol{\leftthreetimes} {Bin}{MSA}{68}
1161 \DeclareFlexSymbol{\rightthreetimes}{Bin}{MSA}{69}
1162 \DeclareFlexSymbol{\subseteqq} {Rel}{MSA}{6A}
1163 \DeclareFlexSymbol{\supseteqq} {Rel}{MSA}{6B}
1164 \DeclareFlexSymbol{\bumpeq} {Rel}{MSA}{6C}
1165 \DeclareFlexSymbol{\Bumpeq} {Rel}{MSA}{6D}
1166 \DeclareFlexSymbol{\lll} {Rel}{MSA}{6E}
1168 \DeclareFlexSymbol{\ggg} {Rel}{MSA}{6F}
1170 \DeclareFlexSymbol{\circledS} {Ord}{MSA}{73}
1171 \DeclareFlexSymbol{\pitchfork} {Rel}{MSA}{74}
1172 \DeclareFlexSymbol{\dotplus} {Bin}{MSA}{75}
1173 \DeclareFlexSymbol{\backsim} {Rel}{MSA}{76}
1174 \DeclareFlexSymbol{\backsimeq} {Rel}{MSA}{77}
1175 \DeclareFlexSymbol{\complement} {Ord}{MSA}{7B}
1176 \DeclareFlexSymbol{\intercal} {Bin}{MSA}{7C}
1177 \DeclareFlexSymbol{\circledcirc} {Bin}{MSA}{7D}
1178 \DeclareFlexSymbol{\circledast} {Bin}{MSA}{7E}
1179 \DeclareFlexSymbol{\circleddash} {Bin}{MSA}{7F}
1181 % Begin AMSb declarations
1183 \DeclareFlexSymbol{\lvertneqq} {Rel}{MSB}{00}
1184 \DeclareFlexSymbol{\gvertneqq} {Rel}{MSB}{01}
1185 \DeclareFlexSymbol{\nleq} {Rel}{MSB}{02}
1186 \DeclareFlexSymbol{\ngeq} {Rel}{MSB}{03}
1187 \DeclareFlexSymbol{\nless} {Rel}{MSB}{04}
1188 \DeclareFlexSymbol{\ngtr} {Rel}{MSB}{05}
1189 \DeclareFlexSymbol{\nprec} {Rel}{MSB}{06}
1190 \DeclareFlexSymbol{\nsucc} {Rel}{MSB}{07}
1191 \DeclareFlexSymbol{\lneqq} {Rel}{MSB}{08}
1192 \DeclareFlexSymbol{\gneqq} {Rel}{MSB}{09}
1193 \DeclareFlexSymbol{\nleqslant} {Rel}{MSB}{0A}
1194 \DeclareFlexSymbol{\ngeqslant} {Rel}{MSB}{0B}
1195 \DeclareFlexSymbol{\lneq} {Rel}{MSB}{0C}
1196 \DeclareFlexSymbol{\gneq} {Rel}{MSB}{0D}
1197 \DeclareFlexSymbol{\npreceq} {Rel}{MSB}{0E}
1198 \DeclareFlexSymbol{\nsucceq} {Rel}{MSB}{0F}
1199 \DeclareFlexSymbol{\precnsim} {Rel}{MSB}{10}
1200 \DeclareFlexSymbol{\succnsim} {Rel}{MSB}{11}
1201 \DeclareFlexSymbol{\lnsim} {Rel}{MSB}{12}
1202 \DeclareFlexSymbol{\gnsim} {Rel}{MSB}{13}
1203 \DeclareFlexSymbol{\nleqq} {Rel}{MSB}{14}
1204 \DeclareFlexSymbol{\ngeqq} {Rel}{MSB}{15}
1205 \DeclareFlexSymbol{\precneqq} {Rel}{MSB}{16}
1206 \DeclareFlexSymbol{\succneqq} {Rel}{MSB}{17}
1207 \DeclareFlexSymbol{\precnapprox} {Rel}{MSB}{18}
1208 \DeclareFlexSymbol{\succnapprox} {Rel}{MSB}{19}
1209 \DeclareFlexSymbol{\lnapprox} {Rel}{MSB}{1A}
1210 \DeclareFlexSymbol{\gnapprox} {Rel}{MSB}{1B}
1211 \DeclareFlexSymbol{\nsim} {Rel}{MSB}{1C}
1212 \DeclareFlexSymbol{\ncong} {Rel}{MSB}{1D}
1213 \DeclareFlexSymbol{\diagup} {Ord}{MSB}{1E}
1214 \DeclareFlexSymbol{\diagdown} {Ord}{MSB}{1F}
1215 \DeclareFlexSymbol{\varsubsetneq} {Rel}{MSB}{20}
1216 \DeclareFlexSymbol{\varsupsetneq} {Rel}{MSB}{21}
1217 \DeclareFlexSymbol{\nsubseteqq} {Rel}{MSB}{22}
1218 \DeclareFlexSymbol{\nsupseteqq} {Rel}{MSB}{23}
1219 \DeclareFlexSymbol{\subsetneqq} {Rel}{MSB}{24}
1220 \DeclareFlexSymbol{\supsetneqq} {Rel}{MSB}{25}
1221 \DeclareFlexSymbol{\varsubsetneqq} {Rel}{MSB}{26}
1222 \DeclareFlexSymbol{\varsupsetneqq} {Rel}{MSB}{27}
1223 \DeclareFlexSymbol{\subsetneq} {Rel}{MSB}{28}
1224 \DeclareFlexSymbol{\supsetneq} {Rel}{MSB}{29}
1225 \DeclareFlexSymbol{\nsubseteq} {Rel}{MSB}{2A}
1226 \DeclareFlexSymbol{\nsupseteq} {Rel}{MSB}{2B}
1227 \DeclareFlexSymbol{\nparallel} {Rel}{MSB}{2C}
1228 \DeclareFlexSymbol{\nmid} {Rel}{MSB}{2D}
1229 \DeclareFlexSymbol{\nshortmid} {Rel}{MSB}{2E}
1230 \DeclareFlexSymbol{\nshortparallel} {Rel}{MSB}{2F}
1231 \DeclareFlexSymbol{\nvdash} {Rel}{MSB}{30}
1232 \DeclareFlexSymbol{\nVdash} {Rel}{MSB}{31}
1233 \DeclareFlexSymbol{\nvDash} {Rel}{MSB}{32}
1234 \DeclareFlexSymbol{\nVDash} {Rel}{MSB}{33}
1235 \DeclareFlexSymbol{\ntrianglerighteq}{Rel}{MSB}{34}
1236 \DeclareFlexSymbol{\ntrianglelefteq}{Rel}{MSB}{35}
1237 \DeclareFlexSymbol{\ntriangleleft} {Rel}{MSB}{36}
1238 \DeclareFlexSymbol{\ntriangleright} {Rel}{MSB}{37}
1239 \DeclareFlexSymbol{\nleftarrow} {Rel}{MSB}{38}
1240 \DeclareFlexSymbol{\nrightarrow} {Rel}{MSB}{39}
1241 \DeclareFlexSymbol{\nLeftarrow} {Rel}{MSB}{3A}
1242 \DeclareFlexSymbol{\nRightarrow} {Rel}{MSB}{3B}
1243 \DeclareFlexSymbol{\nLeftrightarrow}{Rel}{MSB}{3C}
1244 \DeclareFlexSymbol{\nleftrightarrow}{Rel}{MSB}{3D}
1245 \DeclareFlexSymbol{\divideontimes} {Bin}{MSB}{3E}
1246 \DeclareFlexSymbol{\varnothing} {Ord}{MSB}{3F}
1247 \DeclareFlexSymbol{\nexists} {Ord}{MSB}{40}
1248 \DeclareFlexSymbol{\Finv} {Ord}{MSB}{60}
1249 \DeclareFlexSymbol{\Game} {Ord}{MSB}{61}
1253 %%\DeclareFlexSymbol{\mho} {Ord}{MSB}{66}
1254 \DeclareFlexSymbol{\eth} {Ord}{MSB}{67}
1255 \DeclareFlexSymbol{\eqsim} {Rel}{MSB}{68}
1256 \DeclareFlexSymbol{\beth} {Ord}{MSB}{69}
1257 \DeclareFlexSymbol{\gimel} {Ord}{MSB}{6A}
1258 \DeclareFlexSymbol{\daleth} {Ord}{MSB}{6B}
1259 \DeclareFlexSymbol{\lessdot} {Bin}{MSB}{6C}
1260 \DeclareFlexSymbol{\gtrdot} {Bin}{MSB}{6D}
1261 \DeclareFlexSymbol{\ltimes} {Bin}{MSB}{6E}
1262 \DeclareFlexSymbol{\rtimes} {Bin}{MSB}{6F}
1263 \DeclareFlexSymbol{\shortmid} {Rel}{MSB}{70}
1264 \DeclareFlexSymbol{\shortparallel} {Rel}{MSB}{71}
1265 \DeclareFlexSymbol{\smallsetminus} {Bin}{MSB}{72}
1266 \DeclareFlexSymbol{\thicksim} {Rel}{MSB}{73}
1267 \DeclareFlexSymbol{\thickapprox} {Rel}{MSB}{74}
1268 \DeclareFlexSymbol{\approxeq} {Rel}{MSB}{75}
1269 \DeclareFlexSymbol{\succapprox} {Rel}{MSB}{76}
1270 \DeclareFlexSymbol{\precapprox} {Rel}{MSB}{77}
1271 \DeclareFlexSymbol{\curvearrowleft} {Rel}{MSB}{78}
1272 \DeclareFlexSymbol{\curvearrowright}{Rel}{MSB}{79}
1273 \DeclareFlexSymbol{\digamma} {Ord}{MSB}{7A}
1274 \DeclareFlexSymbol{\varkappa} {Ord}{MSB}{7B}
1275 \DeclareFlexSymbol{\Bbbk} {Ord}{MSB}{7C}
1276 \DeclareFlexSymbol{\hslash} {Ord}{MSB}{7D}
1280 %%\DeclareFlexSymbol{\hbar} {Ord}{MSB}{7E}
1281 \DeclareFlexSymbol{\backepsilon} {Rel}{MSB}{7F}