投影机动画和覆盖中存在错误吗?

投影机动画和覆盖中存在错误吗?

这是来自投影仪中科学图形的缩放效果

下面的最小工作示例需要三个图形,分别名为“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命令)。

相关内容