带有 \animatevalue 的两个范围

带有 \animatevalue 的两个范围

我想在一帧环境中制作淡入淡出的效果。

预期:文本开始为红色,然后淡出,然后返回红色

观察到:前 4 张幻灯片是空的,然后在第 5-8 张幻灯片中文本逐渐出现

我应该怎么做才能获得正确的结果?

\documentclass[aspectratio=43, 14pt]{beamer}
\mode<presentation>

\begin{document}
    \newcount\ww
    \begin{frame}
        \animate<2-8>
        \animatevalue<1-4>{\ww}{100}{0}
        \animatevalue<5-8>{\ww}{0}{100}
        {\color{red!\the\ww!white} TEXT}
    \end{frame}
\end{document}

答案1

无论如何你都要加载 pgf,这样你就可以

\documentclass[aspectratio=43, 14pt]{beamer}
\mode<presentation>

\begin{document}
    \newcount\ww
    \begin{frame}
        \animate<2-8>
        \animatevalue<1-8>{\ww}{0}{200}
        \pgfmathtruncatemacro{\myopa}{abs(100-\the\ww)}
        {\color{red!\myopa!white} TEXT}
    \end{frame}
\end{document}

在此处输入图片描述

以下观察结果可能有助于理解为什么您的提案没有按预期发挥作用。将 typeouts 添加到您的 MWE:

\documentclass[aspectratio=43, 14pt]{beamer}
\mode<presentation>

\begin{document}
    \newcount\ww
    \begin{frame}
        \animate<2-8>
        \animatevalue<1-4>{\ww}{100}{0}
        \typeout{before:\the\ww}
        \animatevalue<5-8>{\ww}{0}{100}
        \typeout{after:\the\ww}
        {\color{red!\the\ww!white} TEXT}
    \end{frame}
\end{document}

输出结果如下

before:67
after:0
[2]
before:34
after:0
[3]
before:0
after:0
[4]
before:0
after:0
[5]
before:0
after:33
[6]
before:0
after:66
[7]
before:0
after:100

这意味着第二个\animatevalue,即\animatevalue<5-8>{\ww}{0}{100},会覆盖第一个 的计数器。当然,你可以只使用基本的 TeX 来解决这个问题,例如

\documentclass[aspectratio=43, 14pt]{beamer}
\mode<presentation>

\begin{document}
    \newcount\ww
    \newcount\www
    \newcount\wwww
    \begin{frame}
        \animate<2-8>
        \animatevalue<1-4>{\ww}{100}{0}
        \animatevalue<5-8>{\www}{0}{100}
        \ifnum\the\ww>0
        \wwww=\ww
        \else
        \wwww=\www
        \fi
        {\color{red!\the\wwww!white} TEXT}
    \end{frame}
\end{document}

可以工作,但在我看来这比使用 pgf(无论如何都要加载)要复杂得多。

相关内容