我正在尝试在 for 循环中绘制一些点,但我一直收到此错误“包 tikz 错误:放弃此路径。您忘记了分号吗?”。
代码:
\documentclass[tikz]{standalone}
\usepackage{tkz-base}
\usepackage{tkz-euclide}
\tikzset{xaxe style/.style ={>=latex,<->}}
\tikzset{yaxe style/.style ={>=latex,<->}}
\begin{document}
\begin{tikzpicture}
\tkzInit[xmin=-16.5, xmax=16, ymin=-8.5, ymax=8, xstep=4, ystep=4]
\tkzAxeXY
\foreach \i in {0,...,11} {
\tkzDefPoint(\i*pi/6:8){P_(\i+1)}
}
\foreach \i in {1,...,5} {
\tkzDrawPoint[color=blue](P_\i)
}
\tkzDrawPoint[color=blue](12)
\foreach \i in {6,...,11} {
\tkzDrawPoint[color=red](P_\i)
}
\end{tikzpicture}
\end{document}
完整错误信息:
! Package tikz Error: Giving up on this path. Did you forget a semicolon?.
See the tikz package documentation for explanation.
Type H <return> for immediate help.
...
l.13 }
答案1
似乎这里唯一需要的是tkz-fct
,但总的来说,请按照 MS-SPO 在评论中所说的去做,并添加完整的、最小的、无需任何修改即可测试的示例。
有几个问题。首先, 中下标周围的括号\tkzDefPoint(\i*pi/6:8){P_(\i+1)}
。最后,\tkzDefPoint{<coord>}(<name>)
类似\coordinate (<name>) at (<coord>);
,因此当您<name
包含括号时,解析器会感到困惑。不过,在后面的代码中您没有使用这些括号,所以似乎您根本不想要它们?
其次,标签中没有数学表达式的解析,因此P_(\i+1)
最终结果为例如\coordinate (P_(0+1)) at ...
,\coordinate (P_1) at ...
这不是您真正想要的。在这种情况下,您可以使用\foreach [count=\j from 1] ...
和P_\j
作为坐标名称。
第三,您需要使用度数而不是弧度,因此请用pi
替换180
。
\documentclass[border=5mm]{standalone}
\usepackage{tkz-fct}
\begin{document}
\begin{tikzpicture}
\tkzInit[xmin=-16.5, xmax=16, ymin=-8.5, ymax=8, xstep=4, ystep=4]
\tkzAxeXY
\foreach [count=\j from 1] \i in {0,...,11} {
\tkzDefPoint(\i*180/6:8){P_\j}
}
\foreach \i in {1,...,5} {
\tkzDrawPoint[color=blue](P_\i)
}
\foreach \i in {6,...,11} {
\tkzDrawPoint[color=red](P_\i)
}
\tkzDrawPoint[color=black](P_12)
\end{tikzpicture}
\end{document}