diff options
Diffstat (limited to 'tex/context/base/mkiv/math-fen.mkxl')
-rw-r--r-- | tex/context/base/mkiv/math-fen.mkxl | 829 |
1 files changed, 0 insertions, 829 deletions
diff --git a/tex/context/base/mkiv/math-fen.mkxl b/tex/context/base/mkiv/math-fen.mkxl deleted file mode 100644 index 4d19fb210..000000000 --- a/tex/context/base/mkiv/math-fen.mkxl +++ /dev/null @@ -1,829 +0,0 @@ -%D \module -%D [ file=math-fen, -%D version=2012.02.18, -%D title=\CONTEXT\ Math Macros, -%D subtitle=Fences, -%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 / Fences} - -\unprotect - -% maybe always "method=auto" for: -% -% \switchtobodyfont[cambria] -% \ruledhbox{$f(x)$} -% \ruledhbox{\mathdelimitersmode6$f\left(x\right)$} -% \ruledhbox{\mathdelimitersmode7$f\left(x\right)$} -% \ruledhbox{$f\left(\frac{1}{x}\right)$} - -% todo: mathstyle - -% \definemathfence [fancybracket] [bracket] [command=yes,color=blue] -% -% test $|x|$ test \par -% test $||x||$ test (okay) \par -% test $a\left|\frac{1}{b}\right|c$ test \par -% test $a\left||\frac{1}{b}\right||c$ test (not okay) \par -% -% \setupmathfences [color=red] -% -% test $a\fenced[bar]{\frac{1}{b}}c$ test \par -% test $a\fenced[doublebar]{\frac{1}{b}}c$ test \par -% test $a\fenced[bracket]{\frac{1}{b}}c$ test \par -% test $a\fancybracket{\frac{1}{b}}c$ test \par - -\installcorenamespace{mathfences} - -\installcommandhandler \??mathfences {mathfence} \??mathfences - -\aliased\let\setupmathfences\setupmathfence - -\setupmathfences - [\c!method=, % maybe always \v!auto - \c!left=, - \c!right=, - \c!middle=, - \c!mathstyle=, - \c!color=, - \c!command=, - \c!mathclass=, - \c!factor=\v!auto] - -\appendtoks - \edef\p_command{\mathfenceparameter\c!command}% - \ifx\p_command\v!yes - \setuevalue\currentmathfence{\math_fenced_fenced[\currentmathfence]}% - \fi -\to \everydefinemathfence - -% we need the direct use of \Udelimiter because of { etc - -%D So we can do: -%D -%D \starttyping -%D $ a + \fenced[bar][size=1] {\frac {b} {c}} + d $ -%D $ a + \fenced[bar][size=2] {\frac {b} {c}} + d $ -%D $ a + \fenced[bar][size=3] {\frac {b} {c}} + d $ -%D $ a + \fenced[bar][size=4] {\frac {b} {c}} + d $ -%D $ a + \fenced[bar][size=big] {\frac {b} {c}} + d $ -%D $ a + \fenced[bar][size=Big] {\frac {b} {c}} + d $ -%D $ a + \fenced[bar][size=bigg]{\frac {b} {c}} + d $ -%D $ a + \fenced[bar][size=Bigg]{\frac {b} {c}} + d $ -%D $ a + \fenced[bar][factor=1] {\frac {b} {c}} + d $ -%D $ a + \fenced[bar][factor=2] {\frac {b} {c}} + d $ -%D $ a + \fenced[bar][factor=4] {\frac {b} {c}} + d $ -%D $ a + \fenced[bar] {\frac {b} {c}} + d $ -%D \stoptyping - -\newconditional\c_math_fenced_mirror \settrue \c_math_fenced_mirror -\newconditional\c_math_fenced_sized \setfalse\c_math_fenced_sized - -\installcorenamespace {mathfencesize} - -\setvalue{\??mathfencesize big}{1} -\setvalue{\??mathfencesize Big}{2} -\setvalue{\??mathfencesize bigg}{3} -\setvalue{\??mathfencesize Bigg}{4} - -\def\math_fenced_force_size#1#2% - {\c_attr_mathsize\numexpr - #1*\plushundred - +\ifcsname\??mathfencesize#2\endcsname\lastnamedcs\else#2\fi - \relax} - -\protected\def\math_fenced_inject#1#2#3#4% - {\ifx#1\empty - #2.% - \else - \edef\p_mathclass{\mathfenceparameter\c!mathclass}% - \ifconditional\c_math_fenced_sized - \let\p_factor\v!fixed - \else - \edef\p_factor{\mathfenceparameter\c!factor}% - \fi - \ifempty\p_factor - \ifempty\p_mathclass - #2% - \else - #3% - \s!class\p_mathclass - \fi - \orelse\ifx\p_factor\v!auto - \ifempty\p_mathclass - #2% - \else - #3% - \s!class\p_mathclass - \fi - \orelse\ifx\p_factor\v!none - #3% - \s!height\zeropoint - \s!depth\zeropoint - \ifempty\p_mathclass\else - \s!class\p_mathclass - \fi - \s!axis - % #2% - \else - \scratchdimen\ifx\p_factor\v!fixed\scaledpoint\else\dimexpr\p_factor\bodyfontsize/2\relax\fi - #3% - \s!height\scratchdimen - \s!depth\scratchdimen - \ifempty\p_mathclass\else - \s!class\p_mathclass - \fi - \s!axis - \fi - \Udelimiter#4\fam#1\relax - \fi} - -\permanent\def\math_fenced_left - {\edef\p_left - {\ifconditional\c_math_fenced_mirror - \ifconditional\c_math_right_to_left - \mathfenceparameter\c!right - \else - \mathfenceparameter\c!left - \fi - \else - \mathfenceparameter\c!left - \fi}% - \math_fenced_color_push - \math_fenced_inject\p_left\normalleft\Uleft\plusfour - \math_fenced_color_pop} - -\permanent\def\math_fenced_middle - {\edef\p_middle{\mathfenceparameter\c!middle}% - \mskip\thinmuskip - \math_fenced_color_push - \math_fenced_inject\p_middle\normalmiddle\Umiddle\plusfour - \math_fenced_color_pop - \mskip\thinmuskip} - -\permanent\def\math_fenced_right - {\edef\p_right - {\ifconditional\c_math_fenced_mirror - \ifconditional\c_math_right_to_left - \mathfenceparameter\c!left - \else - \mathfenceparameter\c!right - \fi - \else - \mathfenceparameter\c!right - \fi}% - \math_fenced_color_push - \math_fenced_inject\p_right\normalright\Uright\plusfive - \math_fenced_color_pop} - -\def\math_fenced_color_do_push{\pushcolor[\p_math_fenced_color]} -\let\math_fenced_color_do_pop \popcolor - -\let\math_fenced_color_push\donothing -\let\math_fenced_color_pop \donothing - -\aliased\let\fence \relax -\aliased\let\fenced\relax - -\newcount\c_math_fenced_nesting - -\protected\def\math_fenced_fenced_common - {\startusemathstyleparameter\mathfenceparameter - \enforced\let\fence\math_fenced_middle - \edef\p_math_fenced_color{\mathfenceparameter\c!color}% - \ifempty\p_math_fenced_color - \let\math_fenced_color_push\donothing - \let\math_fenced_color_pop \donothing - \else - \let\math_fenced_color_push\math_fenced_color_do_push - \let\math_fenced_color_pop \math_fenced_color_do_pop - \fi} - -\protected\def\math_fenced_fenced_start#1% - {\advance\c_math_fenced_nesting\plusone - \begingroup - \edef\currentmathfence{#1}% - \math_fenced_fenced_common - \math_fenced_left} - -\protected\def\math_fenced_fenced_stop#1% - {\edef\currentmathfence{#1}% - \math_fenced_right - \stopusemathstyleparameter - \endgroup - \advance\c_math_fenced_nesting\minusone} - -\tolerant\protected\def\math_fenced_fenced[#1]#*[#2]% - {\advance\c_math_fenced_nesting\plusone - \begingroup - \edef\currentmathfence{#1}% - \ifparameter#2\or\setupcurrentmathfence[#2]\fi - \math_fenced_fenced_common - \edef\p_size{\mathfenceparameter\c!size}% - \ifempty\p_size - \expandafter\math_fenced_fenced_indeed_adapt - \else - \expandafter\math_fenced_fenced_indeed_fixed - \fi} - -\protected\def\math_fenced_fenced_indeed_finish - {\stopusemathstyleparameter - \endgroup - \advance\c_math_fenced_nesting\minusone} - -\protected\def\math_fenced_fenced_indeed_fixed#1% - {\math_fenced_force_size\bigmathdelimitervariant\p_size - \settrue\c_math_fenced_sized - \math_fenced_left - \setfalse\c_math_fenced_sized - #1% - \settrue\c_math_fenced_sized - \math_fenced_right - \setfalse\c_math_fenced_sized - \math_fenced_fenced_indeed_finish} - -\protected\def\math_fenced_fenced_indeed_adapt#1% - {\setfalse\c_math_fenced_sized - \math_fenced_left - #1% - \setfalse\c_math_fenced_sized - \math_fenced_right - \math_fenced_fenced_indeed_finish} - -\appendtoks - \enforced\let\fenced\math_fenced_fenced -\to \everymathematics - -% 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 [triplebar] [\c!left="2980,\c!right="2980] -\definemathfence [angle] [\c!left="27E8,\c!right="27E9] -\definemathfence [doubleangle] [\c!left="27EA,\c!right="27EB] -\definemathfence [solidus] [\c!left="2044,\c!right="2044] -\definemathfence [ceiling] [\c!left="2308,\c!right="2309] -\definemathfence [floor] [\c!left="230A,\c!right="230B] -\definemathfence [moustache] [\c!left="23B0,\c!right="23B1] -\definemathfence [uppercorner] [\c!left="231C,\c!right="231D] -\definemathfence [lowercorner] [\c!left="231E,\c!right="231F] -\definemathfence [group] [\c!left="27EE,\c!right="27EF] -\definemathfence [openbracket] [\c!left="27E6,\c!right="27E7] - -\definemathfence [nothing] - -\definemathfence [mirrored] % \v!mirrored - -\definemathfence [mirroredparenthesis] [mirrored] [\c!right="0028,\c!left="0029] -\definemathfence [mirroredbracket] [mirrored] [\c!right="005B,\c!left="005D] -\definemathfence [mirroredbrace] [mirrored] [\c!right="007B,\c!left="007D] -\definemathfence [mirroredbar] [mirrored] [\c!right="007C,\c!left="007C] -\definemathfence [mirroreddoublebar] [mirrored] [\c!right="2016,\c!left="2016] -\definemathfence [mirroredtriplebar] [mirrored] [\c!right="2980,\c!left="2980] -\definemathfence [mirroredangle] [mirrored] [\c!right="27E8,\c!left="27E9] -\definemathfence [mirroreddoubleangle] [mirrored] [\c!right="27EA,\c!left="27EB] -\definemathfence [mirroredsolidus] [mirrored] [\c!right="2044,\c!left="2044] -\definemathfence [mirroredceiling] [mirrored] [\c!right="2308,\c!left="2309] -\definemathfence [mirroredfloor] [mirrored] [\c!right="230A,\c!left="230B] -\definemathfence [mirroredmoustache] [mirrored] [\c!right="23B0,\c!left="23B1] -\definemathfence [mirroreduppercorner] [mirrored] [\c!right="231C,\c!left="231D] -\definemathfence [mirroredlowercorner] [mirrored] [\c!right="231E,\c!left="231F] -\definemathfence [mirroredgroup] [mirrored] [\c!right="27EE,\c!left="27EF] -\definemathfence [mirroredopenbracket] [mirrored] [\c!right="27E6,\c!left="27E7] - -\definemathfence [mirrorednothing] [mirrored] - -%D A bonus: - -\pushoverloadmode - -\immutable\protected\def\Lparenthesis {\math_fenced_fenced_start{parenthesis}} \immutable\protected\def\Rparenthesis {\math_fenced_fenced_stop {parenthesis}} -\immutable\protected\def\Lbracket {\math_fenced_fenced_start{bracket}} \immutable\protected\def\Rbracket {\math_fenced_fenced_stop {bracket}} -\immutable\protected\def\Lbrace {\math_fenced_fenced_start{brace}} \immutable\protected\def\Rbrace {\math_fenced_fenced_stop {brace}} -\immutable\protected\def\Langle {\math_fenced_fenced_start{angle}} \immutable\protected\def\Rangle {\math_fenced_fenced_stop {angle}} -\immutable\protected\def\Ldoubleangle {\math_fenced_fenced_start{doubleangle}} \immutable\protected\def\Rdoubleangle {\math_fenced_fenced_stop {doubleangle}} -\immutable\protected\def\Lbar {\math_fenced_fenced_start{bar}} \immutable\protected\def\Rbar {\math_fenced_fenced_stop {bar}} -\immutable\protected\def\Ldoublebar {\math_fenced_fenced_start{doublebar}} \immutable\protected\def\Rdoublebar {\math_fenced_fenced_stop {doublebar}} -\immutable\protected\def\Ltriplebar {\math_fenced_fenced_start{triplebar}} \immutable\protected\def\Rtriplebar {\math_fenced_fenced_stop {triplebar}} -\immutable\protected\def\Lsolidus {\math_fenced_fenced_start{solidus}} \immutable\protected\def\Rsolidus {\math_fenced_fenced_stop {solidus}} -\immutable\protected\def\Lfloor {\math_fenced_fenced_start{floor}} \immutable\protected\def\Rfloor {\math_fenced_fenced_stop {floor}} -\immutable\protected\def\Lceiling {\math_fenced_fenced_start{ceiling}} \immutable\protected\def\Rceiling {\math_fenced_fenced_stop {ceiling}} -\immutable\protected\def\Lmoustache {\math_fenced_fenced_start{moustache}} \immutable\protected\def\Rmoustache {\math_fenced_fenced_stop {moustache}} -\immutable\protected\def\Luppercorner {\math_fenced_fenced_start{uppercorner}} \immutable\protected\def\Ruppercorner {\math_fenced_fenced_stop {uppercorner}} -\immutable\protected\def\Llowercorner {\math_fenced_fenced_start{lowercorner}} \immutable\protected\def\Rlowercorner {\math_fenced_fenced_stop {lowercorner}} -\immutable\protected\def\Lgroup {\math_fenced_fenced_start{group}} \immutable\protected\def\Rgroup {\math_fenced_fenced_stop {group}} -\immutable\protected\def\Lopenbracket {\math_fenced_fenced_start{openbracket}} \immutable\protected\def\Ropenbracket {\math_fenced_fenced_stop {openbracket}} -\immutable\protected\def\Lnothing {\math_fenced_fenced_start{nothing}} \immutable\protected\def\Rnothing {\math_fenced_fenced_stop {nothing}} - -\immutable\protected\def\Lparenthesismirrored {\math_fenced_fenced_stop {mirroredparenthesis}} \immutable\protected\def\Rparenthesismirrored {\math_fenced_fenced_start{mirroredparenthesis}} -\immutable\protected\def\Lbracketmirrored {\math_fenced_fenced_stop {mirroredbracket}} \immutable\protected\def\Rbracketmirrored {\math_fenced_fenced_start{mirroredbracket}} -\immutable\protected\def\Lbracemirrored {\math_fenced_fenced_stop {mirroredbrace}} \immutable\protected\def\Rbracemirrored {\math_fenced_fenced_start{mirroredbrace}} -\immutable\protected\def\Langlemirrored {\math_fenced_fenced_stop {mirroredangle}} \immutable\protected\def\Ranglemirrored {\math_fenced_fenced_start{mirroredangle}} -\immutable\protected\def\Ldoubleanglemirrored {\math_fenced_fenced_stop {mirroreddoubleangle}} \immutable\protected\def\Rdoubleanglemirrored {\math_fenced_fenced_start{mirroreddoubleangle}} -\immutable\protected\def\Lbarmirrored {\math_fenced_fenced_stop {mirroredbar}} \immutable\protected\def\Rbarmirrored {\math_fenced_fenced_start{mirroredbar}} -\immutable\protected\def\Ldoublebarmirrored {\math_fenced_fenced_stop {mirroreddoublebar}} \immutable\protected\def\Rdoublebarmirrored {\math_fenced_fenced_start{mirroreddoublebar}} -\immutable\protected\def\Ltriplebarmirrored {\math_fenced_fenced_stop {mirroredtriplebar}} \immutable\protected\def\Rtriplebarmirrored {\math_fenced_fenced_start{mirroredtriplebar}} -\immutable\protected\def\Lsolidusmirrored {\math_fenced_fenced_stop {mirroredsolidus}} \immutable\protected\def\Rsolidusmirrored {\math_fenced_fenced_start{mirroredsolidus}} -\immutable\protected\def\Lfloormirrored {\math_fenced_fenced_stop {mirroredfloor}} \immutable\protected\def\Rfloormirrored {\math_fenced_fenced_start{mirroredfloor}} -\immutable\protected\def\Lceilingmirrored {\math_fenced_fenced_stop {mirroredceiling}} \immutable\protected\def\Rceilingmirrored {\math_fenced_fenced_start{mirroredceiling}} -\immutable\protected\def\Lmoustachemirrored {\math_fenced_fenced_stop {mirroredmoustache}} \immutable\protected\def\Rmoustachemirrored {\math_fenced_fenced_start{mirroredmoustache}} -\immutable\protected\def\Luppercornermirrored {\math_fenced_fenced_stop {mirroreduppercorner}} \immutable\protected\def\Ruppercornermirrored {\math_fenced_fenced_start{mirroreduppercorner}} -\immutable\protected\def\Llowercornermirrored {\math_fenced_fenced_stop {mirroredlowercorner}} \immutable\protected\def\Rlowercornermirrored {\math_fenced_fenced_start{mirroredlowercorner}} -\immutable\protected\def\Lgroupmirrored {\math_fenced_fenced_stop {mirroredgroup}} \immutable\protected\def\Rgroupmirrored {\math_fenced_fenced_start{mirroredgroup}} -\immutable\protected\def\Lopenbracketmirrored {\math_fenced_fenced_stop {mirroredopenbracket}} \immutable\protected\def\Ropenbracketmirrored {\math_fenced_fenced_start{mirroredopenbracket}} -\immutable\protected\def\Lnothingmirrored {\math_fenced_fenced_stop {mirrorednothing}} \immutable\protected\def\Rnothingmirrored {\math_fenced_fenced_start{mirrorednothing}} - -\definemathfence [interval] [\c!left="2997,\c!right="2998] -\definemathfence [openinterval] [interval] [\c!left="2998,\c!right="2998] -\definemathfence [leftopeninterval] [interval] [\c!left="2997,\c!right="2997] -\definemathfence [rightopeninterval] [interval] [\c!left="2998,\c!right="2998] - -\immutable\protected\def\Linterval {\math_fenced_fenced_start{interval}} -\immutable\protected\def\Lointerval {\math_fenced_fenced_start{openinterval}} -\immutable\protected\def\Llointerval {\math_fenced_fenced_start{leftopeninterval}} -\immutable\protected\def\Lrointerval {\math_fenced_fenced_start{rightopeninterval}} - -\immutable\protected\def\Rinterval {\math_fenced_fenced_stop {interval}} -\immutable\protected\def\Rointerval {\math_fenced_fenced_stop {openinterval}} -\immutable\protected\def\Rlointerval {\math_fenced_fenced_stop {leftopeninterval}} -\immutable\protected\def\Rrointerval {\math_fenced_fenced_stop {rightopeninterval}} - -% \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 - -\popoverloadmode - -\installcorenamespace{mathleft} -\installcorenamespace{mathright} -\installcorenamespace{mathmiddle} - -\pushoverloadmode - -\protected\def\left {\afterassignment\math_left \let\nexttoken} -\protected\def\right {\afterassignment\math_right \let\nexttoken} -\protected\def\middle{\afterassignment\math_middle\let\nexttoken} - -\popoverloadmode - -\let\leftorright\relax - -\newconditional\c_math_fenced_done -\newconditional\c_math_fenced_unknown \settrue\c_math_fenced_unknown - -\protected\def\installmathfencepair#1#2#3#4% - {\letcsname\??mathleft \normalmeaning#1\endcsname#2% - \letcsname\??mathright\normalmeaning#3\endcsname#4} - -\def\math_unknown_left {\setfalse\c_math_fenced_done\ifconditional\c_math_fenced_unknown\normalleft \nexttoken\fi} -\def\math_unknown_right {\setfalse\c_math_fenced_done\ifconditional\c_math_fenced_unknown\normalright \nexttoken\fi} -\def\math_unknown_middle{\setfalse\c_math_fenced_done\ifconditional\c_math_fenced_unknown\normalmiddle\nexttoken\fi} - -\letvalue{\??mathleft \s!unknown}\math_unknown_left -\letvalue{\??mathright \s!unknown}\math_unknown_right -\letvalue{\??mathmiddle\s!unknown}\math_unknown_middle - -\def\math_left - {\settrue\c_math_fenced_done - \ifcsname\??mathleft\normalmeaning\nexttoken\endcsname - \expandafter\lastnamedcs - \else - \expandafter\math_unknown_left - \fi} - -\def\math_right - {\settrue\c_math_fenced_done - \ifcsname\??mathright\normalmeaning\nexttoken\endcsname - \expandafter\lastnamedcs - \else - \expandafter\math_unknown_right - \fi} - -\def\math_middle - {\settrue\c_math_fenced_done - \ifcsname\??mathmiddle\normalmeaning\nexttoken\endcsname - \expandafter\lastnamedcs - \else - \expandafter\math_unknown_middle - \fi} - -\protected\def\lfence#1% - {\settrue\c_math_fenced_done - \let\nexttoken#1% - \ifcsname\??mathleft\normalmeaning\nexttoken\endcsname - \expandafter\lastnamedcs - \else - \expandafter\math_unknown_left - \fi} - -\protected\def\rfence#1% - {\settrue\c_math_fenced_done - \let\nexttoken#1% - \ifcsname\??mathright\normalmeaning\nexttoken\endcsname - \expandafter\lastnamedcs - \else - \expandafter\math_unknown_right - \fi} - -\protected\def\mfence#1% - {\settrue\c_math_fenced_done - \let\nexttoken#1% - \ifcsname\??mathmiddle\normalmeaning\nexttoken\endcsname - \expandafter\lastnamedcs - \else - \expandafter\math_unknown_middle - \fi} - -\normalexpanded{\installmathfencepair {|\detokenize {|}} \Ldoublebar {|\detokenize {|}} \Rdoublebar} -\normalexpanded{\installmathfencepair {|\detokenize{||}} \Ltriplebar {|\detokenize{||}} \Rtriplebar} - -\installmathfencepair \bgroup \Lbrace \egroup \Rbrace -\installmathfencepair \egroup \Rbracemirrored \bgroup \Lbracemirrored - -\installmathfencepair \letteropenbrace \Lbrace \letterclosebrace \Rbrace % as we escape in mp textexts - -\installmathfencepair . \Lnothing . \Rnothing -\installmathfencepair . \Rnothingmirrored . \Lnothingmirrored - -\installmathfencepair [ \Lbracket ] \Rbracket -\installmathfencepair ] \Rbracketmirrored [ \Lbracketmirrored - -\installmathfencepair ( \Lparenthesis ) \Rparenthesis -\installmathfencepair ) \Rparenthesismirrored ( \Lparenthesismirrored - -\installmathfencepair < \Langle > \Rangle -\installmathfencepair > \Ranglemirrored < \Langlemirrored - -\installmathfencepair / \Lsolidus / \Rsolidus -%installmathfencepair / \Rsolidusmirrored / \Lsolidusmirrored - -\installmathfencepair | \Lbar | \Rbar -%installmathfencepair | \Rbarmirrored | \Lbarmirrored - -\installmathfencepair ⌊ \Lfloor ⌋ \Rfloor -\installmathfencepair ⌋ \Rfloormirrored ⌊ \Lfloormirrored -\installmathfencepair ⌈ \Lceiling ⌉ \Rceiling -\installmathfencepair ⌉ \Rceilingmirrored ⌈ \Lceilingmirrored - -\installmathfencepair ⟨ \Langle ⟩ \Rangle -\installmathfencepair ⟩ \Ranglemirrored ⟨ \Langlemirrored - -\installmathfencepair ⟪ \Ldoubleangle ⟫ \Rdoubleangle -\installmathfencepair ⟫ \Rdoubleanglemirrored ⟪ \Ldoubleanglemirrored - -\installmathfencepair ‖ \Ldoublebar ‖ \Rdoublebar -%installmathfencepair ‖ \Rdoublebarmirrored ‖ \Ldoublebarmirrored - -\installmathfencepair ⦀ \Ltriplebar ⦀ \Rtriplebar -%installmathfencepair ⦀ \Rtriplebarmirrored ⦀ \Ltriplebarmirrored - -% \installmathfencepair { \Lbrace } \Rbrace -% \installmathfencepair } \Rbracemirrored { \Lbracemirrored - -\installmathfencepair ⦗ \Linterval ⦘ \Rinterval - -\appendtoks - \ignorediscretionaries % so $\mtext{a|b}$ works, this is ok because it's an \hbox -\to \everymathematics - -% We unofficial support some synonyms as we need them for some fuzzy web related math. - -% The names in char-def.lua (historic mess): - -\pushoverloadmode - -\aliased\let\lbrack \lbracket -\aliased\let\rbrack \rbracket -\aliased\let\lceiling \lceil -\aliased\let\rceiling \rceil -\aliased\let\lparenthesis\lparent -\aliased\let\rparenthesis\rparent -\aliased\let\lparen \lparent -\aliased\let\rparen \rparent - -% Just defined: - -\aliased\let\Lceil \Lceiling -\aliased\let\Rceil \Rceiling -\aliased\let\Lparent\Lparenthesis -\aliased\let\Rparent\Rparenthesis -\aliased\let\Lparen \Lparenthesis -\aliased\let\Rparen \Rparenthesis - -\installmathfencepair \lbrace \Lbrace \rbrace \Rbrace -\installmathfencepair \lbracket \Lbracket \rbracket \Rbracket -\installmathfencepair \lbrack \Lbracket \rbracket \Rbracket -\installmathfencepair \lparenthesis \Lparenthesis \rparenthesis \Rparenthesis -\installmathfencepair \lparent \Lparenthesis \rparent \Rparenthesis -\installmathfencepair \lparen \Lparenthesis \rparen \Rparenthesis -\installmathfencepair \langle \Langle \rangle \Rangle -\installmathfencepair \llangle \Ldoubleangle \rrangle \Rdoubleangle -%installmathfencepair \lbar \Lbar \rbar \Rbar -\installmathfencepair \lVert \Ldoublebar \rVert \Rdoublebar -\installmathfencepair \vert \Lbar \vert \Rbar -\installmathfencepair \solidus \Lsolidus \solidus \Rsolidus -\installmathfencepair \lfloor \Lfloor \rfloor \Rfloor -\installmathfencepair \lceiling \Lceiling \rceiling \Rceiling -\installmathfencepair \lceil \Lceiling \rceil \Rceiling - -\installmathfencepair \ulcorner \Luppercorner \urcorner \Ruppercorner -\installmathfencepair \llcorner \Llowercorner \lrcorner \Rlowercorner -\installmathfencepair \lmoustache \Lmoustache \rmoustache \Rmoustache -\installmathfencepair \llbracket \Lopenbracket \rrbracket \Ropenbracket -\installmathfencepair \lgroup \Lgroup \rgroup \Rgroup - -\installmathfencepair \linterval \Linterval \rinterval \Rinterval -%installmathfencepair \linterv \Linterval \rinterv \Rinterval -\installmathfencepair \lointerval \Linterval \rointerval \Rinterval -\installmathfencepair \llointerval \Llointerval \rlointerval \Rlointerval -\installmathfencepair \lrointerval \Lrointerval \rrointerval \Rrointerval - -\aliased\let\textlbar\lbar \aliased\let\mathlbar\Lbar -\aliased\let\textrbar\lbar \aliased\let\mathrbar\Rbar - -\immutable\protected\def\lbar{\mathortext\mathlbar\textlbar} -\immutable\protected\def\rbar{\mathortext\mathrbar\textrbar} - -% \setupmathfences[color=darkgreen] - -\permanent\protected\def\{{\mathortext\lbrace \letterleftbrace } % or maybe a chardef -\permanent\protected\def\}{\mathortext\rbrace \letterrightbrace } % or maybe a chardef -\permanent\protected\def\[{\mathortext\lbracket \letterleftbracket } % or maybe a chardef -\permanent\protected\def\]{\mathortext\rbracket \letterrightbracket } % or maybe a chardef -\permanent\protected\def\({\mathortext\lparenthesis\letterleftparenthesis } % or maybe a chardef -\permanent\protected\def\){\mathortext\rparenthesis\letterrightparenthesis} % or maybe a chardef -\permanent\protected\def\|{\mathortext\vert \letterbar } % or maybe a chardef -%permanent\protected\def\/{\mathortext\solidus \letterslash } % or maybe a chardef - -\installmathfencepair \{ \Lbrace \} \Rbrace -\installmathfencepair \[ \Lbracket \] \Rbracket -\installmathfencepair \( \Lparenthesis \) \Rparenthesis -\installmathfencepair \< \Langle \> \Rangle -\installmathfencepair \| \Lbar \| \Rbar - -\popoverloadmode - -%D As we have overloaded \type {\left} and \type {\right} we also need a more -%D clever version of the following: - -% methods: -% -% 1: none -% 2: lua -% 3: tex - -% variants: -% -% 1: step 1 -% 2: step 2 -% 3: htdp * 1.33^n -% 4: size * 1.33^n - -\setnewconstant\bigmathdelimitermethod \plusone -\setnewconstant\bigmathdelimitervariant\plusthree - -\protected\def\plainbigdelimiters % traditional method - {\bigmathdelimitermethod\plustwo} - -\plainbigdelimiters % is default for the moment but not so nice - -% \setconstant\bigmathdelimitermethod\plusone - -\installcorenamespace{mathbig} - -\setvalue{\??mathbig1}{0.85} -\setvalue{\??mathbig2}{1.15} -\setvalue{\??mathbig3}{1.45} -\setvalue{\??mathbig4}{1.75} - -\protected\def\choosemathbig#1#2% so we accept \big{||} as well - {{\naturalhbox\bgroup - \startimath - \ifcase\bigmathdelimitermethod - \math_fenced_step#2\relax - \or - \math_fenced_force_size\bigmathdelimitervariant{#1}\relax - \math_fenced_step#2\relax - \else - \math_fenced_step#2{\vpack to\csname\??mathbig#1\endcsname\bodyfontsize{}}% - \fi - \nulldelimiterspace\zeropoint\relax - \mathsurround\zeropoint - \stopimath - \egroup}} - -% needs testing: -% -% \protected\def\choosemathbig#1#2% so we accept \big{||} as well -% {{\naturalhbox\bgroup -% \startimath -% \ifcase\bigmathdelimitermethod -% \Uvextensible#2\relax -% \or -% \math_fenced_force_size\bigmathdelimitervariant{#1}\relax -% \Uvextensible#2\relax -% \else -% \scratchdimen.5\dimexpr\csname\??mathbig\number#1\endcsname\bodyfontsize+1.1\exheight\relax -% \Uvextensible\s!axis \s!depth \scratchdimen \s!height \scratchdimen #2\relax -% \fi -% \nulldelimiterspace\zeropoint\relax -% \mathsurround\zeropoint -% \stopimath -% \egroup}} - -\def\math_fenced_step#1#2% - {\setfalse\c_math_fenced_unknown - \setfalse\c_math_fenced_done - \left#1\relax - \ifconditional\c_math_fenced_done - #2% - \right.\relax - \else - \left.\relax - #2% - \setfalse\c_math_fenced_done - \right#1\relax - \ifconditional\c_math_fenced_done - \else - \right.\relax - \fi - \fi} - -\protected\def\mathdelimiterstep#1#2% - {\begingroup - \math_fenced_force_size\plusone{#1}% - \math_fenced_step#2\relax - \endgroup} - -\definemathcommand [big] {\choosemathbig1} -\definemathcommand [Big] {\choosemathbig2} -\definemathcommand [bigg] {\choosemathbig3} -\definemathcommand [Bigg] {\choosemathbig4} - -\definemathcommand [bigl] [open] [one] {\big} -\definemathcommand [bigm] [rel] [one] {\big} -\definemathcommand [bigr] [close] [one] {\big} -\definemathcommand [Bigl] [open] [one] {\Big} -\definemathcommand [Bigm] [rel] [one] {\Big} -\definemathcommand [Bigr] [close] [one] {\Big} -\definemathcommand [biggl] [open] [one] {\bigg} -\definemathcommand [biggm] [rel] [one] {\bigg} -\definemathcommand [biggr] [close] [one] {\bigg} -\definemathcommand [Biggl] [open] [one] {\Bigg} -\definemathcommand [Biggm] [rel] [one] {\Bigg} -\definemathcommand [Biggr] [close] [one] {\Bigg} - -% \definemathfence [integral] [\c!left="222B] -% -% \protected\def\Lintegral {\math_fenced_fenced_start{integral}} -% \protected\def\Rintegral {\math_fenced_fenced_stop {integral}} -% -% \installmathfencepair \lintegral \Lintegral \rintegral \Rintegral -% -% \left\lintegral -% \vrule height 3cm depth 3cm -% \right\rintegral - -%definemathfence [fancybracket] [bracket] [command=yes,color=red] - -% experimental accents: -% -% \definemathoverextensible [top] [hoed] ["FE302] -% \definemathoverextensible [top] [slang] ["FE303] - -%D The nested fences recovery code is needed for mathml and the original -%D code can still be found in the mkiv file. - -\definesystemattribute[mathautofence][public] - -\let\math_fences_normal_left \left -\let\math_fences_normal_right \right -\let\math_fences_normal_middle\middle -\let\math_fences_normal_both \leftorright - -\protected\def\math_fences_auto_left #1{\c_attr_mathautofence\plusone #1\c_attr_mathautofence\attributeunsetvalue} -\protected\def\math_fences_auto_right #1{\c_attr_mathautofence\plustwo #1\c_attr_mathautofence\attributeunsetvalue} -\protected\def\math_fences_auto_middle#1{\c_attr_mathautofence\plusthree#1\c_attr_mathautofence\attributeunsetvalue} -\protected\def\math_fences_auto_both #1{\c_attr_mathautofence\plusfour #1\c_attr_mathautofence\attributeunsetvalue} - -\permanent\let\autofenceopen \math_fences_auto_left % for testing -\permanent\let\autofenceclose \math_fences_auto_right % for testing -\permanent\let\autofenceleft \math_fences_auto_left % for testing -\permanent\let\autofenceright \math_fences_auto_right % for testing -\permanent\let\autofencemiddle\math_fences_auto_middle % for testing -\permanent\let\autofenceboth \math_fences_auto_both % for testing - -% fences are used not that often (i.e. no performance issue) so we can use a state -% instead of \let ... also some state variable can come in handy in the future - -\newconditional\c_math_fences_auto - -\protected\def\enableautofences - {\clf_enableautofences - \glet\clf_enableautofences\relax % onlyonce anyway - \protected\gdef\enableautofences{\settrue\c_math_fences_auto}% - \enableautofences} - -\protected\def\disableautofences - {\setfalse\c_math_fences_auto} - -\protected\def\math_fences_used_left - {\ifconditional\c_math_fences_auto - \expandafter\math_fences_auto_left - \else - \expandafter\math_fences_normal_left - \fi} - -\protected\def\math_fences_used_right - {\ifconditional\c_math_fences_auto - \expandafter\math_fences_auto_right - \else - \expandafter\math_fences_normal_right - \fi} - -\protected\def\math_fences_used_middle - {\ifconditional\c_math_fences_auto - \expandafter\math_fences_auto_middle - \else - \expandafter\math_fences_normal_middle - \fi} - -\protected\def\math_fences_used_both - {\ifconditional\c_math_fences_auto - \expandafter\math_fences_auto_both - \else - \expandafter\math_fences_normal_both - \fi} - -\permanent\let\left \math_fences_used_left -\permanent\let\right \math_fences_used_right -\permanent\let\middle \math_fences_used_middle -\permanent\let\leftorright\math_fences_used_both - -% wrappers - -\protected\def\startcheckedfences - {\begingroup - \enableautofences} - -\protected\def\stopcheckedfences - {\endgroup} - -% \appendtoks - % maybe: safeguard against overloading - % - % \let\left \math_fences_used_left - % \let\right \math_fences_used_right - % \let\middle \math_fences_used_middle - % \let\leftorright\math_fences_used_both -% \to \everymathematics - -\appendtoks - \ifempty\currentmathfence - \doifelse{\mathfenceparameter\c!state}\v!auto\enableautofences\disableautofences - \fi -\to \everysetupmathfence - -\newconstant\c_math_fences_delimiters_mode \c_math_fences_delimiters_mode"16 % \numexpr"02+"04+"10\relax - -%unexpanded\def\enableautofencemode {\mathdelimitersmode\plussix} % the shift (1) is too fragile -\protected\def\enableautofencemode {\mathdelimitersmode\c_math_fences_delimiters_mode} - -\protected\def\disableautofencemode{\mathdelimitersmode\zerocount} - -\appendtoks - \ifempty\currentmathfence - \doifelse{\mathfenceparameter\c!method}\v!auto\enableautofencemode\disableautofencemode - \fi -\to \everysetupmathfence - -% some day default: \setupmathfences[\c!state=\v!auto] - -%D The next characters were used for constructing nicer extensibles but -%D nowadays we have real characters. - -\Umathchardef\braceld\zerocount \defaultmathfamily "FF07A -\Umathchardef\bracerd\zerocount \defaultmathfamily "FF07B -\Umathchardef\bracelu\zerocount \defaultmathfamily "FF07C -\Umathchardef\braceru\zerocount \defaultmathfamily "FF07D - -\protect |