我希望我制作的幻灯片中的文本一开始是写出来的,然后逐个字符地取消写出。因此,
- 首先幻灯片上写着“你好,爱丽丝”
- 然后“爱丽丝”逐渐被删除
- 然后“Bob”逐渐被添加
- 幻灯片最后显示“你好,鲍勃”
我已经可以使用 Beamer 来做到这一点,用于\only
信件的不同版本,或者仅用于整个块,但我希望有一种不那么麻烦的方法来实现这一点。
这可能吗?
我还想让它看起来更像是打字、擦除和重新打字/过度打字,但这种视觉效果更像是锦上添花,而不是至关重要的。
答案1
我最初的回答展示了如何通常完成这些事情,并且此更新是针对此特定任务量身定制的(你好相同,Alice 有 5 个字母,而 Bob 有 3 个)。并且通常有 3 个数量:\Y 仅用于覆盖规范,\X 表示应保留 Alice 的多少(从左数),\Z 表示应显示 Bob 的多少(从右数)。\pgftruncatemacro
在原始答案中使用是因为否则数字将是 1.0、2.0 等。在这里我改用选项evaluate
。当然,如果您希望经常使用这个技巧,您可以将其放入宏中。
\documentclass{beamer}
\usepackage{xstring,pgffor}
\begin{document}
\begin{frame}
\frametitle{Alice vs.\ Bob}
\foreach [count=\Y,evaluate={\Z=int(\Y-1)}] \X in {5,...,2}
{
\only<\Y>{
Hello \StrLeft{Alice}{\X}\StrRight{ Bob }{\Z}}
\pause
}
Hello Bob
\end{frame}
\end{document}
原始答案:使用 xstring。
\documentclass{beamer}
\usepackage{xstring,pgffor}
\begin{document}
\begin{frame}
\frametitle{Alice vs.\ Bob}
\foreach [count=\Y] \X in {11,...,1}
{
\only<\Y>{\pgfmathtruncatemacro{\Z}{\Y-1}
\StrLeft{Hello Alice}{\X}\StrRight{Hello Bob}{\Z}}
\pause
}
\end{frame}
\end{document}