math.tex (11233B)
1 % TODO: most things here copied from plain; need to sort thru 2 3 \def\begmath{\Ustartmath} 4 \def\endmath{\Ustopmath} 5 \def\togmath{\relax\ifmmode\ea\endmath\else\ea\begmath\fi} 6 \def\begdisplaymath{\Ustartdisplaymath} 7 \def\enddisplaymath{\Ustopdisplaymath\optionalspace} 8 \def\togdisplaymath{\relax\ifmmode\ea\enddisplaymath\else\ea\begdisplaymath\fi} 9 \def\@dmmode${\togdisplaymath} 10 \def\@mmode{\ifx\next$\ea\@dmmode\else\ea\togmath\fi} 11 \def${\futurelet\next\@mmode} 12 13 \let_=\Usubscript 14 15 \input mathenc 16 17 \def\compl{{\sm c}} 18 19 \def\lnot{\neg} 20 \def\land{\wedge} 21 \def\lor{\vee} 22 \def\limp{\rightarrow} 23 24 \def\int{\intop\nolimits} 25 \def\oint{\ointop\nolimits} 26 27 \def\neq{\not=} 28 \def\ne{\neq} 29 \def\le{\leq} 30 \def\ge{\geq} 31 32 \def\:{\colon\,} % For use in $f\: X \to Y$ 33 \def\divides{\mid} 34 \def\notdivides{\nmid} 35 \def\to{\rightarrow} 36 \def\mapsto{\mapstochar\rightarrow} 37 38 \def\|{\Vert} 39 \def\<{\langle} \def\>{\rangle} 40 \def\{{\lbrace} \def\}{\rbrace} 41 \def\lc{\lceil} \def\rc{\rceil} 42 \def\lf{\lfloor} \def\rf{\rfloor} 43 44 \def\joinrel{\mathrel{\mkern-3mu}} 45 \def\relbar{\mathrel{\smash-}} % \smash, because - has the same height as + 46 \def\Relbar{\mathrel=} 47 \def\hookrightarrow{\lhook\joinrel\rightarrow} 48 \def\hookleftarrow{\leftarrow\joinrel\rhook} 49 \def\bowtie{\mathrel\triangleright\joinrel\mathrel\triangleleft} 50 \def\models{\mathrel|\joinrel=} 51 \def\Longrightarrow{\Relbar\joinrel\Rightarrow} 52 \def\longrightarrow{\relbar\joinrel\rightarrow} 53 \def\longleftarrow{\leftarrow\joinrel\relbar} 54 \def\Longleftarrow{\Leftarrow\joinrel\Relbar} 55 \def\longmapsto{\mapstochar\longrightarrow} 56 \def\longleftrightarrow{\leftarrow\joinrel\rightarrow} 57 \def\Longleftrightarrow{\Leftarrow\joinrel\Rightarrow} 58 \def\Iff{\mskip\thickmuskip \Longleftrightarrow \mskip\thickmuskip} 59 \def\Imp{\mskip\thickmuskip \Longrightarrow \mskip\thickmuskip} 60 \def\iff{\Leftrightarrow} 61 \def\imp{\Rightarrow} 62 63 \def\ldots{\mathinner{\ldotp\ldotp\ldotp}} 64 \def\cdots{\mathinner{\cdotp\cdotp\cdotp}} 65 \def\vdots{\vbox{% 66 \baselineskip=4pt \lineskiplimit=0pt 67 \kern6pt \hbox{.}\hbox{.}\hbox{.}% 68 }} 69 \def\tightvdots{\vbox{\baselineskip=4pt \lineskiplimit=0pt 70 \def\.{\hbox{.}}\.\.\.}} 71 \def\ddots{\mathinner{% 72 \mkern1mu 73 \raise7pt\vbox{\kern7pt\hbox{.}}% 74 \mkern2mu 75 \raise4pt\hbox{.}% 76 \mkern2mu 77 \raise1pt\hbox{.}% 78 \mkern1mu 79 }} 80 \def\iddots{\mathinner{% 81 \mkern1mu 82 \raise\p@\hbox{.}% 83 \mkern2mu 84 \raise4\p@\hbox{.}% 85 \mkern2mu 86 \raise7\p@\vbox{\kern7\p@\hbox{.}}% 87 \mkern1mu 88 }} 89 90 % \def\overrightarrow#1{\vbox{\m@th\ialign{##\crcr 91 % \rightarrowfill\crcr\noalign{\kern-\p@\nointerlineskip} 92 % $\hfil\displaystyle{#1}\hfil$\crcr}}} 93 % \def\overleftarrow#1{\vbox{\m@th\ialign{##\crcr 94 % \leftarrowfill\crcr\noalign{\kern-\p@\nointerlineskip} 95 % $\hfil\displaystyle{#1}\hfil$\crcr}}} 96 % \def\overbrace#1{\mathop{\vbox{\m@th\ialign{##\crcr\noalign{\kern3\p@} 97 % \downbracefill\crcr\noalign{\kern3\p@\nointerlineskip} 98 % $\hfil\displaystyle{#1}\hfil$\crcr}}}\limits} 99 \def\overbrace#1{% 100 \mathop{\vbox{\nosurround\ialign{% 101 ##\crcr 102 \noalign{\kern1pt}% 103 \downbracefill\crcr 104 \noalign{\kern3pt\nointerlineskip}% 105 $\hfil\displaystyle{#1}\hfil$\crcr 106 }}}\limits 107 } 108 \def\underbrace#1{% 109 \mathop{\vtop{\nosurround\ialign{% 110 ##\crcr 111 $\hfil\displaystyle{#1}\hfil$\crcr 112 \noalign{\kern1pt\nointerlineskip}% 113 \upbracefill\crcr 114 \noalign{\kern1pt}% 115 }}}\limits 116 } 117 118 % Primes (with nice syntax) 119 % TODO: simplify with \isnextchar<char>{true}{false} macro; see optex 120 {\catcode`\'=13 \gdef'{^\bgroup\@primeA}} 121 \def\@primeA{\prime\futurelet\next\@primeB} 122 \def\@primeB{\ifx'\next \ea\@primeD \else \ea\@primeC \fi} 123 \def\@primeC{\ifx^\next \ea\@primeE \else \ea\egroup \fi} 124 \def\@primeD#1{\@primeA} 125 \def\@primeE#1#2{#2\egroup} 126 127 \def\,{\relax\ifmmode \mskip\thinmuskip \else \thinspace \fi} 128 \def\!{\relax\ifmmode \mskip-\thinmuskip \else \negthinspace \fi} 129 130 % Roots 131 \newbox\@rootbox 132 \def\root#1\of{% 133 \setbox\@rootbox=\hbox{$\nosurround\scriptscriptstyle{#1}$}% 134 \mathpalette\@root 135 } 136 \def\@root#1#2{% 137 \setbox0=\hbox{$\nosurround\sty#1\sqrt{#2}$}% 138 \dimenA=\dimexpr\ht0 - \dp0\relax 139 % XXX hard-coded dimens 140 \mkern4mu \raise.82\dimenA\copy\@rootbox \mkern-10.5mu \box0 141 } 142 143 \def\mathstrut{\vphantom(} 144 145 \def\bigl{\mathopen\big} \def\bigm{\mathrel\big} \def\bigr{\mathclose\big} 146 \def\Bigl{\mathopen\Big} \def\Bigm{\mathrel\Big} \def\Bigr{\mathclose\Big} 147 \def\biggl{\mathopen\bigg} \def\biggm{\mathrel\bigg} \def\biggr{\mathclose\bigg} 148 \def\Biggl{\mathopen\Bigg} \def\Biggm{\mathrel\Bigg} \def\Biggr{\mathclose\Bigg} 149 % TODO need to reconsider when new font system designed 150 % TODO use luaTeX Uleft, Uright? 151 \def\big#1{{\hbox{$\left#1\vbox to\Fbight{}\right.\n@space$}}} 152 \def\Big#1{{\hbox{$\left#1\vbox to\FBight{}\right.\n@space$}}} 153 \def\bigg#1{{\hbox{$\left#1\vbox to\Fbigght{}\right.\n@space$}}} 154 \def\Bigg#1{{\hbox{$\left#1\vbox to\FBigght{}\right.\n@space$}}} 155 % \def\big#1{{\hbox{$\left#1\vbox to8.5\p@{}\right.\n@space$}}} 156 % \def\Big#1{{\hbox{$\left#1\vbox to11.5\p@{}\right.\n@space$}}} 157 % \def\bigg#1{{\hbox{$\left#1\vbox to14.5\p@{}\right.\n@space$}}} 158 % \def\Bigg#1{{\hbox{$\left#1\vbox to17.5\p@{}\right.\n@space$}}} 159 \def\n@space{\nulldelimiterspace=0pt \nosurround} 160 161 \def\choose{\atopwithdelims()} 162 \def\brack{\atopwithdelims[]} 163 \def\brace{\atopwithdelims\{\}} 164 165 \def\cong{\mathrel{\mathpalette\@vereq\sim}} 166 \def\@vereq#1#2{\lower.5pt \vbox{\lineskiplimit\maxdimen\lineskip-.5pt 167 \ialign{$\nosurround\sty#1\hfil##\hfil$\crcr#2\crcr=\crcr}}} 168 %\def\notin{\mathrel{\mathpalette\c@ncel\in}} 169 \def\c@ncel#1#2{\nosurround\ooalign{$\hfil\sty#1\mkern1mu/\hfil$\crcr$\sty#1#2$}} 170 % \def\rightleftharpoons{\mathrel{\mathpalette\rlh@{}}} 171 % \def\rlh@#1{\vcenter{\m@th\hbox{\ooalign{\raise2pt 172 % \hbox{$#1\rightharpoonup$}\crcr 173 % $#1\leftharpoondown$}}}} 174 % \def\buildrel#1\over#2{\mathrel{\mathop{\kern\z@#2}\limits^{#1}}} 175 % \def\doteq{\buildrel\textstyle.\over=} 176 177 % Customizable \overline. 178 % \barx<sty><top space><thickness><clearance><left trim><right trim><atom> 179 % All units are in mu relative to sty. 180 \newdimen\@stymu 181 \def\barx#1#2#3#4#5#6#7{\hbox{% 182 \@stymu=\dimexpr\styfontdimen{#1}{2}{6}/18\relax % get mu size 183 \kern#5\@stymu 184 \vbox{% 185 \boxmaxdepth=\maxdimen 186 \kern#2\@stymu 187 \hrule height#3\@stymu 188 \kern#4\@stymu 189 \hbox{\kern-#5\@stymu$\nosurround\sty#1{#7}$\kern-#6\@stymu}% 190 }% 191 \kern#6\@stymu 192 }} 193 \def\bartrim#1#2#3{\mathpalette\@bartrim{{#1}{#2}{#3}}} 194 \def\@bartrim#1#2{\barx#1{.5}12#2} % TODO: hardcoded values 195 \def\overbar{\bartrim11} 196 197 \def\log{\mathop{\f[o] log}\nolimits} 198 \def\lg{\mathop{\f[o] lg}\nolimits} 199 \def\ln{\mathop{\f[o] ln}\nolimits} 200 \def\lim{\mathop{\f[o] lim}} 201 \def\limsup{\mathop{\f[o] lim\,sup}} 202 \def\liminf{\mathop{\f[o] lim\,inf}} 203 \def\sin{\mathop{\f[o] sin}\nolimits} 204 \def\arcsin{\mathop{\f[o] arcsin}\nolimits} 205 \def\sinh{\mathop{\f[o] sinh}\nolimits} 206 \def\cos{\mathop{\f[o] cos}\nolimits} 207 \def\arccos{\mathop{\f[o] arccos}\nolimits} 208 \def\cosh{\mathop{\f[o] cosh}\nolimits} 209 \def\tan{\mathop{\f[o] tan}\nolimits} 210 \def\arctan{\mathop{\f[o] arctan}\nolimits} 211 \def\tanh{\mathop{\f[o] tanh}\nolimits} 212 \def\cot{\mathop{\f[o] cot}\nolimits} 213 \def\coth{\mathop{\f[o] coth}\nolimits} 214 \def\sec{\mathop{\f[o] sec}\nolimits} 215 \def\csc{\mathop{\f[o] csc}\nolimits} 216 \def\max{\mathop{\f[o] max}} 217 \def\min{\mathop{\f[o] min}} 218 \def\sup{\mathop{\f[o] sup}} 219 \def\inf{\mathop{\f[o] inf}} 220 \def\arg{\mathop{\f[o] arg}\nolimits} 221 \def\ker{\mathop{\f[o] ker}\nolimits} 222 \def\dim{\mathop{\f[o] dim}\nolimits} 223 \def\hom{\mathop{\f[o] hom}\nolimits} 224 \def\det{\mathop{\f[o] det}} 225 \def\exp{\mathop{\f[o] exp}\nolimits} 226 \def\Pr{\mathop{\f[o] Pr}} 227 \def\gcd{\mathop{\f[o] gcd}} 228 \def\deg{\mathop{\f[o] deg}\nolimits} 229 230 % TODO: review 231 \def\openup{\afterassignment\@penup \dimenA=} 232 \def\@penup{\advance\lineskip\dimenA 233 \advance\baselineskip\dimenA 234 \advance\lineskiplimit\dimenA} 235 \def\@dsty{\displaystyle\displaymath} 236 \def\@malign{\hfil\strut$\@dsty{##}$\tabskip=0pt&$\@dsty{{}##}$\hfil} 237 \def\eqalignskip{\qquad} 238 \def\eqalign#1{\null\,\vcenter{\openup1\jot \nosurround 239 \ialign{\cspan\@malign&&\eqalignskip\cspan\@malign\crcr #1\crcr}}\,} 240 \newif\ifdt@p 241 \def\displ@y{\global\dt@ptrue\openup\jot\nosurround 242 \everycr{\noalign{\ifdt@p \global\dt@pfalse \ifdim\prevdepth>-1000pt 243 \vskip-\lineskiplimit \vskip\normallineskiplimit \fi 244 \else \penalty\interdisplaylinepenalty \fi}}} 245 \def\@lign{\tabskip0pt \everycr={}} % restore inside \displ@y 246 \def\exalignno#1{\displ@y \tabskip=\centering 247 \halign to\displaywidth{% 248 \hfil$\@lign\@dsty{##}$\tabskip=0pt&$\@lign\@dsty{{}##}$\hfil& 249 \qquad\hbox{\f[r]##}\hfil\tabskip=\centering& 250 \llap{$\@lign##$}\tabskip=0pt\crcr #1\crcr}} 251 \def\eqalignno#1{\displ@y \tabskip\centering 252 \halign to\displaywidth{\hfil$\@lign\@dsty{##}$\tabskip0pt 253 &$\@lign\@dsty{{}##}$\hfil\tabskip\centering 254 &\llap{$\@lign##$}\tabskip0pt\crcr 255 #1\crcr}} 256 \def\displaylines#1{\displ@y \tabskip0pt 257 \halign{\hbox to\displaywidth{$\@lign\hfil\@dsty##\hfil$}\crcr 258 #1\crcr}} 259 260 \def\bmod{% 261 \nonscript\mskip-\medmuskip 262 \mkern5mu 263 \mathbin{\f[sr]mod}% 264 \penalty900 265 \mkern5mu 266 \nonscript\mskip-\medmuskip 267 } 268 269 \def\mod#1{\allowbreak\ifinner\ \else\mkern18mu\fi({\f[r]mod}\,\,#1)} 270 271 \def\cases#1{\left\{\,\vcenter{\normalbaselines\nosurround % XXX: \nosurround here is wrong; should be inside leftmost column 272 \ialign{$##\hfil$&\quad##\hfil\crcr#1\crcr}}\right.} 273 \def\matrix#1{% 274 \null\,\vcenter{% 275 \normalbaselines\nosurround 276 \ialign{% 277 \hfil$##$\hfil&&\quad\hfil$##$\hfil\crcr 278 \mathstrut\crcr \noalign{\kern-\baselineskip}% 279 #1\crcr 280 \mathstrut\crcr \noalign{\kern-\baselineskip}% 281 }% 282 }\,% 283 } 284 \def\bmatrix#1{\left[\matrix{#1}\right]} 285 % \def\pmatrix#1{\left(\matrix{#1}\right)} 286 % \newdimen\p@renwd 287 % \setbox0=\hbox{\tenex B} \p@renwd=\wd0 % width of the big left ( 288 % \def\bordermatrix#1{\begingroup \m@th 289 % \setbox\z@\vbox{\def\cr{\crcr\noalign{\kern2\p@\global\let\cr\endline}}% 290 % \ialign{$##$\hfil\kern2\p@\kern\p@renwd&\thinspace\hfil$##$\hfil 291 % &&\quad\hfil$##$\hfil\crcr 292 % \omit\strut\hfil\crcr\noalign{\kern-\baselineskip}% 293 % #1\crcr\omit\strut\cr}}% 294 % \setbox\tw@\vbox{\unvcopy\z@\global\setbox\@ne\lastbox}% 295 % \setbox\tw@\hbox{\unhbox\@ne\unskip\global\setbox\@ne\lastbox}% 296 % \setbox\tw@\hbox{$\kern\wd\@ne\kern-\p@renwd\left(\kern-\wd\@ne 297 % \global\setbox\@ne\vbox{\box\@ne\kern2\p@}% 298 % \vcenter{\kern-\ht\@ne\unvbox\z@\kern-\baselineskip}\,\right)$}% 299 % \null\;\vbox{\kern\ht\@ne\box\tw@}\endgroup} 300 301 % \def\openup{\afterassignment\@penup\dimen@=} 302 % \def\@penup{\advance\lineskip\dimen@ 303 % \advance\baselineskip\dimen@ 304 % \advance\lineskiplimit\dimen@} 305 % \def\eqalign#1{\null\,\vcenter{\openup\jot\m@th 306 % \ialign{\strut\hfil$\displaystyle{##}$&$\displaystyle{{}##}$\hfil 307 % \crcr#1\crcr}}\,} 308 % \newif\ifdt@p 309 % \def\displ@y{\global\dt@ptrue\openup\jot\m@th 310 % \everycr{\noalign{\ifdt@p \global\dt@pfalse \ifdim\prevdepth>-1000\p@ 311 % \vskip-\lineskiplimit \vskip\normallineskiplimit \fi 312 % \else \penalty\interdisplaylinepenalty \fi}}} 313 % \def\@lign{\tabskip\z@skip\everycr{}} % restore inside \displ@y 314 % \def\leqalignno#1{\displ@y \tabskip\centering 315 % \halign to\displaywidth{\hfil$\@lign\displaystyle{##}$\tabskip\z@skip 316 % &$\@lign\displaystyle{{}##}$\hfil\tabskip\centering 317 % &\kern-\displaywidth\rlap{$\@lign##$}\tabskip\displaywidth\crcr 318 % #1\crcr}} 319 320 \endinput