我想要一个vardef
宏来返回图片和边界框的对。我不想使用运算符setbound
,因为一旦我这样做,我就无法再使用 访问图片的组件了pathpart
。
我发现metapost vardef 返回多个值但这是返回相同数字类型的多个值。是否可以以vardef
某种方式返回一组 (图片、路径) 或 (图片、图片)?如果不行,我需要vardef
为每种结果类型创建两个宏。
我尝试了很多方法,其中包括:
vardef Foo( expr w, h)
% define pic
pic
end group,begingroup
% define pic
pic
endif
picture foo[]; foo = Foo( 2, 4);
答案1
如果您没有完全忽略 MetaPost 的所有语法规则(如在原始帖子中所做的那样),那么这将不会出现问题。
vardef Foo(expr w, h) =
image (
draw fullcircle xyscaled(w, h) ;
)
endgroup, begingroup
image (
draw fullsquare xyscaled(w, h) ;
)
enddef;
beginfig(0) ;
for p := Foo(2cm, 4cm):
draw p ;
endfor ;
endfig ;
end ;
我在这里使用 MetaFun 格式,因此mpost
必须告知加载它:
$ mpost -mem=metafun test.mp