diff options
author | Marius <mariausol@gmail.com> | 2013-10-20 01:20:14 +0300 |
---|---|---|
committer | Marius <mariausol@gmail.com> | 2013-10-20 01:20:14 +0300 |
commit | 965214d981e6129b782c67adcaf3a81aedcb0bac (patch) | |
tree | 84f5945aae8efc9b6eb1898b873be5453cafe43d /tex/context/base/math-stc.mkvi | |
parent | e7d0d90a434e5452ff9e86c8abab5a4cac35e2f1 (diff) | |
download | context-965214d981e6129b782c67adcaf3a81aedcb0bac.tar.gz |
stable 2013.05.28 00:36
Diffstat (limited to 'tex/context/base/math-stc.mkvi')
-rw-r--r-- | tex/context/base/math-stc.mkvi | 375 |
1 files changed, 85 insertions, 290 deletions
diff --git a/tex/context/base/math-stc.mkvi b/tex/context/base/math-stc.mkvi index 76a07db5c..2dc2b2c22 100644 --- a/tex/context/base/math-stc.mkvi +++ b/tex/context/base/math-stc.mkvi @@ -48,10 +48,6 @@ %D %D In the end we have a more flexible mechanism which also handles text variants. -%D When wrapping up some math developments I decided to add mp support here -%D as well. A nice evening job with Joe Bonamassa performing live on the big -%D screen (real nice bluray's). See meta-imp-mat.mkiv for examples. - % possible improvements: % % - we could skip the left/right offsets when offset=normal, this saves some access time @@ -60,40 +56,27 @@ \installcorenamespace {mathextensiblefallbacks} -% currently no italic correction ... problem is that we don't know yet if we have an italic -% below so we we need to postpone - \def\math_stackers_fallback {\hbox to \scratchwidth{\csname\??mathextensiblefallbacks\ifcsname\??mathextensiblefallbacks\number\scratchunicode\endcsname\number\scratchunicode\fi\endcsname}} %{\csname\??mathextensiblefallbacks\ifcsname\??mathextensiblefallbacks\number\scratchunicode\endcsname\number\scratchunicode\fi\endcsname } -% \def\math_stackers_regular -% {\mathstylehbox{\Umathaccent\fam\zerocount\scratchunicode{\hskip\scratchwidth}}} - \def\math_stackers_regular - {\mathstylehbox{\usemathstackerscolorparameter\c!color - \Umathaccent\fam\zerocount\scratchunicode{\hskip\scratchwidth}}} + {\mathstylehbox{\Umathaccent\fam\zerocount\scratchunicode{\hskip\scratchwidth}}} \def\math_stackers_stretch % we don't have that one yet - {\mathstylehbox{\usemathstackerscolorparameter\c!color - \Umathaccent\fam\zerocount\scratchunicode{\hskip\hsize}}} - -% these delimiters are a unuseable as theu don't center for small arguments: -% -% $\Umathaccent 0 0 "2190{x}$ \par $\Umathaccent 0 0 "27F8{x}$\par -% $\Udelimiterunder 0 "2190{x}$ \par $\Udelimiterunder 0 "27F8{x}$\par + {\mathstylehbox{\Umathaccent\fam\zerocount\scratchunicode{\hskip\hsize}}} \setvalue{\??mathextensiblefallbacks}{\hbox{\vrule\!!width\scratchwidth\!!height.1\exheight\!!depth\zeropoint}} -% \def\math_stackers_with_fallback#codepoint% -% {\begingroup -% \scratchunicode#codepoint\relax -% \ifcase\mathextensiblecode\fam\scratchunicode\relax -% \math_stackers_fallback -% \else -% \math_stackers_stretch -% \fi -% \endgroup} +\def\math_stackers_with_fallback#codepoint% + {\begingroup + \scratchunicode#codepoint\relax + \ifcase\mathextensiblecode\fam\scratchunicode\relax + \math_stackers_fallback + \else + \math_stackers_stretch + \fi + \endgroup} %D We don't really need this because we can assume that fonts have the right %D extensibles. If needed I will make a general virtual extender for \OPENTYPE\ @@ -131,12 +114,6 @@ [%c!alternative=\v!text, % text | mathematics \c!left=, \c!right=, - \c!mathclass=\s!rel, - \c!alternative=\v!normal, - \c!mp=math:stacker:\number\scratchunicode, - \c!mpheight=\exheight, - \c!mpdepth=\exheight, - \c!mpoffset=.25\exheight, \c!voffset=.25\exheight, \c!hoffset=.5\emwidth, \c!minheight=\exheight, @@ -144,7 +121,7 @@ \c!minwidth=\emwidth, \c!order=\v!normal, \c!strut=, - \c!color=, % todo: when I need it + %\c!color=, % todo: when I need it \c!topcommand=, \c!middlecommand=, \c!bottomcommand=, @@ -155,7 +132,6 @@ %D top of the baseline by default. \installcorenamespace {mathstackerslocation} -\installcorenamespace {mathstackersalternative} \letvalue{\??mathstackerslocation\v!top }\plusone % on top of baseline \letvalue{\??mathstackerslocation\v!high }\plustwo % 25 % down @@ -196,23 +172,6 @@ \math_stackers_fallback \fi} -% no checking, we assume sane use - -\letvalue{\??mathstackersalternative\v!normal }\math_stackers_content -\letvalue{\??mathstackersalternative\v!default}\math_stackers_content - -\setvalue{\??mathstackersalternative\v!mp}% - {\hbox\bgroup % todo: add code key + tag - \edef\overlaywidth {\the\scratchwidth}% - \edef\overlayheight {\the\dimexpr\mathstackersparameter\c!mpheight}% - \edef\overlaydepth {\the\dimexpr\mathstackersparameter\c!mpdepth}% - \edef\overlayoffset {\the\dimexpr\mathstackersparameter\c!mpoffset}% - \edef\overlaylinewidth{\the\linewidth}% - \edef\overlaylinecolor{\mathstackersparameter\c!color}% - \edef\p_mp{\mathstackersparameter\c!mp}% - \uniqueMPgraphic{\p_mp}% - \egroup} - \def\math_stackers_check_unicode#codepoint% {\scratchunicode#codepoint\relax \scratchhoffset\mathstackersparameter\c!hoffset\relax @@ -264,12 +223,11 @@ {\begingroup \edef\currentmathstackers{#category}% \mathstackersparameter\c!left\relax - \ifmmode\math_class_by_parameter\mathstackersparameter\else\dontleavehmode\fi - {\edef\p_offset {\mathstackersparameter\c!offset}% - \edef\p_location {\mathstackersparameter\c!location}% - \edef\p_order {\mathstackersparameter\c!order}% - \edef\p_strut {\mathstackersparameter\c!strut}% - \edef\p_alternative{\mathstackersparameter\c!alternative}% + \ifmmode\mathrel\else\dontleavehmode\fi + {\edef\p_offset {\mathstackersparameter\c!offset}% + \edef\p_location{\mathstackersparameter\c!location}% + \edef\p_order {\mathstackersparameter\c!order}% + \edef\p_strut {\mathstackersparameter\c!strut}% \ifx\p_order\v!reverse \edef\m_math_stackers_text_top {#bottomtext}% \edef\m_math_stackers_text_bottom{#toptext}% @@ -327,17 +285,17 @@ \advance\scratchwidth2\scratchhoffset % \ifcase#method\relax - \setbox\scratchboxthree\csname\??mathstackersalternative\p_alternative\endcsname + \setbox\scratchboxthree\math_stackers_content \fi % \ifdim\wd\scratchboxone<\scratchwidth - \setbox\scratchboxone\hbox to \scratchwidth{\hss\unhbox\scratchboxone\hss}% unhboxing makes leaders work + \setbox\scratchboxone\hbox to \scratchwidth{\hss\box\scratchboxone\hss}% \fi \ifdim\wd\scratchboxtwo<\scratchwidth - \setbox\scratchboxtwo\hbox to \scratchwidth{\hss\unhbox\scratchboxtwo\hss}% + \setbox\scratchboxtwo\hbox to \scratchwidth{\hss\box\scratchboxtwo\hss}% \fi \ifdim\wd\scratchboxthree<\scratchwidth - \setbox\scratchboxthree\hbox to \scratchwidth{\hss\unhbox\scratchboxthree\hss}% + \setbox\scratchboxthree\hbox to \scratchwidth{\hss\box\scratchboxthree\hss}% \fi % \ifcsname\??mathstackerslocation\p_location\endcsname @@ -437,30 +395,17 @@ %D The next one deals with under and over extensibles (arrows mostly): -\installcorenamespace {mathclasses} - -\letvalue{\??mathclasses }\mathord -\letvalue{\??mathclasses rel}\mathrel -\letvalue{\??mathclasses ord}\mathord - -\def\math_class_by_parameter#1% - {\normalexpanded{\noexpand\math_class_by_parameter_indeed{#1\c!mathclass}}} - -\def\math_class_by_parameter_indeed#1% - {\csname\??mathclasses\ifcsname\??mathclasses#1\endcsname#1\fi\endcsname} - -\unexpanded\def\math_stackers_make_double#top#bottom#category#codepoint#codeextra#text% +\unexpanded\def\math_stackers_double#where#category#codepoint#text% {\begingroup \edef\currentmathstackers{#category}% \mathstackersparameter\c!left\relax - \ifmmode\math_class_by_parameter\mathstackersparameter\else\dontleavehmode\fi + \ifmmode\mathrel\else\dontleavehmode\fi {\edef\currentmathstackers{#category}% \edef\m_math_stackers_text_middle {#text}% % - \edef\p_offset {\mathstackersparameter\c!offset}% - \edef\p_location {\mathstackersparameter\c!location}% - \edef\p_strut {\mathstackersparameter\c!strut}% - \edef\p_alternative{\mathstackersparameter\c!alternative}% + \edef\p_offset {\mathstackersparameter\c!offset}% + \edef\p_location{\mathstackersparameter\c!location}% + \edef\p_strut {\mathstackersparameter\c!strut}% % \scratchleftoffset \zeropoint \scratchrightoffset\zeropoint @@ -480,7 +425,7 @@ \fi \advance\scratchwidth2\scratchhoffset % - \setbox\scratchboxtwo \csname\??mathstackersalternative\p_alternative\endcsname + \setbox\scratchboxtwo \math_stackers_content \setbox\scratchboxthree\hbox to \scratchwidth{\hss\box\scratchboxthree\hss}% % \math_stackers_normalize_three @@ -491,74 +436,49 @@ % \ifdim\htdp\scratchboxtwo>\zeropoint \kern-\scratchwidth - \ifcase#top\else + \ifcase#where\relax \math_stackers_top\bgroup - % \raise\dimexpr\scratchheight+\scratchtopoffset\relax - \raise\dimexpr\scratchheight+\mathstackersparameter\c!voffset\relax + \raise\dimexpr\scratchheight+\scratchtopoffset\relax \box\scratchboxtwo \egroup - \fi - \scratchunicode#codeextra\relax - \ifcase\scratchunicode\else - \kern-\scratchwidth - \setbox\scratchboxtwo\csname\??mathstackersalternative\p_alternative\endcsname - \fi - \ifcase#bottom\else + \else \math_stackers_bottom\bgroup - % \lower\dimexpr\scratchdepth+\ht\scratchboxtwo+\scratchbottomoffset\relax - \lower\dimexpr\scratchdepth+\ht\scratchboxtwo+\mathstackersparameter\c!voffset\relax + \lower\dimexpr\scratchdepth+\ht\scratchboxtwo+\scratchbottomoffset\relax \box\scratchboxtwo \egroup \fi \fi}% \mathstackersparameter\c!right\relax - \edef\p_limits{\mathstackersparameter\c!mathlimits}% - \ifx\p_limits\v!yes - \expandafter\endgroup\expandafter\limits - \else - \expandafter\endgroup - \fi} - -\unexpanded\def\definemathoverextensible {\dotripleempty \math_extensibles_define_over } -\unexpanded\def\definemathunderextensible {\dotripleempty \math_extensibles_define_under} -\unexpanded\def\definemathdoubleextensible{\doquadrupleempty\math_extensibles_define_double} - -\def\math_extensibles_define_over[#1][#2][#3]% - {\ifthirdargument - \setuevalue{#2}{\math_stackers_make_double\plusone \zerocount{#1}{\number#3}{0}}% - \else - \setuevalue{#1}{\math_stackers_make_double\plusone \zerocount\noexpand\currentmathstackers{\number#2}{0}}% - \fi} + \endgroup} -\def\math_extensibles_define_under[#1][#2][#3]% +\unexpanded\def\definemathoverextensible {\dotripleempty\math_extensiblies_define_over } +\unexpanded\def\definemathunderextensible{\dotripleempty\math_extensiblies_define_under} + +\def\math_extensiblies_define_over[#1][#2][#3]% {\ifthirdargument - \setuevalue{#2}{\math_stackers_make_double\zerocount\plusone{#1}{\number#3}{0}}% + \setuevalue{#2}{\math_stackers_double\zerocount{#1}{\number#3}}% \else - \setuevalue{#1}{\math_stackers_make_double\zerocount\plusone\noexpand\currentmathstackers{\number#2}{0}}% + \setuevalue{#1}{\math_stackers_double\zerocount\noexpand\currentmathstackers{\number#2}}% \fi} -\def\math_extensibles_define_double[#1][#2][#3][#4]% - {\iffourthargument - \setuevalue{#2}{\math_stackers_make_double\plusone \plusone{#1}{\number#3}{\number#4}}% +\def\math_extensiblies_define_under[#1][#2][#3]% + {\ifthirdargument + \setuevalue{#2}{\math_stackers_double\plusone{#1}{\number#3}}% \else - \setuevalue{#1}{\math_stackers_make_double\plusone \plusone\noexpand\currentmathstackers{\number#2}{\number#3}}% + \setuevalue{#1}{\math_stackers_double\plusone\noexpand\currentmathstackers{\number#2}}% \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\mathover {\begingroup\dosingleempty\math_stackers_handle_over } +\unexpanded\def\mathunder{\begingroup\dosingleempty\math_stackers_handle_under} \def\math_stackers_handle_over[#category]% - {\math_stackers_direct_double\plusone\zerocount{\iffirstargument#category\else\v!top \fi}} % will be defined later on + {\math_stackers_handle_double\zerocount{\iffirstargument#category\else\v!top \fi}} % will be defined later on \def\math_stackers_handle_under[#category]#codepoint#bottomtext% - {\math_stackers_direct_double\zerocount\plusone{\iffirstargument#category\else\v!bottom\fi}} % will be defined later on - -\def\math_stackers_handle_double[#category]#codepoint#bottomtext% - {\math_stackers_direct_double\plusone\plusone {\iffirstargument#category\else\v!bottom\fi}} % will be defined later on + {\math_stackers_handle_double\plusone {\iffirstargument#category\else\v!bottom\fi}} % will be defined later on -\def\math_stackers_direct_double#top#bottom#category#codepoint#text% - {\math_stackers_make_double#top#bottom{#category}{#codepoint}{#text}% +\def\math_stackers_handle_double#location#category#codepoint#text% + {\math_stackers_double#location{#category}{#codepoint}{#text}% \endgroup} %D Here is a bonus macro that takes three texts. It can be used to get consistent @@ -638,79 +558,23 @@ [\c!order=\v!reverse] \definemathstackers - [\v!both] + [\v!top] [\v!mathematics] - [\c!location=\v!top, % ? + [\c!location=\v!top, \c!strut=\v!no, \c!middlecommand=\mathematics, \c!hoffset=\zeropoint] \definemathstackers - [\v!top] - [\v!both] - -\definemathstackers [\v!bottom] - [\v!both] - -\definemathstackers - [vfenced] - [\v!both] - [\c!mathclass=\s!ord, - \c!mathlimits=\v!yes] + [\v!mathematics] + [\c!location=\v!top, + \c!strut=\v!no, + \c!middlecommand=\mathematics, + \c!hoffset=\zeropoint] % These are compatibity definitions, math only. -% todo: top= bottom= middle= is nicer (compare math-fen) - -%D We save a few definitions that we automatically got from the \type {char-def.lua} -%D database. - -% Be careful in choosing what accents you take (the code below uses a -% combining one): -% -% \startbuffer -% % $\Umathaccent top 0 0 "20D7 {example}$ -% % $\Umathaccent top fixed 0 0 "20D7 {example}$ -% $\Umathaccent 0 0 "20D7 {example}$ -% $\Umathaccent fixed 0 0 "20D7 {example}$ -% $\Umathaccent bottom 0 0 "20D7 {example}$ -% $\Umathaccent bottom fixed 0 0 "20D7 {example}$ -% $\Umathaccent both 0 0 "20D7 -% 0 0 "20D7 {example}$ -% $\Umathaccent both fixed 0 0 "20D7 -% fixed 0 0 "20D7 {example}$ -% $\Umathaccent both 0 0 "20D7 -% fixed 0 0 "20D7 {example}$ -% $\Umathaccent both fixed 0 0 "20D7 -% 0 0 "20D7 {example}$ -% \stopbuffer -% -% \setupbodyfont[modern] \getbuffer -% \setupbodyfont[xits] \getbuffer -% \setupbodyfont[cambria] \getbuffer - -\unexpanded\def\normaldoublebrace {\Umathaccents 0 \defaultmathfamily "23DE 0 \defaultmathfamily "23DF } -\unexpanded\def\normaldoubleparent{\Umathaccents 0 \defaultmathfamily "23DC 0 \defaultmathfamily "23DD } - -% let's keep this - -\let\normaloverbrace \overbrace -\let\normalunderbrace \underbrace -\let\normaloverparent \overparent -\let\normalunderparent \underparent -\let\normaloverbracket \overbracket -\let\normalunderbracket \underbracket -\let\normalunderleftarrow \underleftarrow -\let\normaloverleftarrow \overleftarrow -\let\normalunderrightarrow\underrightarrow -\let\normaloverrightarrow \overrightarrow - -\let\lceil \lceiling -\let\rceil \rceiling - -%D Here come the new ones: - \definemathstackers [\v!none] [\v!mathematics] [\c!hoffset=\zeropoint] \definemathstackers [\v!normal] [\v!mathematics] [\c!hoffset=0.5\emwidth] % the default \definemathstackers [\v!small] [\v!mathematics] [\c!hoffset=1\emwidth] @@ -719,12 +583,8 @@ \definemathextensible [\v!reverse] [xrel] ["002D] \definemathextensible [\v!reverse] [xequal] ["003D] -\definemathextensible [\v!reverse] [xleftarrow] ["2190] % ["27F5] -\definemathextensible [\v!reverse] [xrightarrow] ["2192] % ["27F6] -\definemathextensible [\v!reverse] [xleftrightarrow] ["27F7] -\definemathextensible [\v!reverse] [xLeftarrow] ["27F8] -\definemathextensible [\v!reverse] [xRightarrow] ["27F9] -\definemathextensible [\v!reverse] [xLeftrightarrow] ["27FA] +\definemathextensible [\v!reverse] [xleftarrow] ["2190] +\definemathextensible [\v!reverse] [xrightarrow] ["2192] \definemathextensible [\v!reverse] [xtwoheadleftarrow] ["219E] \definemathextensible [\v!reverse] [xtwoheadrightarrow] ["21A0] \definemathextensible [\v!reverse] [xmapsto] ["21A6] @@ -738,15 +598,15 @@ \definemathextensible [\v!reverse] [xleftrightharpoons] ["21CB] \definemathextensible [\v!reverse] [xrightleftharpoons] ["21CC] \definemathextensible [\v!reverse] [xtriplerel] ["2261] +\definemathextensible [\v!reverse] [xleftrightarrow] ["27F7] +\definemathextensible [\v!reverse] [xLeftarrow] ["27F8] +\definemathextensible [\v!reverse] [xRightarrow] ["27F9] +\definemathextensible [\v!reverse] [xLeftrightarrow] ["27FA] \definemathextensible [\v!mathematics] [mrel] ["002D] \definemathextensible [\v!mathematics] [mequal] ["003D] -\definemathextensible [\v!mathematics] [mleftarrow] ["2190] % ["27F5] -\definemathextensible [\v!mathematics] [mrightarrow] ["2192] % ["27F6] -\definemathextensible [\v!mathematics] [mleftrightarrow] ["27F7] -\definemathextensible [\v!mathematics] [mLeftarrow] ["27F8] -\definemathextensible [\v!mathematics] [mRightarrow] ["27F9] -\definemathextensible [\v!mathematics] [mLeftrightarrow] ["27FA] +\definemathextensible [\v!mathematics] [mleftarrow] ["2190] +\definemathextensible [\v!mathematics] [mrightarrow] ["2192] \definemathextensible [\v!mathematics] [mtwoheadleftarrow] ["219E] \definemathextensible [\v!mathematics] [mtwoheadrightarrow] ["21A0] \definemathextensible [\v!mathematics] [mmapsto] ["21A6] @@ -760,18 +620,18 @@ \definemathextensible [\v!mathematics] [mleftrightharpoons] ["21CB] \definemathextensible [\v!mathematics] [mrightleftharpoons] ["21CC] \definemathextensible [\v!mathematics] [mtriplerel] ["2261] +\definemathextensible [\v!mathematics] [mleftrightarrow] ["27F7] +\definemathextensible [\v!mathematics] [mLeftarrow] ["27F8] +\definemathextensible [\v!mathematics] [mRightarrow] ["27F9] +\definemathextensible [\v!mathematics] [mLeftrightarrow] ["27FA] \definemathextensible [\v!text] [trel] ["002D] \definemathextensible [\v!text] [tequal] ["003D] -\definemathextensible [\v!text] [tmapsto] ["21A6] -\definemathextensible [\v!text] [tleftarrow] ["2190] % ["27F5] -\definemathextensible [\v!text] [trightarrow] ["2192] % ["27F6] -\definemathextensible [\v!text] [tleftrightarrow] ["27F7] -\definemathextensible [\v!text] [tLeftarrow] ["27F8] -\definemathextensible [\v!text] [tRightarrow] ["27F9] -\definemathextensible [\v!text] [tLeftrightarrow] ["27FA] +\definemathextensible [\v!text] [tleftarrow] ["2190] +\definemathextensible [\v!text] [trightarrow] ["2192] \definemathextensible [\v!text] [ttwoheadleftarrow] ["219E] \definemathextensible [\v!text] [ttwoheadrightarrow] ["21A0] +\definemathextensible [\v!text] [tmapsto] ["21A6] \definemathextensible [\v!text] [thookleftarrow] ["21A9] \definemathextensible [\v!text] [thookrightarrow] ["21AA] \definemathextensible [\v!text] [tleftharpoondown] ["21BD] @@ -782,59 +642,30 @@ \definemathextensible [\v!text] [tleftrightharpoons] ["21CB] \definemathextensible [\v!text] [trightleftharpoons] ["21CC] \definemathextensible [\v!text] [ttriplerel] ["2261] +\definemathextensible [\v!text] [tleftrightarrow] ["27F7] +\definemathextensible [\v!text] [tLeftarrow] ["27F8] +\definemathextensible [\v!text] [tRightarrow] ["27F9] +\definemathextensible [\v!text] [tLeftrightarrow] ["27FA] -\definemathoverextensible [\v!top] [overleftarrow] ["2190] % ["27F5] -\definemathoverextensible [\v!top] [overrightarrow] ["2192] % ["27F6] -\definemathoverextensible [\v!top] [overleftrightarrow] ["27F7] -\definemathoverextensible [\v!top] [overtwoheadleftarrow] ["27F8] -\definemathoverextensible [\v!top] [overtwoheadrightarrow] ["27F9] +\definemathoverextensible [\v!top] [overleftarrow] ["2190] +\definemathoverextensible [\v!top] [overrightarrow] ["2192] \definemathoverextensible [\v!top] [overleftharpoondown] ["21BD] \definemathoverextensible [\v!top] [overleftharpoonup] ["21BC] \definemathoverextensible [\v!top] [overrightharpoondown] ["21C1] \definemathoverextensible [\v!top] [overrightharpoonup] ["21C0] +\definemathoverextensible [\v!top] [overleftrightarrow] ["27F7] +\definemathoverextensible [\v!top] [overtwoheadleftarrow] ["27F8] +\definemathoverextensible [\v!top] [overtwoheadrightarrow] ["27F9] -\definemathunderextensible [\v!bottom] [underleftarrow] ["2190] % ["27F5] -\definemathunderextensible [\v!bottom] [underrightarrow] ["2192] % ["27F6] -\definemathunderextensible [\v!bottom] [underleftrightarrow] ["27F7] -\definemathunderextensible [\v!bottom] [undertwoheadleftarrow] ["27F8] -\definemathunderextensible [\v!bottom] [undertwoheadrightarrow] ["27F9] +\definemathunderextensible [\v!bottom] [underleftarrow] ["2190] +\definemathunderextensible [\v!bottom] [underrightarrow] ["2192] \definemathunderextensible [\v!bottom] [underleftharpoondown] ["21BD] \definemathunderextensible [\v!bottom] [underleftharpoonup] ["21BC] \definemathunderextensible [\v!bottom] [underrightharpoondown] ["21C1] \definemathunderextensible [\v!bottom] [underrightharpoonup] ["21C0] - -% We don't use overline and underline. This is one of the overlooked aspects of -% unicode cq. opentype math: why treat rules different than e.g. arrows and -% accents. It is a bit unfortunate that the opportunity to move math to new -% technologies happened outside the tex domain (and/or some aspects were kept -% while in fact they were side effects of limitations of traditional fonts). -% From the unicode aware tex engines' implementation point of view things -% could have been done a bit nicer but then: the community didn't seem to care -% too much and just has to follow now. -% -% Anyhow, we use a character based approach so that at least we get unicode -% stuff in the backend (okay, we still need to deal with some cut and paste -% issues but at least we now know what we deal with. - -% alternatively we can move the original to FE* - -\definemathoverextensible [vfenced] [overbar] ["FE33E] % ["203E] -\definemathunderextensible [vfenced] [underbar] ["FE33F] % ["203E] -\definemathdoubleextensible [vfenced] [doublebar] ["FE33E] ["FE33F] - -\definemathoverextensible [vfenced] [overbrace] ["FE3DE] % ["023DE] -\definemathunderextensible [vfenced] [underbrace] ["FE3DF] % ["023DF] -\definemathdoubleextensible [vfenced] [doublebrace] ["FE3DE] ["FE3DF] - -\definemathoverextensible [vfenced] [overparent] ["FE3DC] % ["023DC] -\definemathunderextensible [vfenced] [underparent] ["FE3DD] % ["023DD] -\definemathdoubleextensible [vfenced] [doubleparent] ["FE3DC] ["FE3DD] - -\definemathoverextensible [vfenced] [overbracket] ["FE3B4] % ["023B4] -\definemathunderextensible [vfenced] [underbracket] ["FE3B5] % ["023B5] -\definemathdoubleextensible [vfenced] [doublebracket] ["FE3B4] ["FE3B5] - -% \unexpanded\def\mathopwithlimits#1#2{\mathop{#1{#2}}\limits} +\definemathunderextensible [\v!bottom] [underleftrightarrow] ["27F7] +\definemathunderextensible [\v!bottom] [undertwoheadleftarrow] ["27F8] +\definemathunderextensible [\v!bottom] [undertwoheadrightarrow] ["27F9] %D Some bonus ones (for the moment here): @@ -865,7 +696,7 @@ #3% \endgroup}} -% These will be defined in char-def as well once we have \leaders<number> +% These will be defined in char-def as well: \unexpanded\def\rightarrowfill {\math_stackers_hacked_fill \relbar \relbar \rightarrow} \unexpanded\def\leftarrowfill {\math_stackers_hacked_fill \leftarrow \relbar \relbar } @@ -903,7 +734,6 @@ {\expandafter\let\csname\??mathextensiblefallbacks\number#2\expandafter\endcsname\csname#1\endcsname \expandafter\let\csname #1\expandafter\endcsname\csname#1\endcsname} -\defineextensiblefiller [barfill] ["203E] \defineextensiblefiller [relfill] ["002D] \defineextensiblefiller [equalfill] ["003D] \defineextensiblefiller [leftarrowfill] ["2190] @@ -925,7 +755,6 @@ \defineextensiblefiller [Leftarrowfill] ["27F8] \defineextensiblefiller [Rightarrowfill] ["27F9] \defineextensiblefiller [Leftrightarrowfill] ["27FA] -\defineextensiblefiller [Leftrightarrowfill] ["27FA] %D Extra: @@ -937,40 +766,6 @@ % \mathchardef\doublebond"003D % \mathchardef\triplebond"2261 -%D Also handy: - -\unexpanded\def\definemathunstacked - {\dotripleempty\math_stackers_define_unstacked_normal} - -\def\math_stackers_define_unstacked_normal[#1][#2][#3]% category name unicode - {\ifthirdargument - \setuevalue{#2}{\math_stackers_unstacked_normal{#1}{\number#3}}% - \else - \setuevalue{#1}{\math_stackers_unstacked_normal\noexpand\currentmathstackers{\number#2}}% - \fi} - -\unexpanded\def\math_stackers_unstacked_normal#category#codepoint% - {\begingroup - \edef\currentmathstackers{#category}% - \edef\p_moffset{\mathstackersparameter\c!moffset}% - \ifx\p_moffset\empty \else - \mskip\scratchmuskip - \fi - \ifmmode\math_class_by_parameter\mathstackersparameter\else\dontleavehmode\fi - {\usemathstackerscolorparameter\c!color - \Umathchar\zerocount\defaultmathfamily#codepoint}% - \ifx\p_moffset\empty \else - \mskip\scratchmuskip - \fi - \endgroup} - -\definemathstackers [\v!wide] [\c!moffset=\thickmuskip,\c!mathclass=\s!rel] - -\definemathunstacked [\v!wide] [And] ["0026] % \mathrel{\;&\;} -\definemathunstacked [\v!wide] [impliedby] ["27F8] % \mathrel{\;\Longleftarrow\;} -\definemathunstacked [\v!wide] [implies] ["27F9] % \mathrel{\;\Longrightarrow\;} -\definemathunstacked [\v!wide] [iff] ["27FA] % \mathrel{\;\Longleftrightarrow\;} - \protect \endinput % \mathrel{\mathop{\hbox to \dimen0{\hss\copy4\hss}} |