如何在參數化宏中使用penpos/penlines?

如何在參數化宏中使用penpos/penlines?

我正在嘗試建立參數化宏,以在帶有底座的 MetaPost(Metafont?)中使用 penpos 和筆畫宏繪製形狀,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 找不到.因為繪製指令工作時沒有任何錯誤。unfill(radius,angle)penposbeginfigendfigz0l

我如何在這裡使用penposand penstroke?或者,我是否必須手動計算左/右值並調用fill/ unfill

請記住,我是 MetaPost/Metafont 的初學者。謝謝。

答案1

save z;
pair z[];

似乎是有問題的部分。z很特別。替換為

clearxy;

似乎在這裡做。這樣做並編譯你的文件,我得到了這個輸出。

元後事物

相關內容