我不明白为什么“noframenumbering”在我的示例中不起作用。我只想在需要时混合帧编号。有人有解决方案吗?
\documentclass[9pt]{beamer}
\setbeamertemplate{navigation symbols}{}
\setbeamertemplate{footline}{\hfill \color{black!85}\insertframenumber \hspace*{6mm}\vspace*{3pt}}
\begin{document}
\begin{frame}[c,noframenumbering]
Text
\end{frame}
\end{document}
答案1
您可以将\insertframenumber
宏重新定义为空或\relax
。
为了使重新定义保持本地化(即仅适用于当前幻灯片),您需要将幻灯片放在以 开头\begingroup
和以 结尾的组中(或者等效地在重新定义+框架周围\endgroup
放置一对额外的)。{}
梅威瑟:
\documentclass[9pt]{beamer}
\setbeamertemplate{navigation symbols}{}
\setbeamertemplate{footline}{\hfill \color{black!85}\insertframenumber \hspace*{6mm}\vspace*{3pt}}
\begin{document}
\begin{frame}[c]
Text
\end{frame}
\begingroup
\def\insertframenumber{\relax}
\begin{frame}[c]
Text
\end{frame}
\endgroup
\begin{frame}[c]
Text
\end{frame}
\end{document}
请注意,作为副作用,该数字也会从某些查看器(例如 Adobe Reader 和 Evince)中的幻灯片概览窗格中删除,但在其他查看器(例如 Okular)中不会删除,这可能是也可能不是问题 - 如果您只是在某处展示幻灯片,那么它可能没问题,但如果您之后分发幻灯片,并且您希望人们对您的 LaTeX 技能印象深刻,那么这可能是一个问题。一种解决方案是使用\texorpdfstring
,它将第一个参数打印到 pdf 本身,将第二个参数打印到 PDF 元数据。代码:
\documentclass[9pt]{beamer}
% store original definition of \insertframenumber
\let\sidepanenumber\insertframenumber
[...] % lots of code here
\begingroup
% empty in the main document, original definition in the pdf metadata
\def\insertframenumber{\texorpdfstring{\relax}{\sidepanenumber}}
[...]
答案2
该noframenumbering
选项实际上告诉 beamer 不要步进计数器framenumber
,它不是为了隐藏帧数。要隐藏帧的帧数,您可以使用该plain
选项。
要隐藏帧编号,您还可以使用 更改相应帧上的脚注线的生成方式\setbeamertemplate
。例如,
\documentclass[9pt]{beamer}
\setbeamertemplate{navigation symbols}{}
\setbeamertemplate{footline}{\hfill \color{black!85}\insertframenumber \hspace*{6mm}\vspace*{3pt}}
\newenvironment{nonumberframe}{%
\setbeamertemplate{footline}{}
\begin{frame}[c,noframenumbering] %Remove the noframenumbering option if you want the counter to be increased on a frame that is not numbered.
}{%
\end{frame}
\setbeamertemplate{footline}{\hfill \color{black!85}\insertframenumber \hspace*{6mm}\vspace*{3pt}}
}
\begin{document}
\begin{frame}[c]
Text
\end{frame}
\begin{nonumberframe}
Text
\end{nonumberframe}
\begin{frame}[c]
Text
\end{frame}
\end{document}