1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
|
%D \module
%D [ file=math-int,
%D version=2007.07.19,
%D title=\CONTEXT\ Math Macros,
%D subtitle=Scripts,
%D author={Hans Hagen \& Taco Hoekwater \& Aditya Mahajan},
%D date=\currentdate,
%D copyright=\PRAGMA]
%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 / Integrals}
\unprotect
%D \startbuffer
%D $\int_a^b f(x) dx$ and also
%D $\iint_a^b f(x,y) dxdy$, $\iiint_a^b f(x,y) dxdy$,
%D $\iiiint_a^b f(x) dx$
%D \startformula
%D \int_a^b f(x) dx \quad
%D \iint_a^b f(x) dx \quad
%D \iiint_a^b f(x) dx \quad
%D \iiiint_a^b f(x) dx \quad
%D \stopformula
%D \stopbuffer
%D
%D Default: \getbuffer
%D
%D Displaylimits: \setupmathematics[integral=displaylimits] \getbuffer
%D
%D Limits: \setupmathematics[integral=limits] \getbuffer
\newconstant\mathintlimitmode % 0 nolimits 1 displaylimits 2 limits
\def\intlimits
{\ifcase\mathintlimitmode \nolimits \or \displaylimits \or \limits \fi}
\ifx\v!integral\undefined \def\v!integral{integral} \fi
\appendtoks
\processaction
[\mathematicsparameter\v!integral]
[ nolimits=>\mathintlimitmode\zerocount,
displaylimits=>\mathintlimitmode\plusone,
limits=>\mathintlimitmode\plustwo]%
\to \everysetupmathematics
\setupmathematics
[\v!integral=nolimits]
%D More integrals (AM):
%def\integralrepeatsymbol{\intop}
\def\integralrepeatsymbol{{\int}}
% \def\repeatintegral#1%
% {\scratchtoks\emptytoks
% \let\dointlimits\donothing
% \let\dodointlimits\intlimits
% \dorecurse{#1}{\appendtoks \integralrepeatsymbol \dointkern \to \scratchtoks}%
% \appendtoks \intop \dointlimits \dodointlimits \to \scratchtoks
% \edef\dodorepeatintegral{\the\scratchtoks}%
% \futurelet\next\dorepeatintegral}
% \definemathcommand [iint] {\repeatintegral\plusone }
% \definemathcommand [iiint] {\repeatintegral\plustwo }
% \definemathcommand [iiiint] {\repeatintegral\plusthree}
\def\fakerepeatintegral#1%
{\scratchtoks\emptytoks
\dorecurse{#1}{\appendtoks \integralrepeatsymbol \dointkern \to \scratchtoks}%
\appendtoks \intop \dointlimits \dodointlimits \to \scratchtoks
\edef\dodorepeatintegral{\the\scratchtoks}}
\def\repeatintegral#1#2#3%
{\let\dointlimits\donothing
\let\dodointlimits\intlimits
\iffontchar\textfont\zerocount#1\relax
%\edef\dodorepeatintegral{\utfchar{#1}}%
\let\dodorepeatintegral#2%
\else
\fakerepeatintegral{#3}%
\fi
\futurelet\next\dorepeatintegral}
% This is a temporary solution, as we will make a virtual glyph in lm.
\definemathcommand [iint] {\repeatintegral{"222B}\normaliint \plusone }
\definemathcommand [iiint] {\repeatintegral{"222C}\normaliiint \plustwo }
\definemathcommand [iiiint] {\repeatintegral{"222D}\normaliiiint\plusthree}
%D If the \type{\limits} option is used after \type{\iint}, use
%D \type{\mathop} and fudge the left hand space a bit to make the
%D subscript visually centered.
\def\dointkern
{\mkern-6mu\mathchoice{\mkern-3mu}{}{}{}}
\def\dorepeatintegral
{\ifx\next\limits \dointlimitcorrection \else
\ifx\next\displaylimits \dointlimitcorrection \else
\ifx\next\nolimits \donothing \else
\ifcase\mathintlimitmode\else \dointlimitcorrection \fi\fi\fi\fi
\dodorepeatintegral}
\def\dointlimitcorrection
{\mkern-7mu\mathchoice{\mkern-2mu}{}{}{}%
\mathop\bgroup\mkern7mu\mathchoice{\mkern2mu}{}{}{}\let\dointlimits\egroup}
\protect \endinput
|