summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/context/base/x-newmml.tex
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/tex/context/base/x-newmml.tex')
-rw-r--r--Master/texmf-dist/tex/context/base/x-newmml.tex143
1 files changed, 134 insertions, 9 deletions
diff --git a/Master/texmf-dist/tex/context/base/x-newmml.tex b/Master/texmf-dist/tex/context/base/x-newmml.tex
index 32b98525d53..690c9ca7043 100644
--- a/Master/texmf-dist/tex/context/base/x-newmml.tex
+++ b/Master/texmf-dist/tex/context/base/x-newmml.tex
@@ -638,6 +638,32 @@
\endgroup
\stopsetups
+\startsetups mmc:interval:fetch
+ \defineXMLnested [interval]
+ [closure=closed]
+ {\directsetup{mmc:interval:fetch:start}}
+ {\directsetup{mmc:interval:fetch:stop}}
+\stopsetups
+
+\startsetups mmc:interval:fetch:start
+ \begingroup
+ \startsavingXMLelements
+\stopsetups
+
+\startsetups mmc:interval:fetch:stop
+ \stopsavingXMLelements
+ \globallet\MMCintervalfrom\empty
+ \globallet\MMCintervalto \empty
+ \ifcase\XMLstacklevel
+ \or
+ \xdef\MMCintervalfrom{\getXMLstackdata\plusone}
+ \or
+ \xdef\MMCintervalfrom{\getXMLstackdata\plusone}
+ \xdef\MMCintervalto {\getXMLstackdata\plustwo}
+ \fi
+ \endgroup
+\stopsetups
+
\setupMMLappearance[interval][\c!alternative=\v!a,\c!separator={,}]
\mapXMLvalue {mmc:int} {closed}
@@ -753,6 +779,24 @@
\endgroup
\stopsetups
+\startsetups mmc:lambda:simple
+ \defineXMLnested
+ [lambda]
+ {\directsetup{mmc:lambda:simple:start}}
+ {\directsetup{mmc:lambda:simple:stop}}
+\stopsetups
+
+\startsetups mmc:lambda:simple:start
+ \begingroup
+ \startsavingXMLelements
+\stopsetups
+
+\startsetups mmc:lambda:simple:stop
+ \stopsavingXMLelements
+ \XMLfirstnamed{apply}
+ \endgroup
+\stopsetups
+
% compose
\defineXMLcommand [compose] {\directsetup{mmc:compose}}
@@ -1425,7 +1469,8 @@
\halign{$\scriptstyle\hss##\hss$\cr#1\crcr}}}
\def\MMLcSUMandPRODUCT#1#2%
- {\XMLdoifonstackelse{condition,bvar,lowlimit}
+ {\begingroup
+ \XMLdoifonstackelse{condition,bvar,lowlimit}
{\def\MMLcSUMlow
{_{\XMLdoifonstackelse{condition}
{\collectXMLnamedstack{condition}{\crcr}%
@@ -1439,8 +1484,22 @@
\XMLdoifonstackelse{uplimit}
{\def\MMLcSUMup{^{\XMLfirstnamed{uplimit}}}}
{\let\MMLcSUMup\empty}%
+ \XMLdoifonstackelse{interval} % open math converter gives this
+ {\begingroup
+ \directsetup{mmc:interval:fetch}%
+ \XMLfirstnamed{interval}%
+ \endgroup
+ \ifx\MMCintervalfrom\empty\else
+ \def\MMLcSUMlow{_{\XMLdoifonstackelse{bvar}{\XMLfirstnamed{bvar}{=}}{}\MMCintervalfrom}}%
+ \fi
+ \ifx\MMCintervalto\empty \else
+ \def\MMLcSUMup{^{\MMCintervalto}}%
+ \fi}
+ {}%
\MMLcreset#2\doMMLlimits{#1}\MMLcSUMup\MMLcSUMlow
- \MMLcreset\XMLfirstnamed{apply,ci}}
+ \directsetup{mmc:lambda:simple}% a bit of open math conversion mess
+ \MMLcreset\XMLfirstnamed{apply,lambda,ci}%
+ \endgroup}
\defineXMLcommand [limit] {\directsetup{mmc:limit}}
@@ -1714,7 +1773,7 @@
% best is to grab the apply (independent of order), (*1*), so:
%
\XMLdoifonstackelse {apply} {
- \doifelseMMCfunctioninapply \XMLstackposition \MMLcfunctionlist \donefalse \donetrue
+ \doifelseMMCfunctioninapply \XMLstackposition {\MMLcfunctionlist,divide} \donefalse \donetrue
} {
\donefalse
}
@@ -2231,19 +2290,19 @@
\def\MMLpTABLEmapper#1#2%
{\doifXMLparelse{mtable}{#1}
{\newcounter\MMLcounter
- \def\docommando##1%
+ \def\docommand##1%
{\increment\MMLcounter
\expanded{\setupTABLE[column][\MMLcounter][#2=\XMLval{mmp:mtable}{#2:##1}\empty]}}%
- \expanded{\processseparatedlist[\XMLpar{mtable}{#1}\empty]}[ ]\docommando}
+ \expanded{\processseparatedlist[\XMLpar{mtable}{#1}\empty]}[ ]\docommand}
{}}
\def\MMLpTABLEsplitter#1#2%
{\doifXMLparelse{mtable}{#1}
{\newcounter\MMLcounter
- \def\docommando##1%
+ \def\docommand##1%
{\increment\MMLcounter
\expanded{\setupTABLE[column][\MMLcounter][#2=##1]}}%
- \expanded{\processseparatedlist[\XMLpar{mtable}{#1}\empty]}[ ]\docommando}
+ \expanded{\processseparatedlist[\XMLpar{mtable}{#1}\empty]}[ ]\docommand}
{}}
\def\MMLpTABLEmap#1#2%
@@ -2340,9 +2399,9 @@
% watch the extra {}'s
\ifdone
\ifodd\scratchcounter
- ^{\getXMLstackdata\recurselevel}{}
- \else
_{\getXMLstackdata\recurselevel}
+ \else
+ ^{\getXMLstackdata\recurselevel}{}
\fi
\else
\doif{\getXMLstackname\recurselevel}{mprescripts}{\donetrue{}}
@@ -2489,6 +2548,72 @@
\fi
\stopsetups
+\def\xflushXMLstackwith#1#2#3#4% num bgroup egroup whatever
+ {\dostepwiserecurse{#1}\XMLstacklevel\plusone
+ {#2\relax
+ \ifnum\recurselevel>#1\relax#4\fi
+ \getXMLstackdata\recurselevel
+ #3}}
+
+\def\xflushXMLstackfrom#1#2#3%
+ {\dostepwiserecurse{#1}\XMLstacklevel\plusone
+ {#2\getXMLstackdata\recurselevel#3}}
+
+% <apply><divide/>
+% <apply><minus/>
+% <apply><minus/><ci>b</ci></apply>
+% <apply><minus/><ci>b</ci></apply>
+% <apply><root/> <ci>a</ci></apply>
+% </apply>
+% <apply><minus/>
+% <apply><minus/><ci>b</ci><ci>b</ci></apply>
+% <apply><minus/><ci>b</ci></apply>
+% <apply><root/> <ci>a</ci></apply>
+% </apply>
+% </apply>
+
+\startsetups mmc:minus
+ \doif \@@MMLsignreduction \v!yes {
+ \setMMLcreset{fn,\MMLcfunctionlist}
+ }
+ \ifcase\XMLstacklevel
+ \or
+ % self
+ \or
+ -\getXMLstackdata\plustwo
+ \else
+ \dostepwiserecurse\plustwo\XMLstacklevel\plusone {
+ \begingroup
+ \doifelse {\getXMLstackname\recurselevel} {apply} {
+ \ifnum\recurselevel=\plustwo
+ \begingroup
+ \dodoifelseMMCfunctioninapply \recurselevel {minus} {
+ \ifnum\XMLstacklevel>\plustwo
+ \endgroup
+ \else
+ \endgroup
+ \MMLcreset
+ \fi
+ } {
+ \endgroup
+ }
+ \else
+ \doifelseMMCfunctioninapply \recurselevel {\MMLcfunctionlist,\MMLcconstructlist} {
+ \MMLcreset
+ } {
+ }
+ \fi
+ } {
+ }
+ \getXMLstackdata\recurselevel
+ \ifnum\recurselevel<\XMLstacklevel\relax
+ -
+ \fi
+ \endgroup
+ }
+ \fi
+\stopsetups
+
\stopmoduletestsection
\stopmodule