我如何显示每帧幻灯片的编号?

我如何显示每帧幻灯片的编号?

在 beamer 中,当\only使用 s 时,如何使页码反映它们?

例如,

\documentclass{beamer}

\usetheme[sectionpage=none,progressbar=frametitle]{metropolis}

\begin{document}
\begin{frame}
  \only<1>{
    Slide 1--1
  }
  \only<2>{
    Slide 1--2
  }
\end{frame}

\begin{frame}
  \only<1>{
    Slide 2--1
  }
  \only<2>{
    Slide 2--2
  }
\end{frame}
\end{document}

我希望这 4 张幻灯片的页码分别为、、1--11--22--12--2

另一个例子:

\documentclass[12pt,aspectratio=169,usenames,dvipsnames]{beamer}

\usetheme[sectionpage=none,progressbar=frametitle]{metropolis}

\begin{document}
\begin{frame}
  Slide 1
\end{frame}

\begin{frame}
  \textcolor<2>{red}{\color<3,8>{blue} Hi}
\end{frame}

\begin{frame}
  Slide 3
\end{frame}
\end{document}

幻灯片 1 和 3 不应显示破折号后部分。

答案1

\documentclass{beamer}

\usetheme[sectionpage=none,progressbar=frametitle]{moloch}% modern fork of the metropolis theme

\newcounter{slideinframe}

\setbeamertemplate{page number in head/foot}{%
    \ifnum\insertframeendpage>\insertframestartpage
        \setcounter{slideinframe}{\thepage}%
        \addtocounter{slideinframe}{-\insertframestartpage}%
        \addtocounter{slideinframe}{1}%
        \insertframenumber{} -- \theslideinframe%
      \else
        \insertframenumber{}
  \fi%
}

\begin{document}

\begin{frame}
  Slide 1
\end{frame}

\begin{frame}
  \textcolor<2>{red}{\color<3,18>{blue} Hi}
\end{frame}

\begin{frame}
  Slide 3
\end{frame}

\end{document}

使用最新版本的 beamer,代码可以简化为:

\documentclass{beamer}

\usetheme[sectionpage=none,progressbar=frametitle]{moloch}% modern fork of the metropolis theme

\setbeamertemplate{page number in head/foot}{%
  \ifnum\insertframeendpage>\insertframestartpage{}
        \insertframenumber{} -- \insertoverlaynumber{}%
  \else
        \insertframenumber{}
  \fi%
}
\makeatother

\begin{document}

\begin{frame}
  Slide 1
\end{frame}

\begin{frame}
  \textcolor<2>{red}{\color<3,18>{blue} Hi}
\end{frame}

\begin{frame}
  Slide 3
\end{frame}

\end{document}

相关内容