如何更改 tikz 循环

如何更改 tikz 循环

我用 定义了 21 个点\path.a,b,c,d,...,u,

我想这样画:

\draw (a)--(b);
\newframe
\draw (a)--(b)--(c);
\newframe
\draw (a)--(b)--(c)--(d);
\newframe
\draw (a)--(b)--(c)--(d)--(e);
\newframe
\draw (a)--(b)--(c)--(d)--(e)--(f);
...
\newframe
\draw (a)--(b)--(c)--(d)--(e)--(f)....(u);

我认为这个问题有没有什么好的方法使用 tikz 循环

答案1

像这样吗?

\documentclass{beamer}
\usepackage{tikz}
\begin{document}

\begin{frame}
\begin{tikzpicture}
% this is just to define the nodes
\foreach [count=\i] \j in {a,b,...,u}
  \node [fill,inner sep=1pt,circle,outer sep=0pt] (\j) at (\i/2,0) {};

% this draws the lines, using an overlay specification for \draw
\foreach [count=\i,remember=\j as \k (initially a)] \j in {b,c,...,u}
  \draw<\i-> (\k) -- (\j);
\end{tikzpicture}
\end{frame}
\end{document}

如果您使用的是animate,那么这可能会奏效。它至少编译时没有错误,并且根据日志判断创建了 20 帧。但我没有想要显示动画的 PDF 查看器。

\documentclass{beamer}
\usepackage{tikz,animate}
\newcounter{upperbound}
\begin{document}

\begin{frame}
\frametitle{ABC}
\begin{animateinline}[%
 controls,
 begin={\begin{tikzpicture}
  \foreach [count=\i] \j in {a,...,u}
    \node [fill,inner sep=1pt,circle,outer sep=0pt] (\j) at (\i/2,0) {};},
  end={\end{tikzpicture}}
]{5}
\multiframe{20}{iCount=2+1}{%
\setcounter{upperbound}{\iCount}
\foreach [remember=\j as \k (initially a)] \j in {b,...,\alph{upperbound}} {
  \draw (\k) -- (\j);
}
}
\end{animateinline}
\end{frame}
\end{document}

答案2

如果你可以重命名这些点,例如(p1)... (p21),那么

  \foreach \j in {1,...,20}
  {
     \draw
     \foreach \i in {1,...,\j}
     {
        (p\i) --
     }
     -- (p\j);
  }

应该可以解决问题。

相关内容