Gesamtseitenzahl im Beamer als Zähler verwenden

Gesamtseitenzahl im Beamer als Zähler verwenden

Ich versuche, in Latex eine Zählung für die Gesamtzahl der Seiten festzulegen:

\newcount\mypagecount
\mypagecount=\insertpresentationendpage

Aber jedes Mal, wenn ich das mache, wird automatisch die Gesamtzahl der Seiten „gedruckt“, anstatt die Zahl als Zählung anzugeben. Gibt es eine Möglichkeit, sie als Zählung festzulegen?

Genauer gesagt versuche ich Folgendes:

\newcount\mypagenum
\newcount\mypagecount
\newdimen\barwidth

\mypagenum=\insertpagenumber
\mypagecount=\insertpresentationendpage
\barwidth=\paperwidth

\multiply\barwidth by \mypagenum                                       
\divide\barwidth by \mypagecount

Ich habe es mit Zählern versucht, aber das hat auch Fehler verursacht:

\newcounter{mypagecount}
\setcounter{mypagecount}{\insertpresentationendpage}

Irgendwelche Ideen, wie ich die Division am Ende durchführen kann, wenn ich diese Zahlen nicht verwenden kann und/oder wie ich diese Zahlen tatsächlich verwenden kann?

Antwort1

Das Folgende macht im Wesentlichen dasselbe wie die aktuelle Version von \insertpresentationendpage, beameraber auf eine Weise, bei der Ihr Zähler gesetzt wird, anstatt das Ergebnis auszudrucken. Ich habe auch eine Proof-of-Concept-Fortschrittsbalkenausgabe beigefügt.

\documentclass[]{beamer}

\newlength\barwidth
\newlength\tmpbarwidth
\newcount\mypagecount

\makeatletter
\newcommand*\progressbar
  {%
    \ifnum\mypagecount=0
      \ifx\beamer@startpageofappendix\@empty
        \mypagecount=\beamer@endpageofdocument\relax
      \else
        \mypagecount=\beamer@startpageofappendix\relax
        \advance\mypagecount\m@ne
      \fi
      \ifnum\mypagecount=0
        \global\mypagecount=1
      \else
        \global\mypagecount=\mypagecount
      \fi
    \fi
    \begingroup
      \tmpbarwidth\insertpagenumber\barwidth
      \divide\tmpbarwidth\mypagecount
      \rule{\tmpbarwidth}{5pt}%
      \advance\barwidth-\tmpbarwidth
      \textcolor{gray}{\rule{\barwidth}{5pt}}%
    \endgroup
  }
\makeatother

\setlength\barwidth{5cm}

\begin{document}
\begin{frame}
  \progressbar
\end{frame}
\begin{frame}
  \progressbar
\end{frame}
\begin{frame}
  \progressbar
\end{frame}
\begin{frame}
  \progressbar
\end{frame}

\end{document}

verwandte Informationen