在我的beamer
演讲中,我经常会遇到这样的情况:tikz
在 中嵌入一长段代码\only
,如下所示示意图结构:
\foreach\i in {1,...,100} {
\only<\i>{
[long piece of code]
}
}
\only<101>{ some text }
当some text
出现时,前一个[long piece of code]
消失。为了使其保留,我可以这样做:
\foreach\i in {1,...,99} {
\only<\i>{
[long piece of code]
}
}
\uncover<100-> { [long piece of code] }
\only<101> { some text }
但这迫使我复制两遍长代码,既不优雅也不方便。我尝试使用以下\if
命令:
\foreach \i in {1,...,100} {
\ifnum\i=100%
\only<\i>%
\else%
\uncover<10>%
\fi%
{%
[long piece of code]
}
\only<101>{ some text }
但它确实产生了所期望的结果。
我怎样才能使命令只保留最后一个元素?
答案1
您可以将条件叠加规范存储在宏中,然后执行此宏。下面我创建\doit
为\only
或\uncover
,然后\doit{<long piece of code>}
:
\documentclass{beamer}
\usepackage{pgffor}
\begin{document}
\begin{frame}
\frametitle{Frame title}
\foreach\i in {1,...,10} {
\ifnum\i<10
\def\doit{\only<\i>}
\else
\def\doit{\uncover<10->}
\fi
\doit{[long piece of code \i]}
}
\only<11>{ some text }
\end{frame}
\end{document}