summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/context/base/mkiv/math-stc.mkvi
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/tex/context/base/mkiv/math-stc.mkvi')
-rw-r--r--Master/texmf-dist/tex/context/base/mkiv/math-stc.mkvi159
1 files changed, 103 insertions, 56 deletions
diff --git a/Master/texmf-dist/tex/context/base/mkiv/math-stc.mkvi b/Master/texmf-dist/tex/context/base/mkiv/math-stc.mkvi
index 92325d0afd0..8048bf92364 100644
--- a/Master/texmf-dist/tex/context/base/mkiv/math-stc.mkvi
+++ b/Master/texmf-dist/tex/context/base/mkiv/math-stc.mkvi
@@ -86,11 +86,19 @@
\def\math_stackers_regular
{\mathstylehbox{\usemathstackerscolorparameter\c!color
- \Umathaccent\fam\zerocount\scratchunicode{\hskip\scratchwidth}}}
+ \hskip\d_math_stackers_offset_l
+ \Umathaccent\fam\zerocount\scratchunicode
+ {\hskip\dimexpr\scratchwidth-\d_math_stackers_offset_l-\d_math_stackers_offset_r}%
+ \hskip\d_math_stackers_offset_r
+ }}
\def\math_stackers_stretch % we don't have that one yet
{\mathstylehbox{\usemathstackerscolorparameter\c!color
- \Umathaccent\fam\zerocount\scratchunicode{\hskip\hsize}}}
+ \hskip\d_math_stackers_offset_l
+ \Umathaccent\fam\zerocount\scratchunicode
+ {\hskip\dimexpr\hsize-\d_math_stackers_offset_l-\d_math_stackers_offset_r}%
+ \hskip\d_math_stackers_offset_r
+ }}
% these delimiters are a unuseable as they don't center for small arguments:
%
@@ -499,7 +507,7 @@
\dostoptagged
\mathstackersparameter\c!right\relax
\endgroup}
- %\math_stackers_start_group}
+ %\math_stackers_stop_group}
\unexpanded\def\definemathextensible
{\dotripleempty\math_stackers_define_normal}
@@ -566,14 +574,33 @@
\edef\currentmathstackers{#category}%
\edef\p_limits{\mathstackersparameter\c!mathlimits}%
\ifx\p_limits\v!yes
- \def\math_stackers_stop_group{\egroup\endgroup\limits}%
+ \def\math_stackers_stop_group{\egroup\endgroup\ordlimits}%
\mathop\bgroup
\else
\let\math_stackers_stop_group\endgroup
\fi}
-\unexpanded\def\math_stackers_make_double#top#bottom#category#codepoint#codeextra#text%
+\newconstant\c_math_stackers_top
+\newconstant\c_math_stackers_bottom
+\newconstant\c_math_stackers_codepoint
+\newconstant\c_math_stackers_extracode
+\newdimen \d_math_stackers_offset_l
+\newdimen \d_math_stackers_offset_r
+
+\setupmathstackers[lt=\zeropoint,rt=\zeropoint,lb=\zeropoint,rb=\zeropoint]
+
+\unexpanded\def\math_stackers_make_double#top#bottom#category#codepoint#codeextra%
{\math_stackers_start_group{#category}%
+ \c_math_stackers_top #top\relax
+ \c_math_stackers_bottom #bottom\relax
+ \c_math_stackers_codepoint#codepoint\relax
+ \c_math_stackers_extracode#codeextra\relax
+ \dosingleempty\math_stackers_make_double_indeed}
+
+\unexpanded\def\math_stackers_make_double_indeed[#settings]#text%
+ {\iffirstargument
+ \setupcurrentmathstackers[#settings]%
+ \fi
\mathstackersparameter\c!left\relax
\dostarttagged\t!mathstacker\currentmathstackers
\ifmmode\math_class_by_parameter\mathstackersparameter\else\dontleavehmode\fi
@@ -587,7 +614,7 @@
\scratchleftoffset \zeropoint
\scratchrightoffset\zeropoint
%
- \math_stackers_check_unicode{#codepoint}%
+ \math_stackers_check_unicode\c_math_stackers_codepoint
%
\ifx\math_stackers_middle\empty
\setbox\scratchboxthree\emptyhbox
@@ -602,24 +629,37 @@
\fi
\advance\scratchwidth2\scratchhoffset
%
+ %\scratchunicode\c_math_stackers_codepoint
+ \ifcase\c_math_stackers_bottom
+ \d_math_stackers_offset_l\mathstackersparameter{lt}%
+ \d_math_stackers_offset_r\mathstackersparameter{rt}%
+ \else\ifcase\c_math_stackers_top
+ \d_math_stackers_offset_l\mathstackersparameter{lb}%
+ \d_math_stackers_offset_r\mathstackersparameter{rb}%
+ \else
+ \d_math_stackers_offset_l\mathstackersparameter{lt}%
+ \d_math_stackers_offset_r\mathstackersparameter{rt}%
+ \fi\fi
\setbox\scratchboxtwo\csname\??mathstackersalternative\p_alternative\endcsname
\setbox\scratchboxthree\hpack to \scratchwidth{\hss\box\scratchboxthree\hss}%
%
- \scratchunicode#codeextra\relax
- \ifcase\scratchunicode\else
+ \ifcase\c_math_stackers_extracode\else
+ \scratchunicode\c_math_stackers_extracode
+ \d_math_stackers_offset_l\mathstackersparameter{lb}%
+ \d_math_stackers_offset_r\mathstackersparameter{rb}%
\setbox\scratchboxone\csname\??mathstackersalternative\p_alternative\endcsname
\fi
%
\math_stackers_normalize_three
% analysis
- \ifcase#bottom\relax
- \ifcase#top\relax
+ \ifcase\c_math_stackers_bottom
+ \ifcase\c_math_stackers_top
\dosettagproperty\s!subtype\t!munderover
\else
\dosettagproperty\s!subtype\t!mover
\fi
\else
- \ifcase#top\relax
+ \ifcase\c_math_stackers_top
\dosettagproperty\s!subtype\t!munder
\else
% brrr
@@ -633,7 +673,7 @@
\math_stackers_stop_tagged
%
\ifdim\htdp\scratchboxtwo>\zeropoint
- \ifcase#bottom\else
+ \ifcase\c_math_stackers_bottom\else
\kern-\scratchwidth
% under
\math_stackers_start_tagged_bot
@@ -643,7 +683,7 @@
+\ht\scratchboxtwo
+\mathstackersparameter\c!distance % was \c!voffset
\relax
- \ifcase#top\relax
+ \ifcase\c_math_stackers_top
\box\scratchboxtwo
\else
\box\scratchboxone
@@ -651,7 +691,7 @@
\egroup
\math_stackers_stop_tagged
\fi
- \ifcase#top\else
+ \ifcase\c_math_stackers_top\else
\kern-\scratchwidth
% over
\math_stackers_start_tagged_top
@@ -665,7 +705,6 @@
\egroup
\math_stackers_stop_tagged
\fi
- %
\fi}%
\dostoptagged
\mathstackersparameter\c!right\relax
@@ -696,10 +735,6 @@
\setuevalue{#1}{\math_stackers_make_double\plusone \plusone\noexpand\currentmathstackers{\number#2}{\number#3}}%
\fi}
-\unexpanded\def\mathover {\begingroup\dosingleempty\math_stackers_handle_over }
-\unexpanded\def\mathunder {\begingroup\dosingleempty\math_stackers_handle_under }
-\unexpanded\def\mathdouble{\begingroup\dodoubleempty\math_stackers_handle_double}
-
\unexpanded\def\definemathover {\dotripleargument \math_stackers_define_over }
\unexpanded\def\definemathunder {\dotripleargument \math_stackers_define_under }
\unexpanded\def\definemathdouble{\doquadrupleargument\math_stackers_define_double}
@@ -713,29 +748,41 @@
\def\math_stackers_define_double[#category][#command][#topcode][#bottomcode]%
{\setuvalue{#command}{\math_stackers_handle_direct\plusone\plusone{#category}{#topcode}{#bottomcode}}}
-\unexpanded\def\mathover {\begingroup\dosingleempty\math_stackers_handle_over }
-\unexpanded\def\mathunder {\begingroup\dosingleempty\math_stackers_handle_under }
-\unexpanded\def\mathdouble{\begingroup\dosingleempty\math_stackers_handle_double}
+\unexpanded\def\mathover {\begingroup\dodoubleempty\math_stackers_handle_over }
+\unexpanded\def\mathunder {\begingroup\dodoubleempty\math_stackers_handle_under }
+\unexpanded\def\mathdouble{\begingroup\dodoubleempty\math_stackers_handle_double}
-\def\math_stackers_handle_over[#category]#topcode#text%
- {\math_stackers_make_double\plusone\zerocount
- {\iffirstargument#category\else\v!top\fi}%
+\def\math_stackers_handle_over[#category][#settings]#topcode#text%
+ {\edef\currentmathstackers{\iffirstargument#category\else\v!top\fi}%
+ \ifsecondargument
+ \setupcurrentmathstackers[#settings]%
+ \fi
+ \math_stackers_make_double\plusone\zerocount
+ {\currentmathstackers}%
{#topcode}%
{0}%
{#text}%
\endgroup}
-\def\math_stackers_handle_under[#category]#bottomcode#text%
- {\math_stackers_make_double\zerocount\plusone
- {\iffirstargument#category\else\v!bottom\fi}%
+\def\math_stackers_handle_under[#category][#settings]#bottomcode#text%
+ {\edef\currentmathstackers{\iffirstargument#category\else\v!bottom\fi}%
+ \ifsecondargument
+ \setupcurrentmathstackers[#settings]%
+ \fi
+ \math_stackers_make_double\zerocount\plusone
+ {\currentmathstackers}%
{#bottomcode}%
{0}%
{#text}%
\endgroup}
-\def\math_stackers_handle_double[#category]#topcode#bottomcode#text%
- {\math_stackers_make_double\plusone\plusone
- {\iffirstargument#category\else\v!both\fi}%
+\def\math_stackers_handle_double[#category][#settings]#topcode#bottomcode#text%
+ {\edef\currentmathstackers{\iffirstargument#category\else\v!both\fi}%
+ \ifsecondargument
+ \setupcurrentmathstackers[#settings]%
+ \fi
+ \math_stackers_make_double\plusone\plusone
+ {\currentmathstackers}%
{#topcode}%
{#bottomcode}%
{#text}%
@@ -1189,39 +1236,39 @@
% alternatively we can move the original to FE*
-\definemathoverextensible [vfenced] [overbar] ["FE33E] % ["203E]
-\definemathunderextensible [vfenced] [underbar] ["FE33F] % ["203E]
-\definemathdoubleextensible [vfenced] [doublebar] ["FE33E] ["FE33F]
+\definemathoverextensible [\v!vfenced] [overbar] ["FE33E] % ["203E]
+\definemathunderextensible [\v!vfenced] [underbar] ["FE33F] % ["203E]
+\definemathdoubleextensible [\v!vfenced] [doublebar] ["FE33E] ["FE33F]
-\definemathoverextensible [vfenced] [overbrace] ["FE3DE] % ["023DE]
-\definemathunderextensible [vfenced] [underbrace] ["FE3DF] % ["023DF]
-\definemathdoubleextensible [vfenced] [doublebrace] ["FE3DE] ["FE3DF]
+\definemathoverextensible [\v!vfenced] [overbrace] ["FE3DE] % ["023DE]
+\definemathunderextensible [\v!vfenced] [underbrace] ["FE3DF] % ["023DF]
+\definemathdoubleextensible [\v!vfenced] [doublebrace] ["FE3DE] ["FE3DF]
-\definemathoverextensible [vfenced] [overparent] ["FE3DC] % ["023DC]
-\definemathunderextensible [vfenced] [underparent] ["FE3DD] % ["023DD]
-\definemathdoubleextensible [vfenced] [doubleparent] ["FE3DC] ["FE3DD]
+\definemathoverextensible [\v!vfenced] [overparent] ["FE3DC] % ["023DC]
+\definemathunderextensible [\v!vfenced] [underparent] ["FE3DD] % ["023DD]
+\definemathdoubleextensible [\v!vfenced] [doubleparent] ["FE3DC] ["FE3DD]
-\definemathoverextensible [vfenced] [overbracket] ["FE3B4] % ["023B4]
-\definemathunderextensible [vfenced] [underbracket] ["FE3B5] % ["023B5]
-\definemathdoubleextensible [vfenced] [doublebracket] ["FE3B4] ["FE3B5]
+\definemathoverextensible [\v!vfenced] [overbracket] ["FE3B4] % ["023B4]
+\definemathunderextensible [\v!vfenced] [underbracket] ["FE3B5] % ["023B5]
+\definemathdoubleextensible [\v!vfenced] [doublebracket] ["FE3B4] ["FE3B5]
% \unexpanded\def\mathopwithlimits#1#2{\mathop{#1{#2}}\limits}
%D For mathml:
-\definemathdoubleextensible [both] [overbarunderbar] ["FE33E] ["FE33F]
-\definemathdoubleextensible [both] [overbraceunderbrace] ["FE3DE] ["FE3DF]
-\definemathdoubleextensible [both] [overparentunderparent] ["FE3DC] ["FE3DD]
-\definemathdoubleextensible [both] [overbracketunderbracket] ["FE3B4] ["FE3B5]
-
-\definemathovertextextensible [bothtext] [overbartext] ["FE33E]
-\definemathundertextextensible [bothtext] [underbartext] ["FE33F]
-\definemathovertextextensible [bothtext] [overbracetext] ["FE3DE]
-\definemathundertextextensible [bothtext] [underbracetext] ["FE3DF]
-\definemathovertextextensible [bothtext] [overparenttext] ["FE3DC]
-\definemathundertextextensible [bothtext] [underparenttext] ["FE3DD]
-\definemathovertextextensible [bothtext] [overbrackettext] ["FE3B4]
-\definemathundertextextensible [bothtext] [underbrackettext] ["FE3B5]
+\definemathdoubleextensible [\v!both] [overbarunderbar] ["FE33E] ["FE33F]
+\definemathdoubleextensible [\v!both] [overbraceunderbrace] ["FE3DE] ["FE3DF]
+\definemathdoubleextensible [\v!both] [overparentunderparent] ["FE3DC] ["FE3DD]
+\definemathdoubleextensible [\v!both] [overbracketunderbracket] ["FE3B4] ["FE3B5]
+
+\definemathovertextextensible [\v!bothtext] [overbartext] ["FE33E]
+\definemathundertextextensible [\v!bothtext] [underbartext] ["FE33F]
+\definemathovertextextensible [\v!bothtext] [overbracetext] ["FE3DE]
+\definemathundertextextensible [\v!bothtext] [underbracetext] ["FE3DF]
+\definemathovertextextensible [\v!bothtext] [overparenttext] ["FE3DC]
+\definemathundertextextensible [\v!bothtext] [underparenttext] ["FE3DD]
+\definemathovertextextensible [\v!bothtext] [overbrackettext] ["FE3B4]
+\definemathundertextextensible [\v!bothtext] [underbrackettext] ["FE3B5]
%D Some bonus ones (for the moment here):