![tikz 代码在一段时间后打开时无法编译](https://linux22.com/image/245036/tikz%20%E4%BB%A3%E7%A0%81%E5%9C%A8%E4%B8%80%E6%AE%B5%E6%97%B6%E9%97%B4%E5%90%8E%E6%89%93%E5%BC%80%E6%97%B6%E6%97%A0%E6%B3%95%E7%BC%96%E8%AF%91.png)
几个月前我完成了我的博士学位,然后编译它完全没问题。今天我打开它进行修改,在编译过程中我收到有关“缺失数字被视为零”的错误消息。我意识到这是关于在计算值时使用括号的问题。
例如这个有效:
\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