当我制作带有嵌套枚举的演示文稿时,其中每个枚举都需要动画,内部枚举在幻灯片中完全隐藏,直到其父级变为可见,而其他项目仅带有水印。有没有办法让所有项目都带有水印,直到它们变为活动状态?
代码:
\begin{frame}{Test}
\begin{enumerate}[<+->]
\item Item1
\item Item2
\begin{enumerate}[<+->]
\item Item2A
\item Item2B
\end{enumerate}
\item Item3
\end{enumerate}
\end{frame}
答案1
您可以使用\only
来更改嵌套环境的透明度级别:
\documentclass{beamer}
\setbeamercovered{transparent}
\begin{document}
\begin{frame}{Test}
\begin{enumerate}[<+->]
\item Item1
\item Item2
\only<1->{\setbeamercovered{transparent=100}}
\only<2->{\setbeamercovered{transparent=15}}
\begin{enumerate}[<+->]
\item Item2A
\item Item2B
\end{enumerate}
\item Item3
\end{enumerate}
\end{frame}
\end{document}
第一帧的图像:
代码可以在etoolbox
包的帮助下实现自动化:
\documentclass{beamer}
\usepackage{etoolbox}
\setbeamercovered{transparent}
\makeatletter
\BeforeBeginEnvironment{enumerate}{\ifnum\@enumdepth=1
\only<1->{\setbeamercovered{transparent=100}}%
\only<\theenumi->{\setbeamercovered{transparent=20}}%
\fi
}
\makeatother
\begin{document}
\begin{frame}{Test}
\begin{enumerate}[<+->]
\item Item1
\item Item2
\item Item3
\begin{enumerate}[<+->]
\item Item3A
\item Item3B
\item Item3C
\end{enumerate}
\item Item4
\end{enumerate}
\end{frame}
\end{document}
第一帧:
答案2
正如 percusse 在其评论中指出的那样,子项并非不可见,只是比项暗得多。我不认为这是预期的行为!这里发生的事情是嵌套的enumerate
s 会给您嵌套的actionenv
s,并且每个动作环境级别都会使亮度降低 85%。
要解决此问题,最好摆脱动作环境的嵌套。从 Gonzalo 的回答中,我采用了使用包中的\BeforeBeginEnvironment
和的想法。下面的代码适用于嵌套的、和。以下输出是用而不是创建的,只是为了证明这也有效。\AfterEndEnvironment
etoolbox
enumerate
itemize
description
\setbeamercovered{highly dynamic}
\setbeamercovered{transparent}
\documentclass{beamer}
\usepackage{etoolbox}
%\setbeamercovered{transparent}
\setbeamercovered{highly dynamic}
\makeatletter
\newcommand*\fix@beamer@close{%
\ifnum\beamer@trivlistdepth>0
\beamer@closeitem
\fi
}
\newcommand*\fix@beamer@open{%
\ifnum\beamer@trivlistdepth>0
\gdef\beamer@closeitem{}%
\fi
}
\BeforeBeginEnvironment{enumerate}{\fix@beamer@close}
\AfterEndEnvironment{enumerate}{\fix@beamer@open}
\BeforeBeginEnvironment{itemize}{\fix@beamer@close}
\AfterEndEnvironment{itemize}{\fix@beamer@open}
\BeforeBeginEnvironment{description}{\fix@beamer@close}
\AfterEndEnvironment{description}{\fix@beamer@open}
\makeatother
\begin{document}
\begin{frame}{Test}
\begin{enumerate}[<+->]
\item Item1
\item Item2
\begin{itemize}%[<+->]
\item Item2A
\item Item2B
\end{itemize}
\item Item3
\end{enumerate}
\end{frame}
\end{document}
请注意,您不需要[<+->]
内部enumerate
或itemize
环境中的。 (默认情况下,[<+->]
使用外部环境的。)