¿Cómo eliminar algunas páginas de las viñetas de navegación en Beamer?

¿Cómo eliminar algunas páginas de las viñetas de navegación en Beamer?

Estoy haciendo una beamerpresentación usando el miniframestema exterior, con viñetas de navegación y la subsection=falseopción, lo que significa que todas las viñetas están en una sola fila. El problema que tengo es que, si una sección tiene demasiadas páginas, las viñetas se desbordan a la siguiente sección:

Section 1 Section 2
oooooooooooooooooooo

Tiendo a tener muchos cuadros, algunos de ellos simplemente hacen una pregunta, lo que lleva al siguiente cuadro detallado. Realmente no necesito que esos marcos estén representados por viñetas de navegación, y eliminarlos solucionaría el problema. ¿Alguna idea de cómo hacerlo?

Podría hacer trampa usando superposiciones para tener la pregunta y la respuesta en el mismo cuadro, pero eso sería un desastre...

Ejemplo de código para responder a la pregunta de Percusse: esto debería darle un círculo por cuadro, no uno por subsección. Si agrega muchos cuadros en una subsección, los círculos se desbordarán en la siguiente sección.

\documentclass[compress]{beamer}
\useoutertheme[subsection=false]{miniframes}
\begin{document}
\section{S1}
\subsection{SS1}
\frame{1}
\frame{2}
\frame{3}
\subsection{SS2}
\frame{1}
\frame{2}
\frame{3}
...
\end{document}

Respuesta1

Los mini fotogramas se generan utilizando las \beamer@framepagesentradas del .navarchivo auxiliar. Si los elimina para ciertos marcos, no aparecen en la navegación 1 . Para hacerlo, debe parchar el\beamer@writeslidentry macro responsable de escribir los comandos en el .navarchivo:

\makeatletter
\let\beamer@writeslidentry@miniframeson=\beamer@writeslidentry
\def\beamer@writeslidentry@miniframesoff{%
  \expandafter\beamer@ifempty\expandafter{\beamer@framestartpage}{}% does not happen normally
  {%else
    % removed \addtocontents commands
    \clearpage\beamer@notesactions%
  }
}
\newcommand*{\miniframeson}{\let\beamer@writeslidentry=\beamer@writeslidentry@miniframeson}
\newcommand*{\miniframesoff}{\let\beamer@writeslidentry=\beamer@writeslidentry@miniframesoff}
\makeatother

Incluya este código en su documento, luego podrá cambiar entre la implementación original y la modificada sin generar ningún mini marco usando \miniframesony \miniframesoff.

1 ¡Sin embargo, esto puede tener algunas consecuencias no deseadas que desconozco!

Código de ejemplo completo:

\documentclass[compress]{beamer}
\useoutertheme[subsection=false]{miniframes}
\makeatletter
\let\beamer@writeslidentry@miniframeson=\beamer@writeslidentry
\def\beamer@writeslidentry@miniframesoff{%
  \expandafter\beamer@ifempty\expandafter{\beamer@framestartpage}{}% does not happen normally
  {%else
    % removed \addtocontents commands
    \clearpage\beamer@notesactions%
  }
}
\newcommand*{\miniframeson}{\let\beamer@writeslidentry=\beamer@writeslidentry@miniframeson}
\newcommand*{\miniframesoff}{\let\beamer@writeslidentry=\beamer@writeslidentry@miniframesoff}
\makeatother
\begin{document}
\section{S1}
\subsection{SS1}
\frame{1}
\miniframesoff
\frame{2}
\miniframeson
\frame{3}
\subsection{SS2}
\miniframesoff
\frame{1}
\miniframeson
\frame{2}
\frame{3}
\end{document}

Titular resultante (solo se muestran cuatro de seis mini fotogramas):

título producido por el código de ejemplo, que muestra solo cuatro (de seis originalmente) mini fotogramas

información relacionada