我的代码出现错误,有人能帮我吗?我试图创建两个同心圆,但似乎不起作用。
\def\n{10}
\defn\radio{3.00cm}
\begin{tikzpicture}
\foreach \x in {1,...,\n}
{
\coordinate (cn\x) at ({(1+2*\x)*180/\n-90}:\radio);
\node (n\x) at (cn\x) {$n_\x$};
\coordinate (cm\x) at ({(1+2*\x)*180/\n-45}:(\radio+1));
\node (m\x) at (cm\x) {$m_\x$};
}
\end{tickzpicture}
答案1
注意拼写错误,你写了\end{tickzpicture}
。此外,你可以指定\radio
为\def\radio{3}
。tikzpicture 默认为 1 = 1cm,因此无需指定它。
最后,错误出现的原因是:...:(\radio+1));
如果您想括住一个计算,那么您需要使用花括号,否则 Tikz 会将它们与其他计算混淆。
此外,由于您的\x
数字达到 10,您还需要将其括在花括号中,例如$n_{\x}$
,否则,您将只能正确显示第一个数字,如下图所示:
更新
如果要添加连接节点的弧,有两种方法。第一种方法是添加以下代码:
\foreach \x [remember=\x as \lastx (initially 1)] in {1,...,\n,1}{%
\draw (n\lastx) to [bend right=10] (n\x);
\draw (m\lastx) to [bend right=10] (m\x);
}
曲线与圆形非常相似,但不是 100%。这时第二种方法就派上用场了。基本上,你在背景中画两个圆圈,然后用白色填充节点。现在你有一个完美的圆形链接,可以链接到所有节点。我建议使用这种方法。
输出
代码
\documentclass[tikz, margin=10pt]{standalone}
\begin{document}
\def\n{10}
\def\radio{3}
\begin{tikzpicture}
\draw (0,0) circle (\radio);
\draw (0,0) circle (\radio+1);
\foreach \x in {1,...,\n}{
\coordinate (cn\x) at ({(1+2*\x)*180/\n-90}:\radio);
\node[fill=white] (n\x) at (cn\x) {$n_{\x}$};
\coordinate (cm\x) at ({(1+2*\x)*180/\n-45}:{\radio+1});
\node[fill=white] (m\x) at (cm\x) {$m_{\x}$};
}
\node at (0,5) {Using circles};
\begin{scope}[xshift=10cm]
\node at (0,5) {Using a $\backslash$foreach statement};
\foreach \x in {1,...,\n}{
\coordinate (cn\x) at ({(1+2*\x)*180/\n-90}:\radio);
\node[fill=white] (n\x) at (cn\x) {$n_{\x}$};
\coordinate (cm\x) at ({(1+2*\x)*180/\n-45}:{\radio+1});
\node[fill=white] (m\x) at (cm\x) {$m_{\x}$};
}
\foreach \x [remember=\x as \lastx (initially 1)] in {1,...,\n,1}{%
\draw (n\lastx) to [bend right=10] (n\x);
\draw (m\lastx) to [bend right=10] (m\x);
}
\end{scope}
\end{tikzpicture}
\end{document}