这是来自投影仪中科学图形的缩放效果。
下面的最小工作示例需要三个图形,分别名为“fig_1.pdf”、“fig_2.pdf”和“fig_3.pdf”,与 tex 文件位于同一目录中。
本质上,我使用 tikz 图片和叠加层将多个图形精确地叠加在同一位置。这是为了在演示文稿中产生点击不同图形的效果。
此外,我还使用\animategraphics[<options>]{<frame rate>}{<file basename>}{<first>}{<last>}
动画包通过多个其他图形在两个这样的图形之间创建平滑的过渡。
问题问题是,尽管动画应该只出现在第二张幻灯片上(因为它被 包围\onslide<2>
),但在编译时,它会出现在每张幻灯片上,而其他图形根本看不到。itemize
不过,位图的叠加似乎可以正常工作。
这是错误吗?还是我做错了什么?
\documentclass{beamer}
\usetheme{boxes}
\usepackage[export]{adjustbox}
\usepackage{tikz,animate}
\usetikzlibrary{shapes,arrows,positioning}
\usetikzlibrary{decorations.pathreplacing,angles,quotes,decorations.pathmorphing}
\begin{document}
\begin{frame}{Hello}
\framesubtitle{I like trains}
\begin{itemize}
\item<1-> Hello1
\item<2-> Hello2
\end{itemize}
\begin{columns}
\column{0.5\linewidth}
\centering
\begin{tikzpicture}
\onslide<1->{
\draw[<->] (-0.8,0) -- (0.8,0);
}
\end{tikzpicture}
\column{0.5\linewidth}
\begin{tikzpicture}[]
\onslide<1>{
\node at (0,0) {
\includegraphics[width=0.95\textwidth]{example-image-a}
};}
\onslide<2>{
\node at (0,0) {
\animategraphics[width=0.95\textwidth,autoplay,every=1]{100}{"fig_"}{1}{3}
};}
\onslide<3>{
\node at (0,0) {
\includegraphics[width=0.95\textwidth]{example-image-b}
};}
\onslide<4-5>{
\node at (0,0) {
\includegraphics[width=0.95\textwidth]{example-image-a}
};}
\onslide<6>{
\node at (0,0) {
\includegraphics[width=0.95\textwidth]{example-image-b}
};}
\end{tikzpicture}
\end{columns}
\only<1-5>{
\uncover<5>{
Conclusion 1
}
}
\only<6>{
\uncover<6>{
Conclusion 2
}
}
\end{frame}
\end{document}
答案1
使用\only
代替\onslide
有问题的命令。
两者之间的主要区别(基本上,\only
和所有其他覆盖命令之间的主要区别)如下:
\only
扔掉它的争论在覆盖规范未给出的幻灯片上。也就是说,tex
甚至看不到已传递给的内容\only
。\onslide
,,, ...仍然评估给予它们的内容(将\alt
其\uncover
排版在框内),但丢弃结果。
两者对于简单内容都产生类似的结果。但是,如果要执行的命令确实导致副作用,\onslide
导致这些副作用也发生在覆盖规范排除的幻灯片上,同时\only
防止这种情况发生。
“副作用”基本上是命令逃离当前范围和框的任何结果。我认为\animate
直接摆弄 PDF 级别。其他示例包括 TikZ 使用和overlay
的诡计remember picture
(例如,著名的\tikzmark
命令)。