Ein definiertes Makro funktioniert mit \draw, aber nicht mit \fill

Ein definiertes Makro funktioniert mit \draw, aber nicht mit \fill

Ich habe den \centerarcBefehl verwendet inDasAntwort zum Füllen eines von Bögen umschlossenen Bereichs. Ich habe eine kleine Änderung vorgenommen. Ich habe das \drawInnere der Definition und den ersten Parameter entfernt.

MWE:

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{calc}
\begin{document}

    \centering
    \begin{tikzpicture}
    \def\centerarc(#1)(#2:#3:#4){ ($(#1)+({#4*cos(#2)},{#4*sin(#2)})$) arc (#2:#3:#4); }
    \coordinate (A) at (0,0);
    \coordinate (B) at (1.6,0);
    \coordinate (C) at (4,-2.5);

    \draw \centerarc(0,0)(48.23:60:1.6);
    \draw \centerarc(1.6,0)(120:180:1.6);   
    \draw \centerarc(4,-2.5)(128.47:147.99:4.72);
    \fill[red]\centerarc(0,0)(48.23:60:1.6) -- \centerarc(1.6,0)(120:180:1.6) -- \centerarc(4,-2.5)(128.47:147.99:4.72);


    \end{tikzpicture}

\end{document}

Der Befehl \centerarcfunktioniert einwandfrei, wenn ich verwende \draw. Aber wenn ich versuche, zu verwenden \fill, wird der Befehl nur als Text ausgedruckt.

Warum passiert das und gibt es eine Problemumgehung?

Antwort1

Die \drawBefehle funktionieren aus folgendem Grund:

\draw \centerarc(0,0)(48.23:60:1.6);

erweitert sich wie folgt:

\draw ($(0,0)+({1.6*cos(48.23)},{1.6*sin(48.23)})$) arc (48.23:60:1.6);;

(mit einem „Duplikat“ ;am Ende, das schadet nicht).

Aber dies (ersetzt nur den ersten Befehl):

\fill[red] \centerarc(0,0)(48.23:60:1.6) -- \centerarc(1.6,0)(120:180:1.6) -- \centerarc(4,-2.5)(128.47:147.99:4.72);

wird (Zeilenumbruch zur Vereinfachung hinzugefügt):

\fill[red] ($(#1)+({#4*cos(#2)},{#4*sin(#2)})$) arc (#2:#3:#4);
  -- \centerarc(1.6,0)(120:180:1.6) -- \centerarc(4,-2.5)(128.47:147.99:4.72);

Dadurch wird die \fillAnweisung am beendet ;.

Der Rest -- \centerarc\ETC.sollte keine Probleme verursachen (außer, dass er nicht wie erwartet funktioniert), außer dass TikZ ignoriert StreunerTextin einer tikzpictureUmgebung, aber nicht in Mathematik. Daher wird alles zwischen $... $in der Definition von \centerarcin das PDF geschrieben.

Lösung: Entfernen Sie das ;in der Definition :)

\def\centerarc(#1)(#2:#3:#4){ ($(#1)+({#4*cos(#2)},{#4*sin(#2)})$) arc (#2:#3:#4) }

verwandte Informationen