我是该平台的新手,没有太多使用 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}
我还注意到,要运行动画,您需要一个特殊程序,例如 Adobe 或 FoxIt Reader,但如何将这些动画合并到 Beamer 演示文稿中呢?
答案1
作为成本加运费在他们的评论中,PGF 的animations
库旨在制作动画 SVG输出。对于这种动画,动画帧是在 Web 浏览器中查看时计算的。
要在 PDF 文档(例如课堂演示文稿)中使用它们beamer
,必须拍摄中间阶段的快照,这些快照可用作动画帧。可以使用基于帧的动画包(例如)对它们进行动画处理animate
。可以在支持 JavaScript 的 PDF 查看器(例如 Acrobat Reader 或 Okular)中查看 PDF 输出。Foxit 也可以使用(未经测试)。
运行代码一两次pdflatex
:lualatex
\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 输出中制作基于帧的动画(如链接文档在本答案的开头)。制作说明beamer
SVG 格式的 -class 幻灯片的说明请参见这个话题。