
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
, beamer
aber 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}