运行以下代码时出现错误:
\begin{frame}
\frametitle{MWE}
\begin{tikzpicture}
\begin{axis}[declare function={f(\x)=\x^3-3*\x^2+\x;}]
\addplot[red] {f(x)};
\pgfmathsetmacro{\a}{-0.15}
\coordinate (A) at (axis cs: \a, {f(\a)});
\foreach \dx in {1.0, 0.5, 0.2, 0.1, 0.05}{
\coordinate (b) at (axis cs: {\a+\dx}, {f(\a+\dx)});
}
\end{axis}
\end{tikzpicture}
\end{frame}
错误:`!未定义的控制序列。轴 cs:{\a +\dx
},{f(\ a + \ dx)}`
\coordinate
循环外的命令有效(即)\coordinate (A) at (axis cs: \a, {f(\a)});
。
我将非常感激任何能帮助找出问题所在的东西。
答案1
基于\foreach 在轴环境中不起作用,以下解决方案似乎有效
\documentclass[tikz]{standalone}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}
\begin{axis}[declare function={f(\x)=\x^3-3*\x^2+\x;}]
\addplot[red] {f(x)};
\pgfmathsetmacro{\a}{-0.15}
\coordinate (A) at (axis cs: \a, {f(\a)});
\foreach \dx in {1.0, 0.5, 0.2, 0.1, 0.05}{
\edef\temp{\noexpand\coordinate (b) at (axis cs: {\a+\dx}, {f(\a+\dx)});}
\temp
}
\end{axis}
\end{tikzpicture}
\end{document}
编辑:
第一次尝试时,我对上面链接中提供的第二种方法有点犹豫。但现在我也测试了这种方法。两种方法都有效。实际上我更喜欢第二种方法,因为它不包含那么多“奇怪”的命令。
\documentclass[tikz]{standalone}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}
\begin{axis}[declare function={f(\x)=\x^3-3*\x^2+\x;}]
\addplot[red] {f(x)};
\pgfmathsetmacro{\a}{-0.15}
\coordinate (A) at (axis cs: \a, {f(\a)});
\pgfplotsinvokeforeach{1.0, 0.5, 0.2, 0.1, 0.05}{
\coordinate (b) at (axis cs: {\a+#1}, {f(\a+#1)});
}
\end{axis}
\end{tikzpicture}
\end{document}