math-def.mkxl /size: 7349 b    last modification: 2023-12-21 09:44
1
    %D \module
2%D   [       file=math-tex,
3%D        version=2001.04.12,
4%D          title=\CONTEXT\ Math Macros,
5%D       subtitle=Definitions,
6%D         author={Hans Hagen, Taco Hoekwater \& Aditya Mahajan},
7%D           date=\currentdate,
8%D      copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
9%C
10%C This module is part of the \CONTEXT\ macro||package and is
11%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
12%C details.
13
14\writestatus{loading}{ConTeXt Math Macros / Definitions}
15
16\unprotect
17
18\pushoverloadmode % cap etc
19
20\startluacode
21    mathematics.define()
22 -- mathematics.xml.registerentities()
23\stopluacode
24
25\popoverloadmode
26
27% \activatemathcharacters
28
29%D The \mfunction macro is an alternative for \hbox with a controlable font switch.
30
31\definemathfunction [arccos]
32\definemathfunction [arcsin]
33\definemathfunction [arctan]
34\definemathfunction [arccosh]
35\definemathfunction [arcsinh]
36\definemathfunction [arctanh]
37\definemathfunction [acos]
38\definemathfunction [asin]
39\definemathfunction [atan]
40\definemathfunction [arg]
41\definemathfunction [cosh]
42\definemathfunction [cos]
43\definemathfunction [coth]
44\definemathfunction [cot]
45\definemathfunction [csc]
46\definemathfunction [deg]
47\definemathfunction [det]     [\c!mathlimits=\v!yes]
48\definemathfunction [dim]
49\definemathfunction [erf]
50\definemathfunction [erfc]
51\definemathfunction [erfi]
52\definemathfunction [exp]
53\definemathfunction [gcd]     [\c!mathlimits=\v!yes]
54\definemathfunction [hom]
55\definemathfunction [inf]     [\c!mathlimits=\v!auto]
56\definemathfunction [inv]     [\c!mathlimits=\v!auto]
57\definemathfunction [injlim]  [\c!mathlimits=\v!auto]
58\definemathfunction [ker]
59\definemathfunction [lg]
60\definemathfunction [liminf]  [\c!mathlimits=\v!auto]
61\definemathfunction [limsup]  [\c!mathlimits=\v!auto]
62\definemathfunction [lim]     [\c!mathlimits=\v!auto]
63\definemathfunction [ln]
64\definemathfunction [log]
65\definemathfunction [median]  [\c!mathlimits=\v!yes]
66\definemathfunction [max]     [\c!mathlimits=\v!auto]
67\definemathfunction [min]     [\c!mathlimits=\v!auto]
68\definemathfunction [mod]     [\c!mathlimits=\v!yes]
69%definemathfunction [div]     [\c!mathlimits=\v!yes]
70\definemathfunction [projlim] [\c!mathlimits=\v!auto]
71\definemathfunction [Pr]      [\c!mathlimits=\v!yes]
72\definemathfunction [sec]
73\definemathfunction [sinh]
74\definemathfunction [sin]
75\definemathfunction [sup]     [\c!mathlimits=\v!auto]
76\definemathfunction [tanh]
77\definemathfunction [tan]
78\definemathfunction [diff]
79
80% When [\c!command=] the label kicks in:
81
82\definemathfunction [cs:median] [\c!command=\widetilde]
83\definemathfunction [sk:median] [\c!command=\widetilde]
84
85\aliased\let\normalmatharg\arg % todo: maybe automatically
86
87%D This needs checking:
88
89\permanent\protected\def\setoperatorlimits#1#2% operator limits
90  {\savenormalmeaning{#1}%
91   %frozen\protected\expandafter\def\expandafter#1\expandafter{\csname normal\csstring#1\endcsname#2}}
92   \frozen\protected\edef#1{\expandafter\noexpand\csname\s!normal\csstring#1\endcsname\noexpand#2}}
93
94\pushoverloadmode
95
96\setoperatorlimits \int              \intlimits
97\setoperatorlimits \iint             \intlimits
98\setoperatorlimits \iiint            \intlimits
99\setoperatorlimits \oint             \intlimits
100\setoperatorlimits \oiint            \intlimits
101\setoperatorlimits \oiiint           \intlimits
102\setoperatorlimits \intclockwise     \intlimits
103\setoperatorlimits \ointclockwise    \intlimits
104\setoperatorlimits \ointctrclockwise \intlimits
105
106\popoverloadmode
107
108%D \macros
109%D   {centercolon, colonminus, minuscolon, colonequals, equalscolon,
110%D    colonapprox, approxcolon, colonsim, simcolon, coloncolon,
111%D    coloncolonminus, minuscoloncolon, coloncolonequals,
112%D    equalscoloncolon, coloncolonapprox, approxcoloncolon,
113%D    colonsim, simcoloncolon}
114%D
115%D The following colon related definitions are provided by Aditya Mahajan who
116%D derived them from \type {mathtools.sty} and \type {colonequals.sty}. This will be
117%D redone as part of the overhaul and font updates.
118%D
119%D In $a := b$ the colon is not vertically centered with the equal to. Also the
120%D distance between colon and equal to is a bit large. So, we define a vertically
121%D centered colon \tex {centercolon} and a few macros for colon and double colon
122%D relation symbols.
123%D
124%D \startlines
125%D \formula {A \centercolon       B}
126%D \formula {A \colonminus        B}
127%D \formula {A \minuscolon        B}
128%D \formula {A \colonequals       B}
129%D \formula {A \equalscolon       B}
130%D \formula {A \colonapprox       B}
131%D \formula {A \approxcolon       B}
132%D \formula {A \colonsim          B}
133%D \formula {A \simcolon          B}
134%D \formula {A \coloncolon        B}
135%D \formula {A \coloncolonminus   B}
136%D \formula {A \minuscoloncolon   B}
137%D \formula {A \coloncolonequals  B}
138%D \formula {A \equalscoloncolon  B}
139%D \formula {A \coloncolonapprox  B}
140%D \formula {A \approxcoloncolon  B}
141%D \formula {A \colonsim          B}
142%D \formula {A \simcoloncolon     B}
143%D \stoplines
144%D
145%D The next macros take care of the space between the colon and the relation symbol,
146%D but they are kind of weird and not in \UNICODE. Either we define them virtual or
147%D we just keep these as bonus.
148
149\pushoverloadmode
150
151\protected\def\math_relation_atom_ordinary{\mathatom \s!class \mathrelationcode \s!all \mathordcode}
152
153\definemathcommand [centercolon]      {\math_relation_atom_ordinary{\colon}}
154\definemathcommand [colonminus]       {\math_relation_atom_ordinary{\colon\minus}}
155\definemathcommand [colonapprox]      {\math_relation_atom_ordinary{\colon\approx}}
156\definemathcommand [approxcolon]      {\math_relation_atom_ordinary{\approx\colon}}
157\definemathcommand [colonsim]         {\math_relation_atom_ordinary{\colon\sim}}
158\definemathcommand [simcolon]         {\math_relation_atom_ordinary{\sim\colon}}
159
160\definemathcommand [coloncolon]       {\math_relation_atom_ordinary{\colon\colon}}
161\definemathcommand [coloncolonminus]  {\math_relation_atom_ordinary{\colon\colon\minus}}
162\definemathcommand [minuscoloncolon]  {\math_relation_atom_ordinary{\minus\colon\colon}}
163\definemathcommand [coloncolonequals] {\math_relation_atom_ordinary{\colon\colon\eq}} % native char
164\definemathcommand [equalscoloncolon] {\math_relation_atom_ordinary{\eq\colon\colon}}
165\definemathcommand [coloncolonapprox] {\math_relation_atom_ordinary{\colon\colon\approx}}
166\definemathcommand [approxcoloncolon] {\math_relation_atom_ordinary{\approx\colon\colon}}
167\definemathcommand [coloncolonsim]    {\math_relation_atom_ordinary{\colon\colon\sim}}
168\definemathcommand [simcoloncolon]    {\math_relation_atom_ordinary{\sim\colon\colon}}
169
170% \definemathcommand [manycolons] [relation] [ordinary] {\colon\colon\colon\colon\colon\colon\colon}
171
172\popoverloadmode
173
174%D \macros
175%D   {amedian}
176%D
177%D Something language specific, the arithmic median:
178%D
179%D \starttyping
180%D                   \im {x + \amedian {x - a} + x}
181%D \mainlanguage[cs] \im {x + \amedian {x - a} + x}
182%D \stoptyping
183
184\defcsname \s!en:amedian\endcsname#1{\widebar  {#1}}
185\defcsname \s!cs:amedian\endcsname#1{\widetilde{#1}}
186\defcsname \s!sk:amedian\endcsname#1{\widetilde{#1}}
187
188\permanent\protected\def\amedian
189  {\csname
190     \ifcsname\currentmainlanguage:amedian\endcsname
191       \currentmainlanguage\else\s!en
192     \fi
193     :amedian%
194   \endcsname}
195
196% \appendtoks
197%     \def\over{\primitive\over}%
198% \to \everymathematics
199
200\protect \endinput
201