使用 AtBeginSection 和 againframe 进行自定义部分转换

使用 AtBeginSection 和 againframe 进行自定义部分转换

我正在尝试制作一个自定义幻灯片作为交叉幻灯片来替换更典型的代码:

\AtBeginSection{
    \begin{frame}[c,plain,noframenumbering]
        \frametitle{Agenda}
        \tableofcontents[currentsection,hideothersubsections]
    \end{frame}
}

我创建了一个框架并给它贴上了标签Overview。然后,我想执行以下操作:

\AtBeginSection{
    \againframe<2|handout:2>{Overview}
}

每次之前\section,我都会重新定义一些变量,以便根据当前部分修改我的概览幻灯片。所有这些都很有效。

然而,我遇到的问题是,我需要在每次\AtBeginSection调用时自动增加覆盖号(在本例中为 2),以防止 Beamer 给我关于多次定义覆盖的错误。

简而言之:如何\againframe<#>{SlideLabel}自动增加到最后一个覆盖状态,加一(即,# = end + 1)。

编辑: 以下是我正在尝试执行的操作的 MWE。编译此操作会导致错误“LaTeX 警告:标签‘Overview<2>’已多次定义。”

\documentclass[11pt,t]{beamer}
\usepackage{lmodern}
\begin{document}

\begin{frame}[label=Overview]
    \frametitle{Overview Slide}
    \begin{itemize}
        \item Section 1
        \item Section 2
    \end{itemize}
\end{frame}

\AtBeginSection{
    \againframe<2|handout:2>{Overview}
}

\section{Section 1}
\begin{frame}
    \frametitle{Body slide 1}
    \begin{itemize}
        \item Some body text
    \end{itemize}
\end{frame}

\section{section 2}
\begin{frame}
    \frametitle{Body slide 2}
    \begin{itemize}
        \item Some body text
    \end{itemize}
\end{frame}

\end{document}

答案1

如果我正确理解了您的意图,您可以使用用户定义的计数器并在每个部分增加它以避免标签重复:

\documentclass[11pt,t]{beamer}
\usepackage{lmodern}

\newcounter{mycount}

\AtBeginSection{\stepcounter{mycount}%
    \againframe<\themycount|handout:\themycount>{Overview}
}

\begin{document}

\begin{frame}<\themycount>[label=Overview]
    \frametitle{Overview Slide}
    \begin{itemize}
        \item Section 1
        \item Section 2
    \end{itemize}
\end{frame}

\section{Section 1}
\begin{frame}
    \frametitle{Body slide 1}
    \begin{itemize}
        \item Some body text
    \end{itemize}
\end{frame}

\section{section 2}
\begin{frame}
    \frametitle{Body slide 2}
    \begin{itemize}
        \item Some body text
    \end{itemize}
\end{frame}

\end{document}

相关内容