我想framed
使用 Metafun 为环境绘制自定义框架。我目前正在 Metafun 定义中对框架颜色进行硬编码。但是,我希望 Metafun 框架能够引用环境framecolor
的选项framed
并相应地更改颜色。这是我目前使用硬编码颜色选项所得到的结果:
\startuniqueMPgraphic{box}
path p;
p := unitcircle xscaled \overlaywidth yscaled \overlayheight;
fill p withcolor .85white;
draw p withpen pencircle scaled 2pt withcolor .625red;
\stopuniqueMPgraphic
\defineoverlay[box][\uniqueMPgraphic{box}]
\starttext
\framed[framecolor=blue, background=box]{test}
\stoptext
Metafun 定义是否可以访问framed
选项或者是否有其他方法可以做到这一点?
答案1
您可以使用\framedparameter{framecolor}
来访问该参数。如果未设置 framecolor,则会导致错误。您可以使用\MPcolor
with\framedparameter
来修复该问题。示例:
\startuniqueMPgraphic{box}
path p;
p := unitcircle xscaled \overlaywidth yscaled \overlayheight;
fill p withcolor .85white;
draw p withpen pencircle scaled 2pt withcolor \MPcolor{\framedparameter{framecolor}};
\stopuniqueMPgraphic
\defineoverlay
[box]
[\uniqueMPgraphic{box}]
\starttext
\framed[framecolor=blue, background=box]{test}
\framed[background=box]{foobar}
\stoptext