请考虑以下示例:
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{calc,patterns,decorations.pathmorphing,decorations.markings}
\begin{document}
\begin{tikzpicture}
\foreach \t in {0,...,10} {
\pgfmathparse{8/10*\t};
\draw[color=red,domain=0:\pgfmathresult] plot (\x,{0.5*sin(2*pi*\t/10 r - 0.25*pi*\x r) - 2*\t});
}
\end{tikzpicture}
\end{document}
重点是,我想\pgfmathresult
在绘图域中使用变量。但是它给了我TeX capacity exceeded, sorry
。有什么办法可以解决这个问题吗?
答案1
首先,第一个图位于域 [0,0] 上。这会导致问题。要查看此问题,请尝试(在 tikzpicture 中):
\draw[domain=0:0] plot (\x,\x);
的初始值以 1 开始,而不是 0 \t
。
接下来,要在其他 tikz 命令中使用计算值,请尝试使用\pgfmathsetmacro
:
\documentclass{minimal}
\usepackage{tikz}
\usetikzlibrary{calc,patterns,decorations.pathmorphing,decorations.markings}
\begin{document}
\begin{tikzpicture}
\foreach \t in {1,...,10} {
\pgfmathsetmacro{\sup}{8/10*\t}
\draw[color=red,domain=0:\sup] plot (\x,{0.5*sin(2*pi*\t/10 r - 0.25*pi*\x r) - 2*\t});
}
\end{tikzpicture}
\end{document}
输出为
答案2
一般来说,\pgfmathresult
在 TikZ 调用中直接使用是不明智的,因为当 TikZ 解析该部分时,它可能已经被覆盖。然而这不是这里的问题。TikZ 实际上在为 0domain=0:0
时会卡住。使用它启动是可行的。\t
\foreach
1