TikZ 中的控制結構

TikZ 中的控制結構

我現在剛學習 TikZ,正在嘗試一些控制結構。有人可以幫我解決下面的程式碼嗎?

\documentclass{article}

\usepackage{tikz}

\begin{document}

\begin{center}
\begin{tikzpicture}
    \draw[fill=black] (0,0)circle(0.05) node[above=1.5]{You};
    \foreach \(\x,\y) in {(-2,green),(-1,red),(0,black),(1,blue),(2,yellow)}
    {
        \filldraw[draw=\y] (0,0)--(\x,-1);
        \draw[fill=black] (-\x,-1)circle(0.05);
    }   
\end{tikzpicture}
\end{center}

\end{document}

我知道問題出在我嘗試使用的地方

\foreach \(\x,\y) in {(-2,green),(-1,red),(0,black),(1,blue),(2,yellow)}

TikZ 有辦法處理這樣的事情嗎?

答案1

是的,有一種方法可以做到這一點。

取自第 83 條/第 911 頁PGF/TikZ 手冊 (v3.0.0)

多個變數。您經常希望同時迭代兩個變數。由於可以嵌套\foreach循環,因此這通常很簡單。然而,您有時希望變數“同時”迭代。例如,我們可能會得到一個連接兩個座標的邊列表,並且可能想要迭代這些邊。這樣做時,我們希望將邊的來源和目標設定為兩個不同的變數。

為此,您可以使用以下語法:⟨變數⟩可能不僅僅是單一 TEX 變數。相反,它也可以是由斜線 ( ) 分隔的變數列表/。在這種情況下,列表項目也可以是由斜線分隔的值列表。

假設⟨變數⟩列表項是值列表,每次⟨命令⟩被執行時,每個變數⟨變數⟩設定為構成目前清單項目的清單的一部分。

PGF/TikZ 文件非常詳細,整個部分都\foreach很好地引導您使用循環。我不建議您在第一次學習時從頭到尾閱讀(完整文件超過 1000 頁),但如果您想詳細了解新知識,那麼這是非常好的。

所以你應該更換線路

\foreach \(\x,\y) in {(-2,green),(-1,red),(0,black),(1,blue),(2,yellow)}

\foreach \x/\col in {-2/green, -1/red, 0/black, 1/blue, 2/yellow}

我建議將第二個變數重命名為\color \color/\colour因為它更具描述性。您可能會發現自己相當頻繁地循環遍歷 (x,y) 座標對,因此您不想感到困惑。

這就是您的範例的樣子:

\documentclass{article}

\usepackage{tikz}

\begin{document}

\begin{tikzpicture}
    \draw [fill=black] (0,0) circle (0.05) node [above=1.5] {You};
    \foreach \x/\col in {-2/green, -1/red, 0/black, 1/blue, 2/yellow}
    {
      \filldraw [draw=\col] (0, 0) -- (\x, -1);
      \draw [fill=black] (-\x, -1) circle (0.05);
    }
\end{tikzpicture}

\end{document}

其編譯結果如下:

在此輸入影像描述

答案2

好吧,即使它支援類似 Python 的循環,\(仍然會導致問題,因為它是內聯數學環境,例如\(\alpha\)is $\alpha$

但事實並非如此。

因此你需要使用

\foreach \x/\y in {-2/green,-1/red,0/black,1/blue,2/yellow}

相關內容