METAPOST vardef 将多个非数字类型作为单个答案返回?

METAPOST vardef 将多个非数字类型作为单个答案返回?

我想要一个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

在此处输入图片描述

相关内容