r3tex

custom LuaTeX format
git clone git://git.rr3.xyz/r3tex
Log | Files | Refs | README | LICENSE

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