diff options
Diffstat (limited to 'Master/texmf-dist/tex/context/base/mkxl/meta-tex.mkxl')
-rw-r--r-- | Master/texmf-dist/tex/context/base/mkxl/meta-tex.mkxl | 235 |
1 files changed, 235 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/context/base/mkxl/meta-tex.mkxl b/Master/texmf-dist/tex/context/base/mkxl/meta-tex.mkxl new file mode 100644 index 00000000000..5937ce4083f --- /dev/null +++ b/Master/texmf-dist/tex/context/base/mkxl/meta-tex.mkxl @@ -0,0 +1,235 @@ +%D \module +%D [ file=meta-tex, +%D version=2006.06.07, +%D title=\CONTEXT\ Support Macros, +%D subtitle=\METAPOST\ fast text insertion, +%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. + +\registerctxluafile{meta-tex}{} + +\unprotect + +% Ok, we support this in MkIV because Mojca kept the pressure on. It +% looks a bit like a hack. But in fact this method is obsolete and +% eventually might go away. + +\installcorenamespace{graphictextext} +\installcorenamespace{graphictexdepth} +\installcorenamespace{graphictexarguments} + +\permanent\protected\def\startTeXtexts#1\stopTeXtexts + {#1} + +\aliased\let\stopTeXtexts\relax + +\permanent\tolerant\protected\def\TeXtext[#1]#:#2#3% contrary to mkii we don't process yet but we do expand + {\setxvalue{\??graphictextext#2}{\meta_textext_indeed{#1}{#3}}} + +\protected\def\meta_textext_indeed#1#2% + {\begingroup + \setbox\nextbox\hbox{#2}% + \ifcsname\??graphictexdepth#1\endcsname + \lastnamedcs + \else + \syst_boxes_lower_nextbox_dp + \fi + \box\nextbox + \endgroup} + +\permanent\def\getTeXtext#1% + {\begincsname\??graphictextext#1\endcsname} + +\letvalue{\??graphictexdepth d}\syst_boxes_lower_nextbox_dp +\letvalue{\??graphictexdepth \s!depth}\syst_boxes_lower_nextbox_dp +\letvalue{\??graphictexdepth n}\donothing +\letvalue{\??graphictexdepth\s!nodepth}\donothing + +% old hackery, slightly modernized + +\permanent\protected\def\definetextext[#1]% + {\tolerant\defcsname\??graphictexarguments#1\endcsname} + +\permanent\tolerant\def\sometxt[#1]#*[#2]% + {\ifarguments + \expandafter\meta_some_txt_a + \or + \expandafter\meta_some_txt_b + \or + \expandafter\meta_some_txt_c + \or + \fi{#1}{#2}} + +\def\meta_some_txt_a#1#2#3{textext.drt("\clf_metapostescaped{#3}")} +\def\meta_some_txt_b#1#2#3{textext.drt("\mpsometxt{#1}{\clf_metapostescaped{#3}}")} +\def\meta_some_txt_c#1#2#3{textext.drt("\mpsometxt{#1}[#2]{\clf_metapostescaped{#3}}")} + +\permanent\protected\def\mpsometxt#1% + {\begincsname\??graphictexarguments#1\endcsname} + +% \definetextext[framed]{\framed} +% +% \startMPcode +% draw \sometxt[framed]{black} rotated 45 ; +% \stopMPcode +% +% But Mojca wanted more! Two arguments. +% +% \definetextext[framed]{\framed} +% +% \startMPcode +% draw \sometxt{This is for} rotated 45 ; +% draw \sometxt[framed][foregroundstyle=bold]{Mojca's}; +% draw \sometxt[framed]{eyes only!} rotated -45 ; +% \stopMPcode +% +% \definetextext[framed][#1]#2{\framed[width=4cm]{\switchtobodyfont[#1]#2}} +% \definetextext[simple]{\framed[width=8cm]} +% +% \starttext +% +% \startMPcode +% draw \sometxt{This is for} rotated 45 ; +% draw \sometxt[framed][ss,16pt] {Mojca's}; +% draw \sometxt[framed]{eyes only!} rotated -45 ; +% draw \sometxt[simple]{Quotes "indeed" work!} rotated 180 ; +% \stopMPcode +% +% \stoptext +% +% a lua one: +% +% \protected\def\definetextext[#1]#2{\setvalue{@@st@@#1}{#2}} +% +% \def\sometxt #1#{\dosometxt{#1}} % grab optional [args] +% \def\dosometxt #1#2{\ctxlua{metapost.sometxt(\!!bs#1\!!es,\!!bs#2\!!es)}} +% +% \def\sometxta #1{textext.drt("#1")} +% \def\sometxtb #1#2{textext.drt("\getvalue{@@st@@#1}{#2}")} +% \def\sometxtc #1#2#3{textext.drt("\getvalue{@@st@@#1}{\switchtobodyfont[#2]#3}")} + +% Best use the mp macro instead since it provides positioning. +% +% \startuseMPgraphic{testgraphic} +% draw \sometxt{\ruledhbox{\strut hans hagen}} scaled 3; +% % draw textext.drt("\ruledhbox{\strut hans hagen}") scaled 3; +% % draw textext.dlft("\ruledhbox{\strut hans hagen}") scaled 3; +% % draw textext.lft("\ruledhbox{\strut hans hagen}") scaled 3; +% draw llcorner currentpicture -- urcorner currentpicture withcolor yellow; +% draw lrcorner currentpicture -- ulcorner currentpicture withcolor yellow; +% draw boundingbox currentpicture withcolor blue ; +% draw origin withcolor red withpen pencircle scaled 1pt; +% \stopuseMPgraphic +% +% {\showstruts\useMPgraphic{testgraphic}} + +\permanent\protected\def\MPexponent #1#2{\mathematics{#1\times10^{#2}}} +\permanent\protected\def\MPformatted #1#2{\clf_metapostformatted{#1}{#2}} +\permanent\protected\def\MPgraphformat#1#2{\clf_metapostgraphformat{#1}{#2}} + +%D Some new fun (but exprimental for a while): + +\permanent\protected\def\MPLIBoutlinetext#1#2#3% index kind text + {\begingroup + \setbox\scratchbox\hbox{#3}% + \clf_MPLIBconvertoutlinetext\numexpr#1\relax{#2}\scratchbox + \endgroup} + +%D For now here. We don't do the whole thing, because then one can as +%D well just export to pdf. We assume consistent integration. + +\definefontsynonym[serif-normal-normal] [\s!Serif] +\definefontsynonym[serif-normal-italic] [\s!SerifItalic] +\definefontsynonym[serif-normal-oblique][\s!SerifSlanted] +\definefontsynonym[serif-bold-normal] [\s!SerifBold] +\definefontsynonym[serif-bold-italic] [\s!SerifBoldItalic] +\definefontsynonym[serif-bold-oblique] [\s!SerifBoldSlanted] + +\definefontsynonym[sans-normal-normal] [\s!Sans] +\definefontsynonym[sans-normal-italic] [\s!SansItalic] +\definefontsynonym[sans-normal-oblique] [\s!SansSlanted] +\definefontsynonym[sans-bold-normal] [\s!SansBold] +\definefontsynonym[sans-bold-italic] [\s!SansBoldItalic] +\definefontsynonym[sans-bold-oblique] [\s!SansBoldSlanted] + +\definefontsynonym[mono-normal-normal] [\s!Mono] +\definefontsynonym[mono-normal-italic] [\s!MonoItalic] +\definefontsynonym[mono-normal-oblique] [\s!MonoSlanted] +\definefontsynonym[mono-bold-normal] [\s!MonoBold] +\definefontsynonym[mono-bold-italic] [\s!MonoBoldItalic] +\definefontsynonym[mono-bold-oblique] [\s!MonoBoldSlanted] + +\installcorenamespace {svgfamily} + +\setvalue{\??svgfamily }{serif} +\setvalue{\??svgfamily serif}{serif} +\setvalue{\??svgfamily sans}{sans} +\setvalue{\??svgfamily mono}{mono} + +%D This can't change because otherwise \type {\scale[width=4cm]{graphic}} fails. + +\permanent\protected\def\svgscaled#1% + {\fastsxsy{#1}{#1}\svgnormal} + +\permanent\protected\def\svgnormal#1#2#3#4% family weight style text + {\bgroup + \edef\p_family{#1}% + \ifempty\p_family\else + \edef\p_font{\ifcsname\??svgfamily#1\endcsname\lastnamedcs\else#1\fi-#2-#3}% + \predefinedfont[\s!spec:\p_font*\s!default\space @ 10bp]% + \fi + #4% + \egroup} + +\permanent\protected\def\svgcolored#1#2#3#4% r g b text + {\colored[r=#1,g=#2,b=#3]{#4}} + +% \permanent\protected\def\svgplaced#1#2#3#4% dx dy width text +% {\doifelsenothing{#3}% +% {\hpack}% +% {\hpack to #3}% +% {\raise#2\onebasepoint\hbox{\kern#1\onebasepoint\relax#4}}} + +\permanent\protected\def\svgplaced#1#2#3#4% dx dy width text + {\doifelsenothing{#3}% + {\hpack}% + {\hpack to #3}% + {\offsetbox[\c!y=#2]\hbox{\kern#1\relax#4}}} + +\newdimen\grph_svg_scratchwidth % maybe \startsvgpos etc + +\permanent\protected\def\svgposchar#1#2#3% dx dy char + {\setbox\scratchbox\hpack\bgroup + \raise#2\onebasepoint\hbox\bgroup + \kern\dimexpr#1\onebasepoint-\grph_svg_scratchwidth\relax + \char#3\relax + \egroup + \egroup + \advance\grph_svg_scratchwidth\wd\scratchbox + \box\scratchbox} + +\permanent\protected\def\svgchar#1% char + {\char#1\relax} + +\definelayer[svgmps][\c!method=\v!fit] + +\permanent\protected\def\svgstartlayer + {\resetlayer[svgmps]% + \setlayer[svgmps]\bgroup} + +\permanent\protected\def\svgstoplayer + {\egroup + \flushlayer[svgmps]} + +\permanent\protected\def\svgsetlayer#1#2% + {\setlayer[svgmps][\c!x=#1\onebasepoint,\c!y=#2\onebasepoint]} % {#3} + +\permanent\protected\def\svghashed#1% + {\clf_svghashed#1\relax} + +\protect \endinput |