Beamer:重复使用列表项中的增量覆盖号?

Beamer:重复使用列表项中的增量覆盖号?

我正在使用带有覆盖规范的项目列表<+(1)->。对于其中一个项目,我希望项目列表后面的文本与该项目同时显示出来。我该如何实现?

\begin{frame}

\begin{itemize}[<+(1)->]
\item First item
\item ...
\item An item somewhere in the middle of the list
\item ...
\item Last item
\end{itemize}

Some text to be synchronized with the item in the middle of the list

\end{frame}

笔记:尽管我想要与列表项同时发现的文本当前位于列表之后,但我可能决定将其移动到列表之前。

答案1

不确定这是否涵盖了所有(甚至大多数)投影仪的可能性,但它在这里有效(请始终使用完整的文档作为示例,而不仅仅是片段,这简化了测试)。

\zz用一些标签标记特殊项目,然后使用`\yy标签,其工作原理应该\only<4->与本例类似。需要两次 latex 运行,以应对列表前文本所需的前向引用。

\documentclass{beamer}

\begin{document}
\makeatletter
\def\zz#1{%
\expandafter\ifx\csname foo@#1\endcsname\relax
\expandafter\xdef\csname foo@#1\endcsname{\the\c@beamerpauses}%
\immediate\write\@auxout{\def\string\foo@#1{\the\c@beamerpauses}}%
\fi}
\def\yy#1{%
\expandafter\ifx\csname foo@#1\endcsname\relax
\typeout{layer of [#1] unknown}%
\let\@foo\@gobble
\else
\edef\@foo{\noexpand\only<\csname foo@#1\endcsname->}%
\fi
\@foo}

\makeatother
\begin{frame}



\yy{this}{Some text to be synchronized with the item in the middle of the list}

%\tracingall
\begin{itemize}[<+(1)->]
\item First item
\item ...
\item An item somewhere in the middle of the list\zz{this}
\item ...
\item Last item
\end{itemize}

\yy{this}{Some text to be synchronized with the item in the middle of the list}

\end{frame}

\end{document}

答案2

如果您想要从幻灯片 4 开始显示文本,则需要使用<4->以下命令之一作为覆盖规范:

  • \uncover<4->{text}: 什么时候文本不显示,仍占用部分空间。
  • \only<4->{text}: 什么时候文本不显示,不占用任何空间。
  • action<4->{text}:在数学模式下也有效。
\documentclass{beamer}
\begin{document}

\begin{frame}
  \begin{itemize}[<+(1)->]
    \item First item
    \item ...
    \item An item somewhere in the middle of the list
    \item ...
    \item Last item
  \end{itemize}
  \action<4->{Some text to be synchronized with the item in the middle of the list}
\end{frame}

\end{document}

计数器beamerpauses会跟踪幻灯片编号。如果您不想手动查找幻灯片编号,可以使用命令访问它\thebeamerpauses。然后您可以将其保存在某个地方,以便稍后在叠加规范中使用它:

\documentclass{beamer}
\begin{document}

\newcounter{slidenumber}
\begin{frame}
  \begin{itemize}[<+(1)->]
    \item First item
    \item ...
    \item An item somewhere in the middle of the list \setcounter{slidenumber}{\thebeamerpauses}
    \item ...
    \item Last item
  \end{itemize}
  \action<\theslidenumber->{Some text to be synchronized with the item in the middle of the list}
\end{frame}

\end{document}

不过,我不确定将值保存在计数器中是否是正确的举动。

相关内容