以下代码由于使用而无法编译rnd
:
\documentclass{article}
\usepackage{tikz,pgfplots}
\pgfplotsset{width=7cm,compat=1.3}
\begin{document}
\begin{tikzpicture}
\begin{axis}
\addplot {x};
\draw [] (axis cs: 0,0)
\foreach \i in {1,...,10} {
-- ++ (axis direction cs: 0.2,rnd)
};
\end{axis}
\end{tikzpicture}
\end{document}
为什么会发生这种情况?如何重写它才能按预期工作?
答案1
这可能是由于坐标解析rnd
不被识别为数学函数,而是被识别为非数字。使用括号或其他语法技巧可能会奏效,但对于这种简单的构造,最好避免使用它们。
这是一个从坐标解析中删除数学解析的选项。\pgfextra
用于暂停解析并执行一些其他操作。
\documentclass{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.7}
\begin{document}
\begin{tikzpicture}
\begin{axis}
\addplot {x};
\draw [] (axis cs: 0,0)
\foreach \i in {1,...,10} {\pgfextra{\pgfmathparse{rnd}}
-- ++ (axis direction cs: 0.2,\pgfmathresult)
};
\end{axis}
\end{tikzpicture}
\end{document}