
Estou fazendo uma beamer
apresentação usando o miniframes
tema externo, com marcadores de navegação, e a subsection=false
opção, ou seja, os marcadores estão todos em uma única linha. O problema que tenho é que, se uma seção tiver muitas páginas, os marcadores transbordam para a próxima seção:
Section 1 Section 2
oooooooooooooooooooo
Costumo ter muitos frames, alguns deles apenas fazendo uma pergunta, levando ao próximo frame detalhado. Eu realmente não preciso que esses quadros sejam representados por marcadores de navegação, e removê-los resolveria o problema. Alguma ideia de como fazer isso?
Eu poderia trapacear usando sobreposições para colocar a pergunta e a resposta no mesmo quadro, mas isso seria uma bagunça...
Exemplo de código para responder à pergunta de percusse: isso deve fornecer um círculo por quadro, não um por subseção. Se você adicionar muitos quadros em uma subseção, os círculos irão transbordar na próxima seção.
\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}
Responder1
Os miniquadros são gerados utilizando as \beamer@framepages
entradas do .nav
arquivo auxiliar. Se você removê-los de determinados quadros, eles não aparecerão na navegação 1 . Para fazer isso, você deve corrigir a \beamer@writeslidentry
macro responsável por escrever os comandos no .nav
arquivo:
\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
Inclua este código em seu documento, então você poderá alternar entre a implementação original e a modificada sem gerar miniquadros usando \miniframeson
e \miniframesoff
.
1 Isto pode, no entanto, ter algumas consequências indesejadas das quais não estou ciente!
Código de exemplo 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}