diff options
Diffstat (limited to 'Master/texmf-dist/tex/context/base/mkiv/math-del.mkiv')
-rw-r--r-- | Master/texmf-dist/tex/context/base/mkiv/math-del.mkiv | 121 |
1 files changed, 121 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/context/base/mkiv/math-del.mkiv b/Master/texmf-dist/tex/context/base/mkiv/math-del.mkiv new file mode 100644 index 00000000000..be78b581f4f --- /dev/null +++ b/Master/texmf-dist/tex/context/base/mkiv/math-del.mkiv @@ -0,0 +1,121 @@ +%D \module +%D [ file=math-del, +%D version=2007.07.19, +%D title=\CONTEXT\ Math Macros, +%D subtitle=Delimiters, +%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 / Delimiters} + +\unprotect + +%D Old code that will be redone: +%D +%D \macros +%D {checkdelimiters, fakeleftdelimiter, fakerightdelimiter} +%D +%D Handy for non matching situations (as with mathml): +%D +%D \starttyping +%D \checkdelimiters{... bla bla ...} +%D \fakeleftdelimiter +%D ... bla bla ... +%D \fakerightdelimiter +%D \stoptyping + +% Actually we can do better now with lua hacks. + +\newcount\c_math_delimiter_nesting + +\def\leftfakedelimiter {\advance\c_math_delimiter_nesting\minusone\gobbleoneargument} +\def\rightfakedelimiter{\advance\c_math_delimiter_nesting\plusone \gobbleoneargument} + +\def\checkdelimiters#1% + {\c_math_delimiter_nesting\zerocount + \setbox\scratchbox\hbox\bgroup + \let\left \leftfakedelimiter + \let\right\rightfakedelimiter + \normalstartimath#1\expandafter\normalstopimath\expandafter + \egroup + \expandafter\c_math_delimiter_nesting\the\c_math_delimiter_nesting\relax} + +\def\fakeleftdelimiter {\ifnum\c_math_delimiter_nesting>\zerocount\left .\fi} +\def\fakerightdelimiter{\ifnum\c_math_delimiter_nesting<\zerocount\right.\fi} + +%D The following macros are used in the MathML interpreter, so +%D there is a good change of them never being documented for +%D other usage. + +\let\normalordelimiter\secondoftwoarguments +\let\normalorfiller \firstoftwoarguments + +\unexpanded\def\enabledelimiter {\let\normalordelimiter\secondoftwoarguments} +\unexpanded\def\disabledelimiter{\let\normalordelimiter\firstoftwoarguments} + +\unexpanded\def\enablefiller {\let\normalorfiller\secondoftwoarguments} +\unexpanded\def\disablefiller {\let\normalorfiller\firstoftwoarguments} + +% \def\mathopnolimits#1{\mathop{\mr\mathrm#1}\nolimits} % was \rm, which follows text fonts (used in mml parser) +% \def\mathopdolimits#1{\mathop{\mr\mathrm#1}} % was \rm, which follows text fonts (used in mml parser) + +\def\mathopnolimits#1{\mathop{\mathrm#1}\nolimits} % was \rm, which follows text fonts (used in mml parser, check!) +\def\mathopdolimits#1{\mathop{\mathrm#1}} % was \rm, which follows text fonts (used in mml parser, check!) + +% A new experiment: + +\installcorenamespace {mathextensible} + +\installcommandhandler \??mathextensible {mathextensible} \??mathextensible + +\let\setupmathextensibles\setupmathextensible + +\setupmathextensibles + [\c!symbol=0, + \c!command=\v!yes, + \c!factor=1.5, + \c!height=\exheight, + \c!depth=\exheight] + +\appendtoks + \edef\p_command{\mathextensibleparameter\c!command}% + \ifx\p_command\v!yes + \setuevalue\currentmathextensible{\math_fenced_extensible[\currentmathextensible]}% + \fi +\to \everydefinemathextensible + +\unexpanded\def\math_fenced_extensible + {\dodoubleempty\math_fenced_extensible_indeed} + +\unexpanded\def\math_fenced_extensible_indeed[#1][#2]% + {\mathop{% + \edef\currentmathextensible{#1}% + \edef\p_factor{\mathextensibleparameter\c!factor}% + \ifsecondargument + \doifassignmentelse{#2} + {\setupcurrentmathextensible[#2]}% + {\edef\p_factor{#2}}% + \fi + \Uvextensible + axis % can be an option + height \p_factor\dimexpr\mathextensibleparameter\c!height\relax + depth \p_factor\dimexpr\mathextensibleparameter\c!depth\relax + \Udelimiter\zerocount\zerocount\mathextensibleparameter\c!symbol + \relax}% + } + +\let\mathextensible\math_fenced_extensible + +% \startformula +% \integral[factor=3] \frac{1}{2} +% \integral[5] \frac{1}{2} +% \stopformula + +\definemathextensible[integral][\c!symbol="222B] + +\protect \endinput |