在 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--1
。1--2
2--1
2--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}