投影机帧数的最小宽度

投影机帧数的最小宽度

在某些投影机主题中,帧数显示为件数/总数在右下角,日期后面。由于帧数的宽度不是恒定的,这会使日期从一帧“移动”到另一帧,这让我很烦。(使用默认字体时,我只有在数字变化时才能看到它。但使用我正在使用的字体,我能看到每一帧变化的效果。

我不想定义自己的脚线,但我可以通过简单的重新定义强制帧号采用固定宽度,并在 MWE 中注释掉:

\documentclass{beamer}

\usepackage[sfdefault]{cabin} % this makes the effect worse

\usetheme{Boadilla} % for footer

%% Proper formatting with:
%\let\ofn\insertframenumber
%\renewcommand{\insertframenumber}{\protect\makebox[1em]{\ofn}}

\begin{document}
\begin{frame}{test}
\end{frame}

\begin{frame}{test}
\end{frame}

\begin{frame}{test}
\end{frame}

\begin{frame}{test}
\end{frame}

\begin{frame}{test}
\end{frame}

\begin{frame}{test}
\end{frame}

\begin{frame}{test}
\end{frame}

\begin{frame}{test}
\end{frame}

\begin{frame}{test}
\end{frame}

\begin{frame}{test}
\end{frame}

\end{document}

这解决了我所描述的问题,但却产生了另一个(小)问题:PDF 查看器中显示的页码被搞乱了(例如,“[1em]1”)。

当然,我可以接受这一点。此时我问这个问题更多的是出于好奇,而不是为了解决实际问题。有没有更好的方法来实现预期的效果?

答案1

使用

\let\ofn\insertframenumber
\renewcommand{\insertframenumber}{%
  \texorpdfstring{\protect\makebox[1em]{\ofn}}{\ofn}%
}

因此框仅用于打印,而裸号则用于书签。

这是一个可能更好的想法:

\documentclass{beamer}

\usepackage[sfdefault]{cabin} % this makes the effect worse

\usetheme{Boadilla} % for footer

\makeatletter
\defbeamertemplate*{footline}{infolines theme changed}
{
  \leavevmode%
  \hbox{%
  \begin{beamercolorbox}[wd=.333333\paperwidth,ht=2.25ex,dp=1ex,center]{author in head/foot}%
    \usebeamerfont{author in head/foot}\insertshortauthor\expandafter\beamer@ifempty\expandafter{\beamer@shortinstitute}{}{~~(\insertshortinstitute)}
  \end{beamercolorbox}%
  \begin{beamercolorbox}[wd=.333333\paperwidth,ht=2.25ex,dp=1ex,center]{title in head/foot}%
    \usebeamerfont{title in head/foot}\insertshorttitle
  \end{beamercolorbox}%
  \begin{beamercolorbox}[wd=.333333\paperwidth,ht=2.25ex,dp=1ex,right]{date in head/foot}%
    \usebeamerfont{date in head/foot}\insertshortdate{}\hspace*{2em}
    \makebox[4em][r]{\insertframenumber{} / \inserttotalframenumber\hspace*{2ex}}% 
  \end{beamercolorbox}}%
  \vskip0pt%
}
\makeatother
%\setbeamertemplate{footline}[infolines theme changed]

\begin{document}
\begin{frame}{test}
\end{frame}

\begin{frame}{test}
\end{frame}

\begin{frame}{test}
\end{frame}

\begin{frame}{test}
\end{frame}

\begin{frame}{test}
\end{frame}

\begin{frame}{test}
\end{frame}

\begin{frame}{test}
\end{frame}

\begin{frame}{test}
\end{frame}

\begin{frame}{test}
\end{frame}

\begin{frame}{test}
\end{frame}

\end{document}

相关内容