Take the 2-minute tour ×
TeX - LaTeX Stack Exchange is a question and answer site for users of TeX, LaTeX, ConTeXt, and related typesetting systems. It's 100% free, no registration required.

I found the Singapore theme very useful. However I can't find the way to put the small circles on top of the frame that are empty for slides not yet discussed and becomes black for slides discussed. How I can put them?

share|improve this question
    
Can you try \documentclass{beamer}\usetheme{Singapore}\useoutertheme{miniframes}? I'm not sure if I understand the question. –  percusse Jun 26 '12 at 11:37
    
@percusse: if I'm not wrong, the OP wants to change the behaviour of the circles; instead of using filled circles only for the current frame, he wonder to make filled all circles corresponding on the current and all past frames, while next frames are still detected by empty circles. Is it right? –  Claudio Fiandrino Jun 26 '12 at 14:35
add comment

1 Answer 1

I guess the proper thing to do is to send a patch to the beamer developers that modifies \slideentry (in beamerbasenavigation.sty) so that it uses three templates (before, current, after).

However, here is a solution that doesn't modify any internal macros.

\documentclass{beamer}
\usetheme{Singapore}
\useoutertheme{miniframes}
\usepackage{etoolbox}

% a flag that tells us how the circles should be drawn
\newif\ifnavbeforecurrent
% reset the flag before every navigation bar
\pretocmd\insertnavigation{\navbeforecurrenttrue}{}{}

% change the circle drawing code so that it changes based on the flag
\defbeamertemplate*{mini frame in current subsection}{changing}[1][50]
{%
  \begin{pgfpicture}{0pt}{0pt}{0.1cm}{0.1cm}
    \pgfpathcircle{\pgfpoint{0.05cm}{0.05cm}}{0.05cm}
    \ifnavbeforecurrent
        \pgfusepath{fill,stroke}
    \else
        \pgfusepath{stroke}
    \fi
  \end{pgfpicture}%
}
\setbeamertemplate{mini frame in current subsection}[changing]

% after the circle for the current frame is drawn, change the flag
\defbeamertemplate*{mini frame}{changing}
{%
  \begin{pgfpicture}{0pt}{0pt}{0.1cm}{0.1cm}
    \pgfpathcircle{\pgfpoint{0.05cm}{0.05cm}}{0.05cm}
    \pgfusepath{fill,stroke}
  \end{pgfpicture}%
  \global\navbeforecurrentfalse
}
\setbeamertemplate{mini frame}[changing]

\begin{document}
\section{A section}
\subsection{A subsection}
\frame{...}
\frame{...}
\frame{...}
\subsection{A second subsection}
\frame{...}
\frame{...}
\frame{...}
\end{document}

result

share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.