![带有 \animatevalue 的两个范围](https://linux22.com/image/396737/%E5%B8%A6%E6%9C%89%20%5Canimatevalue%20%E7%9A%84%E4%B8%A4%E4%B8%AA%E8%8C%83%E5%9B%B4.png)
我想在一帧环境中制作淡入淡出的效果。
预期:文本开始为红色,然后淡出,然后返回红色
观察到:前 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(无论如何都要加载)要复杂得多。