尝试使用 \tkzDefPoint 时出现“放弃这条路径。您忘记了分号吗?”

尝试使用 \tkzDefPoint 时出现“放弃这条路径。您忘记了分号吗?”

我正在尝试在 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}

相关内容