![如何在参数化宏中使用 penpos/penstroke?](https://linux22.com/image/475728/%E5%A6%82%E4%BD%95%E5%9C%A8%E5%8F%82%E6%95%B0%E5%8C%96%E5%AE%8F%E4%B8%AD%E4%BD%BF%E7%94%A8%20penpos%2Fpenstroke%EF%BC%9F.png)
我正在尝试使用基础版 MetaPost (Metafont?) 创建参数化宏,以使用 penpos 和 penstroke 宏绘制形状,plain.mp
但出现错误。运行以下代码,
def curve_st(expr p) = begingroup
save z;
pair z[];
z0 = p;
z1 = p + (2,-2);
z2 = z1 + (0, 5);
z3 = z2 + (3, 0);
penpos0(tip, 180);
penpos1(stem, -30);
penpos2(stem, 0);
penpos3(tip, 180);
penstroke z0e{down}.. z1e{up} .. z2e{up} .. z3e;
%draw z0{down}.. z1{up} .. z2{up} .. z3;
endgroup enddef;
beginfig(1);
xstep = 3; stem = 1.5; tip = .2;
curve_st((-3,0)); curve_st((0,0));
endfig; end.
出现以下错误:
>> unknown path path_.l
>> z0l
! Equation cannot be performed (unknown path=numeric).
<to be read again>
据我所知,是penstroke
一个宏,它只是在根据传递给宏的计算点的“左”和“右”值后调用fill
和。我认为这在和之外不起作用。这就是 Metafont 找不到的原因。因为 draw 命令没有任何错误地工作。unfill
(radius,angle)
penpos
beginfig
endfig
z0l
我该如何在这里使用penpos
and penstroke
?或者,我必须手动计算左/右值并调用fill
/吗unfill
?
请记住,我是 MetaPost/Metafont 的完全初学者。谢谢。