%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 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 / Integrals} \unprotect %D \startbuffer %D $\int _a^b f(x) dx $ and also %D $\iint _a^b f(x,y) dxdy$, %D $\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 %D Adapted to mkiv by HH from code by AM. \installcorenamespace{mathintegral} \newconstant\mathintlimitmode \def\intlimits % also used elsewhere {\ifcase\mathintlimitmode \nolimits \or \displaylimits \or \limits \or % auto \ifcase\normalmathstyle\displaylimits\or\displaylimits\else\limits\fi % \ifnum\attribute\mathmodeattribute=\plusone % we need a proper flag % \displaylimits % \else % \limits % \fi \fi} \letvalue{\??mathintegral nolimits}\zerocount \letvalue{\??mathintegral displaylimits}\plusone \letvalue{\??mathintegral limits}\plustwo \letvalue{\??mathintegral autolimits}\plusthree \letvalue{\??mathintegral none}\plusfour \appendtoks \mathintlimitmode\executeifdefined{\??mathintegral\mathematicsparameter\s!integral}\zerocount \to \everyswitchmathematics \setupmathematics % [\v!integral=nolimits] [\v!integral=autolimits] %D The following code is used for fallbacks and might become obsolete once %D we have enough \OPENTYPE\ math fonts. \def\math_repeated_integal_i {\int} \def\math_repeated_integal_ii {\math_repeated_integal_i \math_repeated_integral_kern \math_repeated_integal_i \math_repeat_integral_finish \intlimits} \def\math_repeated_integal_iii {\math_repeated_integal_i \math_repeated_integral_kern \math_repeated_integal_ii} \def\math_repeated_integal_iiii {\math_repeated_integal_i \math_repeated_integral_kern \math_repeated_integal_iii} \unexpanded\def\math_repeat_integral#1% {\let\math_repeat_integral_finish\donothing \iffontchar\textfont\zerocount#1\relax \expandafter\math_repeat_integral_real \else \expandafter\math_repeat_integral_fake \fi} \def\math_repeat_integral_fake#1#2% {\let\math_repeat_integral_fake_symbol#2% \futurelet\next\math_repeat_integral_fake_indeed} \def\math_repeat_integral_real#1#2% {#1} \definemathcommand [iint] {\math_repeat_integral{"0222C}\normalint \math_repeated_integal_ii } % double \definemathcommand [iiint] {\math_repeat_integral{"0222D}\normaliint \math_repeated_integal_iii } % tripple \definemathcommand [iiiint] {\math_repeat_integral{"FFFFF}\normaliiint\math_repeated_integal_iiii} % quadruple \def\math_repeated_integral_kern {\mkern-6mu\mathchoice{\mkern-3mu}{}{}{}} \def\math_repeat_integral_fake_indeed {\ifx\next\limits \math_repeated_integral_correction \else\ifx\next\displaylimits \math_repeated_integral_correction \else\ifx\next\nolimits % nothing \else\ifcase\mathintlimitmode % nothing \else \math_repeated_integral_correction \fi\fi\fi\fi \math_repeat_integral_fake_symbol} \def\math_repeated_integral_correction {\mkern-7mu\mathchoice{\mkern-2mu}{}{}{}% \mathop\bgroup\mkern7mu\mathchoice{\mkern2mu}{}{}{}\let\math_repeat_integral_finish\egroup} %D If the \type{\limits} option is used after \type {\iint}, use \type %D {\mathop} and fudge the left hand space a bit to make the subscript %D visually centered. \protect \endinput