Wie verwende ich Penpos/Penstroke in einem parametrisierten Makro?

Wie verwende ich Penpos/Penstroke in einem parametrisierten Makro?

Ich versuche, ein parametrisiertes Makro zu erstellen, um eine Form mit Penpos- und Penstroke-Makros in MetaPost (Metafont?) mit plain.mpBase zu zeichnen, aber ich erhalte eine Fehlermeldung. Wenn ich den folgenden Code ausführe,

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.

gibt den folgenden Fehler aus:

>> unknown path path_.l
>> z0l
! Equation cannot be performed (unknown path=numeric).
<to be read again>

Soweit ich es verstehe, handelt es penstrokesich dabei um ein Makro, das einfach fillund aufruft unfill, nachdem die „linken“ und „rechten“ Werte der Punkte auf Grundlage der (radius,angle)an das Makro übergebenen berechnet wurden. Ich nehme an, dass dies außerhalb von und penposnicht funktioniert . Und deshalb kann Metafont nicht finden . Weil der Zeichenbefehl ohne Fehler funktioniert.beginfigendfigz0l

Wie kann ich hier penposund verwenden penstroke? Oder muss ich die Links-/Rechtswerte manuell berechnen und fill/ aufrufen unfill?

Bitte bedenken Sie, dass ich ein absoluter Anfänger in MetaPost/Metafont bin. Vielen Dank.

Antwort1

Der

save z;
pair z[];

scheint der problematische Teil zu sein. zist etwas Besonderes. Ersetzen Sie es durch

clearxy;

scheint hier zu funktionieren. Wenn ich das mache und Ihre Datei kompiliere, erhalte ich diese Ausgabe.

Metapost-Dinger

verwandte Informationen