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\newcount\c_math_delimiter_nesting
35
36\def\leftfakedelimiter {\advance\c_math_delimiter_nesting\minusone\gobbleoneargument}
37\def\rightfakedelimiter{\advance\c_math_delimiter_nesting\plusone \gobbleoneargument}
38
39\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\def\fakeleftdelimiter {\ifnum\c_math_delimiter_nesting>\zerocount\left .\fi}
49\def\fakerightdelimiter{\ifnum\c_math_delimiter_nesting<\zerocount\right.\fi}
50
51
52
53
54
55\let\normalordelimiter\secondoftwoarguments
56\let\normalorfiller \firstoftwoarguments
57
58\unexpanded\def\enabledelimiter {\let\normalordelimiter\secondoftwoarguments}
59\unexpanded\def\disabledelimiter{\let\normalordelimiter\firstoftwoarguments}
60
61\unexpanded\def\enablefiller {\let\normalorfiller\secondoftwoarguments}
62\unexpanded\def\disablefiller {\let\normalorfiller\firstoftwoarguments}
63
64
65
66
67\def\mathopnolimits#1{\mathop{\mathrm#1}\nolimits}
68\def\mathopdolimits#1{\mathop{\mathrm#1}}
69
70
71
72
73
74
75\installcorenamespace {mathdelimiter}
76
77\installcommandhandler \??mathdelimiter {mathdelimiter} \??mathdelimiter
78
79\let\setupmathdelimiters\setupmathdelimiter
80
81\setupmathdelimiters
82 [\c!symbol=0,
83 \c!command=\v!yes,
84 \c!factor=1.5,
85 \c!axis=\v!yes,
86
87 \c!height=\exheight,
88 \c!depth=\exheight]
89
90\appendtoks
91 \edef\p_command{\mathdelimiterparameter\c!command}
92 \ifx\p_command\v!yes
93 \setuevalue\currentmathdelimiter{\math_fenced_extensible[\currentmathdelimiter]}
94 \fi
95\to \everydefinemathdelimiter
96
97\unexpanded\def\math_fenced_extensible
98 {\dodoubleempty\math_fenced_extensible_indeed}
99
100\unexpanded\def\math_fenced_extensible_indeed[#1][#2]
101 {\mathop
102 {\edef\currentmathdelimiter{#1}
103 \edef\p_factor{\mathdelimiterparameter\c!factor}
104 \ifsecondargument
105 \doifassignmentelse{#2}
106 {\setupcurrentmathdelimiter[#2]
107 \edef\p_factor{\mathdelimiterparameter\c!factor}}
108 {\edef\p_factor{#2}}
109 \else
110 \edef\p_factor{\mathdelimiterparameter\c!factor}
111 \fi
112 \edef\p_exact{\mathdelimiterparameter\c!exact}
113 \edef\p_axis {\mathdelimiterparameter\c!axis}
114 \edef\p_leftoffset{\mathdelimiterparameter\c!leftoffset}
115 \edef\p_rightoffset{\mathdelimiterparameter\c!rightoffset}
116 \ifx\p_leftoffset\empty\else
117 \mskip\p_leftoffset
118 \fi
119 \Uvextensible
120 \ifx\p_exact\v!yes exact \fi
121 \ifx\p_axis \v!yes axis \fi
122 height \p_factor\dimexpr\mathdelimiterparameter\c!height\relax
123 depth \p_factor\dimexpr\mathdelimiterparameter\c!depth \relax
124 \Udelimiter\zerocount\zerocount\mathdelimiterparameter\c!symbol
125 \relax
126 \ifx\p_rightoffset\empty\else
127 \mskip\p_rightoffset
128 \fi}}
129
130\let\mathdelimiter\math_fenced_extensible
131
132\definemathdelimiter[integral][\c!symbol="222B]
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148\unexpanded\def\autointegral#1#2#3
149 {\ifmmode
150 \setbox\nextbox\mathstylehbox{#3}
151 \scratchdimen\ifdim\nextboxht>\nextboxdp\nextboxht\else\nextboxdp\fi
152 \mathlimop{
153 \Uvextensible
154 height \scratchdimen
155 depth \scratchdimen
156 exact
157 axis
158 \Udelimiter \plusfour \zerocount "222B
159 }
160 \limits
161 \normalsuperscript{#1}
162 \normalsubscript{#2}
163 \box\nextbox
164 \else
165 \char"222B\relax
166 \fi}
167
168
169
170
171
172
173
174
175\protect \endinput
176 |