3

The following minimal working example should adequately illustrate the issue I am experiencing with the use of miniframe and framebreaks, namely that frames that break over multiple frames are all highlighted as active at once in the miniframe bullets. I would like only the active frame of the miniframe bullets to be marked active.

\documentclass[compress]{beamer}

\usetheme{Singapore}

\beamertemplatenavigationsymbolsempty

%http://tex.stackexchange.com/a/66626/9115
\usepackage{etoolbox}
\makeatletter
\patchcmd{\slideentry}{\ifnum#2>0}{\ifnum2>0}{}{\@error{unable to patch}}% replace the subsection number test with a test that always returns true
\makeatother

\begin{document}

\section{Introduction}

\begin{frame}[allowframebreaks]{Introduction}
\begin{enumerate}
\item One
\item Two
\item Three
\item Four
\item Five
\item Six
\item Seven
\item Eight
\item Nine
\item Ten
\item Eleven
\item Twelve
\item Thirteen % Break occurs after this item
\item Fourteen
\item Fifteen
\item Sixteen
\item Seventeen
\item Eighteen
\end{enumerate}
\end{frame}

\end{document}

Both frames of the broken enumeration are marked active

4

Following the programming by permutation anti-pattern, the following seems to work (two extra patches, changing \c@subsectionslide which is not unique for broken frames to \c@framenumber, which is):

\documentclass[compress]{beamer}

\usetheme{Singapore}

\beamertemplatenavigationsymbolsempty

%http://tex.stackexchange.com/a/66626/9115
\usepackage{etoolbox}
\makeatletter
\patchcmd{\slideentry}{\ifnum#2>0}{\ifnum2>0}{}{\@error{unable to patch}}% replace the subsection number test with a test that always returns true
% use frame numbers instead of subsection slide numbers so that frames broken over slides get separate circles
\patchcmd{\slideentry}{\c@subsectionslide}{\c@framenumber}{}{\@error{unable to patch}}
\patchcmd{\beamer@writeslidentry}{\c@subsectionslide}{\c@framenumber}{}{\@error{unable to patch}}

\makeatother

\begin{document}

\section{Introduction}

\begin{frame}[allowframebreaks]{Introduction}
\begin{enumerate}
\item One
\item Two
\item Three
\item Four
\item Five
\item Six
\item Seven
\item Eight
\item Nine
\item Ten
\item Eleven
\item Twelve
\item Thirteen % Break occurs after this item
\item Fourteen
\item Fifteen
\item Sixteen
\item Seventeen
\item Eighteen
\end{enumerate}
\end{frame}

\begin{frame}{Test} Testing \end{frame}

\section{Conclusion}
\begin{frame}{Another test} Lorem ipsum \end{frame}

\end{document}

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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