summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/breqn/flexisym.dtx
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/latex/contrib/breqn/flexisym.dtx
Initial commit
Diffstat (limited to 'macros/latex/contrib/breqn/flexisym.dtx')
-rw-r--r--macros/latex/contrib/breqn/flexisym.dtx1604
1 files changed, 1604 insertions, 0 deletions
diff --git a/macros/latex/contrib/breqn/flexisym.dtx b/macros/latex/contrib/breqn/flexisym.dtx
new file mode 100644
index 0000000000..42188753a2
--- /dev/null
+++ b/macros/latex/contrib/breqn/flexisym.dtx
@@ -0,0 +1,1604 @@
+% \iffalse meta-comment
+%
+% Copyright (C) 1997-2003 by Michael J. Downes
+% Copyright (C) 2007-2008 by Morten Hoegholm
+% Copyright (C) 2007-2014 by Lars Madsen
+% Copyright (C) 2007-2017 by Will Robertson
+% Copyright (C) 2010-2017 by Joseph Wright
+%
+% This work may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License, either
+% version 1.3 of this license or (at your option) any later
+% version. The latest version of this license is in
+% http://www.latex-project.org/lppl.txt
+% and version 1.3 or later is part of all distributions of
+% LaTeX version 2005/12/01 or later.
+%
+% This work has the LPPL maintenance status "maintained".
+%
+% This Current Maintainer of this work is Will Robertson.
+%
+% This work consists of the main source file flexisym.dtx
+% and the derived files
+% flexisym.sty, flexisym.pdf, flexisym.ins,
+% cmbase.sym, mathpazo.sym, mathptmx.sym, msabm.sym.
+%
+% Distribution:
+% CTAN:macros/latex/contrib/mh/flexisym.dtx
+% CTAN:macros/latex/contrib/mh/flexisym.pdf
+%
+% Unpacking:
+% (a) If flexisym.ins is present:
+% tex flexisym.ins
+% (b) Without flexisym.ins:
+% tex flexisym.dtx
+% (c) If you insist on using LaTeX
+% latex \let\install=y\input{flexisym.dtx}
+% (quote the arguments according to the demands of your shell)
+%
+% Documentation:
+% The class ltxdoc loads the configuration file ltxdoc.cfg
+% if available. Here you can specify further options, e.g.
+% use A4 as paper format:
+% \PassOptionsToClass{a4paper}{article}
+%
+% Programm calls to get the documentation (example):
+% pdflatex flexisym.dtx
+% makeindex -s gind.ist flexisym.idx
+% pdflatex flexisym.dtx
+% makeindex -s gind.ist flexisym.idx
+% pdflatex flexisym.dtx
+%
+% Installation:
+% TDS:tex/latex/breqn/flexisym.sty
+% TDS:tex/latex/breqn/cmbase.sym
+% TDS:tex/latex/breqn/mathpazo.sym
+% TDS:tex/latex/breqn/mathptmx.sym
+% TDS:tex/latex/breqn/msabm.sym
+% TDS:doc/latex/breqn/flexisym.pdf
+% TDS:source/latex/breqn/flexisym.dtx
+%
+%<*ignore>
+\begingroup
+ \def\x{LaTeX2e}
+\expandafter\endgroup
+\ifcase 0\ifx\install y1\fi\expandafter
+ \ifx\csname processbatchFile\endcsname\relax\else1\fi
+ \ifx\fmtname\x\else 1\fi\relax
+\else\csname fi\endcsname
+%</ignore>
+%<*install>
+\input docstrip.tex
+\Msg{************************************************************************}
+\Msg{* Installation: flexisym}
+\Msg{************************************************************************}
+
+\keepsilent
+\askforoverwritefalse
+
+\preamble
+
+This is a generated file.
+
+Copyright (C) 1997-2003 by Michael J. Downes
+Copyright (C) 2007-2010 by Morten Hoegholm
+Copyright (C) 2007-2014 by Lars Madsen
+Copyright (C) 2007-2017 by Will Robertson
+Copyright (C) 2010-2017 by Joseph Wright
+
+This work may be distributed and/or modified under the
+conditions of the LaTeX Project Public License, either
+version 1.3 of this license or (at your option) any later
+version. The latest version of this license is in
+ http://www.latex-project.org/lppl.txt
+and version 1.3 or later is part of all distributions of
+LaTeX version 2005/12/01 or later.
+
+This work has the LPPL maintenance status "maintained".
+
+The Current Maintainer of this work is Will Robertson.
+
+This work consists of the main source file flexisym.dtx
+and the derived files
+ flexisym.sty, flexisym.pdf, flexisym.ins,
+ cmbase.sym, mathpazo.sym, mathptmx.sym, msabm.sym.
+
+\endpreamble
+
+\generate{%
+ \file{flexisym.ins}{\from{flexisym.dtx}{install}}%
+ \usedir{tex/latex/breqn}%
+ \file{flexisym.sty}{\from{flexisym.dtx}{package}}%
+ \file{cmbase.sym}{\from{flexisym.dtx}{cmbase}}%
+ \file{mathpazo.sym}{\from{flexisym.dtx}{mathpazo}}%
+ \file{mathptmx.sym}{\from{flexisym.dtx}{mathptmx}}%
+ \file{msabm.sym}{\from{flexisym.dtx}{msabm}}%
+}
+
+\obeyspaces
+\Msg{************************************************************************}
+\Msg{*}
+\Msg{* To finish the installation you have to move the following}
+\Msg{* files into a directory searched by TeX:}
+\Msg{*}
+\Msg{* flexisym.sty, cmbase.sym, mathpazo.sym, mathptmx.sym, msabm.sym}
+\Msg{*}
+\Msg{* Happy TeXing!}
+\Msg{*}
+\Msg{************************************************************************}
+
+\endbatchfile
+%</install>
+%<*ignore>
+\fi
+%</ignore>
+%<*driver>
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesFile{flexisym.drv}[2017/01/27 0.98e flexisym]
+\documentclass{ltxdoc}
+\CodelineIndex
+\EnableCrossrefs
+\setcounter{IndexColumns}{2}
+%\providecommand*\meta[1]{\ensuremath\langle\textit{#1}\ensuremath\rangle}
+\providecommand*\pkg[1]{\textsf{#1}}
+\providecommand*\cls[1]{\textsf{#1}}
+\providecommand*\opt[1]{\texttt{#1}}
+\providecommand*\env[1]{\texttt{#1}}
+\providecommand*\fn[1]{\texttt{#1}}
+\makeatletter
+\providecommand{\AmS}{{\protect\AmSfont
+ A\kern-.1667em\lower.5ex\hbox{M}\kern-.125emS}}
+\providecommand{\AmSfont}{%
+ \usefont{OMS}{cmsy}{\if\expandafter\@car\f@series\@nil bb\else m\fi}{n}}
+\makeatother
+\newenvironment{aside}{\begin{quote}\bfseries}{\end{quote}}
+\begin{document}
+ \DocInput{flexisym.dtx}
+\end{document}
+%</driver>
+% \fi
+%
+% \GetFileInfo{flexisym.drv}
+% \title{The \textsf{flexisym} package}
+% \date{\filedate\space\fileversion}
+% \author{Authors: Michael J. Downes, Morten H\o gholm\\ Maintained by Morten H\o gholm, Will Robertson\\ Feedback: \texttt{https://github.com/wspr/breqn/issues}}
+%
+% \maketitle
+%
+% \part*{User's guide}
+%
+% For now, the user's guide is in breqn.
+%
+% \StopEventually{}
+% \part*{Implementation}
+%
+% \section{flexisym}
+%
+% \begin{macrocode}
+%<*package>
+\RequirePackage{expl3}[2009/08/05]
+\ProvidesExplPackage{flexisym}{2017/01/27}{0.98e}{Make math characters macros}
+
+\edef\do{%
+ \noexpand\AtEndOfPackage{%
+ \catcode\number`\"=\number\catcode`\"
+ \relax
+ }%
+}
+\do \let\do\relax
+\catcode`\"=12
+\let\@sym\@gobble
+\DeclareOption{robust}{%
+ \def\@sym#1{%
+ \ifx\protect\@typeset@protect \else\protect#1\exp_after:wN\use_none:nnnn\fi
+ }%
+}
+% \end{macrocode}
+% The math groups (mg) here relate to |\textfont|$n$.
+% \begin{macrocode}
+\def\mg@bin{2}% binary operators
+\def\mg@rel{2}% relations
+%%\def\mg@nre{B}% negated relations
+\def\mg@del{3}% delimiters
+%%\def\mg@arr{B}% arrows
+\def\mg@acc{0}% accents
+\def\mg@cop{3}% cumulative operators (sum, int)
+\def\mg@latin{1}% (Latin) letters
+\def\mg@greek{1}% (lowercase) Greek
+\def\mg@Greek{0}% (capital) Greek
+%%\def\mg@bflatin{4}% bold upright Latin letters ?
+%%\def\mg@Bbb{B}% blackboard bold
+\def\mg@cal{2}% script/calligraphic
+%%\def\mg@frak{5}% Fraktur letters
+\def\mg@digit{0}% decimal digits % 1 = oldstyle, 0 = capital
+% \end{macrocode}
+% This is how we insert mathchars. The command has three arguments:
+% class, fam and slot postion and so it is always given as
+% hexadecimal. This way of separating things should make it easier
+% to get this to work with XeTeX et al.\ which have many more slot
+% positions
+% \begin{macrocode}
+\cs_set_protected:Nn \math_char:NNn {
+ \tex_mathchar:D \__int_eval:w " #1#2#3 \__int_eval_end:
+}
+% \end{macrocode}
+% Delimiters and radicals are similar except here we have both small
+% and large variant. Radicals have no class.
+% \begin{macrocode}
+\cs_set_protected:Nn \math_delimiter:NNnNn {
+ \tex_delimiter:D \__int_eval:w " #1#2#3#4#5 \__int_eval_end:
+}
+\cs_set_protected:Nn \math_radical:NnNn {
+ \tex_radical:D \__int_eval:w " #1#2#3#4 \__int_eval_end:
+}
+\cs_set_protected:Nn \math_accent:NNnn {
+ \tex_mathaccent:D \__int_eval:w " #1 #2 #3 \__int_eval_end: {#4}
+}
+
+\let\sumlimits\displaylimits
+\let\intlimits\nolimits
+\let\namelimits\displaylimits
+% \end{macrocode}
+% \TeX\ defines eight types of atoms.
+% \begin{enumerate}\addtocounter{enumi}{-1}
+% \item Ordinary
+% \item Operators
+% \item Binary
+% \item Relation
+% \item Open
+% \item Close
+% \item Punctuation
+% \item Inner
+% \end{enumerate}
+% \TeX\ defines eight math classes.
+% \begin{enumerate}\addtocounter{enumi}{-1}
+% \item Ordinary
+% \item Operators
+% \item Binary
+% \item Relation
+% \item Open
+% \item Close
+% \item Punctuation
+% \item Variable family
+% \end{enumerate}
+% flexisym/breqn extends this to types of classes.
+% \begin{enumerate}\addtocounter{enumi}{-1}
+% \item Ordinary: (Ord), Bidirectional delimiters (DeB), Radicals
+% (Rad), Accented items (Acc)
+% \item Operators: Cumulative Operators sum-like (COs), Cumulative
+% Operators integral-like (COi)
+% \item Binary: (Bin)
+% \item Relation: (Rel), Arrow delimiters (DeA)
+% \item Open: (DeL)
+% \item Close (DeR)
+% \item Punctuation: (Pun)
+% \item Variable family: (Var)
+% \end{enumerate}
+%
+% Here's an overview of what we are about to do. Math chars of each
+% type as defined by us need a basic operation for inserting it. We
+% will call that function |\math_bsym_|\meta{type}|:Nn|. Next there
+% are compund symbols for each type which we name
+% |\math_bcsym_|\meta{type}|:Nn|. Also, there is inline mode and
+% display mode which are different. We will call them for
+% |\math_isym_|\meta{type}|:Nn| |\math_icsym_|\meta{type}|:Nn| for
+% inline mode and |\math_dsym_|\meta{type}|:Nn| and
+% |\math_dcsym_|\meta{type}|:Nn|. The code uses the terms
+% |\math_sym_|\meta{type}|:Nn| and |\math_csym_|\meta{type}|:Nn| for
+% the current meaning of things. First up the basic definitions. |#1|
+% is the math group it is from and |#2| is the slot position.
+% \begin{macrocode}
+\cs_new:Npn \math_bsym_Ord:Nn {\math_char:NNn 0 }% \m@Ord
+\cs_new:Npn \math_bsym_Var:Nn {\math_char:NNn 7 }% \m@Var
+\cs_new:Npn \math_bsym_Bin:Nn {\math_char:NNn 2 }% \m@Bin
+\cs_new:Npn \math_bsym_Rel:Nn {\math_char:NNn 3 }% \m@Bin
+\cs_new:Npn \math_bsym_Pun:Nn {\math_char:NNn 6 }% \m@Pun
+\cs_new:Nn \math_bsym_COs:Nn { \math_char:NNn 1 #1 {#2} \sumlimits }% \m@COs
+\cs_new:Nn \math_bsym_COi:Nn { \math_char:NNn 1 #1 {#2} \intlimits }% \m@COi
+\cs_new:Nn \math_bsym_DeL:Nn { \math_sd_del_aux:Nnn 4 #1{#2} }% \m@DeL
+\cs_new:Nn \math_bsym_DeR:Nn { \math_sd_del_aux:Nnn 5 #1{#2} }% \m@DeR
+\cs_new:Nn \math_bsym_DeB:Nn { \math_sd_del_aux:Nnn 0 #1{#2} }% \m@DeB
+\cs_new:Nn \math_bsym_DeA:Nn { \math_sd_del_aux:Nnn 3 #1{#2} }% \m@DeA
+\cs_new:Nn \math_bsym_Rad:Nn { \math_sd_rad_aux:Nn #1{#2} }% \m@Rad
+\cs_new:Npn \math_bsym_Acc:Nn #1#2#3#4 {\math_accent:NNnn #1#2{#3}{#4}}% name is wrong
+
+% \end{macrocode}
+% Next is somewhat complicated internally. The way it is done is that
+% delimiters and radicals need information about the smallest version
+% of the symbol. If this smallest delimiter (SD) is defined, then use
+% it. We have these functions to help us return the number. Extract
+% the numbers to use and stick a function in front of it.
+%
+% Code changed because now we require the smallest delimiter to be
+% defined (it may be the same, no problem in that). So the two
+% arguments present in |\math_bsym_DeL:Nn| are the location of
+% extensible version (where the font will do the rest for us
+% automatically). For each delimiter, a pointer is defined using the
+% extensible characters family and slot as name and value equal to
+% family and position of the smallest version. For |(| in standard
+% \LaTeX\ this is |{del}{00}| and |{OT1}{28}| respectively. Hence,
+% |\math_bsym_DeL:Nn \mg@del {00}| must expand to
+% |\math_delimiter:NNnNn 4 \mg@OT1 {28}\mg@del{00}|. So first expand
+% away to get to the smallest version. Then call next function which
+% shuffles the arguments around.
+% \begin{macrocode}
+\cs_set:Npn \math_sd_del_aux:Nnn #1#2#3{
+ \exp_args:Nf \math_sd_del_auxi:nN {\use:c{sd@#2#3}} #1 #2{#3}
+}
+\cs_set:Npn \math_sd_del_auxi:nN #1#2{ \math_delimiter:NNnNn #2 #1 }
+% \end{macrocode}
+% Same for radicals.
+% \begin{macrocode}
+\cs_set:Npn \math_sd_rad_aux:Nn #1#2{
+ \exp_args:Nf \math_sd_rad_auxi:n {\use:c{sd@#1#2}} #1 {#2}
+}
+\cs_set:Npn \math_sd_rad_auxi:n #1{ \math_radical:NnNn #1 }
+
+
+% \cs_set:Npn \math_sd_aux:nn #1#2 {
+% %\exp_args:Nnf \use:nn { #1} { \math_sd_auxi:Nn #2 }
+% \exp_args:Nnf \use:nn { #1} { \use:c{sd@\use:nn#2} }
+% }
+% \cs_set:Npn \math_sd_auxi:Nn #1#2 {
+% \cs_if_free:cTF {sd@#1#2}
+% { #1{#2} }
+% { \use:c{sd@#1#2} }
+% }
+% \end{macrocode}
+% compound symbols here
+% \begin{macrocode}
+\cs_set_protected:Npn \math_bcsym_Ord:Nn #1#2 { \@symtype \mathord { \OrdSymbol {#2} } }%\@symOrd
+\cs_set_protected:Npn \math_bcsym_Var:Nn #1#2 { \@symtype \mathord { \OrdSymbol {#2} } }%\@symVar
+\cs_set_protected:Npn \math_bcsym_Bin:Nn #1#2 { \@symtype \mathbin { \OrdSymbol {#2} } }%\@symBin
+\cs_set_protected:Npn \math_bcsym_Rel:Nn #1#2 { \@symtype \mathrel { \OrdSymbol {#2} } }%\@symRel
+\cs_set_protected:Npn \math_bcsym_Pun:Nn #1#2 { \@symtype \mathpunct { \OrdSymbol {#2} } }%\@symPun
+\cs_set_protected:Npn \math_bcsym_COi:Nn #1#2 { \@symtype \mathop { \OrdSymbol {#2} \intlimits } }%\@symCOi
+\cs_set_protected:Npn \math_bcsym_COs:Nn #1#2 { \@symtype \mathop { \OrdSymbol {#2} \sumlimits } }%\@symCOs
+\cs_set_protected:Npn \math_bcsym_DeL:Nn #1#2 { \@symtype \mathopen { \OrdSymbol {#2} } }%\@symDeL
+\cs_set_protected:Npn \math_bcsym_DeR:Nn #1#2 { \@symtype \mathclose { \OrdSymbol {#2} } }%\@symDeR
+\cs_set_protected:Npn \math_bcsym_DeB:Nn #1#2 { \@symtype \mathord { \OrdSymbol {#2} } }%\@symDeB
+\cs_set_protected:Npn \math_bcsym_DeA:Nn #1#2 { \@symtype \mathrel { \OrdSymbol {#2} } }%\@symDeA
+\cs_set_protected:Npn \math_bcsym_Acc:Nn {\@sym}%\@symAcc FIX!
+% These three?
+\cs_set_protected:Npn \math_bcsym_Ope:Nn #1#2{\@symtype\mathopen{\OrdSymbol{#2}}}%\@symVar
+\cs_set_protected:Npn \math_bcsym_Clo:Nn #1#2{\@symtype\mathclose{\OrdSymbol{#2}}}%\@symVar
+\cs_set_protected:Npn \math_bcsym_Inn:Nn #1#2{\@symtype\mathinner{\OrdSymbol{#2}}}%\@symVar
+
+\let\@symtype\@firstofone
+\let\sym@global\global
+% \end{macrocode}
+%
+%
+%
+%
+% The inline variants, using the basic operations. Currently we do not
+% do anything to inline math.
+% \begin{macrocode}
+\cs_new:Npn \math_isym_Ord:Nn { \math_bsym_Ord:Nn }% \m@Ord
+\cs_new:Npn \math_isym_Var:Nn { \math_bsym_Var:Nn }% \m@Var
+\cs_new:Npn \math_isym_Bin:Nn { \math_bsym_Bin:Nn }% \m@Bin
+\cs_new:Npn \math_isym_Rel:Nn { \math_bsym_Rel:Nn }% \m@Bin
+\cs_new:Npn \math_isym_Pun:Nn { \math_bsym_Pun:Nn }% \m@Pun
+\cs_new:Npn \math_isym_COs:Nn { \math_bsym_COs:Nn }% \m@COs
+\cs_new:Npn \math_isym_COi:Nn { \math_bsym_COi:Nn }% \m@COi
+\cs_new:Npn \math_isym_DeL:Nn { \math_bsym_DeL:Nn }% \m@DeL
+\cs_new:Npn \math_isym_DeR:Nn { \math_bsym_DeR:Nn }% \m@DeR
+\cs_new:Npn \math_isym_DeB:Nn { \math_bsym_DeB:Nn }% \m@DeB
+\cs_new:Npn \math_isym_DeA:Nn { \math_bsym_DeA:Nn }% \m@DeA
+\cs_new:Npn \math_isym_Rad:Nn { \math_bsym_Rad:Nn }% \m@Rad
+\cs_new:Npn \math_isym_Acc:Nn { \math_bsym_DeL:Nn }% name is wrong
+% inline compound
+\cs_set_protected:Npn \math_icsym_Ord:Nn { \math_bcsym_Ord:Nn }
+\cs_set_protected:Npn \math_icsym_Var:Nn { \math_bcsym_Var:Nn }
+\cs_set_protected:Npn \math_icsym_Bin:Nn { \math_bcsym_Bin:Nn }
+\cs_set_protected:Npn \math_icsym_Rel:Nn { \math_bcsym_Rel:Nn }
+\cs_set_protected:Npn \math_icsym_Pun:Nn { \math_bcsym_Pun:Nn }
+\cs_set_protected:Npn \math_icsym_COi:Nn { \math_bcsym_COi:Nn }
+\cs_set_protected:Npn \math_icsym_COs:Nn { \math_bcsym_COs:Nn }
+\cs_set_protected:Npn \math_icsym_DeL:Nn { \math_bcsym_DeL:Nn }
+\cs_set_protected:Npn \math_icsym_DeR:Nn { \math_bcsym_DeR:Nn }
+\cs_set_protected:Npn \math_icsym_DeB:Nn { \math_bcsym_DeB:Nn }
+\cs_set_protected:Npn \math_icsym_DeA:Nn { \math_bcsym_DeA:Nn }
+\cs_set_protected:Npn \math_icsym_Acc:Nn { \math_bcsym_Acc:Nn }
+\cs_set_protected:Npn \math_icsym_Ope:Nn { \math_bcsym_Ope:Nn }
+\cs_set_protected:Npn \math_icsym_Clo:Nn { \math_bcsym_Clo:Nn }
+\cs_set_protected:Npn \math_icsym_Inn:Nn { \math_bcsym_Inn:Nn }
+% \end{macrocode}
+%
+% The display variants, using the basic operations. Currently we do
+% not do anything to inline math.
+% \begin{macrocode}
+\cs_new:Npn \math_dsym_Ord:Nn { \math_bsym_Ord:Nn }
+\cs_new:Npn \math_dsym_Var:Nn { \math_bsym_Var:Nn }
+\cs_new:Npn \math_dsym_Bin:Nn { \math_bsym_Bin:Nn }
+\cs_new:Npn \math_dsym_Rel:Nn { \math_bsym_Rel:Nn }
+\cs_new:Npn \math_dsym_Pun:Nn { \math_bsym_Pun:Nn }
+\cs_new:Npn \math_dsym_COs:Nn { \math_bsym_COs:Nn }
+\cs_new:Npn \math_dsym_COi:Nn { \math_bsym_COi:Nn }
+\cs_new:Npn \math_dsym_DeL:Nn { \math_bsym_DeL:Nn }
+\cs_new:Npn \math_dsym_DeR:Nn { \math_bsym_DeR:Nn }
+\cs_new:Npn \math_dsym_DeB:Nn { \math_bsym_DeB:Nn }
+\cs_new:Npn \math_dsym_DeA:Nn { \math_bsym_DeA:Nn }
+\cs_new:Npn \math_dsym_Rad:Nn { \math_bsym_Rad:Nn }
+\cs_new:Npn \math_dsym_Acc:Nn { \math_bsym_DeL:Nn }
+% inline compound
+\cs_set_protected:Npn \math_dcsym_Ord:Nn { \math_bcsym_Ord:Nn }
+\cs_set_protected:Npn \math_dcsym_Var:Nn { \math_bcsym_Var:Nn }
+\cs_set_protected:Npn \math_dcsym_Bin:Nn { \math_bcsym_Bin:Nn }
+\cs_set_protected:Npn \math_dcsym_Rel:Nn { \math_bcsym_Rel:Nn }
+\cs_set_protected:Npn \math_dcsym_Pun:Nn { \math_bcsym_Pun:Nn }
+\cs_set_protected:Npn \math_dcsym_COi:Nn { \math_bcsym_COi:Nn }
+\cs_set_protected:Npn \math_dcsym_COs:Nn { \math_bcsym_COs:Nn }
+\cs_set_protected:Npn \math_dcsym_DeL:Nn { \math_bcsym_DeL:Nn }
+\cs_set_protected:Npn \math_dcsym_DeR:Nn { \math_bcsym_DeR:Nn }
+\cs_set_protected:Npn \math_dcsym_DeB:Nn { \math_bcsym_DeB:Nn }
+\cs_set_protected:Npn \math_dcsym_DeA:Nn { \math_bcsym_DeA:Nn }
+\cs_set_protected:Npn \math_dcsym_Acc:Nn { \math_bcsym_Acc:Nn }
+\cs_set_protected:Npn \math_dcsym_Ope:Nn { \math_bcsym_Ope:Nn }
+\cs_set_protected:Npn \math_dcsym_Clo:Nn { \math_bcsym_Clo:Nn }
+\cs_set_protected:Npn \math_dcsym_Inn:Nn { \math_bcsym_Inn:Nn }
+% \end{macrocode}
+% Almost ready now! Now just need two commands to initialize these
+% settings.
+%
+% \begin{macrocode}
+\cs_set:Npn \math_setup_inline_symbols:
+ {
+ \cs_set_eq:NN \math_sym_Ord:Nn \math_isym_Ord:Nn
+ \cs_set_eq:NN \math_sym_Var:Nn \math_isym_Var:Nn
+ \cs_set_eq:NN \math_sym_Bin:Nn \math_isym_Bin:Nn
+ \cs_set_eq:NN \math_sym_Rel:Nn \math_isym_Rel:Nn
+ \cs_set_eq:NN \math_sym_Pun:Nn \math_isym_Pun:Nn
+ \cs_set_eq:NN \math_sym_COs:Nn \math_isym_COs:Nn
+ \cs_set_eq:NN \math_sym_COi:Nn \math_isym_COi:Nn
+ \cs_set_eq:NN \math_sym_DeL:Nn \math_isym_DeL:Nn
+ \cs_set_eq:NN \math_sym_DeR:Nn \math_isym_DeR:Nn
+ \cs_set_eq:NN \math_sym_DeB:Nn \math_isym_DeL:Nn
+ \cs_set_eq:NN \math_sym_DeA:Nn \math_isym_DeA:Nn
+ \cs_set_eq:NN \math_sym_Rad:Nn \math_isym_Rad:Nn
+ \cs_set_eq:NN \math_sym_Acc:Nn \math_isym_DeL:Nn
+ \cs_set_eq:NN \math_csym_Ord:Nn \math_icsym_Ord:Nn
+ \cs_set_eq:NN \math_csym_Var:Nn \math_icsym_Var:Nn
+ \cs_set_eq:NN \math_csym_Bin:Nn \math_icsym_Bin:Nn
+ \cs_set_eq:NN \math_csym_Rel:Nn \math_icsym_Rel:Nn
+ \cs_set_eq:NN \math_csym_Pun:Nn \math_icsym_Pun:Nn
+ \cs_set_eq:NN \math_csym_COi:Nn \math_icsym_COi:Nn
+ \cs_set_eq:NN \math_csym_COs:Nn \math_icsym_COs:Nn
+ \cs_set_eq:NN \math_csym_DeL:Nn \math_icsym_DeL:Nn
+ \cs_set_eq:NN \math_csym_DeR:Nn \math_icsym_DeR:Nn
+ \cs_set_eq:NN \math_csym_DeB:Nn \math_icsym_DeB:Nn
+ \cs_set_eq:NN \math_csym_DeA:Nn \math_icsym_DeA:Nn
+ \cs_set_eq:NN \math_csym_Acc:Nn \math_icsym_Acc:Nn
+ \cs_set_eq:NN \math_csym_Ope:Nn \math_icsym_Ope:Nn
+ \cs_set_eq:NN \math_csym_Clo:Nn \math_icsym_Clo:Nn
+ \cs_set_eq:NN \math_csym_Inn:Nn \math_icsym_Inn:Nn
+ }
+
+\cs_set:Npn \math_setup_display_symbols:
+ {
+ \cs_set_eq:NN \math_sym_Ord:Nn \math_dsym_Ord:Nn
+ \cs_set_eq:NN \math_sym_Var:Nn \math_dsym_Var:Nn
+ \cs_set_eq:NN \math_sym_Bin:Nn \math_dsym_Bin:Nn
+ \cs_set_eq:NN \math_sym_Rel:Nn \math_dsym_Rel:Nn
+ \cs_set_eq:NN \math_sym_Pun:Nn \math_dsym_Pun:Nn
+ \cs_set_eq:NN \math_sym_COs:Nn \math_dsym_COs:Nn
+ \cs_set_eq:NN \math_sym_COi:Nn \math_dsym_COi:Nn
+ \cs_set_eq:NN \math_sym_DeL:Nn \math_dsym_DeL:Nn
+ \cs_set_eq:NN \math_sym_DeR:Nn \math_dsym_DeR:Nn
+ \cs_set_eq:NN \math_sym_DeB:Nn \math_dsym_DeL:Nn
+ \cs_set_eq:NN \math_sym_DeA:Nn \math_dsym_DeA:Nn
+ \cs_set_eq:NN \math_sym_Rad:Nn \math_dsym_Rad:Nn
+ \cs_set_eq:NN \math_sym_Acc:Nn \math_dsym_DeL:Nn
+ \cs_set_eq:NN \math_csym_Ord:Nn \math_dcsym_Ord:Nn
+ \cs_set_eq:NN \math_csym_Var:Nn \math_dcsym_Var:Nn
+ \cs_set_eq:NN \math_csym_Bin:Nn \math_dcsym_Bin:Nn
+ \cs_set_eq:NN \math_csym_Rel:Nn \math_dcsym_Rel:Nn
+ \cs_set_eq:NN \math_csym_Pun:Nn \math_dcsym_Pun:Nn
+ \cs_set_eq:NN \math_csym_COi:Nn \math_dcsym_COi:Nn
+ \cs_set_eq:NN \math_csym_COs:Nn \math_dcsym_COs:Nn
+ \cs_set_eq:NN \math_csym_DeL:Nn \math_dcsym_DeL:Nn
+ \cs_set_eq:NN \math_csym_DeR:Nn \math_dcsym_DeR:Nn
+ \cs_set_eq:NN \math_csym_DeB:Nn \math_dcsym_DeB:Nn
+ \cs_set_eq:NN \math_csym_DeA:Nn \math_dcsym_DeA:Nn
+ \cs_set_eq:NN \math_csym_Acc:Nn \math_dcsym_Acc:Nn
+ \cs_set_eq:NN \math_csym_Ope:Nn \math_dcsym_Ope:Nn
+ \cs_set_eq:NN \math_csym_Clo:Nn \math_dcsym_Clo:Nn
+ \cs_set_eq:NN \math_csym_Inn:Nn \math_dcsym_Inn:Nn
+ }
+% \end{macrocode}
+% Phew, that was it.
+%
+% Well, almost. We need to set them up for use properly. Should they
+% be added to |\everymath|? Probably, for math within
+% displays. However, this is a lot of extra processing which we could
+% tackle in the display setup.
+% \begin{macrocode}
+\math_setup_inline_symbols:
+% \end{macrocode}
+%
+% Need an active character for a second. Don't rely on |~| being
+% active!
+% \begin{macrocode}
+\edef\tmp{\catcode\z@=\the\catcode\z@}
+\catcode\z@=\active
+\def\DeclareFlexSymbol#1#2#3#4{%
+ \begingroup
+ \cs_set_protected:Npx\@tempb{
+ \exp_not:N\@sym\exp_not:N#1\exp_not:c{math_sym_#2:Nn}
+ \exp_not:c{mg@#3}{#4}
+ }
+ \ifcat\exp_not:N#1\relax
+ \sym@global\let#1\@tempb
+ \else
+ \sym@global\mathcode`#1="8000\relax
+ \lccode\z@=`#1\relax
+ \lowercase{\sym@global\let^^@\@tempb}% zero char
+ \fi
+ \endgroup
+}
+\tmp % restore catcode
+\cs_set:Npn \DeclareFlexDelimiter #1#2#3#4#5#6{
+ \DeclareFlexSymbol{#1}{#2}{#3}{#4}
+ \cs_gset:cpx{sd@\use:c{mg@#3}#4}{\exp_not:c{mg@#5}{#6}}
+}
+
+% \end{macrocode}
+% |\DeclareFlexCompoundSymbol{\cdots}{Inn}{\cdotp\cdotp\cdotp}|
+% |\def\@symInn#1#2{\@symtype\mathinner{\OrdSymbol{#2}}}|
+% |\@symtype \mathinner{\OrdSymbol{\cdtop\cdotp\cdotp}}|
+% \begin{macrocode}
+\def\DeclareFlexCompoundSymbol#1#2#3{%
+ \exp_args:NNo \DeclareRobustCommand#1{\csname math_csym_#2:Nn\endcsname#1{#3}}%
+ \sym@global\let#1#1\relax
+}
+\DeclareRobustCommand\textchar{\text@char\textfont}
+\DeclareRobustCommand\scriptchar{\text@char\scriptfont}%
+% \end{macrocode}
+% Simplified the next bit because now the slot is read as one argument
+% so no afterassignment and what have you. Just drop the char
+% directly.
+% \begin{macrocode}
+\def\text@char@sym#1#2#3#4{% #3=fam, #4=slot
+ \begingroup
+ \cs_set_eq:NN \@sym \prg_do_nothing: % defense against infinite loops
+% \end{macrocode}
+% the next line will result in |\scriptfont|\meta{num}, where |#3|
+% provides the \meta{num}.
+% \begin{macrocode}
+ \the\text@script@char#3%
+ \char"#4\endgroup
+}
+\edef\tmp{\catcode\z@=\the\catcode\z@}
+\catcode\z@=\active
+\def\text@char#1#2{\begingroup
+ \check@mathfonts
+ \cs_set_eq:NN \text@script@char #1
+ \cs_set_eq:NN \@sym \text@char@sym
+ \cs_set_eq:NN \@symtype \use_ii:nn
+ \cs_set_eq:NN \OrdSymbol \use:n
+ \cs_set_eq:NN \ifmmode \iftrue
+ \everymath{$\use_none:n}%$
+ \def\mkern{\muskip\z@}
+ \cs_set_eq:NN\mskip\mkern
+ \ifcat\relax\noexpand#2% true if #2 is a cs.
+ #2%
+ \else
+ \lccode\z@=\expandafter`\string#2\relax
+ \lowercase{^^@}%
+ \fi
+ \endgroup
+}
+\tmp % restore catcode
+\providecommand\textprime{}
+\DeclareRobustCommand\textprime{\leavevmode
+ \raise.8ex\hbox{\text@char\scriptfont\prime}%
+}
+\@ifundefined{resetMathstrut@}{}{%
+ \def\resetMathstrut@{%
+ \setbox\z@\hbox{\textchar\vert}%
+ \ht\Mathstrutbox@\ht\z@ \dp\Mathstrutbox@\dp\z@
+ }%
+}
+% \end{macrocode}
+% Arrow fills. changed to 7mu as in amsmath
+% \begin{macrocode}
+\@ifundefined{rightarrowfill@}{}{%
+ \def\rightarrowfill@#1{\m@th\setboxz@h{$#1\relbar$}\ht\z@\z@
+ $#1\copy\z@\mkern-7mu\cleaders
+ \hbox{$#1\mkern-2mu\box\z@\mkern-2mu$}\hfill
+ \mkern-6mu\OrdSymbol{\rightarrow}$}
+ \def\leftarrowfill@#1{\m@th\setboxz@h{$#1\relbar$}\ht\z@\z@
+ $#1\OrdSymbol{\leftarrow}\mkern-6mu\cleaders
+ \hbox{$#1\mkern-2mu\copy\z@\mkern-2mu$}\hfill
+ \mkern-7mu\box\z@$}
+ \def\leftrightarrowfill@#1{\m@th\setboxz@h{$#1\relbar$}\ht\z@\z@
+ $#1\OrdSymbol{\leftarrow}\mkern-6mu\cleaders
+ \hbox{$#1\mkern-2mu\box\z@\mkern-2mu$}\hfill
+ \mkern-6mu\OrdSymbol{\rightarrow}$}
+}
+% \end{macrocode}
+% hey, this looks like a simple case switch...
+% \begin{macrocode}
+\def\binrel@sym#1#2#3#4{%
+ \xdef\binrel@@##1{%
+ \ifx\math_sym_Ord:Nn #2 \math_csym_Ord:Nn
+ \else\ifx\math_sym_Var:Nn#2 \math_csym_Var:Nn
+ \else\ifx\math_sym_COs:Nn#2 \math_csym_COs:Nn
+ \else\ifx\math_sym_COi:Nn#2 \math_csym_COi:Nn
+ \else\ifx\math_sym_Bin:Nn#2 \math_csym_Bin:Nn
+ \else\ifx\math_sym_Rel:Nn#2 \math_csym_Rel:Nn
+ \else\ifx\math_sym_Pun:Nn#2 \math_csym_Pun:Nn
+ \else\exp_not:N\@symErr \fi\fi\fi\fi\fi\fi\fi
+ ?{\exp_not:N\OrdSymbol{##1}}}%
+}
+
+\def\binrel@a{%
+ \def\math_sym_Ord:Nn##1##2{\gdef\binrel@@####1{\math_sym_Ord:Nn##1{\OrdSymbol{####1}}}}%
+ \def\math_sym_Var:Nn##1##2{\gdef\binrel@@####1{\math_sym_Var:Nn##1{\OrdSymbol{####1}}}}%
+ \def\math_sym_COs:Nn##1##2{\gdef\binrel@@####1{\math_sym_COs:Nn##1{\OrdSymbol{####1}}}}%
+ \def\math_sym_COi:Nn##1##2{\gdef\binrel@@####1{\math_sym_COi:Nn##1{\OrdSymbol{####1}}}}%
+ \def\math_sym_Bin:Nn##1##2{\gdef\binrel@@####1{\math_sym_Bin:Nn##1{\OrdSymbol{####1}}}}%
+ \def\math_sym_Rel:Nn##1##2{\gdef\binrel@@####1{\math_sym_Rel:Nn##1{\OrdSymbol{####1}}}}%
+ \def\math_sym_Pun:Nn##1##2{\gdef\binrel@@####1{\math_sym_Pun:Nn##1{\OrdSymbol{####1}}}}%
+}
+\def\binrel@#1{%
+ \setbox\z@\hbox{$%
+ \let\mathchoice\@gobblethree
+ \let\@sym\binrel@sym \binrel@a
+ #1$}%
+}
+\def\@symextension{sym}
+\newcommand\usesymbols[1]{%
+ \clist_map_variable:nNn{#1}\@tempb{%
+ \exp_args:No\@onefilewithoptions{\@tempb}[][]\@symextension
+ }%
+}
+% Need to introduce \ProvidesExplFile somehow
+\newcommand\ProvidesSymbols[1]{\ProvidesFile{#1.sym}}
+\DeclareRobustCommand{\not}[1]{\math_csym_Rel:Nn\not{\OrdSymbol{\notRel#1}}}
+\DeclareRobustCommand{\OrdSymbol}[1]{%
+ \begingroup\mathchars@reset#1\endgroup
+}
+\def\mathchars@reset{\let\@sym\@sym@ord \let\@symtype\@symtype@ord
+ \let\OrdSymbol\relax}
+\def\@symtype@ord#1#{}% a strange sort of \@gobble
+\def\@sym@ord#1#2{\exp_after:wN\@sym@ord@a\string#2\@nil}%
+% \end{macrocode}
+% Read delimited argument here. We want to find first character of
+% DeA, Bin, etc. and the control sequence checked agains is |\m@DeL|,
+% |\m@Pun|, etc. The lccode trick makes the . into an @ with catcode
+% 12. This is what results when the code is called with
+% |\string|. Beware of this when we change internal names for math
+% groups! If a Delimiter is found, insert it with class 0 but use the
+% smallest version available. Otherwise just insert math char of class
+% 0. The code here is not pretty and it indicates it should be tackled
+% differently!
+% \begin{macrocode}
+\begingroup
+\lccode`\.=`\_ \lowercase{\endgroup
+\def\@sym@ord@a#1.#2.}#3#4\@nil#5#6{%
+ \if D#3
+ %\math_ord_delim_aux:Nn #5{#6}
+ \math_sd_del_aux:Nnn 0 #5{#6}% check if this works!
+ \else
+ \math_char:NNn 0 #5{#6}
+ \fi
+}
+\cs_set:Nn \math_ord_delim_aux:Nn {
+ \math_sd_aux:nn { \math_char:NNn 0 } {#1{#2}}
+}
+% \end{macrocode}
+%
+%
+% Before declaring any math characters active, we have to take care of
+% a small problem with \pkg{amsmath} v2.x, if it is loaded before
+% \pkg{flexisym}. \cs{std@minus} and \cs{std@equal} are defined as
+% \begin{verbatim}
+% \mathchardef\std@minus\mathcode`\-\relax
+% \mathchardef\std@equal\mathcode`\=\relax
+% \end{verbatim}
+% in \fn{amsmath.sty} and again \cs{AtBeginDocument}. The
+% latter is because
+% \begin{quote}
+% In case some alternative math fonts are loaded
+% later. [\fn{amsmath.dtx}]
+% \end{quote}
+% The problem arises because \pkg{flexisym} sets the mathcode of all
+% symbols to $32768$ which is illegal for a \cs{mathchardef}.
+%
+% We have to remove the assignments from the \cs{AtBeginDocument} hook
+% as they will cause an error there.
+% \begin{macrocode}
+\@ifpackageloaded{amsmath}{%
+ \begingroup
+% \end{macrocode}
+% Split the contents of \cs{@begindocumenthook} by reading what we
+% search for as a delimited argument and ensure these two assignments
+% do not take place. It is questionable if anything reasonable can be
+% done to them. In the case of a package such as \pkg{mathpazo} which defines
+% \begin{verbatim}
+%\DeclareMathSymbol{=}{\mathrel}{upright}{"3D}
+% \end{verbatim}
+% the \cs{Relbar} will look wrong if we don't use the correct
+% symbol. The way to solve this is define additional \fn{.sym} files
+% which contain the definition of \cs{relbar} and \cs{Relbar}
+% needed. We need those additional files anyway for things like
+% \cs{joinord}.
+% \begin{macrocode}
+ \long\def\next#1\mathchardef\std@minus\mathcode`\-\relax
+ \mathchardef\std@equal\mathcode`\=\relax#2\flexi@stop{%
+ \toks@{#1#2}%
+ \xdef\@begindocumenthook{\the\toks@}%
+ }%
+ \expandafter\next\@begindocumenthook\flexi@stop
+ \endgroup
+}{}
+% \end{macrocode}
+%
+% There is problem when using \cs{DeclareMathOperator} as the
+% operators defined call a command \cs{newmcodes@} which relies on the
+% mathcode of \texttt{-} being less than 32768. We delay the
+% definition \cs{AtBeginDocument} in case \pkg{amssymb} hasn't been
+% loaded yet.
+% \begin{macrocode}
+\AtBeginDocument{%
+\def\newmcodes@{%
+ \mathcode `\'39\space
+ \mathcode `\*42\space
+ \mathcode `\."613A\space
+ \ifnum\mathcode`\-=45\space
+ \else
+% \end{macrocode}
+% The extra check. Don't do anything if \texttt{-} is math active.
+% \begin{macrocode}
+ \ifnum\mathcode`\-=32768\space
+ \else
+ \mathchardef \std@minus \mathcode `\-\relax
+ \fi
+ \fi
+ \mathcode `\-45\space
+ \mathcode `\/47\space
+ \mathcode `\:"603A\space\relax
+}%
+}
+% \end{macrocode}
+%
+% And we then continue with the options.
+% \begin{macrocode}
+\DeclareOption{mathstyleoff}{%
+ \PassOptionsToPackage{noactivechars}{mathstyle}}
+\DeclareOption{cmbase}{\usesymbols{cmbase}}
+\DeclareOption{mathpazo}{\usesymbols{mathpazo}}
+\DeclareOption{mathptmx}{\usesymbols{mathptmx}}
+\ExecuteOptions{cmbase}
+\ProcessOptions\relax
+\renewcommand{\lnot}{\neg}
+\renewcommand{\land}{\wedge}
+\renewcommand{\lor}{\vee}
+\renewcommand{\le}{\leq}
+\renewcommand{\ge}{\geq}
+\renewcommand{\ne}{\neq}
+\renewcommand{\owns}{\ni}
+\renewcommand{\gets}{\leftarrow}
+\renewcommand{\to}{\rightarrow}
+\renewcommand{\|}{\Vert}
+\RequirePackage{mathstyle}
+%</package>\endinput
+% \end{macrocode}
+%
+% \section{cmbase, mathpazo, mathptmx}
+%
+%
+% For each math font package we define a corresponding symbol file
+% with extension \fn{sym}. The Computer Modern base is called
+% \opt{cmbase} and \opt{mathpazo} and \opt{mathptmx} corresponds to
+% the packages. The definitions are almost identical as they mostly
+% concern the positions in the math font encodings. Look for
+% differences in \cs{joinord}, \cs{relbar} and \cs{Relbar}. If you
+% inspect the source code, you'll see that the support for
+% \pkg{mathptmx} didn't require any work but I thought it better to
+% create a \fn{sym} file to maintain a uniform interface.
+%
+% \begin{aside}
+% Open question on \verb"!" and \verb"?": maybe they
+% should have type `Pun' instead of `DeR'. Need to
+% search for uses in math in AMS archives. Or, maybe add a special
+% `Clo' type for them: non-extensible closing delimiter.
+% \end{aside}
+%
+%
+%
+% Default mathgroup setup.
+% \changes{v0.3}{2010/07/11}{fixed bugs regarding capital greek
+% letters in mathpazo and mathptmx}
+% \begin{macrocode}
+%<*cmbase|mathpazo|mathptmx>
+%<cmbase>\ProvidesSymbols{cmbase}[2007/12/19 v0.92]
+%<mathpazo>\ProvidesSymbols{mathpazo}[2010/07/11 v0.3]
+%<mathptmx>\ProvidesSymbols{mathptmx}[2010/07/11 v0.3]
+\ExplSyntaxOn
+\cs_gset:cpx {mg@OT1} {\hexnumber@\symoperators}
+\cs_gset:cpx {mg@OML} {\hexnumber@\symletters}
+\cs_gset:cpx {mg@OMS} {\hexnumber@\symsymbols}
+\cs_gset:cpx {mg@OMX} {\hexnumber@\symlargesymbols}
+\cs_gset:Npx \mg@bin {\mg@OMS}
+\cs_gset:Npx \mg@del {\mg@OMX}
+\cs_gset:Npx \mg@digit {\exp_not:c{mg@OT1}}
+\cs_gset:Npn \mg@latin {\mg@OML}
+\cs_gset_eq:NN \mg@Latin \mg@latin
+\cs_gset_eq:NN \mg@greek \mg@latin
+%<cmbase|mathptmx>\cs_gset_eq:NN\mg@Greek\mg@digit
+% \end{macrocode}
+% Mathpazo takes the upper case greeks from the letter font if
+% slantedGreek is in effect, but from \emph{upright} if not. Mathptmx
+% also takes the slanted greek from the letter font.
+% \begin{macrocode}
+%<mathpazo>\@ifpackagewith{mathpazo}{slantedGreek}{%
+%<mathpazo> \cs_gset_eq:NN\mg@Greek\mg@latin
+%<mathpazo>}{%
+%<mathpazo> \cs_gset:cpx{mg@Greek}{\hexnumber@\symupright}
+%<mathpazo>}
+%<mathptmx>\@ifpackagewith{mathptmx}{slantedGreek}{%
+%<mathptmx> \cs_gset_eq:NN\mg@Greek\mg@latin
+%<mathptmx>}{}
+\cs_gset_eq:NN \mg@rel \mg@bin
+\cs_gset_eq:NN \mg@ord \mg@bin
+\cs_gset_eq:NN \mg@cop \mg@del
+% \end{macrocode}
+%
+%
+% Symbols from the 128-character \fn{cmr} encoding.
+% Paren and square bracket delimiters from this encoding are covered
+% by the definitions in the \fn{cmex} section, however.
+% \begin{macrocode}
+\DeclareFlexSymbol{!} {Pun}{OT1}{21}
+\DeclareFlexSymbol{+} {Bin}{OT1}{2B}
+\DeclareFlexSymbol{:} {Rel}{OT1}{3A}
+\DeclareFlexSymbol{\colon}{Pun}{OT1}{3A}
+\DeclareFlexSymbol{;} {Pun}{OT1}{3B}
+\DeclareFlexSymbol{=} {Rel}{OT1}{3D}
+\DeclareFlexSymbol{?} {Pun}{OT1}{3F}
+% \end{macrocode}
+% \AmS\TeX, and therefore the \pkg{amsmath} package, make the
+% uppercase Greek letters class 0 (nonvariable) instead of 7
+% (variable), to eliminate the glaring inconsistency with lowercase
+% Greek. (In plain \TeX , \verb"{\bf\Delta}" works, while
+% \verb"{\bf\delta}" doesn't.) Let us try to make them both
+% variable (fonts permitting) instead of nonvariable.
+% \begin{macrocode}
+\DeclareFlexSymbol{\Gamma} {Var}{Greek}{00}
+\DeclareFlexSymbol{\Delta} {Var}{Greek}{01}
+\DeclareFlexSymbol{\Theta} {Var}{Greek}{02}
+\DeclareFlexSymbol{\Lambda} {Var}{Greek}{03}
+\DeclareFlexSymbol{\Xi} {Var}{Greek}{04}
+\DeclareFlexSymbol{\Pi} {Var}{Greek}{05}
+\DeclareFlexSymbol{\Sigma} {Var}{Greek}{06}
+\DeclareFlexSymbol{\Upsilon}{Var}{Greek}{07}
+\DeclareFlexSymbol{\Phi} {Var}{Greek}{08}
+\DeclareFlexSymbol{\Psi} {Var}{Greek}{09}
+\DeclareFlexSymbol{\Omega} {Var}{Greek}{0A}
+% \end{macrocode}
+% Decimal digits.
+% \begin{macrocode}
+\DeclareFlexSymbol{0}{Var}{digit}{30}
+\DeclareFlexSymbol{1}{Var}{digit}{31}
+\DeclareFlexSymbol{2}{Var}{digit}{32}
+\DeclareFlexSymbol{3}{Var}{digit}{33}
+\DeclareFlexSymbol{4}{Var}{digit}{34}
+\DeclareFlexSymbol{5}{Var}{digit}{35}
+\DeclareFlexSymbol{6}{Var}{digit}{36}
+\DeclareFlexSymbol{7}{Var}{digit}{37}
+\DeclareFlexSymbol{8}{Var}{digit}{38}
+\DeclareFlexSymbol{9}{Var}{digit}{39}
+% \end{macrocode}
+% Symbols from the 128-character \fn{cmmi} encoding.
+% \begin{macrocode}
+\DeclareFlexSymbol{,}{Pun}{OML}{3B}
+\DeclareFlexSymbol{.}{Ord}{OML}{3A}
+\DeclareFlexSymbol{/}{Ord}{OML}{3D}
+\DeclareFlexSymbol{<}{Rel}{OML}{3C}
+\DeclareFlexSymbol{>}{Rel}{OML}{3E}
+% \end{macrocode}
+% To do: make the Var property of lc Greek work properly.
+% \begin{macrocode}
+\DeclareFlexSymbol{\alpha} {Var}{greek}{0B}
+\DeclareFlexSymbol{\beta} {Var}{greek}{0C}
+\DeclareFlexSymbol{\gamma} {Var}{greek}{0D}
+\DeclareFlexSymbol{\delta} {Var}{greek}{0E}
+\DeclareFlexSymbol{\epsilon} {Var}{greek}{0F}
+\DeclareFlexSymbol{\zeta} {Var}{greek}{10}
+\DeclareFlexSymbol{\eta} {Var}{greek}{11}
+\DeclareFlexSymbol{\theta} {Var}{greek}{12}
+\DeclareFlexSymbol{\iota} {Var}{greek}{13}
+\DeclareFlexSymbol{\kappa} {Var}{greek}{14}
+\DeclareFlexSymbol{\lambda} {Var}{greek}{15}
+\DeclareFlexSymbol{\mu} {Var}{greek}{16}
+\DeclareFlexSymbol{\nu} {Var}{greek}{17}
+\DeclareFlexSymbol{\xi} {Var}{greek}{18}
+\DeclareFlexSymbol{\pi} {Var}{greek}{19}
+\DeclareFlexSymbol{\rho} {Var}{greek}{1A}
+\DeclareFlexSymbol{\sigma} {Var}{greek}{1B}
+\DeclareFlexSymbol{\tau} {Var}{greek}{1C}
+\DeclareFlexSymbol{\upsilon} {Var}{greek}{1D}
+\DeclareFlexSymbol{\phi} {Var}{greek}{1E}
+\DeclareFlexSymbol{\chi} {Var}{greek}{1F}
+\DeclareFlexSymbol{\psi} {Var}{greek}{20}
+\DeclareFlexSymbol{\omega} {Var}{greek}{21}
+\DeclareFlexSymbol{\varepsilon}{Var}{greek}{22}
+\DeclareFlexSymbol{\vartheta} {Var}{greek}{23}
+\DeclareFlexSymbol{\varpi} {Var}{greek}{24}
+\DeclareFlexSymbol{\varrho} {Var}{greek}{25}
+\DeclareFlexSymbol{\varsigma} {Var}{greek}{26}
+\DeclareFlexSymbol{\varphi} {Var}{greek}{27}
+% \end{macrocode}
+% Note that in plain \TeX\ \cs{imath} and \cs{jmath} are
+% not variable-font. But if a \verb"j" changes font to, let's
+% say, sans serif or calligraphic, a dotless \verb"j" in the same
+% context should change font in the same way.
+% \begin{macrocode}
+\DeclareFlexSymbol{\imath} {Var}{OML}{7B}
+\DeclareFlexSymbol{\jmath} {Var}{OML}{7C}
+\DeclareFlexSymbol{\ell} {Ord}{OML}{60}
+\DeclareFlexSymbol{\wp} {Ord}{OML}{7D}
+\DeclareFlexSymbol{\partial} {Ord}{OML}{40}
+\DeclareFlexSymbol{\flat} {Ord}{OML}{5B}
+\DeclareFlexSymbol{\natural} {Ord}{OML}{5C}
+\DeclareFlexSymbol{\sharp} {Ord}{OML}{5D}
+\DeclareFlexSymbol{\triangleleft} {Bin}{OML}{2F}
+\DeclareFlexSymbol{\triangleright} {Bin}{OML}{2E}
+\DeclareFlexSymbol{\star} {Bin}{OML}{3F}
+\DeclareFlexSymbol{\smile} {Rel}{OML}{5E}
+\DeclareFlexSymbol{\frown} {Rel}{OML}{5F}
+\DeclareFlexSymbol{\leftharpoonup} {Rel}{OML}{28}
+\DeclareFlexSymbol{\leftharpoondown} {Rel}{OML}{29}
+\DeclareFlexSymbol{\rightharpoonup} {Rel}{OML}{2A}
+\DeclareFlexSymbol{\rightharpoondown}{Rel}{OML}{2B}
+% \end{macrocode}
+% Latin
+% \begin{macrocode}
+\DeclareFlexSymbol{a}{Var}{latin}{61}
+\DeclareFlexSymbol{b}{Var}{latin}{62}
+\DeclareFlexSymbol{c}{Var}{latin}{63}
+\DeclareFlexSymbol{d}{Var}{latin}{64}
+\DeclareFlexSymbol{e}{Var}{latin}{65}
+\DeclareFlexSymbol{f}{Var}{latin}{66}
+\DeclareFlexSymbol{g}{Var}{latin}{67}
+\DeclareFlexSymbol{h}{Var}{latin}{68}
+\DeclareFlexSymbol{i}{Var}{latin}{69}
+\DeclareFlexSymbol{j}{Var}{latin}{6A}
+\DeclareFlexSymbol{k}{Var}{latin}{6B}
+\DeclareFlexSymbol{l}{Var}{latin}{6C}
+\DeclareFlexSymbol{m}{Var}{latin}{6D}
+\DeclareFlexSymbol{n}{Var}{latin}{6E}
+\DeclareFlexSymbol{o}{Var}{latin}{6F}
+\DeclareFlexSymbol{p}{Var}{latin}{70}
+\DeclareFlexSymbol{q}{Var}{latin}{71}
+\DeclareFlexSymbol{r}{Var}{latin}{72}
+\DeclareFlexSymbol{s}{Var}{latin}{73}
+\DeclareFlexSymbol{t}{Var}{latin}{74}
+\DeclareFlexSymbol{u}{Var}{latin}{75}
+\DeclareFlexSymbol{v}{Var}{latin}{76}
+\DeclareFlexSymbol{w}{Var}{latin}{77}
+\DeclareFlexSymbol{x}{Var}{latin}{78}
+\DeclareFlexSymbol{y}{Var}{latin}{79}
+\DeclareFlexSymbol{z}{Var}{latin}{7A}
+\DeclareFlexSymbol{A}{Var}{Latin}{41}
+\DeclareFlexSymbol{B}{Var}{Latin}{42}
+\DeclareFlexSymbol{C}{Var}{Latin}{43}
+\DeclareFlexSymbol{D}{Var}{Latin}{44}
+\DeclareFlexSymbol{E}{Var}{Latin}{45}
+\DeclareFlexSymbol{F}{Var}{Latin}{46}
+\DeclareFlexSymbol{G}{Var}{Latin}{47}
+\DeclareFlexSymbol{H}{Var}{Latin}{48}
+\DeclareFlexSymbol{I}{Var}{Latin}{49}
+\DeclareFlexSymbol{J}{Var}{Latin}{4A}
+\DeclareFlexSymbol{K}{Var}{Latin}{4B}
+\DeclareFlexSymbol{L}{Var}{Latin}{4C}
+\DeclareFlexSymbol{M}{Var}{Latin}{4D}
+\DeclareFlexSymbol{N}{Var}{Latin}{4E}
+\DeclareFlexSymbol{O}{Var}{Latin}{4F}
+\DeclareFlexSymbol{P}{Var}{Latin}{50}
+\DeclareFlexSymbol{Q}{Var}{Latin}{51}
+\DeclareFlexSymbol{R}{Var}{Latin}{52}
+\DeclareFlexSymbol{S}{Var}{Latin}{53}
+\DeclareFlexSymbol{T}{Var}{Latin}{54}
+\DeclareFlexSymbol{U}{Var}{Latin}{55}
+\DeclareFlexSymbol{V}{Var}{Latin}{56}
+\DeclareFlexSymbol{W}{Var}{Latin}{57}
+\DeclareFlexSymbol{X}{Var}{Latin}{58}
+\DeclareFlexSymbol{Y}{Var}{Latin}{59}
+\DeclareFlexSymbol{Z}{Var}{Latin}{5A}
+% \end{macrocode}
+% The \cs{ldotPun} glyph is used in constructing the
+% \cs{ldots} symbol. It is just a period with a different math
+% symbol class. \cs{lhookRel} and \cs{rhookRel} are used
+% in a similar way for building hooked arrow symbols.
+% \begin{macrocode}
+\DeclareFlexSymbol{\ldotPun}{Pun}{OML}{3A}
+\def\ldotp{\ldotPun}
+\DeclareFlexSymbol{\lhookRel}{Rel}{OML}{2C}
+\DeclareFlexSymbol{\rhookRel}{Rel}{OML}{2D}
+% \end{macrocode}
+% Symbols from the 128-character \fn{cmsy} encoding.
+% \begin{macrocode}
+\DeclareFlexSymbol{*} {Bin}{bin}{03} % \ast
+\DeclareFlexSymbol{-} {Bin}{bin}{00}
+\DeclareFlexSymbol{|} {Ord}{OMS}{6A}
+\DeclareFlexSymbol{\aleph} {Ord}{ord}{40}
+\DeclareFlexSymbol{\Re} {Ord}{ord}{3C}
+\DeclareFlexSymbol{\Im} {Ord}{ord}{3D}
+\DeclareFlexSymbol{\infty} {Ord}{ord}{31}
+\DeclareFlexSymbol{\prime} {Ord}{ord}{30}
+\DeclareFlexSymbol{\emptyset} {Ord}{ord}{3B}
+\DeclareFlexSymbol{\nabla} {Ord}{ord}{72}
+\DeclareFlexSymbol{\top} {Ord}{ord}{3E}
+\DeclareFlexSymbol{\bot} {Ord}{ord}{3F}
+\DeclareFlexSymbol{\triangle} {Ord}{ord}{34}
+\DeclareFlexSymbol{\forall} {Ord}{ord}{38}
+\DeclareFlexSymbol{\exists} {Ord}{ord}{39}
+\DeclareFlexSymbol{\neg} {Ord}{ord}{3A}
+\DeclareFlexSymbol{\clubsuit} {Ord}{ord}{7C}
+\DeclareFlexSymbol{\diamondsuit}{Ord}{ord}{7D}
+\DeclareFlexSymbol{\heartsuit} {Ord}{ord}{7E}
+\DeclareFlexSymbol{\spadesuit} {Ord}{ord}{7F}
+\DeclareFlexSymbol{\smallint} {COs}{OMS}{73}
+% \end{macrocode}
+% Binary operators.
+% \begin{macrocode}
+\DeclareFlexSymbol{\bigtriangleup} {Bin}{bin}{34}
+\DeclareFlexSymbol{\bigtriangledown}{Bin}{bin}{35}
+\DeclareFlexSymbol{\wedge} {Bin}{bin}{5E}
+\DeclareFlexSymbol{\vee} {Bin}{bin}{5F}
+\DeclareFlexSymbol{\cap} {Bin}{bin}{5C}
+\DeclareFlexSymbol{\cup} {Bin}{bin}{5B}
+\DeclareFlexSymbol{\ddagger} {Bin}{bin}{7A}
+\DeclareFlexSymbol{\dagger} {Bin}{bin}{79}
+\DeclareFlexSymbol{\sqcap} {Bin}{bin}{75}
+\DeclareFlexSymbol{\sqcup} {Bin}{bin}{74}
+\DeclareFlexSymbol{\uplus} {Bin}{bin}{5D}
+\DeclareFlexSymbol{\amalg} {Bin}{bin}{71}
+\DeclareFlexSymbol{\diamond} {Bin}{bin}{05}
+\DeclareFlexSymbol{\bullet} {Bin}{bin}{0F}
+\DeclareFlexSymbol{\wr} {Bin}{bin}{6F}
+\DeclareFlexSymbol{\div} {Bin}{bin}{04}
+\DeclareFlexSymbol{\odot} {Bin}{bin}{0C}
+\DeclareFlexSymbol{\oslash} {Bin}{bin}{0B}
+\DeclareFlexSymbol{\otimes} {Bin}{bin}{0A}
+\DeclareFlexSymbol{\ominus} {Bin}{bin}{09}
+\DeclareFlexSymbol{\oplus} {Bin}{bin}{08}
+\DeclareFlexSymbol{\mp} {Bin}{bin}{07}
+\DeclareFlexSymbol{\pm} {Bin}{bin}{06}
+\DeclareFlexSymbol{\circ} {Bin}{bin}{0E}
+\DeclareFlexSymbol{\bigcirc} {Bin}{bin}{0D}
+\DeclareFlexSymbol{\setminus} {Bin}{bin}{6E}
+\DeclareFlexSymbol{\cdot} {Bin}{bin}{01}
+\DeclareFlexSymbol{\ast} {Bin}{bin}{03}
+\DeclareFlexSymbol{\times} {Bin}{bin}{02}
+% \end{macrocode}
+% Relation symbols.
+% \begin{macrocode}
+\DeclareFlexSymbol{\propto} {Rel}{rel}{2F}
+\DeclareFlexSymbol{\sqsubseteq} {Rel}{rel}{76}
+\DeclareFlexSymbol{\sqsupseteq} {Rel}{rel}{77}
+\DeclareFlexSymbol{\parallel} {Rel}{rel}{6B}
+\DeclareFlexSymbol{\mid} {Rel}{rel}{6A}
+\DeclareFlexSymbol{\dashv} {Rel}{rel}{61}
+\DeclareFlexSymbol{\vdash} {Rel}{rel}{60}
+\DeclareFlexSymbol{\nearrow} {Rel}{rel}{25}
+\DeclareFlexSymbol{\searrow} {Rel}{rel}{26}
+\DeclareFlexSymbol{\nwarrow} {Rel}{rel}{2D}
+\DeclareFlexSymbol{\swarrow} {Rel}{rel}{2E}
+\DeclareFlexSymbol{\Leftrightarrow}{Rel}{rel}{2C}
+\DeclareFlexSymbol{\Leftarrow} {Rel}{rel}{28}
+\DeclareFlexSymbol{\Rightarrow} {Rel}{rel}{29}
+\DeclareFlexSymbol{\leq} {Rel}{rel}{14}
+\DeclareFlexSymbol{\geq} {Rel}{rel}{15}
+\DeclareFlexSymbol{\succ} {Rel}{rel}{1F}
+\DeclareFlexSymbol{\prec} {Rel}{rel}{1E}
+\DeclareFlexSymbol{\approx} {Rel}{rel}{19}
+\DeclareFlexSymbol{\succeq} {Rel}{rel}{17}
+\DeclareFlexSymbol{\preceq} {Rel}{rel}{16}
+\DeclareFlexSymbol{\supset} {Rel}{rel}{1B}
+\DeclareFlexSymbol{\subset} {Rel}{rel}{1A}
+\DeclareFlexSymbol{\supseteq} {Rel}{rel}{13}
+\DeclareFlexSymbol{\subseteq} {Rel}{rel}{12}
+\DeclareFlexSymbol{\in} {Rel}{rel}{32}
+\DeclareFlexSymbol{\ni} {Rel}{rel}{33}
+\DeclareFlexSymbol{\gg} {Rel}{rel}{1D}
+\DeclareFlexSymbol{\ll} {Rel}{rel}{1C}
+\DeclareFlexSymbol{\leftrightarrow}{Rel}{rel}{24}
+\DeclareFlexSymbol{\leftarrow} {Rel}{rel}{20}
+\DeclareFlexSymbol{\rightarrow} {Rel}{rel}{21}
+\DeclareFlexSymbol{\sim} {Rel}{rel}{18}
+\DeclareFlexSymbol{\simeq} {Rel}{rel}{27}
+\DeclareFlexSymbol{\perp} {Rel}{rel}{3F}
+\DeclareFlexSymbol{\equiv} {Rel}{rel}{11}
+\DeclareFlexSymbol{\asymp} {Rel}{rel}{10}
+% \end{macrocode}
+% The \cs{notRel} glyph is a special zero-width glyph intended only
+% for use in constructing negated symbols. \cs{mapstoRel} and
+% \cs{cdotPun} have similar but more restricted applications.
+% \begin{macrocode}
+\DeclareFlexSymbol{\notRel} {Rel}{rel}{36}
+\DeclareFlexSymbol{\mapstoOrd}{Ord}{OMS}{37}
+\DeclareFlexSymbol{\cdotOrd} {Ord}{OMS}{01}
+\cs_set:Npn\cdotp{\mathpunct{\cdotOrd}}
+% \end{macrocode}
+% Symbols from the 128-character \fn{cmex} encoding.
+% \verb"COs" stands for `cumulative operator
+% (sum-like)'.
+% \verb"COi" stands for `cumulative operator
+% (integral-like)'. These typically differ only in the
+% default placement of limits. \verb"cop" stands for
+% `cumulative operator math group'.
+% \begin{macrocode}
+\DeclareFlexSymbol{\coprod} {COs}{cop}{60}
+\DeclareFlexSymbol{\bigvee} {COs}{cop}{57}
+\DeclareFlexSymbol{\bigwedge} {COs}{cop}{56}
+\DeclareFlexSymbol{\biguplus} {COs}{cop}{55}
+\DeclareFlexSymbol{\bigcap} {COs}{cop}{54}
+\DeclareFlexSymbol{\bigcup} {COs}{cop}{53}
+\DeclareFlexSymbol{\int} {COi}{cop}{52}
+\DeclareFlexSymbol{\prod} {COs}{cop}{51}
+\DeclareFlexSymbol{\sum} {COs}{cop}{50}
+\DeclareFlexSymbol{\bigotimes}{COs}{cop}{4E}
+\DeclareFlexSymbol{\bigoplus} {COs}{cop}{4C}
+\DeclareFlexSymbol{\bigodot} {COs}{cop}{4A}
+\DeclareFlexSymbol{\oint} {COi}{cop}{48}
+\DeclareFlexSymbol{\bigsqcup} {COs}{cop}{46}
+% \end{macrocode}
+% Delimiter symbols.
+% \verb"DeL" stands for `delimiter (left)'.
+% \verb"DeR" stands for `delimiter (right)'.
+% \verb"DeB" stands for `delimiter (bidirectional)'.
+% The principal encoding point for an extensible delimiter is the
+% first link in the list of linked sizes as specified in the font metric
+% information.
+% For a math encoding such as OT1/OML/OMS/OMX where not all sizes of a
+% given delimiter reside in a given font, the extra encoding point for the
+% smallest delimiter must be supplied by defining
+% \begin{verbatim}
+% \sd@GXX
+% \end{verbatim}
+% where G is the mathgroup and XX is the hexadecimal glyph
+% position. |\DeclareFlexDelimiter| does that for us.
+% \begin{macrocode}
+\DeclareFlexDelimiter{\rangle}{DeR}{del}{0B}{OMS}{69}
+\DeclareFlexDelimiter{\langle}{DeL}{del}{0A}{OMS}{68}
+\DeclareFlexDelimiter{\rbrace}{DeR}{del}{09}{OMS}{67}
+\DeclareFlexDelimiter{\lbrace}{DeL}{del}{08}{OMS}{66}
+\DeclareFlexDelimiter{\rceil} {DeR}{del}{07}{OMS}{65}
+\DeclareFlexDelimiter{\lceil} {DeL}{del}{06}{OMS}{64}
+\DeclareFlexDelimiter{\rfloor}{DeR}{del}{05}{OMS}{63}
+\DeclareFlexDelimiter{\lfloor}{DeL}{del}{04}{OMS}{62}
+\DeclareFlexDelimiter{(} {DeL}{del}{00}{OT1}{28}
+\DeclareFlexDelimiter{)} {DeR}{del}{01}{OT1}{29}
+\DeclareFlexDelimiter{[} {DeL}{del}{02}{OT1}{5B}
+\DeclareFlexDelimiter{]} {DeR}{del}{03}{OT1}{5D}
+\DeclareFlexDelimiter{\lVert} {DeL}{del}{0D}{OMS}{6B}
+\DeclareFlexDelimiter{\rVert} {DeR}{del}{0D}{OMS}{6B}
+\DeclareFlexDelimiter{\lvert} {DeL}{del}{0C}{OMS}{6A}
+\DeclareFlexDelimiter{\rvert} {DeR}{del}{0C}{OMS}{6A}
+\DeclareFlexDelimiter{\Vert} {DeB}{del}{0D}{OMS}{6B}
+\DeclareFlexDelimiter{\vert} {DeB}{del}{0C}{OMS}{6A}
+% \end{macrocode}
+% Maybe make the vert bars mathord instead of delimiter, to discourage
+% poor usage.
+% \begin{macrocode}
+\DeclareFlexDelimiter{|}{DeB}{del}{0C}{OMS}{6A}
+\DeclareFlexDelimiter{/}{DeB}{del}{0E}{OML}{3D}
+% \end{macrocode}
+%
+%
+% These wacky delimiters need to be supported I guess for
+% compabitility reasons.
+% The DeA delimiter type is a special case used only for these
+% arrows.
+% \begin{macrocode}
+\DeclareFlexDelimiter{\lmoustache} {DeL}{del}{40}{del}{7A}
+\DeclareFlexDelimiter{\rmoustache} {DeR}{del}{41}{del}{7B}
+\DeclareFlexDelimiter{\lgroup} {DeL}{del}{3A}{del}{3A}
+\DeclareFlexDelimiter{\rgroup} {DeR}{del}{3B}{del}{3B}
+\DeclareFlexDelimiter{\bracevert} {DeB}{del}{3E}{del}{3E}
+\DeclareFlexDelimiter{\arrowvert} {DeB}{del}{3C}{OMS}{6A}
+\DeclareFlexDelimiter{\Arrowvert} {DeB}{del}{3D}{OMS}{6B}
+\DeclareFlexDelimiter{\uparrow} {DeA}{del}{78}{OMS}{22}
+\DeclareFlexDelimiter{\downarrow} {DeA}{del}{79}{OMS}{23}
+\DeclareFlexDelimiter{\updownarrow}{DeA}{del}{3F}{OMS}{6C}
+\DeclareFlexDelimiter{\Uparrow} {DeA}{del}{7E}{OMS}{2A}
+\DeclareFlexDelimiter{\Downarrow} {DeA}{del}{7F}{OMS}{2B}
+\DeclareFlexDelimiter{\Updownarrow}{DeA}{del}{77}{OMS}{6D}
+\DeclareFlexDelimiter{\backslash} {DeB}{del}{0F}{OMS}{6E}
+% \end{macrocode}
+%
+%
+%
+%
+% \section{Some compound symbols}
+% The following symbols are not robust in standard \LaTeX\
+% because they use \verb"#" or \cs{mathpalette} (which is not
+% robust and contains a \verb"#" in its expansion): \cs{angle},
+% \cs{cong}, \cs{notin}, \cs{rightleftharpoons}.
+%
+% In this definition of \cs{hbar}, the symbol is cobbled together
+% from a math italic h and the cmr overbar accent glyph.
+% \begin{macrocode}
+\DeclareFlexSymbol{\hbarOrd}{Ord}{OT1}{16}
+\DeclareFlexCompoundSymbol{\hbar}{Ord}{\hbarOrd\mkern-9mu h}
+% \end{macrocode}
+% For \cs{surd}, the interior symbol gets math class 1
+% (cumulative operator) to make the glyph vertically centered on the
+% math axis, but the desired horizontal spacing is the spacing for a
+% mathord. (Couldn't it just be class mathopen, though?)
+% \begin{macrocode}
+\DeclareFlexSymbol{\surdOrd}{Ord}{OMS}{70}
+\DeclareFlexCompoundSymbol{\surd}{Ord}{\mathop{\surdOrd}}
+% \end{macrocode}
+% As shown in this definition of \cs{angle}, rule dimens are not
+% allowed to use math-units, unfortunately.
+% \begin{macrocode}
+\DeclareFlexCompoundSymbol{\angle}{Ord}{%
+ \vbox{\ialign{%
+ $\m@th\scriptstyle##$\crcr
+ \notRel\mathrel{\mkern14mu}\crcr
+ \noalign{\nointerlineskip}%
+ \mkern2.5mu\leaders\hrule \@height.34pt\hfill\mkern2.5mu\crcr
+ }}%
+}
+% \end{macrocode}
+% The \cs{not} function, which is defined in the \pkg{flexisym}
+% package, requires a suitably defined \cs{notRel} symbol.
+% \begin{macrocode}
+\DeclareFlexCompoundSymbol{\neq}{Rel}{\not{=}}
+% \end{macrocode}
+% .
+% \begin{macrocode}
+\DeclareFlexCompoundSymbol{\mapsto}{Rel}{\mapstoOrd\rightarrow}
+% \end{macrocode}
+% The \cs{@vereq} function ends by centering the whole
+% construction on the math axis, unlike \cs{buildrel} where the base
+% symbol remains at its normal altitude. Furthermore,
+% \cs{@vereq} leaves the math style of the top symbol as given
+% instead of downsizing to scriptstyle.
+% \begin{macrocode}
+\DeclareFlexCompoundSymbol{\cong}{Rel}{\mathpalette\@vereq\sim}
+% \end{macrocode}
+% The \cs{m@th} in the \fn{fontmath.ltx} definition of
+% \cs{notin} is superfluous unless \cs{c@ncel} doesn't include
+% it (which was perhaps true in an older version of
+% \fn{plain.tex}?).
+% \begin{macrocode}
+\providecommand*\joinord{}
+%<cmbase|mathptmx>\renewcommand*\joinord{\mkern-3mu }
+%<mathpazo>\renewcommand*\joinord{\mkern-3.45mu }
+\DeclareFlexCompoundSymbol{\notin}{Rel}{\mathpalette\c@ncel\in}
+\DeclareFlexCompoundSymbol{\rightleftharpoons}{Rel}{\mathpalette\rlh@{}}
+\DeclareFlexCompoundSymbol{\doteq}{Rel}{\buildrel\textstyle.\over=}
+\DeclareFlexCompoundSymbol{\hookrightarrow}{Rel}{\lhookRel\joinord\rightarrow}
+\DeclareFlexCompoundSymbol{\hookleftarrow}{Rel}{\leftarrow\joinord\rhookRel}
+\DeclareFlexCompoundSymbol{\bowtie}{Rel}{\triangleright\joinord\triangleleft}
+\DeclareFlexCompoundSymbol{\models}{Rel}{\vert\joinord=}
+\DeclareFlexCompoundSymbol{\Longrightarrow}{Rel}{\Relbar\joinord\Rightarrow}
+\DeclareFlexCompoundSymbol{\longrightarrow}{Rel}{\relbar\joinord\rightarrow}
+\DeclareFlexCompoundSymbol{\Longleftarrow}{Rel}{\Leftarrow\joinord\Relbar}
+\DeclareFlexCompoundSymbol{\longleftarrow}{Rel}{\leftarrow\joinord\relbar}
+\DeclareFlexCompoundSymbol{\longmapsto}{Rel}{\mapstochar\longrightarrow}
+\DeclareFlexCompoundSymbol{\longleftrightarrow}{Rel}{\leftarrow\joinord\rightarrow}
+\DeclareFlexCompoundSymbol{\Longleftrightarrow}{Rel}{\Leftarrow\joinord\Rightarrow}
+% \end{macrocode}
+% Here is what you get from the old definition of \cs{iff}.
+% \begin{verbatim}
+% \glue 2.77771 plus 2.77771
+% \glue(\thickmuskip) 2.77771 plus 2.77771
+% \OMS/cmsy/m/n/10 (
+% \hbox(0.0+0.0)x-1.66663
+% .\kern -1.66663
+% \OMS/cmsy/m/n/10 )
+% \penalty 500
+% \glue 2.77771 plus 2.77771
+% \glue(\thickmuskip) 2.77771 plus 2.77771
+% \end{verbatim}
+% Looks like it could be simplified slightly. But it's not so
+% easy as it looks to do it without screwing up the line breaking
+% possibilities.
+% \begin{macrocode}
+\renewcommand*\iff{%
+ \mskip\thickmuskip\Longleftrightarrow\mskip\thickmuskip
+}
+% \end{macrocode}
+% Some dotly symbols.
+% \begin{macrocode}
+\DeclareFlexCompoundSymbol{\cdots}{Inn}{\cdotp\cdotp\cdotp}%
+\DeclareFlexCompoundSymbol{\vdots}{Ord}{%
+ \vbox{\baselineskip4\p@ \lineskiplimit\z@
+ \kern6\p@\hbox{.}\hbox{.}\hbox{.}}}
+\DeclareFlexCompoundSymbol{\ddots}{Inn}{%
+ \mkern1mu\raise7\p@
+ \vbox{\kern7\p@\hbox{.}}\mkern2mu%
+ \raise4\p@\hbox{.}\mkern2mu\raise\p@\hbox{.}\mkern1mu%
+}
+% \end{macrocode}
+% .
+% \begin{macrocode}
+\def\relbar{\begingroup \def\smash@{tb}% in case amsmath is loaded
+ \mathpalette\mathsm@sh{\mathchar"200 }\endgroup}
+% \end{macrocode}
+% For \cs{Relbar} we take an equal sign of class $0$ (Ord) from the
+% operator family. For \fn{cmr} and \pkg{mathptmx} we know this is
+% family $0$.
+% \begin{macrocode}
+%<cmbase|mathptmx>\def\Relbar{\mathchar"3D }
+% \end{macrocode}
+% For the \pkg{mathpazo} setup we need to use the equal sign from
+% \fn{cmr} and so must insert class $0$ and use the symbol from the
+% upright symbols.
+% \begin{macrocode}
+%<mathpazo>\edef\Relbar{\mathchar\string"\hexnumber@\symupright3D }
+% \end{macrocode}
+% Done.
+% \begin{macrocode}
+\ExplSyntaxOff
+%</cmbase|mathpazo|mathptmx>
+% \end{macrocode}
+% Various synonyms such as \cs{le} for \cs{leq} and
+% \cs{to} for \cs{rightarrow} are defined in
+% \pkg{flexisym} with \cs{def} instead of \cs{let}, for
+% slower execution speed but smaller chance of synchronization
+% problems.
+%
+%
+%
+% \begin{macrocode}
+%<*msabm>
+\ProvidesSymbols{msabm}[2001/09/08 v0.91]
+\ExplSyntaxOn
+% \end{macrocode}
+% \begin{macrocode}
+\RequirePackage{amsfonts}\relax
+% \end{macrocode}
+% \begin{macrocode}
+\cs_gset:cpx{mg@MSA}{\hexnumber@\symAMSa}%
+\cs_gset:cpx{mg@MSB}{\hexnumber@\symAMSb}%
+% \end{macrocode}
+% \begin{macrocode}
+\DeclareFlexSymbol{\boxdot} {Bin}{MSA}{00}
+\DeclareFlexSymbol{\boxplus} {Bin}{MSA}{01}
+\DeclareFlexSymbol{\boxtimes} {Bin}{MSA}{02}
+\DeclareFlexSymbol{\square} {Ord}{MSA}{03}
+\DeclareFlexSymbol{\blacksquare} {Ord}{MSA}{04}
+\DeclareFlexSymbol{\centerdot} {Bin}{MSA}{05}
+\DeclareFlexSymbol{\lozenge} {Ord}{MSA}{06}
+\DeclareFlexSymbol{\blacklozenge} {Ord}{MSA}{07}
+\DeclareFlexSymbol{\circlearrowright} {Rel}{MSA}{08}
+\DeclareFlexSymbol{\circlearrowleft} {Rel}{MSA}{09}
+% \end{macrocode}
+% In amsfonts.sty:
+% \begin{macrocode}
+%%\DeclareFlexSymbol{\rightleftharpoons}{Rel}{MSA}{0A}
+\DeclareFlexSymbol{\leftrightharpoons} {Rel}{MSA}{0B}
+\DeclareFlexSymbol{\boxminus} {Bin}{MSA}{0C}
+\DeclareFlexSymbol{\Vdash} {Rel}{MSA}{0D}
+\DeclareFlexSymbol{\Vvdash} {Rel}{MSA}{0E}
+\DeclareFlexSymbol{\vDash} {Rel}{MSA}{0F}
+\DeclareFlexSymbol{\twoheadrightarrow} {Rel}{MSA}{10}
+\DeclareFlexSymbol{\twoheadleftarrow} {Rel}{MSA}{11}
+\DeclareFlexSymbol{\leftleftarrows} {Rel}{MSA}{12}
+\DeclareFlexSymbol{\rightrightarrows} {Rel}{MSA}{13}
+\DeclareFlexSymbol{\upuparrows} {Rel}{MSA}{14}
+\DeclareFlexSymbol{\downdownarrows} {Rel}{MSA}{15}
+\DeclareFlexSymbol{\upharpoonright} {Rel}{MSA}{16}
+ \let\restriction\upharpoonright
+\DeclareFlexSymbol{\downharpoonright} {Rel}{MSA}{17}
+\DeclareFlexSymbol{\upharpoonleft} {Rel}{MSA}{18}
+\DeclareFlexSymbol{\downharpoonleft} {Rel}{MSA}{19}
+\DeclareFlexSymbol{\rightarrowtail} {Rel}{MSA}{1A}
+\DeclareFlexSymbol{\leftarrowtail} {Rel}{MSA}{1B}
+\DeclareFlexSymbol{\leftrightarrows} {Rel}{MSA}{1C}
+\DeclareFlexSymbol{\rightleftarrows} {Rel}{MSA}{1D}
+\DeclareFlexSymbol{\Lsh} {Rel}{MSA}{1E}
+\DeclareFlexSymbol{\Rsh} {Rel}{MSA}{1F}
+\DeclareFlexSymbol{\rightsquigarrow} {Rel}{MSA}{20}
+\DeclareFlexSymbol{\leftrightsquigarrow}{Rel}{MSA}{21}
+\DeclareFlexSymbol{\looparrowleft} {Rel}{MSA}{22}
+\DeclareFlexSymbol{\looparrowright} {Rel}{MSA}{23}
+\DeclareFlexSymbol{\circeq} {Rel}{MSA}{24}
+\DeclareFlexSymbol{\succsim} {Rel}{MSA}{25}
+\DeclareFlexSymbol{\gtrsim} {Rel}{MSA}{26}
+\DeclareFlexSymbol{\gtrapprox} {Rel}{MSA}{27}
+\DeclareFlexSymbol{\multimap} {Rel}{MSA}{28}
+\DeclareFlexSymbol{\therefore} {Rel}{MSA}{29}
+\DeclareFlexSymbol{\because} {Rel}{MSA}{2A}
+\DeclareFlexSymbol{\doteqdot} {Rel}{MSA}{2B}
+ \let\Doteq\doteqdot
+\DeclareFlexSymbol{\triangleq} {Rel}{MSA}{2C}
+\DeclareFlexSymbol{\precsim} {Rel}{MSA}{2D}
+\DeclareFlexSymbol{\lesssim} {Rel}{MSA}{2E}
+\DeclareFlexSymbol{\lessapprox} {Rel}{MSA}{2F}
+\DeclareFlexSymbol{\eqslantless} {Rel}{MSA}{30}
+\DeclareFlexSymbol{\eqslantgtr} {Rel}{MSA}{31}
+\DeclareFlexSymbol{\curlyeqprec} {Rel}{MSA}{32}
+\DeclareFlexSymbol{\curlyeqsucc} {Rel}{MSA}{33}
+\DeclareFlexSymbol{\preccurlyeq} {Rel}{MSA}{34}
+\DeclareFlexSymbol{\leqq} {Rel}{MSA}{35}
+\DeclareFlexSymbol{\leqslant} {Rel}{MSA}{36}
+\DeclareFlexSymbol{\lessgtr} {Rel}{MSA}{37}
+\DeclareFlexSymbol{\backprime} {Ord}{MSA}{38}
+\DeclareFlexSymbol{\risingdotseq} {Rel}{MSA}{3A}
+\DeclareFlexSymbol{\fallingdotseq} {Rel}{MSA}{3B}
+\DeclareFlexSymbol{\succcurlyeq} {Rel}{MSA}{3C}
+\DeclareFlexSymbol{\geqq} {Rel}{MSA}{3D}
+\DeclareFlexSymbol{\geqslant} {Rel}{MSA}{3E}
+\DeclareFlexSymbol{\gtrless} {Rel}{MSA}{3F}
+% \end{macrocode}
+% in amsfonts.sty
+% \begin{macrocode}
+%% \DeclareFlexSymbol{\sqsubset} {Rel}{MSA}{40}
+%% \DeclareFlexSymbol{\sqsupset} {Rel}{MSA}{41}
+\DeclareFlexSymbol{\vartriangleright} {Rel}{MSA}{42}
+\DeclareFlexSymbol{\vartriangleleft} {Rel}{MSA}{43}
+\DeclareFlexSymbol{\trianglerighteq} {Rel}{MSA}{44}
+\DeclareFlexSymbol{\trianglelefteq} {Rel}{MSA}{45}
+\DeclareFlexSymbol{\bigstar} {Ord}{MSA}{46}
+\DeclareFlexSymbol{\between} {Rel}{MSA}{47}
+\DeclareFlexSymbol{\blacktriangledown} {Ord}{MSA}{48}
+\DeclareFlexSymbol{\blacktriangleright} {Rel}{MSA}{49}
+\DeclareFlexSymbol{\blacktriangleleft} {Rel}{MSA}{4A}
+\DeclareFlexSymbol{\vartriangle} {Rel}{MSA}{4D}
+\DeclareFlexSymbol{\blacktriangle} {Ord}{MSA}{4E}
+\DeclareFlexSymbol{\triangledown} {Ord}{MSA}{4F}
+\DeclareFlexSymbol{\eqcirc} {Rel}{MSA}{50}
+\DeclareFlexSymbol{\lesseqgtr} {Rel}{MSA}{51}
+\DeclareFlexSymbol{\gtreqless} {Rel}{MSA}{52}
+\DeclareFlexSymbol{\lesseqqgtr} {Rel}{MSA}{53}
+\DeclareFlexSymbol{\gtreqqless} {Rel}{MSA}{54}
+\DeclareFlexSymbol{\Rrightarrow} {Rel}{MSA}{56}
+\DeclareFlexSymbol{\Lleftarrow} {Rel}{MSA}{57}
+\DeclareFlexSymbol{\veebar} {Bin}{MSA}{59}
+\DeclareFlexSymbol{\barwedge} {Bin}{MSA}{5A}
+\DeclareFlexSymbol{\doublebarwedge} {Bin}{MSA}{5B}
+% \end{macrocode}
+% In amsfonts.sty
+% \begin{macrocode}
+%%\DeclareFlexSymbol{\angle} {Ord}{MSA}{5C}
+\DeclareFlexSymbol{\measuredangle} {Ord}{MSA}{5D}
+\DeclareFlexSymbol{\sphericalangle} {Ord}{MSA}{5E}
+\DeclareFlexSymbol{\varpropto} {Rel}{MSA}{5F}
+\DeclareFlexSymbol{\smallsmile} {Rel}{MSA}{60}
+\DeclareFlexSymbol{\smallfrown} {Rel}{MSA}{61}
+\DeclareFlexSymbol{\Subset} {Rel}{MSA}{62}
+\DeclareFlexSymbol{\Supset} {Rel}{MSA}{63}
+\DeclareFlexSymbol{\Cup} {Bin}{MSA}{64}
+ \let\doublecup\Cup
+\DeclareFlexSymbol{\Cap} {Bin}{MSA}{65}
+ \let\doublecap\Cap
+\DeclareFlexSymbol{\curlywedge} {Bin}{MSA}{66}
+\DeclareFlexSymbol{\curlyvee} {Bin}{MSA}{67}
+\DeclareFlexSymbol{\leftthreetimes} {Bin}{MSA}{68}
+\DeclareFlexSymbol{\rightthreetimes} {Bin}{MSA}{69}
+\DeclareFlexSymbol{\subseteqq} {Rel}{MSA}{6A}
+\DeclareFlexSymbol{\supseteqq} {Rel}{MSA}{6B}
+\DeclareFlexSymbol{\bumpeq} {Rel}{MSA}{6C}
+\DeclareFlexSymbol{\Bumpeq} {Rel}{MSA}{6D}
+\DeclareFlexSymbol{\lll} {Rel}{MSA}{6E}
+ \let\llless\lll
+\DeclareFlexSymbol{\ggg} {Rel}{MSA}{6F}
+ \let\gggtr\ggg
+\DeclareFlexSymbol{\circledS} {Ord}{MSA}{73}
+\DeclareFlexSymbol{\pitchfork} {Rel}{MSA}{74}
+\DeclareFlexSymbol{\dotplus} {Bin}{MSA}{75}
+\DeclareFlexSymbol{\backsim} {Rel}{MSA}{76}
+\DeclareFlexSymbol{\backsimeq} {Rel}{MSA}{77}
+\DeclareFlexSymbol{\complement} {Ord}{MSA}{7B}
+\DeclareFlexSymbol{\intercal} {Bin}{MSA}{7C}
+\DeclareFlexSymbol{\circledcirc} {Bin}{MSA}{7D}
+\DeclareFlexSymbol{\circledast} {Bin}{MSA}{7E}
+\DeclareFlexSymbol{\circleddash} {Bin}{MSA}{7F}
+% \end{macrocode}
+% Begin AMSb declarations
+% \begin{macrocode}
+\DeclareFlexSymbol{\lvertneqq} {Rel}{MSB}{00}
+\DeclareFlexSymbol{\gvertneqq} {Rel}{MSB}{01}
+\DeclareFlexSymbol{\nleq} {Rel}{MSB}{02}
+\DeclareFlexSymbol{\ngeq} {Rel}{MSB}{03}
+\DeclareFlexSymbol{\nless} {Rel}{MSB}{04}
+\DeclareFlexSymbol{\ngtr} {Rel}{MSB}{05}
+\DeclareFlexSymbol{\nprec} {Rel}{MSB}{06}
+\DeclareFlexSymbol{\nsucc} {Rel}{MSB}{07}
+\DeclareFlexSymbol{\lneqq} {Rel}{MSB}{08}
+\DeclareFlexSymbol{\gneqq} {Rel}{MSB}{09}
+\DeclareFlexSymbol{\nleqslant} {Rel}{MSB}{0A}
+\DeclareFlexSymbol{\ngeqslant} {Rel}{MSB}{0B}
+\DeclareFlexSymbol{\lneq} {Rel}{MSB}{0C}
+\DeclareFlexSymbol{\gneq} {Rel}{MSB}{0D}
+\DeclareFlexSymbol{\npreceq} {Rel}{MSB}{0E}
+\DeclareFlexSymbol{\nsucceq} {Rel}{MSB}{0F}
+\DeclareFlexSymbol{\precnsim} {Rel}{MSB}{10}
+\DeclareFlexSymbol{\succnsim} {Rel}{MSB}{11}
+\DeclareFlexSymbol{\lnsim} {Rel}{MSB}{12}
+\DeclareFlexSymbol{\gnsim} {Rel}{MSB}{13}
+\DeclareFlexSymbol{\nleqq} {Rel}{MSB}{14}
+\DeclareFlexSymbol{\ngeqq} {Rel}{MSB}{15}
+\DeclareFlexSymbol{\precneqq} {Rel}{MSB}{16}
+\DeclareFlexSymbol{\succneqq} {Rel}{MSB}{17}
+\DeclareFlexSymbol{\precnapprox} {Rel}{MSB}{18}
+\DeclareFlexSymbol{\succnapprox} {Rel}{MSB}{19}
+\DeclareFlexSymbol{\lnapprox} {Rel}{MSB}{1A}
+\DeclareFlexSymbol{\gnapprox} {Rel}{MSB}{1B}
+\DeclareFlexSymbol{\nsim} {Rel}{MSB}{1C}
+\DeclareFlexSymbol{\ncong} {Rel}{MSB}{1D}
+\DeclareFlexSymbol{\diagup} {Ord}{MSB}{1E}
+\DeclareFlexSymbol{\diagdown} {Ord}{MSB}{1F}
+\DeclareFlexSymbol{\varsubsetneq} {Rel}{MSB}{20}
+\DeclareFlexSymbol{\varsupsetneq} {Rel}{MSB}{21}
+\DeclareFlexSymbol{\nsubseteqq} {Rel}{MSB}{22}
+\DeclareFlexSymbol{\nsupseteqq} {Rel}{MSB}{23}
+\DeclareFlexSymbol{\subsetneqq} {Rel}{MSB}{24}
+\DeclareFlexSymbol{\supsetneqq} {Rel}{MSB}{25}
+\DeclareFlexSymbol{\varsubsetneqq} {Rel}{MSB}{26}
+\DeclareFlexSymbol{\varsupsetneqq} {Rel}{MSB}{27}
+\DeclareFlexSymbol{\subsetneq} {Rel}{MSB}{28}
+\DeclareFlexSymbol{\supsetneq} {Rel}{MSB}{29}
+\DeclareFlexSymbol{\nsubseteq} {Rel}{MSB}{2A}
+\DeclareFlexSymbol{\nsupseteq} {Rel}{MSB}{2B}
+\DeclareFlexSymbol{\nparallel} {Rel}{MSB}{2C}
+\DeclareFlexSymbol{\nmid} {Rel}{MSB}{2D}
+\DeclareFlexSymbol{\nshortmid} {Rel}{MSB}{2E}
+\DeclareFlexSymbol{\nshortparallel} {Rel}{MSB}{2F}
+\DeclareFlexSymbol{\nvdash} {Rel}{MSB}{30}
+\DeclareFlexSymbol{\nVdash} {Rel}{MSB}{31}
+\DeclareFlexSymbol{\nvDash} {Rel}{MSB}{32}
+\DeclareFlexSymbol{\nVDash} {Rel}{MSB}{33}
+\DeclareFlexSymbol{\ntrianglerighteq}{Rel}{MSB}{34}
+\DeclareFlexSymbol{\ntrianglelefteq} {Rel}{MSB}{35}
+\DeclareFlexSymbol{\ntriangleleft} {Rel}{MSB}{36}
+\DeclareFlexSymbol{\ntriangleright} {Rel}{MSB}{37}
+\DeclareFlexSymbol{\nleftarrow} {Rel}{MSB}{38}
+\DeclareFlexSymbol{\nrightarrow} {Rel}{MSB}{39}
+\DeclareFlexSymbol{\nLeftarrow} {Rel}{MSB}{3A}
+\DeclareFlexSymbol{\nRightarrow} {Rel}{MSB}{3B}
+\DeclareFlexSymbol{\nLeftrightarrow} {Rel}{MSB}{3C}
+\DeclareFlexSymbol{\nleftrightarrow} {Rel}{MSB}{3D}
+\DeclareFlexSymbol{\divideontimes} {Bin}{MSB}{3E}
+\DeclareFlexSymbol{\varnothing} {Ord}{MSB}{3F}
+\DeclareFlexSymbol{\nexists} {Ord}{MSB}{40}
+\DeclareFlexSymbol{\Finv} {Ord}{MSB}{60}
+\DeclareFlexSymbol{\Game} {Ord}{MSB}{61}
+% \end{macrocode}
+% In amsfonts.sty:
+% \begin{macrocode}
+%%\DeclareFlexSymbol{\mho} {Ord}{MSB}{66}
+\DeclareFlexSymbol{\eth} {Ord}{MSB}{67}
+\DeclareFlexSymbol{\eqsim} {Rel}{MSB}{68}
+\DeclareFlexSymbol{\beth} {Ord}{MSB}{69}
+\DeclareFlexSymbol{\gimel} {Ord}{MSB}{6A}
+\DeclareFlexSymbol{\daleth} {Ord}{MSB}{6B}
+\DeclareFlexSymbol{\lessdot} {Bin}{MSB}{6C}
+\DeclareFlexSymbol{\gtrdot} {Bin}{MSB}{6D}
+\DeclareFlexSymbol{\ltimes} {Bin}{MSB}{6E}
+\DeclareFlexSymbol{\rtimes} {Bin}{MSB}{6F}
+\DeclareFlexSymbol{\shortmid} {Rel}{MSB}{70}
+\DeclareFlexSymbol{\shortparallel} {Rel}{MSB}{71}
+\DeclareFlexSymbol{\smallsetminus} {Bin}{MSB}{72}
+\DeclareFlexSymbol{\thicksim} {Rel}{MSB}{73}
+\DeclareFlexSymbol{\thickapprox} {Rel}{MSB}{74}
+\DeclareFlexSymbol{\approxeq} {Rel}{MSB}{75}
+\DeclareFlexSymbol{\succapprox} {Rel}{MSB}{76}
+\DeclareFlexSymbol{\precapprox} {Rel}{MSB}{77}
+\DeclareFlexSymbol{\curvearrowleft} {Rel}{MSB}{78}
+\DeclareFlexSymbol{\curvearrowright} {Rel}{MSB}{79}
+\DeclareFlexSymbol{\digamma} {Ord}{MSB}{7A}
+\DeclareFlexSymbol{\varkappa} {Ord}{MSB}{7B}
+\DeclareFlexSymbol{\Bbbk} {Ord}{MSB}{7C}
+\DeclareFlexSymbol{\hslash} {Ord}{MSB}{7D}
+% \end{macrocode}
+% In amsfonts.sty:
+% \begin{macrocode}
+%%\DeclareFlexSymbol{\hbar} {Ord}{MSB}{7E}
+\DeclareFlexSymbol{\backepsilon} {Rel}{MSB}{7F}
+\ExplSyntaxOff
+%</msabm>
+% \end{macrocode}
+%
+% \PrintIndex
+%
+% \Finale