%D \module %D [ file=math-pln, %D version=2001.11.16, %D title=\CONTEXT\ Math Macros, %D subtitle=Plain Helpers, %D author=Hans Hagen, %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. %D Here we collect some Plain \TEX\ leftovers. \writestatus{loading}{ConTeXt Math Macros / Plain Helpers} \unprotect % we need proper unicode: \def\relbar{\mathrel{\smash-}} % - has the same height as + .. no clue what this refers to % might change \unexpanded\def\hrulefill{\leaders\hrule\hfill} \unexpanded\def\dotfill {\cleaders\hbox{\normalstartimath\mathsurround\zeropoint\mkern1.5mu.\mkern1.5mu\normalstopimath}\hfill} % will move \def\oalign#1% {\leavevmode % plain tex uses this \vtop {\baselineskip\zeroskip \lineskip.25\exheight \ialign{\alignmark\alignmark\crcr#1\crcr}}} \def\ooalign % chars over each other {\lineskiplimit-\maxdimen \oalign} % needs checking \def\choose{\atopwithdelims()} \def\brack {\atopwithdelims[]} \def\brace {\atopwithdelims\{\}} % needs checking \unexpanded\def\buildrel#1\over#2% {\mathrel{\mathop{\kern\zeropoint#2}\limits^{#1}}} \unexpanded\def\bmod {\nonscript \mskip-\medmuskip \mkern5mu \mfunction{mod}% \penalty900 \mkern5mu \nonscript \mskip-\medmuskip} \unexpanded\def\pmod#1% {\allowbreak \mkern18mu (\mfunction{mod}\mskip\medmuskip#1)} \unexpanded\def\cases#1% {\left\{% \mskip\thinmuskip \vcenter {\normalbaselines \mathsurround\zeropoint \ialign{% \normalstartimath\alignmark\alignmark\hfil\normalstopimath \aligntab \quad\alignmark\alignmark\hfil \crcr #1% \crcr}}% \right.} \unexpanded\def\matrix#1% {\emptyhbox \mskip\thinmuskip \vcenter {\normalbaselines \mathsurround\zeropoint \ialign{% \hfil\normalstartimath\alignmark\alignmark\normalstopimath\hfil \aligntab \aligntab \quad\hfil\normalstartimath\alignmark\alignmark\normalstopimath\hfil \crcr \mathstrut \crcr \noalign{\kern-\baselineskip} #1\crcr \mathstrut \crcr \noalign{\kern-\baselineskip}}}% \mskip\thinmuskip} \unexpanded\def\pmatrix#1% {\left(\matrix{#1}\right)} % \unexpanded\def\openup % {\afterassignment\math_openup\scratchdimen=} % % \def\math_openup % {\advance\lineskip \scratchdimen % \advance\baselineskip \scratchdimen % \advance\lineskiplimit\scratchdimen} \let\math_closeup\relax \unexpanded\def\math_openup {\afterassignment\math_openup_indeed\scratchdimen} \def\math_openup_indeed {\unexpanded\edef\math_closeup {\lineskip \the\lineskip \baselineskip \the\baselineskip \lineskiplimit\the\lineskiplimit \relax}% \advance \lineskip \scratchdimen \advance \baselineskip \scratchdimen \advance \lineskiplimit \scratchdimen} \let\openup \math_openup \def\closeup{\math_closeup} % dynamic \unexpanded\def\displaylines#1% {\the\mathdisplayaligntweaks \tabskip\zeroskip \halign {\hbox to \displaywidth{% \normalstartimath\tabskip\zeroskip\everycr\emptytoks\hfil\displaystyle\alignmark\alignmark\hfil\normalstopimath}\crcr #1\crcr}} %D This comes from plain but I gave it a \CONTEXT\ touch: \def\math_border_NC_indeed {\gdef\math_border_NC{\aligntab}} \let\math_border_NC\math_border_NC_indeed \def\math_border_NR {\glet\math_border_NC\math_border_NC_indeed \cr} \unexpanded\def\math_border_matrix#1#2#3% adapted plain {\begingroup % \pushmacro\cr % \setbox\scratchbox\hbox\bgroup \mr B% \egroup \scratchdimenone\wd\scratchbox % \scratchdimentwo.2\bodyfontsize % \mathsurround\zeropoint % \def\NC{\math_border_NC}% \def\NR{\math_border_NR}% % \setbox\scratchboxone\vbox\bgroup \def\cr{% \crcr \noalign\bgroup \kern\scratchdimentwo \glet\cr\endline \egroup }% \ialign{% \startimath\alignmark\alignmark\stopimath \hfil \kern\dimexpr\scratchdimentwo+\scratchdimenone\relax \aligntab \thinspace \hfil \startimath\alignmark\alignmark\stopimath \hfil \aligntab \aligntab \quad \hfil \startimath\alignmark\alignmark\stopimath \hfil \crcr \omit \strut \hfil \crcr \noalign{\kern-\baselineskip}% #3\crcr \omit \strut \cr }% \egroup \setbox\scratchboxtwo\vbox\bgroup \unvcopy\scratchboxone \global\setbox\globalscratchbox\lastbox \egroup \setbox\scratchboxtwo\hbox\bgroup \unhbox\globalscratchbox \unskip \global\setbox\globalscratchbox\lastbox \egroup \setbox\scratchboxtwo\hbox\bgroup \startimath \kern\dimexpr\wd\globalscratchbox-\scratchdimenone\relax \left#1\relax \kern-\wd\globalscratchbox \global\setbox\globalscratchbox\vbox\bgroup \box\globalscratchbox \kern\scratchdimentwo \egroup \vcenter\bgroup \kern-\ht\globalscratchbox \unvbox\scratchboxone \kern-\baselineskip \egroup \thinspace \right#2\relax \stopimath \egroup \null \thickspace \vbox\bgroup \kern\ht\globalscratchbox \box\scratchboxtwo \egroup % \popmacro\cr % \endgroup} \unexpanded\def\bordermatrix {\math_border_matrix()} \unexpanded\def\bbordermatrix{\math_border_matrix[]} \unexpanded\def\startbordermatrix #1\stopbordermatrix {\math_border_matrix(){#1}} \unexpanded\def\startbbordermatrix#1\stopbbordermatrix{\math_border_matrix[]{#1}} \let\stopbordermatrix \relax \let\stopbbordermatrix\relax \protect \endinput