diff options
author | Hans Hagen <pragma@wxs.nl> | 2013-08-17 00:58:00 +0200 |
---|---|---|
committer | Hans Hagen <pragma@wxs.nl> | 2013-08-17 00:58:00 +0200 |
commit | db880f87c095b00754b51e7f7995f63b1f3ff554 (patch) | |
tree | a6f321cb9fb4be890e9d0e553bdfc358c6ae22be /tex/context/base/math-fen.mkiv | |
parent | 2b566444186caf1df842bd40cba141ec7153f1d1 (diff) | |
download | context-db880f87c095b00754b51e7f7995f63b1f3ff554.tar.gz |
beta 2013.08.17 00:58
Diffstat (limited to 'tex/context/base/math-fen.mkiv')
-rw-r--r-- | tex/context/base/math-fen.mkiv | 132 |
1 files changed, 113 insertions, 19 deletions
diff --git a/tex/context/base/math-fen.mkiv b/tex/context/base/math-fen.mkiv index 640821bad..45f628862 100644 --- a/tex/context/base/math-fen.mkiv +++ b/tex/context/base/math-fen.mkiv @@ -11,8 +11,6 @@ %C therefore copyrighted by \PRAGMA. See mreadme.pdf for %C details. -% 0x -> " - \writestatus{loading}{ConTeXt Math Macros / Fences} \unprotect @@ -40,9 +38,9 @@ \let\setupmathfences\setupmathfence \setupmathfences - [\c!left=0x2E, - \c!right=0x2E, - \c!middle=0x2E, + [\c!left=, + \c!right=, + \c!middle=, \c!mathstyle=, \c!color=, \c!command=] @@ -54,13 +52,22 @@ \fi \to \everydefinemathfence -% no Uchar here: - -\def\math_fenced_left {\math_fenced_color_push\normalleft \utfchar{\mathfenceparameter\c!left }\math_fenced_color_pop} -\def\math_fenced_middle{\mskip\thinmuskip - \math_fenced_color_push\normalmiddle\utfchar{\mathfenceparameter\c!middle}\math_fenced_color_pop +% we need the direct use of \Udelimiter because of { etc + +\def\math_fenced_left {\edef\p_left{\mathfenceparameter\c!left}% + \math_fenced_color_push + \normalleft\ifx\p_left\empty.\else\Udelimiter\plusfour\fam\p_left\fi + \math_fenced_color_pop} +\def\math_fenced_middle{\edef\p_middle{\mathfenceparameter\c!middle}% + \mskip\thinmuskip + \math_fenced_color_push + \normalmiddle\ifx\p_middle\empty.\else\Udelimiter\plusfour\fam\p_middle\fi + \math_fenced_color_pop \mskip\thinmuskip} -\def\math_fenced_right {\math_fenced_color_push\normalright \utfchar{\mathfenceparameter\c!right }\math_fenced_color_pop} +\def\math_fenced_right {\edef\p_right{\mathfenceparameter\c!right}% + \math_fenced_color_push + \normalright\ifx\p_right\empty.\else\Udelimiter\plusfive\fam\p_right\fi + \math_fenced_color_pop} \def\math_fenced_color_do_push{\pushcolor[\p_math_fenced_color]} \let\math_fenced_color_do_pop \popcolor @@ -68,7 +75,7 @@ \let\fence \relax \let\fenced\relax -\unexpanded\def\math_fenced_fenced[#1]#2% +\unexpanded\def\math_fenced_fenced_start#1% {\begingroup \edef\currentmathfence{#1}% \startusemathstyleparameter\mathfenceparameter @@ -81,7 +88,16 @@ \let\math_fenced_color_push\math_fenced_color_do_push \let\math_fenced_color_pop \math_fenced_color_do_pop \fi - \math_fenced_left + \math_fenced_left} + +\unexpanded\def\math_fenced_fenced_stop#1% + {\edef\currentmathfence{#1}% + \math_fenced_right + \stopusemathstyleparameter + \endgroup} + +\unexpanded\def\math_fenced_fenced[#1]#2% + {\math_fenced_fenced_start{#1}% #2% \math_fenced_right \stopusemathstyleparameter @@ -91,12 +107,90 @@ \let\fenced\math_fenced_fenced \to \everymathematics -\definemathfence [parenthesis] [\c!left=0x0028,\c!right=0x0029] -\definemathfence [bracket] [\c!left=0x005B,\c!right=0x005D] -\definemathfence [braces] [\c!left=0x007B,\c!right=0x007D] -\definemathfence [bar] [\c!left=0x007C,\c!right=0x007C] -\definemathfence [doublebar] [\c!left=0x2016,\c!right=0x2016] -\definemathfence [angle] [\c!left=0x003C,\c!right=0x003E] +% todo: | in mathmode letter +% +% \appendtoks +% \let\bar\letterbar +% \to \everymathematics +% +% but then we don't have it in embedded text too so ... + +\definemathfence [parenthesis] [\c!left="0028,\c!right="0029] +\definemathfence [bracket] [\c!left="005B,\c!right="005D] +\definemathfence [brace] [\c!left="007B,\c!right="007D] +\definemathfence [bar] [\c!left="007C,\c!right="007C] +\definemathfence [doublebar] [\c!left="2016,\c!right="2016] +\definemathfence [angle] [\c!left="003C,\c!right="003E] +\definemathfence [nothing] + +%D A bonus: + +\unexpanded\def\Lparent {\math_fenced_fenced_start{parenthesis}} \unexpanded\def\Rparent {\math_fenced_fenced_stop{parenthesis}} +\unexpanded\def\Lbracket {\math_fenced_fenced_start{bracket}} \unexpanded\def\Rbracket {\math_fenced_fenced_stop{bracket}} +\unexpanded\def\Lbrace {\math_fenced_fenced_start{brace}} \unexpanded\def\Rbrace {\math_fenced_fenced_stop{brace}} +\unexpanded\def\Langle {\math_fenced_fenced_start{angle}} \unexpanded\def\Rangle {\math_fenced_fenced_stop{angle}} +\unexpanded\def\Lbar {\math_fenced_fenced_start{bar}} \unexpanded\def\Rbar {\math_fenced_fenced_stop{bar}} +\unexpanded\def\Ldoublebar {\math_fenced_fenced_start{doublebar}} \unexpanded\def\Rdoublebar{\math_fenced_fenced_stop{doublebar}} +\unexpanded\def\Lnothing {\math_fenced_fenced_start{nothing}} \unexpanded\def\Rnothing {\math_fenced_fenced_stop{nothing}} + +%D And another one: + +% \setupmathfences[color=darkgreen] +% +% \startformula +% \left{ \frac{1}{a} \right} +% \left[ \frac{1}{b} \right] +% \left( \frac{1}{c} \right) +% \left< \frac{1}{d} \right> +% \left| \frac{1}{e} \right| +% \stopformula + +\installcorenamespace{mathleft} +\installcorenamespace{mathright} + +\unexpanded\def\left {\afterassignment\math_left \let\next=} +\unexpanded\def\right{\afterassignment\math_right\let\next=} + +% \def\math_left +% {\csname\??mathleft +% \ifcsname\??mathleft\meaning\next\endcsname +% \meaning\next +% \else +% \s!unknown +% \fi +% \endcsname} + +% \def\math_right +% {\csname\??mathright +% \ifcsname\??mathright\meaning\next\endcsname +% \meaning\next +% \else +% \s!unknown +% \fi +% \endcsname} + +\def\math_left + {\edef\m_math_left{\meaning\next}% + \csname\??mathleft \ifcsname\??mathleft \m_math_left \endcsname\m_math_left \else\s!unknown\fi\endcsname} + +\def\math_right + {\edef\m_math_right{\meaning\next}% + \csname\??mathright\ifcsname\??mathright\m_math_right\endcsname\m_math_right\else\s!unknown\fi\endcsname} + +\setvalue{\??mathleft \s!unknown}{\normalleft \next} +\setvalue{\??mathright\s!unknown}{\normalright\next} + +\bgroup + +\let\next[ \global\expandafter\let\csname\??mathleft\meaning\next\endcsname\Lbracket \let\next] \global\expandafter\let\csname\??mathright\meaning\next\endcsname\Rbracket +\let\next( \global\expandafter\let\csname\??mathleft\meaning\next\endcsname\Lparent \let\next) \global\expandafter\let\csname\??mathright\meaning\next\endcsname\Rparent +\let\next< \global\expandafter\let\csname\??mathleft\meaning\next\endcsname\Langle \let\next> \global\expandafter\let\csname\??mathright\meaning\next\endcsname\Rangle +\let\next{ \global\expandafter\let\csname\??mathleft\meaning\next\endcsname\Lbrace \let\next} \global\expandafter\let\csname\??mathright\meaning\next\endcsname\Rbrace +\let\next| \global\expandafter\let\csname\??mathleft\meaning\next\endcsname\Lbar \let\next| \global\expandafter\let\csname\??mathright\meaning\next\endcsname\Rbar +\let\next‖ \global\expandafter\let\csname\??mathleft\meaning\next\endcsname\Ldoublebar \let\next‖ \global\expandafter\let\csname\??mathright\meaning\next\endcsname\Rdoublebar +\let\next. \global\expandafter\let\csname\??mathleft\meaning\next\endcsname\Lnothing \let\next. \global\expandafter\let\csname\??mathright\meaning\next\endcsname\Rnothing + +\egroup %definemathfence [fancybracket] [bracket] [command=yes,color=red] |