diff options
Diffstat (limited to 'tex/context/base/math-rad.mkvi')
-rw-r--r-- | tex/context/base/math-rad.mkvi | 287 |
1 files changed, 0 insertions, 287 deletions
diff --git a/tex/context/base/math-rad.mkvi b/tex/context/base/math-rad.mkvi deleted file mode 100644 index 541a7038e..000000000 --- a/tex/context/base/math-rad.mkvi +++ /dev/null @@ -1,287 +0,0 @@ -%D \module -%D [ file=math-rad, -%D version=2013.07.13, -%D title=\CONTEXT\ Math Macros, -%D subtitle=Radicals, -%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. - -\writestatus{loading}{ConTeXt Math Macros / Radicals} - -\unprotect - -%D \starttyping -%D $\sqrt[3]{10}$ -%D \stoptyping -%D -%D This root command will be overloaded later: - -%D Old stuff: - -% \def\rootradical{\Uroot \defaultmathfamily "221A } % can be done in char-def -% \def\surdradical{\Uradical \defaultmathfamily "221A } % can be done in char-def - -\def\root#1\of{\rootradical{#1}} % #2 - -\unexpanded\def\sqrt{\doifnextoptionalelse\rootwithdegree\rootwithoutdegree} - -\def\rootwithdegree[#1]{\rootradical{#1}} -\def\rootwithoutdegree {\rootradical {}} - -%D Even older stuff: - -% % is now a ordinary character -% -% \let\normalsurd\surd % \Uradical "0 "221A -% \unexpanded\def\surd{\normalsurd{}} - - -%D The real thing: - -\installcorenamespace{mathradical} -\installcorenamespace{mathradicalalternative} - -\installcommandhandler \??mathradical {mathradical} \??mathradical - -\setupmathradical - [\c!alternative=\v!normal, - \c!mpoffset=.25\exheight] - -\appendtoks - \setuevalue{\currentmathradical}{\math_radical_handle{\currentmathradical}} -\to \everydefinemathradical - -\unexpanded\def\math_radical_handle#tag% - {\begingroup - \edef\currentmathradical{#tag}% - \doifnextoptionalelse\math_radical_degree_yes\math_radical_degree_nop} - -\def\math_radical_alternative{\csname\??mathradicalalternative\mathradicalparameter\c!alternative\endcsname} - -\def\m_math_no_degree{{}} - -\def\math_radical_degree_yes[#degree]{\edef\currentmathradicaldegree{#degree}\math_radical_indeed} -\def\math_radical_degree_nop {\let\currentmathradicaldegree\m_math_no_degree\math_radical_indeed} - -\def\math_radical_indeed#body% - {\math_radical_alternative{#body}\endgroup} - -\setvalue{\??mathradicalalternative\v!default}% #1% - {\rootradical{\currentmathradicaldegree}} - -\setvalue{\??mathradicalalternative\v!normal}#body% - {\edef\p_color{\mathradicalparameter\c!color}% - \ifx\p_color\empty - \rootradical{\currentmathradicaldegree}{#body}% {} really needed as \rootradical expands first - \else\ifx\currentmathradicaldegree\empty - \pushcolor[\p_color]% - \rootradical{\currentmathradicaldegree}% - {\popcolor#body}% - \else - \pushcolor[\p_color]% - \rootradical{\popcolor\currentmathradicaldegree\pushcolor[\p_color]}% - {\popcolor#body}% - \fi\fi} - -% As I had a long standing whish to see a proper final root element I decided -% to make one my own. -% -% \startMPcode -% path p ; p := unitsquare xysized(4cm,1cm) ; -% -% path q ; q := boundingbox p enlarged (bbheight(p)/10) ; -% numeric h ; h := bbheight(q) ; -% -% draw p ; -% draw -% llcorner q shifted (-h/2,h/2) -- -% llcorner q shifted (-h/4,0) -- -% ulcorner q -- -% urcorner q -- -% urcorner q shifted (0,-h/10) ; -% \stopMPcode -% -% \startMPextensions -% vardef math_root(expr w,h,d,o) = -% path q ; q := boundingbox unitsquare xysized(w,h) enlarged (o); -% llcorner q shifted (-h/2,h/2) -- -% llcorner q shifted (-h/4,-d) -- -% ulcorner q -- -% urcorner q -- -% urcorner q shifted (0,-h/10) -% enddef ; -% \stopMPextensions -% -% \startuniqueMPgraphic{root}{width,height,depth,offset,linewidth} -% pickup pencircle scaled \MPvar{linewidth} ; -% draw math_root(\MPvar{width},\MPvar{height},\MPvar{depth},\MPvar{offset}) ; -% \stopuniqueMPgraphic -% -% \unexpanded\def\sqrt#1% -% {\begingroup -% \setbox\scratchbox\mathstylehbox{#1}% -% \scratchoffset\MPrawvar{root}{offset}%.25\exheight -% \scratchwidth \wd\scratchbox -% \scratchheight\ht\scratchbox -% \scratchdepth \dp\scratchbox -% \setbox2=\hbox\bgroup % todo: tag this box as sqrt -% \uniqueMPgraphic -% {root}% -% {width=\the\scratchwidth,% -% depth=\the\scratchdepth,% -% height=\the\scratchheight,% -% offset=\the\scratchoffset, -% linewidth=\the\linewidth}% -% \egroup -% \scratchdimen\wd2 -% \lower\dimexpr\scratchoffset+\scratchdepth\relax\box2 -% \hskip-\scratchdimen -% \hbox to \scratchdimen{\hss\box\scratchbox\hskip\scratchoffset}% -% \endgroup} - -\startMPextensions - vardef math_radical_simple(expr w,h,d,o) = - (-h/2-o,h/2-o) -- - (-h/4-o,-d-o) -- - (-o,h+o) -- - (w+o,h+o) -- - (w+o,h-h/10+o) - enddef ; -\stopMPextensions - -\startuniqueMPgraphic{math:radical:default}%{...} - draw - math_radical_simple(OverlayWidth,OverlayHeight,OverlayDepth,OverlayOffset) - withpen pencircle xscaled (2OverlayLineWidth) yscaled (3OverlayLineWidth/4) rotated 30 - % dashed evenly - withcolor OverlayLineColor ; -\stopuniqueMPgraphic - -% todo: spacing .. this is just an experiment (article driven) - -\setvalue{\??mathradicalalternative\v!mp}#body% we could use dowithnextbox - {\begingroup - \scratchoffset\mathradicalparameter\c!mpoffset - \setbox\nextbox\mathstylehbox{#body}% - % we use the \overlay variables as these are passes anyway and - % it's more efficient than using parameters - \edef\overlaywidth {\the\wd\nextbox}% - \edef\overlayheight {\the\ht\nextbox}% - \edef\overlaydepth {\the\dp\nextbox}% - \edef\overlayoffset {\the\scratchoffset}% - \edef\overlaylinewidth{\the\linewidth}% - \edef\overlaylinecolor{\mathradicalparameter\c!color}% - % - \edef\p_mp{\mathradicalparameter\c!mp}% - % - \setbox\scratchbox\hbox\bgroup % todo: tag this box as sqrt - \uniqueMPgraphic - {\p_mp}% - %{...}% - \egroup - \scratchdimen \wd\scratchbox - \scratchtopoffset \dimexpr\scratchoffset+\dp\nextbox\relax - \scratchbottomoffset\dimexpr\scratchoffset+\ht\nextbox/2\relax - \hbox to \scratchdimen{\hss\box\nextbox\hskip\scratchoffset}% - \hskip-\scratchdimen - \lower\dimexpr\scratchtopoffset\box\scratchbox% - \ifx\currentmathradicaldegree\empty \else - \setbox\scratchbox\mathstylehbox{\scriptscriptstyle\currentmathradicaldegree\hss}% - \wd\scratchbox\scratchdimen - \hskip-\scratchdimen - \raise\dimexpr\scratchbottomoffset\box\scratchbox - \fi - \endgroup} - -\definemathradical[sqrt][mp=math:radical:default] - -% \setupmathradical[sqrt][alternative=normal,color=darkblue] -% \setupmathradical[sqrt][alternative=mp,color=darkgreen] - -%D Because I wanted to illustrate some more fun stuff another mechanism -%D is provided as well ... let's put some dangerous tools in the hand of -%D math juglers like Aditya. - -\installcorenamespace{mathornament} -\installcorenamespace{mathornamentalternative} - -\installcommandhandler \??mathornament {mathornament} \??mathornament - -\setupmathornament - [\c!alternative=\v!mp, % currently mp only .. maybe some day layer too - \c!mpoffset=.25\exheight] - -\appendtoks - \setuevalue{\currentmathornament}{\math_ornament_handle{\currentmathornament}} -\to \everydefinemathornament - -\unexpanded\def\math_ornament_handle#tag#body% - {\begingroup - \edef\currentmathornament{#tag}% - \csname\??mathornamentalternative\mathornamentparameter\c!alternative\endcsname{#body}% - \endgroup} - -\setvalue{\??mathornamentalternative\v!mp}#body% we could use dowithnextbox - {\begingroup - \scratchoffset\mathornamentparameter\c!mpoffset - \setbox\nextbox\mathstylehbox{#body}% - \edef\overlaywidth {\the\wd\nextbox}% - \edef\overlayheight {\the\ht\nextbox}% - \edef\overlaydepth {\the\dp\nextbox}% - \edef\overlayoffset {\the\scratchoffset}% - \edef\overlaylinewidth{\the\linewidth}% - \edef\overlaylinecolor{\mathornamentparameter\c!color}% - \edef\p_mp{\mathornamentparameter\c!mp}% - % thw width of the graphic determines the width of the final result - \setbox\scratchbox\hbox{\uniqueMPgraphic{\p_mp}}% todo: add code key + tag - \scratchdimen \wd\scratchbox - % \scratchtopoffset \dimexpr\scratchoffset+\dp\nextbox\relax - % \scratchbottomoffset\dimexpr\scratchoffset+\ht\nextbox/2\relax - \hbox to \scratchdimen{\hss\box\nextbox\hss}% - \hskip-\scratchdimen - \box\scratchbox - \endgroup} - -% \startMPextensions -% vardef math_ornament_hat(expr w,h,d,o,l) = -% image ( path p ; p := -% (w/2,h + 10l) -- -% (o + w,h + o) -- -% (w/2,h + 7l) -- -% (-o,h + o) -- -% cycle ; -% fill p ; -% setbounds currentpicture to (-o,0) -- (w+o,0) -- (w+o,h+2o) -- (-o,h+2o) -- cycle ; -% ) -% enddef ; -% \stopMPextensions -% -% \startuniqueMPgraphic{math:ornament:hat} -% draw -% math_ornament_hat( -% OverlayWidth, -% OverlayHeight, -% OverlayDepth, -% OverlayOffset, -% OverlayLineWidth -% ) -% withpen -% pencircle -% xscaled (2OverlayLineWidth) -% yscaled (3OverlayLineWidth/4) -% rotated 30 -% withcolor -% OverlayLineColor ; -% draw boundingbox currentpicture; -% \stopuniqueMPgraphic -% -% \definemathornament [mathhat] [mp=math:ornament:hat] -% -% \dorecurse{8}{$\mathhat{\blackrule[width=#1ex,color=gray]}$ } - -\protect \endinput |