我使用了在 stackexchange 上找到的一些代码(我记不清具体在哪里了),并使用部分代码构建了 beamer-lecture。我遇到的问题是,帧号无法正确重置。
每帧的底部都印有总帧数。当每个部分的帧数不同时,只打印所有部分中的最大帧数,而不是打印单个部分的总帧数。
请参阅下面的 MWE。也许你需要从以下位置下载 Aalborg Beamer 主题这个网站在这里。
我希望我正确地修改了 MWE。还有一个额外的问题,虽然不是很严重,但只是为了快速访问其他部分而提供一些额外的便利:有没有办法在侧边栏中显示所有部分并链接到第一帧?
附言:如您所见,我尝试totalframenumber
在重置每个部分开始时重置计数器framenumber
。但不起作用。
PPS:至于“使其更简约”部分;我删除了大部分内容,希望这就足够了。
\documentclass[
10pt,
ngerman,
aspectratio=1610,
]{beamer}
\usetheme[
hideothersubsections
]{Aalborg}
% % % % % % % % % % %
% LANGUAGE
% % % % % % % % % % %
\usepackage{polyglossia}
\setmainlanguage[babelshorthands=true]{german}
\addto\captionsngerman{%
\renewcommand{\partname}{Abschnitt}%
}
% % % % % % % % % % %
% COLORS
% % % % % % % % % % %
\definecolor{AALightBlue}{RGB}{194,193,204}
\definecolor{AADarkBlue}{RGB}{33,26,82}
\definecolor{AAGreyBlue}{RGB}{84,97,110}
% % % % % % % % % % %
% NUPART
% % % % % % % % % % %
\makeatletter
\AtBeginPart{%
\addtocontents{toc}{\protect\beamer@partintoc{\the\c@part}{\beamer@partnameshort}{\the\c@page}}%
\setcounter{framenumber}{0}
% \setcounter{totalframenumber}{0}
}
%% number, shortname, page.
\providecommand\beamer@partintoc[3]{%
\ifnum\c@tocdepth=-1\relax
% requesting onlyparts.
\makebox[6em]{Abschnitt #1:} \textcolor{AADarkBlue}{\hyperlink{#2}{#2}}
\par
\fi
}
\define@key{beamertoc}{onlyparts}[]{%
\c@tocdepth=-1\relax
}
\makeatother%
\newcommand{\nameofthepart}{}
\newcommand{\nupart}[1]{%
\part{#1}%
\renewcommand{\nameofthepart}{#1}%
\frame{\partpage \hypertarget{\nameofthepart}{}}%
}
\newcommand{\nextpart}[1]{
{
% \aauwavesbg
\begin{frame}[plain,noframenumbering]
\titlepage
\end{frame}}
\nupart{#1}
\begin{frame}{Agenda}{}
{\footnotesize\tableofcontents}
\end{frame}
}
\newcommand{\ftitle}{\frametitle{\secname}\framesubtitle{\subsecname}}
% % % % % % % % % % %
% META-DATA
% % % % % % % % % % %
\title[\LaTeX-Kurs]{\LaTeX-Kurs}
\author{A. Person}
\institute{%
A. Person\\
Town}
\begin{document}
\begin{frame}[plain,noframenumbering]{Themeneinteilung}
\tableofcontents[onlyparts]
\end{frame}
% Neuer Teil
\nextpart{Einführung}
\section{Einführung}
\subsection{Was ist \TeX{}?}
\begin{frame}\ftitle
text
\end{frame}
\subsection{Vorteile von \LaTeX{}}
\begin{frame}\ftitle
text
\end{frame}
%%%%%%%%%%%%%%%%
% Neuer Teil
\nextpart{Grundlagen}
\section{Grundlagen}
\subsection{Befehle}
\begin{frame}\ftitle
text
\end{frame}
\subsection{Erstes Dokument}
\begin{frame}\ftitle
text
\end{frame}
\subsection{Dokumentklassen}
\begin{frame}\ftitle
text
\end{frame}
\subsection{Pakete einbinden}
\begin{frame}\ftitle
text
\end{frame}
%%%%%%%%%%%%%%%%%
\end{document}
答案1
以下答案利用了https://tex.stackexchange.com/a/73346/36296和https://tex.stackexchange.com/a/244024/36296
以下答案的思路不是重置总帧数,而是计算当前部分的长度。
\documentclass{beamer}
\usepackage{etoolbox}
\makeatletter
\newcount\beamer@partstartframe
\beamer@partstartframe=1
\apptocmd{\beamer@part}{\addtocontents{nav}{\protect\headcommand{%
\protect\beamer@partframes{\the\beamer@partstartframe}{\the\c@framenumber}}}}{}{}
\apptocmd{\beamer@part}{\beamer@partstartframe=\c@framenumber\advance\beamer@partstartframe by1\relax}{}{}
\AtEndDocument{\immediate\write\@auxout{\string\@writefile{nav}%
{\noexpand\headcommand{\noexpand\beamer@partframes{\the\beamer@partstartframe}{\the\c@framenumber}}}}}{}{}
\def\beamer@startframeofpart{1}
\def\beamer@endframeofpart{1}
\def\beamer@partframes#1#2{%
\ifnum\c@framenumber<#1%
\else%
\ifnum\c@framenumber>#2%
\else%
\gdef\beamer@startframeofpart{#1}%
\gdef\beamer@endframeofpart{#2}%
\fi%
\fi%
}
\newcommand\insertpartstartframe{\beamer@startframeofpart}
\newcommand\insertpartendframe{\beamer@endframeofpart}
\makeatother
\usepackage{tikz}
\usetikzlibrary{calc}
\def\inserttotalpartframenumber{%
\pgfmathparse{(\insertpartendframe-\insertpartstartframe+1)}%
\pgfmathprintnumber[fixed,precision=2]{\pgfmathresult}%
}
\def\insertpartframenumber{%
\pgfmathparse{(\insertframenumber-\insertpartstartframe+1)}%
\pgfmathprintnumber[fixed,precision=2]{\pgfmathresult}%
}
\setbeamertemplate{footline}{\insertpartframenumber/\inserttotalpartframenumber}
\begin{document}
\begin{frame}
\tableofcontents
\end{frame}
\part{Einfuhrung}
\frame{1a}
\frame{2a}
\part{Grundlagen}
\frame{1b}
\frame{2b}
\frame{3b \pause blub}
\end{document}