你好,我正在学习在 tikz 中使用控制结构和其他东西,我有以下代码:
\documentclass{article}
\usepackage{tikz}
\begin{document}
\begin{figure}[h]
\centering
\begin{tikzpicture}
\foreach \X [remember=\X as \LastX] in {0,...,10}
{\ifnum\X=0
\node [circle,fill=black!40,inner sep=2pt](X\X) at (120:5){};
\else
\node [circle,fill=black!40,inner sep=2pt](X\X) at
({120-\X*360/12}:5){};
\draw[black] (X\LastX) -- (X\X);
\fi}
\node[rotate={30+360/12}] (X11) at ({120+360/12}:5) {$\cdots$};
\draw[black] (X10) -- (X11);
\draw[black] (X11) -- (X0);
\end{tikzpicture}
\end{figure}
\end{document}
这给了我一个循环,但现在我需要将边缘的颜色交替为红色和蓝色,但我还没有做到这一点。也许使用两个变量或类似的东西?你能帮我一下吗?
答案1
只需定义一个颜色列表,然后使用一些模数函数从中进行选择即可。在最简单的交替颜色情况下,您需要模 2。
\documentclass{article}
\usepackage{tikz}
\begin{document}
\begin{figure}[h]
\centering
\begin{tikzpicture}
\def\lstcolors{"red","blue"}
\foreach \X [remember=\X as \LastX] in {0,...,12}
{\ifnum\X=0
\node [circle,fill=black!40,inner sep=2pt](X\X) at (120:5){};
\else
\ifnum\X=11
\node[rotate={30+360/12}] (X11) at ({120+360/12}:5) {$\cdots$};
\else
\node [circle,fill=black!40,inner sep=2pt](X\X) at
({120-\X*360/12}:5){};
\fi
\draw[color/.evaluated={{\lstcolors}[Mod(\X,2)]}] (X\LastX) -- (X\X);
\fi}
\end{tikzpicture}
\end{figure}
\end{document}