我正在使用该课程编写演示文稿,我想知道一旦我通过该幻灯片,Beamer
是否可以保持导航点保持填充(使用 outerthememiniframes
或)。smoothbars
一个例子(我Frankfurt
随机选择主题,任何其他主题都可以):
\documentclass{beamer}
\usetheme{Frankfurt}
\useoutertheme{miniframes}
\usepackage{remreset}
\makeatletter
\@removefromreset{subsection}{section}
\makeatother
\setcounter{subsection}{1}
\begin{document}
\section{Test}
\frame{one}
\frame{two}
\frame{three}
\end{document}
如您所见,在第一张幻灯片中,第一个点是实的,而其他点是空白的,在第二张幻灯片中,中间的点是实的,在最后一张幻灯片中,最后一个点是实的。
我希望第一张幻灯片中的第一个点完整,第二张幻灯片中前两个点完整,等等。
答案1
要突出显示所有已看过的幻灯片的迷你框架,可以使用以下代码:
\documentclass[compress]{beamer}
\usetheme{Ilmenau}
\makeatletter
\def\slideentry#1#2#3#4#5#6{%
%section number, subsection number, slide number, first/last frame, page number, part number
\ifnum#6=\c@part\ifnum#2>0\ifnum#3>0%
\ifbeamer@compress%
\advance\beamer@xpos by1\relax%
\else%
\beamer@xpos=#3\relax%
\beamer@ypos=#2\relax%
\fi%
\hbox to 0pt{%
\beamer@tempdim=-\beamer@vboxoffset%
\advance\beamer@tempdim by-\beamer@boxsize%
\multiply\beamer@tempdim by\beamer@ypos%
\advance\beamer@tempdim by -.05cm%
\raise\beamer@tempdim\hbox{%
\beamer@tempdim=\beamer@boxsize%
\multiply\beamer@tempdim by\beamer@xpos%
\advance\beamer@tempdim by -\beamer@boxsize%
\advance\beamer@tempdim by 1pt%
\kern\beamer@tempdim
\global\beamer@section@min@dim\beamer@tempdim
\hbox{\beamer@link(#4){%
\usebeamerfont{mini frame}%
\ifnum\c@section>#1%
%\usebeamercolor[fg]{mini frame}%
%\usebeamertemplate{mini frame}%
\usebeamercolor{mini frame}%
\usebeamertemplate{mini frame in other subsection}%
\else%
\ifnum\c@section=#1%
\ifnum\c@subsection>#2%
\usebeamercolor[fg]{mini frame}%
\usebeamertemplate{mini frame}%
\else%
\ifnum\c@subsection=#2%
\usebeamercolor[fg]{mini frame}%
\ifnum\c@subsectionslide<#3%
\usebeamertemplate{mini frame in current subsection}%
\else%
\usebeamertemplate{mini frame}%
\fi%
\else%
\usebeamercolor{mini frame}%
\usebeamertemplate{mini frame in other subsection}%
\fi%
\fi%
\else%
\usebeamercolor{mini frame}%
\usebeamertemplate{mini frame in other subsection}%
\fi%
\fi%
}}}\hskip-10cm plus 1fil%
}\fi\fi%
\else%
\fakeslideentry{#1}{#2}{#3}{#4}{#5}{#6}%
\fi\ignorespaces
}
\makeatother
\begin{document}
\section{Section 1}
\subsection{Subsection 1}
\frame{}\frame{}\frame{}
\subsection{Subsection 2}
\frame{}\frame{}
\section{Section 2}
\subsection{Subsection 1}
\frame{}
\subsection{Subsection 2}
\frame{}\frame{}\frame{}\frame{}\frame{}\frame{}
\section{Section 3}
\subsection{Subsection 1}
\frame{}\frame{}\frame{}\frame{}\frame{}\frame{}
\end{document}
结果
解释
这个问题非常类似于Beamer:如何更改迷你框架的颜色:您必须重写\slideentry
负责生成迷你帧的内部宏,以便它检查当前生成的迷你帧是否已经出现。这通过第 29-56 行中的一系列条件语句实现。