假设我想在TikZ中构建一个循环图,其中包含可变数量的节点,标记为v0,v1,...,v_n-1,用于我选择的某些n(例如,5)。
我希望能够在TikZ中使用\ foreach命令迭代地(1)定义节点,以及(2)连接节点。我希望能够将v_i连接到v_(i + 1)和v_i连接到v_ {i + 2},比如说。
\foreach \i in {0, ..., 4}
{\path (\i*72:3) node (v\i) {};}
完美地构造节点。但是当我想绘制一些线条时,
\foreach \i \in {0, ..., 3}
{ \draw (v\i) -- (v{\i+1}); }
????
不起作用。
也没有 \foreach \i / \j in {0/1, ..., 3/4}
{ \draw (v\i) -- (v{\j}); }
我收到错误“没有这样的形状v0”或类似的东西。
我知道这一定很容易,但我无法弄明白。有什么建议吗?
作为一个后续内容,能够使用单个\foreach
命令连接v_i和v_ {i + 4}或其他东西会很好,并让TikZ / pgf为我做模块化算法而不需要担心溢出。
答案 0 :(得分:2)
这对我有用:
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{shapes,fit,arrows,positioning}
\tikzstyle{vertex} = [circle, draw, thick, text centered]
\tikzstyle{edge} = [draw, thick,->]
\begin{document}
\begin{tikzpicture}[scale=1]
\foreach \x in {0,...,6}
\node[vertex] (\x) at (\x*360/7:3) {v\x};
\foreach \x/\y in {0/1,1/2,2/3,3/4,4/5,5/6,6/0}
\draw[edge] (\x) to (\y);
\end{tikzpicture}
\end{document}
语法{0/1,...,5/6}
对我不起作用。但我承认,我花了一些时间试图找到一个好的解决方案,但我仍然不满意。
答案 1 :(得分:2)