%D \module
%D   [     file=math-run,
%D      version=2001.23.04,
%D        title=\CONTEXT\ Math Macros,
%D     subtitle=Runtime Macros,
%D       author=Hans Hagen,
%D         date=\currentdate,
%D    copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
%C details.

\writestatus{loading}{ConTeXt Math Macros / Runtime Macros}

\unprotect

\ifx\showmathmodern\undefined \global\chardef\showmathmodern\zerocount \fi

\gdef\showmathcharacters% nearly \showcharacters
  {\par
   \bgroup
   \ifcase\showmathmodern\or\ifx\modern\undefined\chardef\showmathmodern\zerocount\fi\fi
   \setuptextrules[\c!bodyfont=,\c!style=]
   \starttextrule{math characters -- \currentmathcollection}
   \whitespace
   \dontcomplain
   \forgetall
   \def\startmathcollection[##1]{}
   \let\stopmathcollection\relax
   \dimen0\zeropoint
   \dimen2\zeropoint
   \def\definemathsymbol   {\dosixtupleempty\dodefinemathsymbol}
   \def\definemathcharacter{\dosixtupleempty\dodefinemathcharacter}
   \def\definemathcommand  {\dotripleempty  \dodefinemathcommand}
   %\newcounter\mathcolor
   \def\dodefinemathsymbol[##1][##2][##3][##4][##5][##6]%
     {%\doifcolorelse{math \purefamilyhex{##3}}{}
      %  {\increment\mathcolor
      %   \definecolor[math \purefamilyhex{##3}][\mathcolor]}%
      \setbox0\hbox spread 1em{\mathematics{\getvalue{##1}{}{}{}}}%
      \ifdim\wd0>\dimen0 \dimen0=\wd0 \fi
      \setbox2\hbox spread 1em{\hbox to 1em{\tttf\purefamilyhex{##3}\hss}\box0 ##1}%
      \ifdim\wd2>\dimen2 \dimen2=\wd2 \fi}
   \def\dodefinemathcharacter[##1][##2][##3][##4][##5][##6]{}
   \def\dodefinemathcommand  [##1][##2][##3]##4{}
   \readsysfile{\f!mathprefix tex.mkii}\!!doneatrue\!!doneafalse
   \readsysfile{\f!mathprefix ams.mkii}\!!donebtrue\!!donebfalse
   \if!!donea
     \if!!doneb
       \edef\encwidth{\the\dimen0}
       \dimen0=\hsize
       \advance\dimen0 2em
       \advance\dimen2 2em
       \ifcase\showmathmodern\or\advance\dimen2 4em\fi
       \divide \dimen0 by \dimen2 \advance\dimen0 1sp
       \edef\enccols{\number\dimen0}
       \startcolumns[\c!n=\enccols,\c!distance=2em]
       \def\dodefinemathsymbol[##1][##2][##3][##4][##5][##6]%
         {%\localcolortrue
          %\color
          %  [math \purefamilyhex{##3}]
             {\hbox
                {\ifcase\showmathmodern\or
                   \hbox to \encwidth{\modern\let\mathcollection\nomathcollection\mathematics{\getvalue{##1}{}{}{}}\hss}%
                 \fi
                 \hbox to \encwidth{\mathematics{\getvalue{##1}{}{}{}}\hss}%
                 \hbox to 1em{\tttf\purefamilyhex{##3}\hss}##1}\par}}
       \readsysfile{\f!mathprefix tex.mkii}\donothing\donothing
       \readsysfile{\f!mathprefix ams.mkii}\donothing\donothing
       \stopcolumns
     \else
       \par \tttf no chars in \f!mathprefix ams\par
     \fi
   \else
     \par \tttf no chars in \f!mathprefix tex\par
   \fi
   \stoptextrule
   \egroup}

% \definecolor[math \purefamilyhex{mr}] [darkred]
% \definecolor[math \purefamilyhex{mi}] [darkgreen]
% \definecolor[math \purefamilyhex{sy}] [darkblue]
% \definecolor[math \purefamilyhex{ex}] [darkmagenta]
% \definecolor[math \purefamilyhex{nn}] [darkyellow]
% \definecolor[math \purefamilyhex{ma}] [lightred]
% \definecolor[math \purefamilyhex{mb}] [lightgreen]
% \definecolor[math \purefamilyhex{mc}] [lightblue]
% \definecolor[math \purefamilyhex{md}] [lightmagenta]

\gdef\showmathtoken#1%
  {\starttabulate[|lT|lT|lT|l|]
   \NC token         \NC #1 \NC \NR
   \NC collection    \NC \ifcsname\@mt@\mathcollection#1\endcsname
                           \mathcollection
                         \else\ifcsname\@mt@\nomathcollection#1\endcsname
                           \nomathcollection
                         \else
                           ?%
                         \fi\fi \NC \NR
   \NC visualization \NC \mathematics{\getvalue{#1}} \NC \NR
   \NC definition    \NC \tttf \@EA\defconvertedcommand\@EA\ascii\csname\@mt@\mathcollection#1\endcsname \ascii \NC \NR
   \stoptabulate}

\protect \endinput
