beamer:查找附录中是否有内容

beamer:查找附录中是否有内容

我正在尝试确定附录中是否有页面。如果有,我想显示分隔页/框架作为指示,但仅在讲义模式下。在我当前的设置中(由于投影仪模式的一些特殊性),始终有一个\appendix命令,因此挂接到该命令将不起作用。但是,当查看和的实现时\insertpresentationendpage\insertappendixendpage我很确定我可以通过查看的值来确定它\beamer@startpageofappendix,但出于某种原因,即使我使用了,我也无法确定\makeatletter。我尝试过使用\value、前置\the等,但无济于事……最后我得到了各种错误消息,尤其是:

! Undefined control sequence.
<argument> ...pendix\@ empty \else \ifnum \beamer 
                                                 @startpageofappendix=\beam...

所以我的问题是:如果命令后有帧,如何避免渲染该帧\appendix

答案1

如果您尝试访问其中的计数器,则可能会发生这种情况\mode<handout>(但我不知道为什么)。只需将模式开关放在 if 中即可,如下所示。

\documentclass[handout]{beamer}
\usepackage[utf8]{inputenc}
\begin{document}
% To test this MWE set \test below and compile two times.
% test=1 shall render the first page only, test=0 will print 3 pages
\def\test{1}

\begin{frame}{}
    Main content\\
    Always shown.
\end{frame}


\makeatletter
\typeout{startpageofappendix=\beamer@startpageofappendix, endpageofdocument=\beamer@endpageofdocument}
\ifx\beamer@startpageofappendix\@empty
\else
    \ifnum\beamer@startpageofappendix=\beamer@endpageofdocument
        \mode<handout>{
            \begin{frame}{}
                Appendix follows...\\
                on pages \beamer@startpageofappendix{} to \beamer@endpageofdocument{}\\
                This frame should not be rendered w/o the last frame!
            \end{frame}
        }
    \fi
\fi
\makeatother

\appendix

\ifnum\test=0%
    \begin{frame}{}
        Appendix slide 1.\\
        If this is shown the previous frame should be shown as well.
    \end{frame}
\fi

\end{document}

答案2

我会将此分离框架添加到的定义中,\appendix并检查是否\inserttotalframenumber等于\insertmainframenumber

\documentclass{beamer}

\makeatletter
\renewcommand<>\appendix{%
    \ifnum\inserttotalframenumber=\insertmainframenumber
    \else
    \begin{frame}
        APPENDIX
    \end{frame}
    \fi
  \beamer@inappendixtrue%
  \only#1{\part{\appendixname}%
  \immediate\write\@auxout{\string\@writefile{nav}%
    {\noexpand\headcommand{\noexpand\gdef\noexpand\insertmainframenumber{\the\c@framenumber}}}}%
  \addtocontents{nav}{\protect\headcommand{\protect\beamer@appendixpages{\the\c@page}}}%
  \beamer@resetappendix}%
}
\makeatother

\begin{document}

\begin{frame}
content...
\end{frame}

\appendix

\begin{frame}
content...
\end{frame}

\end{document}

相关内容