
Ich habe den \centerarc
Befehl verwendet inDasAntwort zum Füllen eines von Bögen umschlossenen Bereichs. Ich habe eine kleine Änderung vorgenommen. Ich habe das \draw
Innere 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 \centerarc
funktioniert 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 \draw
Befehle 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 \fill
Anweisung 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 tikzpicture
Umgebung, aber nicht in Mathematik. Daher wird alles zwischen $
... $
in der Definition von \centerarc
in 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) }