
Eu usei o \centerarc
comando fornecido emesseresposta para preencher uma região delimitada por arcos. Fiz uma pequena modificação. Eu removi o \draw
interior da definição e o primeiro 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}
O comando \centerarc
funciona perfeitamente quando eu uso o \draw
. Mas quando tento usar \fill
, ele apenas imprime o comando como texto.
Por que isso está acontecendo e há uma solução alternativa?
Responder1
Os \draw
comandos funcionam porque isto:
\draw \centerarc(0,0)(48.23:60:1.6);
se expande para isso:
\draw ($(0,0)+({1.6*cos(48.23)},{1.6*sin(48.23)})$) arc (48.23:60:1.6);;
(com uma duplicata ;
no final, o que não prejudica).
Mas isto (substituindo apenas o primeiro 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);
torna-se (quebra de linha adicionada para maior clareza):
\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 termina a \fill
instrução no ;
.
O restante -- \centerarc\ETC.
não deve causar nenhum problema (exceto não funcionar como seria de esperar), exceto que TikZ ignora perdidotextoem um tikzpicture
ambiente, mas não matemática. Então, tudo entre $
... $
na definição de \centerarc
é gravado no PDF.
Solução: remova o ;
na definição :)
\def\centerarc(#1)(#2:#3:#4){ ($(#1)+({#4*cos(#2)},{#4*sin(#2)})$) arc (#2:#3:#4) }