diff options
Diffstat (limited to 'Master/texmf-dist/tex/context/base/m-newmat.tex')
-rw-r--r-- | Master/texmf-dist/tex/context/base/m-newmat.tex | 301 |
1 files changed, 301 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/context/base/m-newmat.tex b/Master/texmf-dist/tex/context/base/m-newmat.tex new file mode 100644 index 00000000000..6f5f3586a69 --- /dev/null +++ b/Master/texmf-dist/tex/context/base/m-newmat.tex @@ -0,0 +1,301 @@ +%D \module +%D [ file=m-newmat, +%D version=2000.11.16, +%D title=\CONTEXT\ Math Module, +%D subtitle=AMS-like math extensions, +%D author={Taco Hoekwater \& Hans Hagen}, +%D date=\currentdate, +%D copyright={PRAGMA / Taco Hoekwater}] +%C +%C This module is part of the \CONTEXT\ macro||package and is +%C therefore copyrighted by \PRAGMA. See licen-en.pdf for +%C details. + +%D This module collects macros that \TEX\ users kind of expect +%D to be available when typesetting math. Most of them +%D originate in the \AMS\ macro packages. We have taken the +%D freedom to adapt them to \CONTEXT. This module is derived +%D from the \type {m-math} module by Taco Hoekwater (partially +%D derived from AMS math modules) and adapted|/|extended by +%D Hans Hagen. + +%D Here we will add code on demand. So, just let us know what +%D should go in here. + +%M \usemodule[newmat] + +\unprotect + +%D \macros +%D {qedsymbol} +%D +%D [HH] The general Quod Erat Domonstrandum symbol is defined +%D in such a way that we can configure it. Because this symbol +%D is also used in text mode, we make it a normal text symbol +%D with special behavior. + +\def\qedsymbol#1% + {\ifhmode + \unskip~\hfill#1\par + \else\ifmmode + \eqno#1\relax % Do we really need the \eqno here? + \else + \leavevmode\hbox{}\hfill#1\par + \fi\fi} + +\definesymbol [qed] [\qedsymbol{\mathematics{\square}}] + +%D \macros +%D {QED} +%D +%D [HH] For compatbility reasons we also provide the \type +%D {\QED} command. In case this command is overloaded, we still +%D have the symbol available. \symbol[qed] + +\def\QED{\symbol[qed]} + +%D \macros +%D {genfrac} +%D +%D [TH] The definition of \type {\genfrac} \& co. is not +%D trivial, because it allows some flexibility. This is +%D supposed to be a user||level command, but will fail quite +%D desparately if called outside math mode (\CONTEXT\ redefines +%D \type {\over}) +%D +%D [HH] We clean up this macro a bit and (try) to make it +%D understandable. The expansion is needed for generating +%D the second argument to \type {\dogenfrac}, which is to +%D be a control sequence like \type {\over}. + +\unexpanded\def\genfrac#1#2#3#4% + {\edef\!!stringa + {#1#2}% + \expanded + {\dogenfrac{#4}% + \csname + \ifx @#3@% + \ifx\!!stringa\empty + \strippedcsname\normalover + \else + \strippedcsname\normaloverwithdelims + \fi + \else + \ifx\!!stringa\empty + \strippedcsname\normalabove + \else + \strippedcsname\normalabovewithdelims + \fi + \fi + \endcsname}% + {#1#2#3}} + +\def\dogenfrac#1#2#3#4#5% + {{#1{\begingroup#4\endgroup#2#3\relax#5}}} + +%D \macros +%D {dfrac, tfrac, frac, dbinom, tbinom, binom} +%D +%D [TH] No need to make these \type {\unexpanded} as well. + +%\def\dfrac {\genfrac\empty\empty\empty\displaystyle} +%\def\tfrac {\genfrac\empty\empty\empty\textstyle} +%\def\frac {\genfrac\empty\empty\empty\donothing} + +\def\dfrac {\genfrac{}{}{}\displaystyle} +\def\tfrac {\genfrac{}{}{}\textstyle} +\def\frac {\genfrac{}{}{}\donothing} + +\def\dbinom{\genfrac()\zeropoint\displaystyle} +\def\tbinom{\genfrac()\zeropoint\textstyle} +\def\binom {\genfrac()\zeropoint\donothing} + +\def\xfrac {\genfrac{}{}{}\scriptstyle} +\def\xxfrac{\genfrac{}{}{}\scriptscriptstyle} + +%D Better: + +\unexpanded\def\frac#1#2{\mathematics{\genfrac{}{}{}\donothing{#1}{#2}}} + +%D [HH] This shows up as: +%D +%D \startbuffer +%D $\dfrac {1}{2} \tfrac {1}{2} \frac {1}{2}$ +%D $\dbinom{1}{2} \tbinom{1}{2} \binom{1}{2}$ +%D \stopbuffer +%D +%D \typebuffer +%D +%D \getbuffer + +%D \macros +%D {text} +%D +%D [TH] \type {\text} is a command to typeset more or less +%D ordinary text inside of super- and sub|-|scripts. It has to +%D do a full font switch to get the sides right, so it will be +%D quite slow. \type {\text} kind of replaces \CONTEXT's \type +%D {\mathstyle} command. + +%D [HH] This macro is now also moved to the core, but we +%D keep it here as well for completeness. +%D +%D \starttyping +%D \unexpanded\def\mathtext +%D {\mathortext\domathtext\hbox} % {\ifmmode\@EA\dotext\else\@EA\hbox\fi} +%D +%D \def\domathtext#1% +%D {\mathchoice +%D {\dodomathtext\displaystyle\textface {#1}}% +%D {\dodomathtext\textstyle \textface {#1}}% +%D {\dodomathtext\textstyle \scriptface {#1}}% +%D {\dodomathtext\textstyle \scriptscriptface{#1}}} +%D +%D \def\dodomathtext#1#2#3% no \everymath ! +%D %{\hbox{\everymath{#1}\switchtobodyfont [#2]#3}} % 15 sec +%D {\hbox{\everymath{#1}\setcurrentfontbody{#2}#3}} % 3 sec (no math) +%D \stoptyping + +%D [HH] We use the following indirectness because \type {\text} +%D is a natural candidate for user macros (actually, it is +%D used in some modules). +%D +%D \starttyping +%D \let\text\mathtext +%D \stoptyping + +%D [HH] Actually, the font switch is not that slow when +%D typefaces are used. If needed this macro can be sped up. +%D +%D \startbuffer +%D ordinary text $x^{\text{extra ordinary text}}$ +%D \stopbuffer +%D +%D \typebuffer +%D +%D \getbuffer + +%D \macros +%D {mathhexbox} +%D +%D [TH] \type {\mathhexbox} is also user||level (already +%D defined in Plain \TEX). It allows to get a math character +%D inserted as if it was a text character. + +\gdef\mathhexbox#1#2#3{\mathtext{$\m@th\mathchar"#1#2#3$}} + +%D \macros +%D {boxed} +%D +%D [HH] Another macro that users expect (slightly adapted): + +\def\boxed% + {\ifmmode\expandafter\mframed\else\expandafter\framed\fi} + +%D \macros +%D {cfrac} +%D +%D [HH] Now let us see what this one does: +%D +%D \startbuffer +%D $\cfrac{12}{3} \cfrac[l]{12}{3} \cfrac[c]{12}{3} \cfrac[r]{12}{3}$ +%D $\cfrac{1}{23} \cfrac[l]{1}{23} \cfrac[c]{1}{23} \cfrac[r]{1}{23}$ +%D \stopbuffer +%D +%D \typebuffer +%D +%D \getbuffer + +\definecomplexorsimple\cfrac + +\def\simplecfrac + {\complexcfrac[c]} + +\def\complexcfrac[#1]#2#3% + {{\displaystyle + \frac + {\strut\ifx r#1\hfill\fi#2\ifx l#1\hfill\fi}% + {#3}}% + \kern-\nulldelimiterspace} + +%D [HH] The next alternative is nicer: + +\def\simplecfrac {\docfrac[cc]} +\def\complexcfrac[#1]{\docfrac[#1cc]} + +\def\docfrac[#1#2#3]#4#5% + {{\displaystyle + \frac + {\strut + \ifx r#1\hfill\fi#4\ifx l#1\hfill\fi}% + {\ifx r#2\hfill\fi#5\ifx l#2\hfill\fi}% + \kern-\nulldelimiterspace}} + +%D [HH] Now we can align every combination we want: +%D +%D \startbuffer +%D $\cfrac{12}{3} \cfrac[l]{12}{3} \cfrac[c]{12}{3} \cfrac[r]{12}{3}$ +%D $\cfrac{1}{23} \cfrac[l]{1}{23} \cfrac[c]{1}{23} \cfrac[r]{1}{23}$ +%D $\cfrac[cl]{12}{3} \cfrac[cc]{12}{3} \cfrac[cr]{12}{3}$ +%D $\cfrac[lc]{1}{23} \cfrac[cc]{1}{23} \cfrac[rc]{1}{23}$ +%D \stopbuffer +%D +%D \typebuffer +%D +%D \getbuffer + +\protect \endinput + +%D \macros +%D {startsubarray,substack,startsmallmatrix} +%D +%D [HH] I wonder what these are supposed to do. An example +%D will be inserted later. Contrary to the original we +%D support an optional argument between either \type {{}} or +%D \type {[]}. + +\def\startsubarray + {\doifnextcharelse\bgroup + \simplestartsubarray{\dosingleempty\complexstartsubarray}} + +\def\complexstartsubarray[#1]% + {\simplestartsubarray{#1}} + +\def\simplestartsubarray#1% + {\vcenter\bgroup + \baselineskip\fontdimen10 \scriptfont\tw@ + \advance\baselineskip\fontdimen12 \scriptfont\tw@ + \lineskip\thr@@\fontdimen8 \scriptfont\thr@@ + \lineskiplimit\lineskip + \ialign\bgroup\ifx c#1\hfil\fi$\m@th\scriptstyle##$\hfil\crcr} + +\def\stopsubarray + {\crcr\egroup + \egroup} + +\def\startsubstack + {\doifnextcharelse\bgroup + \simplestartsubstack{\dosingleempty\complexstartsubstack}} + +\def\complexstartsubstack[#1]% + {\simplestartsubstack{#1}} + +\def\simplesubstack#1% + {\startsubarray[c]#1\stopsubarray} + +\def\startsmallmatrix + {\null + \,% + \vcenter\bgroup + \baselineskip6\ex@ + \lineskip1.5\ex@ + \lineskiplimit\lineskip + \ialign\bgroup\hfil$\m@th\scriptstyle##$\hfil&&\thickspace\hfil + $\m@th\scriptstyle##$\hfil\crcr} + +\def\stopsmallmatrix + {\crcr\egroup + \egroup + \,} + +\protect \endinput |