%D \module %D [ file=meta-mat, %D version=2013.07.19, %D title=\METAPOST\ Graphics, %D subtitle=Math, %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 This is just an example library not meant for production. % A few accents: % / for cambria \startMPextensions vardef math_stacker_overbracket_shape = image ( draw (0,OverlayOffset) -- (0,OverlayHeight-OverlayOffset) -- (OverlayWidth,OverlayHeight-OverlayOffset) -- (OverlayWidth,OverlayOffset) withcolor OverlayLineColor ; setbounds currentpicture to boundingbox currentpicture bottomenlarged OverlayOffset ; ) enddef ; vardef math_stacker_underbracket_shape = math_stacker_overbracket_shape rotated 180 enddef ; vardef math_stacker_overparent_shape = image ( draw (0,OverlayOffset) ... (OverlayWidth/2,OverlayHeight-OverlayOffset) ... (OverlayWidth,OverlayOffset) withcolor OverlayLineColor ; setbounds currentpicture to boundingbox currentpicture bottomenlarged OverlayOffset ; ) enddef ; vardef math_stacker_underparent_shape = math_stacker_overparent_shape rotated 180 enddef ; vardef math_stacker_overbrace_shape = image ( draw (0,OverlayOffset) ... (OverlayWidth/4-OverlayOffset,OverlayHeight-OverlayOffset) ... (OverlayWidth/2-OverlayOffset,OverlayHeight-OverlayOffset) ... (OverlayWidth/2,OverlayHeight) & (OverlayWidth/2,OverlayHeight) ... (OverlayWidth/2+OverlayOffset,OverlayHeight-OverlayOffset) ... (3OverlayWidth/4+OverlayOffset,OverlayHeight-OverlayOffset) ... (OverlayWidth,OverlayOffset) withcolor OverlayLineColor ; setbounds currentpicture to boundingbox currentpicture bottomenlarged OverlayOffset ; ) enddef ; vardef math_stacker_underbrace_shape = math_stacker_overbrace_shape rotated 180 enddef ; vardef math_stacker_overbar_shape = image ( draw (0,OverlayOffset) -- (OverlayWidth,OverlayOffset) withcolor OverlayLineColor ; setbounds currentpicture to boundingbox currentpicture bottomenlarged OverlayOffset ; ) enddef ; vardef math_stacker_underbar_shape = math_stacker_overbar_shape rotated 180 enddef ; % arrows vardef math_stacker_arrow_shape(expr axis, ex, em) = image ( interim ahlength := ex/2; drawarrow ((OverlayWidth,ex/2) -- (0,ex/2)) withcolor OverlayLineColor ; setbounds currentpicture to unitsquare xysized(OverlayWidth,ex) ; ) enddef ; vardef math_stacker_leftrightarrow_shape(expr axis, ex, em) = image ( interim ahlength := ex/2; drawdblarrow ((OverlayWidth,ex/2) -- (0,ex/2)) withcolor OverlayLineColor ; setbounds currentpicture to unitsquare xysized(OverlayWidth,ex) ; ) enddef ; vardef math_stacker_rightoverleftarrow_shape(expr axis, ex, em) = image ( interim ahlength := ex/2; drawdoublearrows ((OverlayWidth,ex/2) -- (0,ex/2)) withcolor OverlayLineColor ; setbounds currentpicture to unitsquare xysized(OverlayWidth,ex) ; ) enddef ; vardef math_stacker_leftarrow_shape(expr axis, ex, em) = math_stacker_arrow_shape(axis,ex,em) enddef ; vardef math_stacker_rightarrow_shape(expr axis, ex, em) = math_stacker_arrow_shape(axis,ex,em) rotated 180 enddef ; % main handler def math_stacker_draw_accent(expr p) = draw p withpen pencircle scaled OverlayLineWidth xyscaled (2,3) rotated 45 ; enddef ; def math_stacker_draw_arrow(expr p) = draw p withpen pencircle scaled OverlayLineWidth ; enddef ; \stopMPextensions \startuniqueMPgraphic{math:stacker:\number"FE3B4}{axis,ex,em} math_stacker_draw_accent(math_stacker_overbracket_shape) ; \stopuniqueMPgraphic \startuniqueMPgraphic{math:stacker:\number"FE3B5}{axis,ex,em} math_stacker_draw_accent(math_stacker_underbracket_shape) ; \stopuniqueMPgraphic \startuniqueMPgraphic{math:stacker:\number"FE3DC}{axis,ex,em} math_stacker_draw_accent(math_stacker_overparent_shape) ; \stopuniqueMPgraphic \startuniqueMPgraphic{math:stacker:\number"FE3DD}{axis,ex,em} math_stacker_draw_accent(math_stacker_underparent_shape) ; \stopuniqueMPgraphic \startuniqueMPgraphic{math:stacker:\number"FE3DE}{axis,ex,em} math_stacker_draw_accent(math_stacker_overbrace_shape) ; \stopuniqueMPgraphic \startuniqueMPgraphic{math:stacker:\number"FE3DF}{axis,ex,em} math_stacker_draw_accent(math_stacker_underbrace_shape) ; \stopuniqueMPgraphic \startuniqueMPgraphic{math:stacker:\number"FE33E}{axis,ex,em} math_stacker_draw_accent(math_stacker_overbar_shape) ; \stopuniqueMPgraphic \startuniqueMPgraphic{math:stacker:\number"FE33F}{axis,ex,em} math_stacker_draw_accent(math_stacker_underbar_shape) ; \stopuniqueMPgraphic \startuniqueMPgraphic{math:stacker:\number"2190}{axis,ex,em} math_stacker_draw_arrow(math_stacker_leftarrow_shape(\MPvar{axis},\MPvar{ex},\MPvar{em})) ; \stopuniqueMPgraphic \startuniqueMPgraphic{math:stacker:\number"2192}{axis,ex,em} math_stacker_draw_arrow(math_stacker_rightarrow_shape(\MPvar{axis},\MPvar{ex},\MPvar{em})) ; \stopuniqueMPgraphic \startuniqueMPgraphic{math:stacker:\number"2194}{axis,ex,em} math_stacker_draw_arrow(math_stacker_leftrightarrow_shape(\MPvar{axis},\MPvar{ex},\MPvar{em})) ; \stopuniqueMPgraphic \startuniqueMPgraphic{math:stacker:\number"27F7}{axis,ex,em} math_stacker_draw_arrow(math_stacker_leftrightarrow_shape(\MPvar{axis},\MPvar{ex},\MPvar{em})) ; \stopuniqueMPgraphic \startuniqueMPgraphic{math:stacker:\number"21C4}{axis,ex,em} math_stacker_draw_arrow(math_stacker_rightoverleftarrow_shape(\MPvar{axis},\MPvar{ex},\MPvar{em})) ; \stopuniqueMPgraphic %D Radicals: \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}{axis,ex,em} draw math_radical_simple(OverlayWidth,OverlayHeight,OverlayDepth,OverlayOffset) withpen pencircle xscaled (2OverlayLineWidth) yscaled (3OverlayLineWidth/4) rotated 30 % dashed evenly withcolor OverlayLineColor ; \stopuniqueMPgraphic % \setupmathstackers % [vfenced] % [color=darkred, % alternative=mp] \endinput