Определенный макрос работает с \draw, но не с \fill

Определенный макрос работает с \draw, но не с \fill

Я использовал\centerarc команду, указанную вэтотответ на заполнение области, заключенной в дуги. Я сделал небольшое изменение. Я удалил \drawвнутреннюю часть определения и первый параметр.

МВЭ:

\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}

Команда \centerarcотлично работает, когда я использую \draw. Но когда я пытаюсь использовать \fill, он просто печатает команду как текст.

Почему это происходит и есть ли способ обойти эту проблему?

решение1

Команды \drawработают, потому что это:

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

расширяется до этого:

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

(с дубликатом ;в конце, что не повредит).

Но это (замена только первой команды):

\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);

становится (перенос строки добавлен для ясности):

\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);

\fillна котором инструкция заканчивается ;.

Остальные-- \centerarc\ETC. не должно вызвать никаких проблем (кроме того, что не будет работать так, как можно было бы ожидать), за исключением того, что TiкZ игнорирует бродячихтекств tikzpictureсреде, но не математике. Так что все между $... $в определении \centerarcзаписывается в PDF.

Решение: убрать ;в определении :)

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

Связанный контент