
Utilicé el \centerarc
comando proporcionado enesterespuesta para llenar una región encerrada por arcos. He hecho una ligera modificación. He eliminado el \draw
interior de la definición y el primer parámetro.
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}
El comando \centerarc
funciona perfectamente cuando uso \draw
. Pero cuando intento usarlo \fill
, simplemente imprime el comando como texto.
¿Por qué sucede esto? ¿Existe alguna solución?
Respuesta1
Los \draw
comandos funcionan porque esto:
\draw \centerarc(0,0)(48.23:60:1.6);
se expande a esto:
\draw ($(0,0)+({1.6*cos(48.23)},{1.6*sin(48.23)})$) arc (48.23:60:1.6);;
(con un duplicado ;
al final, que no hará daño).
Pero esto (reemplazando solo el primer comando):
\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);
se convierte (salto de línea agregado para mayor claridad):
\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);
que finaliza la \fill
instrucción en el ;
.
El resto -- \centerarc\ETC.
no debería causar ningún problema (excepto que no funciona como cabría esperar), excepto que TikZ ignora a los extraviadostextoen un tikzpicture
entorno, pero no en matemáticas. Entonces, todo lo que está entre $
... $
en la definición de \centerarc
está escrito en el PDF.
Solución: elimine el ;
en la definición :)
\def\centerarc(#1)(#2:#3:#4){ ($(#1)+({#4*cos(#2)},{#4*sin(#2)})$) arc (#2:#3:#4) }