我正在使用所述方法这里以 SVG 格式制作演示文稿。理想情况下,我希望一些框架包含多张幻灯片(例如使用 <1->、<2->...),其中一些会播放动画(我使用 TIKZ 的动画库)。我正在努力寻找一种方法来在幻灯片开始时触发这样的动画:基本上,我让框架中的所有动画同时开始(这也不是重点)。有没有人成功创建了一个由一系列幻灯片(触发)组成的框架,其中一些是静态的,一些是动画的?
这是一个包含 4 个文本块和两个动画箭头的最小示例。使用 ArrowDown 导航到幻灯片 2 时,第一个动画会播放第二次(与第二个动画一起播放)。
\documentclass[dvisvgm,aspectratio=169]{beamer}
\usepackage{tikz}
\usetikzlibrary{calc,angles,animations,arrows,backgrounds,patterns,intersections,tikzmark,decorations.pathreplacing,calligraphy}
%%%%%%% SO TIKZMARK WORKS WITH XETEX
\makeatletter
\def\pgfsys@hboxsynced#1{%
{%
\pgfsys@beginscope%
\setbox\pgf@hbox=\hbox{%
\hskip\pgf@pt@x%
\raise\pgf@pt@y\hbox{%
\pgf@pt@x=0pt%
\pgf@pt@y=0pt%
\special{pdf: content q}%
\pgflowlevelsynccm%
\pgfsys@invoke{q -1 0 0 -1 0 0 cm}%
\special{pdf: content -1 0 0 -1 0 0 cm q}% translate to original coordinate system
\pgfsys@invoke{0 J [] 0 d}% reset line cap and dash
\wd#1=0pt%
\ht#1=0pt%
\dp#1=0pt%
\box#1%
\pgfsys@invoke{n Q Q Q}%
}%
\hss%
}%
\wd\pgf@hbox=0pt%
\ht\pgf@hbox=0pt%
\dp\pgf@hbox=0pt%
\pgfsys@hbox\pgf@hbox%
\pgfsys@endscope%
}%
}
\makeatother
%%%%%%% NAVIGATION WITH ARROWUP AND ARROWDOWN
\usepackage[totpages]{zref}
\usepackage{atbegshi}
\usepackage{fontawesome}
\setbeamertemplate{navigation symbols}{}
\AtBeginShipout{%
\AtBeginShipoutAddToBox{%
\special{dvisvgm:raw
<defs>
<script type="text/javascript">
<![CDATA[
document.addEventListener('keydown', function(e){
if(e.key=='ArrowDown'){
\ifnum\thepage<\ztotpages
document.location.replace('\jobname-\the\numexpr\thepage+1\relax.svg');%
\fi
}else if(e.key=='ArrowUp'){
\ifnum\thepage>1
document.location.replace('\jobname-\the\numexpr\thepage-1\relax.svg');%
\fi%
}
});
]]>
</script>
</defs>
}%
}%
}%
%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{document}
\begin{frame}[plain]
\begin{tikzpicture}[remember picture]
\huge
\draw[thick] (0,0) rectangle (16,9);
\clip (0,0) rectangle (16,9);
%%%%%%% 1st slide
\begin{onlyenv}<1->
\draw (4,8) node[text width=7.2cm, align=left, anchor=base]
{Some text\subnode[inner sep=0pt]{a}{.}};
\draw (12,8) node[text width=7.2cm, align=left, anchor=base]
{\subnode[inner sep=0pt]{b}{A}nd then some...};
\draw[thick,->] :rotate = {base = "90",0s="90", 1s="0", forever, origin = {(0,0)}} (a) --(b) ;
\end{onlyenv}
%%%%%%% 2nd slide
\begin{onlyenv}<2->
\draw (4,6) node[text width=7.2cm, align=left, anchor=base]
{And so on \subnode[inner sep=0pt]{c}{.}};
\draw (12,6) node[text width=7.2cm, align=left, anchor=base]
{\subnode[inner sep=0pt]{d}{.}.. and so forth...};
\draw[thick,->] :rotate = {base = "90",0s="90", 1s="0", forever, origin = {(0,0)}} (c) --(d) ;
\end{onlyenv}
\end{tikzpicture}
\end{frame}
\end{document}
这是使用以下方式编译的
xelatex -no-pdf svgbeamer.tex && xelatex -no-pdf svgbeamer.tex && dvisvgm --font-format=ttf --exact --zoom=-1 -p1,- svgbeamer.xdv
我猜这是因为每张幻灯片上的时间线都重置为 0。所以,理想情况下,我想找到一种方法来制作一张可以暂停动画的单张幻灯片(例如使用一个键)。