[Tex/LaTex] Simple mini frames under frame title beamer

beamermini-frames

I have a simple black beamer template for presentations that I often use. I would like to add some simple mini frame navigation to this, but the outer theme for mini frames adds in too much extra stuff (section names, etc).

I want to add miniframe circles beneath the frametitle without any words or separation denoting section changes in the pdf. Just one circle per frame, centered in a thin line underneath the frametitle. But I do want to have sections in the pdf for general navigation when viewing the file.

It would look something like this…
enter image description here

I looked into adapting the code from the outer theme "mini-frame" .sty, but it is beyond my skill.

Here is my MWE:

\documentclass{beamer}
\setbeamertemplate{itemize items}[circle]
\setbeamercolor{itemize item}{fg=black}
\setbeamercolor{section in head/foot}{fg=white, bg=black}
\setbeamercolor{frametitle}{fg=white, bg=black}
\setbeamerfont{frametitle}{size=\small}
\setbeamertemplate{navigation symbols}{ }
\usefonttheme{serif}
\begin{document}


\section{Some Amazing Presentation}
\begin{frame}{MWE $\vert$ Some Amazing Presentation}
\begin{itemize}
\item This is a really amazing presentation, demonstrating a MWE
\item Very impressive
\end{itemize}
\end{frame}

\section{The Second Part}
\begin{frame}{MWE $\vert$ The Second Part}
\begin{itemize}
\item The second part of this presentation is even better
\item It was really worth waiting for
\end{itemize}
\end{frame}


\begin{frame}{MWE $\vert$ The Second Part}
\begin{itemize}
\item Lots of things to say
\item these things are interesting
\end{itemize}
\end{frame}


\begin{frame}{MWE $\vert$ The Second Part}
\begin{itemize}
\item blah blah blah
\item la la la
\end{itemize}
\end{frame}


\section{The End}
\begin{frame}{MWE $\vert$ The End}
\begin{itemize}
\item But the end is really the best part
\end{itemize}
\end{frame}


\end{document}

Best Answer

This should work as you expect:

\documentclass{beamer}
\setbeamertemplate{itemize items}[circle]
\setbeamercolor{itemize item}{fg=black}
\setbeamercolor{section in head/foot}{fg=white, bg=black}
\setbeamerfont{frametitle}{size=\small}
\setbeamertemplate{navigation symbols}{ }
\usefonttheme{serif}
\setbeamercolor{frametitle}{fg=white,bg=black}

\setbeamercolor{mini frame}{fg=white}

\makeatletter
\def\insertsubsectionnavigationhorizontal#1#2#3{%
    \hbox to #1{{%
        \usebeamerfont{subsection in head/foot}\usebeamercolor[fg]{subsection in head/foot}
        \beamer@currentsubsection=0%
        \def\sectionentry##1##2##3##4##5{}%
        \def\slideentry##1##2##3##4##5##6{%
        \ifnum##6=\c@part\ifnum##2>0\ifnum##3>0%
            \beamer@tempdim=-\beamer@vboxoffset%
    \advance\beamer@tempdim by-\beamer@boxsize%
    \multiply\beamer@tempdim by\beamer@ypos%
    \advance\beamer@tempdim by -1cm%
    \raise\beamer@tempdim\hbox to 3pt{
                \beamer@link(##4){%
                    \usebeamerfont{mini frame}%
                    \ifnum\c@section=##1%
                            \ifnum\c@subsection=##2%
                                    \usebeamercolor[fg]{mini frame}%
                                    \ifnum\c@subsectionslide=##3%
                                            \usebeamertemplate{mini frame}%\beamer@minislidehilight%
                                    \else%
                                            \usebeamertemplate{mini frame in current subsection}%\beamer@minisliderowhilight%
                                    \fi%
                            \else%
                                    \usebeamercolor{mini frame}%
                                    %\color{fg!50!bg}%
                                    \usebeamertemplate{mini frame in other subsection}%\beamer@minislide%
                            \fi%
                    \else%
                            \usebeamercolor{mini frame}%
                            %\color{fg!50!bg}%
                            \usebeamertemplate{mini frame in other subsection}%\beamer@minislide%
                    \fi%
                            }\hskip-10cm plus 1fil%
            }
        \fi\fi\else%
        \fakeslideentry{##1}{##2}{##3}{##4}{##5}{##6}%
        \fi
        \ignorespaces
        }%
        #2\hskip.3cm\setbox\beamer@sectionbox=\hbox{}%
        \hskip-1.875ex\dohead%
        \box\beamer@sectionbox\hfil\hskip.3cm%
        #3
        }}
}
\makeatother

\setbeamertemplate{frametitle}
{\nointerlineskip
  \leavevmode
  \vbox{%
  \begin{beamercolorbox}[wd=\paperwidth,ht=3ex,dp=1ex]{frametitle}%
    \raggedright\hspace*{1em}\insertframetitle
  \end{beamercolorbox}\nointerlineskip
  \begin{beamercolorbox}[wd=\paperwidth,ht=1ex,dp=1ex]{frametitle}%
        \insertsubsectionnavigationhorizontal{\paperwidth}{\hfill}{\hfill}
  \end{beamercolorbox}
  }%
}


\begin{document}   
\section{Some Amazing Presentation}
\subsection{Subsection 1}
\begin{frame}{MWE $\vert$ Some Amazing Presentation}
\begin{itemize}
\item This is a really amazing presentation, demonstrating a MWE
\item Very impressive
\end{itemize}
\end{frame}

\section{The Second Part}
\subsection{Subsection 1}
\begin{frame}{MWE $\vert$ The Second Part}
\begin{itemize}
\item The second part of this presentation is even better
\item It was really worth waiting for
\end{itemize}
\end{frame}


\begin{frame}{MWE $\vert$ The Second Part}
\begin{itemize}
\item Lots of things to say
\item these things are interesting
\end{itemize}
\end{frame}


\begin{frame}{MWE $\vert$ The Second Part}
\begin{itemize}
\item blah blah blah
\item la la la
\end{itemize}
\end{frame}

\section{The End}
\subsection{Subsection 1}
\begin{frame}{MWE $\vert$ The End}
\begin{itemize}
\item But the end is really the best part
\end{itemize}
\end{frame}
\end{document}

enter image description here

The above solution needs:

  1. A rewrite of the default mini frame navigation so that no section names are printed (the part between \makeatletter and \makeatother).
  2. A custom frame title template that embeds the new navigation system (the \setbeamertemplate{frametitle} macro).

Note that in your MWE there were no subsections, which are necessary for the mini frame navigation to work properly. If you don't want/need subsections, just introduce a dummy single subsection for every section (you can also exclude it from the toc).

With a single subsection for section greyed out bullets will indicate frames from other sections, since every section contains a single subsection.