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}

我建议将第二个变量重命名为\col\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\)例如$\alpha$

但事实并非如此。

因此你需要使用

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

相关内容