Seite 1 von 1

Beamer: Gleiche Seitennummer für Slides in "allowframebreaks"

Verfasst: Do 24. Jun 2021, 01:32
von hask

Hallo zusammen,

ich möchte gerne, dass in einer Beamer-Präsentation mehrere Slides, die durch die Verwendung von "allowframebreaks" entstehen, dieselbe Slide-Nummer haben (danach soll dann normal weitergezählt werden).

Ich habe eine StackOverflow-Antwort (mit MWE) gefunden und weiß, dass sie vor vielen Jahren einmal bei mir funktioniert hatte. Aktuell funktioniert das dort beschriebene MWE allerdings nicht mehr:

\documentclass{beamer}
  \mode<presentation>

\usetheme{Boadilla}

\usepackage{etoolbox}
\usepackage{lipsum}

\newcounter{multipleslide}

\makeatletter%
\newcommand{\multipleframe}{%
\setcounter{multipleslide}{\value{framenumber}}
\stepcounter{multipleslide}
\patchcmd{\beamer@@tmpl@footline}% <cmd>
  {\insertframenumber}% <search>
  {\themultipleslide}% <replace>
  {}% <success>
  {}% <failure>
}
\newcommand{\restoreframe}{%
\patchcmd{\beamer@@tmpl@footline}% <cmd>
  {\themultipleslide}% <search>
  {\insertframenumber}% <replace>
  {}% <success>
  {}% <failure>
\setcounter{framenumber}{\value{multipleslide}}%
}
\makeatother%

\begin{document}

% "Slide 1"
\multipleframe  %<------------------------------------
\begin{frame}[allowframebreaks]
\begin{itemize}
 \item Foo
 \item Bar
 \item Baz
\end{itemize}
\lipsum[1-5]
\end{frame}
\restoreframe  %<------------------------------------

% "Slide 2"
\begin{frame}
test
\end{frame}

\end{document}

Weiß jemand, wo dort das Problem liegt und wie man dies behoben kann? Ich verwende TeX Live 2020.

Viele Grüße


Re: Beamer: Gleiche Seitennummer für Slides in "allowframebreaks"

Verfasst: Do 24. Jun 2021, 10:59
von Grummelgast

Das kommt davon, wenn man interne Makros patched und dabei nicht einmal testet, ob der Patch erfolgreich ist. Warum nicht ganz ohne interne Makros rein auf Basis von \insertframenumber.

\documentclass{beamer}
  \mode<presentation>

\usetheme{Boadilla}

\usepackage{xpatch}
\usepackage{lipsum}

\newcounter{multipleslide}
\newif\ifmultipleslide
\xapptocmd{\multipleslidetrue}{\setcounter{multipleslide}{\value{framenumber}}\stepcounter{multipleslide}}{}{\PatchFailure}
\xapptocmd{\multipleslidefalse}{\setcounter{framenumber}{\value{multipleslide}}}{}{\PatchFailure}
\xpretocmd{\insertframenumber}{\ifmultipleslide \themultipleslide\else}{}{\PatchFailure}
\apptocmd{\insertframenumber}{\fi}{}{\PatchFailure}

\begin{document}

% "Slide 1"
\multipleslidetrue  %<------------------------------------
\begin{frame}[allowframebreaks]
\begin{itemize}
 \item Foo
 \item Bar
 \item Baz
\end{itemize}
\lipsum[1-5]
\end{frame}
\multipleslidefalse  %<------------------------------------

% "Slide 2"
\begin{frame}
test
\end{frame}

% "Slide 3"
\multipleslidetrue  %<------------------------------------
\begin{frame}[allowframebreaks]
\begin{itemize}
 \item Foo
 \item Bar
 \item Baz
\end{itemize}
\lipsum[1-5]
\end{frame}
\multipleslidefalse  %<------------------------------------

\end{document}

Allerdings würde ich selbst bei der dem Multi-Frame der Frame-Nummer eher einen Postfix anhängen, damit man noch eine Unterscheidung hat.


Re: Beamer: Gleiche Seitennummer für Slides in "allowframebreaks"

Verfasst: Fr 25. Jun 2021, 01:16
von hask

Vielen Dank, das klappt gut!