使用 calc 库对某些坐标进行 foreach 循环

使用 calc 库对某些坐标进行 foreach 循环

我正在绘制一个示意图,其中包含太阳的几个位置。为了便于说明,太阳只是一个由 12 个等距圆圈包围的圆圈a

使用calc

\documentclass[a4paper,11pt]{article}
\usepackage{tikz}
\usetikzlibrary{calc}

\begin{document}

\begin{tikzpicture}
  \def \sunrad {1};
  \foreach \cen in {(0,0),(4,0),(8,3)}%
    {%
      \draw \cen circle (\sunrad);
      \foreach \k in {0,...,11}
        \draw ($ \cen + ({360*\k/12}:{1.2*\sunrad}) $) node{a};
    }
\end{tikzpicture}

\end{document}

返回错误Paragraph ended before \tikz@cc@parse@factor was complete.

但是如果我使用

\draw[shift={\cen}] ({360*\k/12}:{1.2*\sunrad}) node{a};

然后我得到了期望的结果并且没有任何错误。

($为什么...$)施工不成功?

答案1

我不太清楚,但我猜想这calc是在寻找一个(来开始解析坐标,但它不会\cen立即展开,因此失败了。将循环更改为\foreach \cen in {{0,0},{4,0},{8,3}},并使用(\cen)而不是\cen有效。

\documentclass[a4paper,11pt]{article}
\usepackage{tikz}
\usetikzlibrary{calc}

\begin{document}

\begin{tikzpicture}
  \def \sunrad {1};
  \foreach \cen in {{0,0},{4,0},{8,3}}%
    {%
      \draw (\cen) circle (\sunrad);
      \foreach \k in {0,...,11} 
        \draw ($ (\cen) + ({360*\k/12}:{1.2*\sunrad}) $) node{a};
    }
\end{tikzpicture}

\end{document}

相关内容