编辑此代码以获得替代颜色边缘

编辑此代码以获得替代颜色边缘

你好,我正在学习在 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}

相关内容