定義的巨集適用於 \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.應該不會造成任何麻煩(除了不按預期工作),除了 TikZ 忽略雜散文字tikzpicture環境中,但不是在數學中。因此定義中$...之間的所有內容都會寫入 PDF。$\centerarc

解決方案:刪除;定義中的 :)

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

相關內容