\tracetypescriptstrue

\unprotect
\def\dostartmathmatrix[#1][#2]%
  {\begingroup
   \edef\currentmathmatrix{#1}%
   \doifassignmentelse{#2}{\setupmathmatrix[#1][#2]}\donothing
   \null
    \executeifdefined{\??mx:\mathmatrixparameter\c!location}{\getvalue{\??mx:\v!lohi}}%
   \mathmatrixleft
   \mathmatrixbox\bgroup
   \pushmacro\domatrixNC
   \let\endmath\relax
   \def\NC{\domatrixNC}%
   \def\MC{\domatrixNC\ifmmode\else$\def\endmath{$}\fi}%
   \global\let\domatrixNC\dodomatrixNC
   \def\NR{\endmath\global\let\domatrixNC\dodomatrixNC\crcr}%
   \normalbaselines
   \mathsurround\zeropoint
   \everycr\emptytoks
   \tabskip\zeropoint
   \eqaligncolumn\zerocount
\processcommacommand[\mathmatrixparameter\c!align]{\advance\eqaligncolumn\plusone\dosetmatrixcolumn}%
   \scratchcounter=\ifnum\eqaligncolumn>\zerocount \eqaligncolumn \else \plusone \fi
   \global\eqaligncolumn\plusone
   \preparemathmatrix } % uses scratchcounter

\def\buildmathmatrix % beware: etex only
  {\scratchtoks\emptytoks
   \expanded{\scratchtoks{\the\scratchtoks\the\!!toksa}}%
   \dorecurse{\numexpr\!!counta-\plusone\relax}
     {\expanded{\scratchtoks{\the\scratchtoks\the\!!toksb}}}%
   \expanded{\scratchtoks{\the\scratchtoks\the\!!toksc }}}
\protect

\startmathcollection [extra]
\definemathsymbol [oiint]               [op] [mc] ["08] [mc] ["09]
\definemathsymbol [oiiint]              [op] [mc] ["29] [mc] ["2a]
\definemathsymbol [ointctrclockwise]    [op] [mc] ["0A] [mc] ["0B]
\definemathsymbol [ointclockwise]       [op] [mc] ["0C] [mc] ["0D]
\definemathsymbol [varointctrclockwise] [op] [mc] ["2B] [mc] ["2C]
\definemathsymbol [varointclockwise]    [op] [mc] ["2D] [mc] ["2E]
\definemathsymbol [iint]                [op] [mc] ["21] [mc] ["22]
\definemathsymbol [iiint]               [op] [mc] ["23] [mc] ["24]
\definemathsymbol [iiiint]              [op] [mc] ["25] [mc] ["26]
\definemathsymbol [idotsint]            [op] [mc] ["27] [mc] ["28]
\definemathsymbol [oiintctrclockwise]   [op] [mc] ["40] [mc] ["41]
\definemathsymbol [oiintclockwise]      [op] [mc] ["48] [mc] ["49]
\definemathsymbol [varoiintctrclockwise][op] [mc] ["4A] [mc] ["4B]
\definemathsymbol [varoiintclockwise]   [op] [mc] ["42] [mc] ["43]
\definemathsymbol [oiiintctrclockwise]  [op] [mc] ["44] [mc] ["45]
\definemathsymbol [oiiintclockwise]     [op] [mc] ["4C] [mc] ["4D]
\definemathsymbol [varoiiintctrclockwise][op] [mc] ["4E] [mc] ["4F]
\definemathsymbol [varoiiintclockwise]  [op] [mc] ["46] [mc] ["47]
\stopmathcollection

\loadmapfile[original-youngryu-tx.map]
\loadmapfile[texnansi-wim-rsfs.map]

\starttypescript [math] [modern,computer-modern,latin-modern,ams] [size]
    \definebodyfont [28pt,24pt,18pt,17.3pt,14.4pt,12pt,11pt,10pt,9pt,8pt,7pt,6pt,5pt,4pt] [mm] [mc=txexa sa 1]
\stoptypescript
\definetypeface[mainface] [rm]   [serif]  [times]     [default]  [encoding=texnansi]
\definetypeface[mainface] [mm] [math] [modern] [modern] [encoding=texnansi]
\setupbodyfont[mainface,11pt]

\def\scr#1{\text{\definedfont[texnansi-rsfs10]#1\/}}
\enablemathcollection[extra]

\definemathmatrix[mycases][left={\left\{\,},right={\,\right.}]
\definemathmatrix[aligned][n=3,align={right,left,left},distance=4pt]
\definemathmatrix[alignedfour][n=4,align={left,middle,left,right}]

\startbuffer
\startformula
\startalignedfour[left={\left\{},right={\right\}}]
\NC left \NC middle \NC  left \NC right \NR
\NC aaa \NC = \NC 0 \NC |x| > 0 \NR
\NC aaaa \NC = \NC 1 \NC |x| < 0 \NR
\NC bbb \NC = \NC 2 \NC bb \NR
\NC bb \NC = \NC 3 \NC ccc \NR
\stopalignedfour
\stopformula

\startformula
\startmycases[n=4,align={left,middle,middle,right},distance=1em]
\NC left \NC middle \NC middle \NC right \NR
\NC aaaaaa \NC baaaaaaaaa \NC cccc \NC ddddddddddddd  \NR
\NC aaaaaaaaa \NC bbb \NC c \NC ddd \NR
\stopmycases
\stopformula

\startformula
\startaligned[left={\left.},right={\right\}}]
\NC (\lambda + \mu ) \cdot a \NC = \NC \lambda \cdot a + \mu \cdot a \NR
\NC \lambda ( a + b ) \NC = \NC \lambda \cdot a + \lambda \cdot b \NR
\stopaligned
\quad
\text{(distributieve eigenschappen)}
\stopformula
\stopbuffer

\starttext
Test user defined math matrices without a section (with Aditya's fix)
\blank
Math matrix alignment works.
\getbuffer
\section{Test user defined math matrices but after a section (with Aditya's fix)}
Math matrix alignment broken
\getbuffer

\section{Extra math symbols}
\startformula
\oiint
\oiiint
\ointctrclockwise
\ointclockwise
\varointctrclockwise
\varointclockwise
\iint
\iiint
\iiiint
\idotsint
\oiintctrclockwise
\oiintclockwise
\varoiintctrclockwise
\varoiintclockwise
\oiiintctrclockwise
\oiiintclockwise
\varoiiintctrclockwise
\varoiiintclockwise
\stopformula

\startformula
\alpha \beta \gamma \delta \mu \nu \eta \xi \sigma \epsilon \Gamma \Delta
\stopformula
\startformula
{\scr{A} \scr{B} \scr{C} \scr{D} \scr{E} \scr{F} \scr{G} \scr{H} \scr{L}}
\stopformula
\type{\cal ABCDEFGHIJKLMNOPQRSTUVWXYZ}
\startformula
{\cal ABCDEFGHIJKLMNOPQRSTUVWXYZ}
\stopformula

\page
\section{Default math characters}
\showmathcharacters

\stoptext

