动画代码不起作用

动画代码不起作用

我是该平台的新手,没有太多使用 Latex 的经验。我正在尝试学习如何使用打包的\usetikzlibrary{动画}Tikz图片按照网站的步骤https://tikz.dev/tikz-animations,但每次我尝试在我的纺织机械制造商机器(windows)和背页,这些动画的任何代码要么显示错误,要么不执行任何动画,我不明白,也不知道如何修复。有人知道我如何在 Overleaf 和 TexMaker 中运行这些 Tikzpicture 动画代码吗?这是我尝试使用的代码示例

\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{animations} % LATEX and plain TEX
%\usetikzlibrary[animations] % ConTEXt

\begin{document}
The code below doesnt work, keaps getting error
\begin{tikzpicture}[
animate/orbit/.style 2 args = {
    myself:shift = {
      along = {
        (0,0) circle [radius=#1]
      } sloped in #2s/10,
      repeats }} ]

\node :color = {0s = "orange",
             2s = "red",
             4s = "orange",
             repeats}
   {Sun};

\begin{scope}[animate={orbit={2.5cm}{365}}]
\node {Earth};
\node [animate={orbit={1cm}{28}}] {Moon};
\end{scope}

\useasboundingbox (-3.8,-3.8) (3.8,3.8);
\end{tikzpicture} 

The code below doesnt work the animation 
\tikz [animate = {
object = node, attribute = fill, time = 0s, value = red, entry,
object = node, attribute = fill, time = 2s, value = blue, entry,
object = node, attribute = fill, begin on = click, entry}]
\node (node) [fill, text=white] { Click me };
\end{document}

我还注意到,要运行动画,您需要一个特殊程序,例如 Adob​​e 或 FoxIt Reader,但如何将这些动画合并到 Beamer 演示文稿中呢?

答案1

作为成本加运费在他们的评论中,PGF 的animations库旨在制作动画 SVG输出。对于这种动画,动画帧是在 Web 浏览器中查看时计算的。

要在 PDF 文档(例如课堂演示文稿)中使用它们beamer,必须拍摄中间阶段的快照,这些快照可用作动画帧。可以使用基于帧的动画包(例如)对它们进行动画处理animate。可以在支持 JavaScript 的 PDF 查看器(例如 Acrobat Reader 或 Okular)中查看 PDF 输出。Foxit 也可以使用(未​​经测试)。

运行代码一两次pdflatexlualatex

\documentclass{beamer}

\usepackage[T1]{fontenc}
\usepackage{tikz}

\usetikzlibrary{animations} % SVG animations
\usepackage{animate} % frame-based animations

\begin{document}

\newcommand\tikzsnapshot[1]{% arg #1: time of snapshot [s]
  \begin{tikzpicture}[
  make snapshot of = #1, % <== added for taking snapshots of intermediate stages
  animate/orbit/.style 2 args = {
      myself:shift = {
        along = {
          (0,0) circle [radius=##1] % <== escape `#' with 2nd `#' 
        } sloped in ##2s/10, % <== escape `#' with 2nd `#'
        repeats }} ]

  \node :color = {0s = "orange",
               2s = "red",
               4s = "orange",
               repeats}
     {Sun};

  \begin{scope}[animate={orbit={2.5cm}{365}}]
  \node {Earth};
  \node [animate={orbit={1cm}{30.41666}}] {Moon}; % <== adjusted synodic period (=365/12) to
  \end{scope}                                     %  fit 12 full cycles into 365 days

  \useasboundingbox (-3.8,-3.8) (3.8,3.8);
  \end{tikzpicture}%
}

\begin{frame}[fragile]{PGF's \texttt{animations} library example}

\begin{animateinline}[autoplay,controls,loop]{24} % <== frames per second (FPS)=24
\multiframe{\fpeval{36.5*24}}{rTime=0+\fpeval{1/24}}{ % number of animation frames=duration*FPS; snapshot delta t=1/FPS
  \tikzsnapshot{\rTime}
}
\end{animateinline}
\end{frame}

\end{document}

环境tikzpicture(应用了少量代码更改)已放置在用户定义的 LaTeX 命令中,该命令将快照时间作为其参数 #1。请注意make snapshot of = ...环境选项中添加的内容。它允许使用非 SVG 输出驱动程序拍摄快照。

animate包还可用于在 SVG 输出中制作基于帧的动画(如链接文档在本答案的开头)。制作说明beamerSVG 格式的 -class 幻灯片的说明请参见这个话题

相关内容