简化 Beamer 叠加样式

简化 Beamer 叠加样式

我正在做一个 Beamer 演示,比如说:

\begin{frame}
\only<1>{\Huge}\onslide<1->{Text 1.}
\begin{itemize}
\item<2->\only<2>{\Huge} Item 1.
\item<3->\only<3>{\Huge} Item 2.
\end{itemize}

\end{frame}

目标是使每张幻灯片以大字体显示当前介绍的文本,同时使其余文本可见但尺寸小得多。

这是可行的,但是

(1)这需要在每张幻灯片上写下大量的命令。

(2) 相当脆弱——如果我必须重新排序,我可能需要花费大量时间重新编号。

有没有办法让它在解析看起来更像的源代码时做同样的工作,例如,

\begin{frame}
Text 1.
\slide 
\begin{itemize}
\item Item 1.
\item Item 2.
\end{itemize}

或者也许使用最少量的额外命令来分离幻灯片?


我没有太多创建命令的经验,但是尝试过这个,但没有效果:

\newcounter{slidenum}
\setcounter{slidenum}{1} 
\newcommand{\next}[1]{\only<\theslidenum>{\Huge}\onslide<\theslidenum->{#1}\addtocounter{slidenum}{1}}

按照我想象的工作原理,我可以将每个下一个叠加层放入命令中\next{...},并在每一帧开始时重新启动计数器。但是当我尝试在幻灯片中使用它时,其中的项目\next{...}既不会变大,也不会隐藏在第一个叠加层上。

答案1

下面的操作能达到您的要求吗?

\documentclass{beamer}

\newcommand{\hugeOnce}[1]{{\only<.>{\Huge} #1}}

\begin{document}

\begin{frame}[<+->]
\only<+->{\hugeOnce{Text 1.}}
\begin{itemize}
\item \hugeOnce{Item 1.}
\item \hugeOnce{Item 2.}
\end{itemize}

\end{frame}

\end{document}

答案2

你可以使用类似的技巧https://topanswers.xyz/tex?q=1334#a1579并创建一个新的 beamer 动作:

\documentclass{beamer}

\newenvironment{hugeenv}{\only{\Huge}}{}

\begin{document}
    
\begin{frame}
\only<+>{\Huge} Text
\begin{itemize}[<huge@+|+->]
\item Item 1.
\item Item 2.
\end{itemize}

\end{frame}

\end{document}

相关内容