1
2
3
4
5
6
7
8
9
10
11
12
13
14\writestatus{loading}{ConTeXt Math Macros Delimiters}
15
16\unprotect
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34\newinteger\c_math_delimiter_nesting
35
36\permanent\protected\def\leftfakedelimiter {\advanceby\c_math_delimiter_nesting\minusone\gobbleoneargument}
37\permanent\protected\def\rightfakedelimiter{\advanceby\c_math_delimiter_nesting\plusone \gobbleoneargument}
38
39\permanent\protected\def\checkdelimiters#1
40 {\c_math_delimiter_nesting\zerocount
41 \setbox\scratchbox\hbox\bgroup
42 \let\left \leftfakedelimiter
43 \let\right\rightfakedelimiter
44 \normalstartimath#1\expandafter\normalstopimath\expandafter
45 \egroup
46 \expandafter\c_math_delimiter_nesting\the\c_math_delimiter_nesting\relax}
47
48\permanent\protected\def\fakeleftdelimiter {\ifnum\c_math_delimiter_nesting>\zerocount\left .\fi}
49\permanent\protected\def\fakerightdelimiter{\ifnum\c_math_delimiter_nesting<\zerocount\right.\fi}
50
51
52
53
54\aliased\let\normalordelimiter\secondoftwoarguments
55\aliased\let\normalorfiller \firstoftwoarguments
56
57\permanent\protected\def\enabledelimiter {\enforced\let\normalordelimiter\secondoftwoarguments}
58\permanent\protected\def\disabledelimiter{\enforced\let\normalordelimiter\firstoftwoarguments}
59
60\permanent\protected\def\enablefiller {\enforced\let\normalorfiller\secondoftwoarguments}
61\permanent\protected\def\disablefiller {\enforced\let\normalorfiller\firstoftwoarguments}
62
63\permanent\protected\def\mathopnolimits#1{\mathop{\mathrm#1}\nolimits}
64\permanent\protected\def\mathopdolimits#1{\mathop{\mathrm#1}}
65
66
67
68
69
70
71\installcorenamespace {mathdelimiter}
72
73\installcommandhandler \??mathdelimiter {mathdelimiter} \??mathdelimiter
74
75\aliased\let\setupmathdelimiters\setupmathdelimiter
76
77\setupmathdelimiters
78 [\c!symbol=0,
79 \c!define=\v!yes,
80 \c!factor=1.5,
81 \c!axis=\v!yes,
82
83 \c!height=\exheight,
84 \c!depth=\exheight]
85
86\appendtoks
87 \ifcstok{\mathdelimiterparameter\c!define}\v!yes
88
89 \frozen\instance\protected\edefcsname\currentmathdelimiter\endcsname{\mathdelimiter[\currentmathdelimiter]}
90 \fi
91\to \everydefinemathdelimiter
92
93\permanent\tolerant\protected\def\mathdelimiter[#1]#*[#S#2]
94 {\mathop
95 {\cdef\currentmathdelimiter{#1}
96 \ifempty{#2}
97 \edef\p_factor{\mathdelimiterparameter\c!factor}
98 \orelse\ifhastok={#2}
99 \setupcurrentmathdelimiter[#2]
100 \edef\p_factor{\mathdelimiterparameter\c!factor}
101 \else
102 \edef\p_factor{#2}
103 \fi
104 \edef\p_leftoffset{\mathdelimiterparameter\c!leftoffset}
105 \edef\p_rightoffset{\mathdelimiterparameter\c!rightoffset}
106 \ifempty\p_leftoffset\else
107 \mskip\p_leftoffset
108 \fi
109 \Uvextensible
110 \ifcstok{\mathdelimiterparameter\c!exact}\v!yes exact \fi
111 \ifcstok{\mathdelimiterparameter\c!axis }\v!yes axis \fi
112 \s!height {\p_factor\dimexpr\mathdelimiterparameter\c!height}
113 \s!depth {\p_factor\dimexpr\mathdelimiterparameter\c!depth }
114 \Umathchar\zerocount\zerocount\mathdelimiterparameter\c!symbol
115 \relax
116 \ifempty\p_rightoffset\else
117 \mskip\p_rightoffset
118 \fi}}
119
120
121
122\permanent\protected\def\integral{\int\Umathadapttoright}
123
124\aliased\let\Umathadaptsize\Umathadapttoright
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140\permanent\protected\def\autointegral#1#2#3
141 {\ifmmode
142 \setbox\nextbox\mathstylehbox{#3}
143 \scratchdimen\ifdim\nextboxht>\nextboxdp\nextboxht\else\nextboxdp\fi
144 \mathatom \mathintegralcode {
145 \Uvextensible
146 height \scratchdimen
147 depth \scratchdimen
148 exact
149 axis
150 \Umathchar \plusfour \zerocount "222B
151 }
152 \limits
153 \normalsuperscript{#1}
154 \normalsubscript{#2}
155 \box\nextbox
156 \else
157 \char"222B\relax
158 \fi}
159
160
161
162
163
164
165
166
167\protect \endinput
168 |