tikz 代码在一段时间后打开时无法编译

tikz 代码在一段时间后打开时无法编译

几个月前我完成了我的博士学位,然后编译它完全没问题。今天我打开它进行修改,在编译过程中我收到有关“缺失数字被视为零”的错误消息。我意识到这是关于在计算值时使用括号的问题。

例如这个有效:

\documentclass{article}
\usepackage{pgfplots}
\usepackage{tikz}

\begin{document}
 \begin{tikzpicture}
 \def\x{5};
 \def\y{4.5};
\foreach \p in {180,160,...,20}
{
\draw (0,0) -- (\x*\p:\y*\p/100);
}
\end{tikzpicture}
\end{document}

但这不起作用,而 2 个月前它运行得很好

\documentclass{article}
\usepackage{pgfplots}
\usepackage{tikz}

\begin{document}

 \begin{tikzpicture}
 \def\x{5};
 \def\y{4.5};
\foreach \p in {180,160,...,20}
{
\draw (0,0) --({\x*(\p-20)}:{\y*({1.80-\p/100})});
}
\end{tikzpicture}

\end{document}

答案1

可能是 bug。我在使用 pgf 2.1 cvs 时也遇到了这个问题。看看这个问题

更新:这是一个错误,感谢 cjorssen 纠正它。

该解决方案没有什么用,但有时使用变量是个好主意。

解决方案是

\documentclass{article}
\usepackage{pgfplots}
\usepackage{tikz}

\begin{document}

 \begin{tikzpicture}
 \def\x{5};
 \def\y{4.5};
\foreach \p in {180,160,...,20}
{%
\pgfmathsetmacro{\tmp}{\y*(1.80-\p/100)}
\draw (0,0) --({\x*(\p-20)}:\tmp);
}
\end{tikzpicture}

\end{document} 

另一个是:

   \draw (0,0) --({\x*(\p-20)}:\y*(1.80-\p/100);

但我不喜欢这个 hack

相关内容