Wie entferne ich einige Seiten aus den Navigationspunkten in Beamer?

Wie entferne ich einige Seiten aus den Navigationspunkten in Beamer?

Ich erstelle eine beamerPräsentation mit dem miniframesäußeren Design, mit Navigationspunkten und der subsection=falseOption, was bedeutet, dass die Punkte alle in einer Zeile stehen. Das Problem, das ich habe, ist, dass die Punkte in den nächsten Abschnitt überlaufen, wenn ein Abschnitt zu viele Seiten hat:

Section 1 Section 2
oooooooooooooooooooo

Ich neige dazu, viele Frames zu haben, von denen einige nur eine Frage stellen und zum nächsten ausführlichen Frame führen. Ich brauche diese Frames nicht wirklich als Navigationspunkte, und wenn ich sie entferne, wäre das Problem gelöst. Irgendeine Idee, wie das geht?

Ich könnte schummeln, indem ich Overlays verwende, um die Frage und die Antwort im selben Frame anzuzeigen, aber das wäre ein Chaos ...

Codebeispiel zur Beantwortung der Frage von percusse: Dies sollte Ihnen einen Kreis pro Frame geben, nicht einen pro Unterabschnitt. Wenn Sie in einem Unterabschnitt viele Frames hinzufügen, laufen die Kreise über den nächsten Abschnitt hinaus.

\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}

Antwort1

Die Miniframes werden aus den \beamer@framepagesEinträgen in der Hilfsdatei erzeugt .nav. Entfernt man diese bei einzelnen Frames, tauchen diese in der Navigation 1 nicht auf . Dazu muss man das \beamer@writeslidentryMakro patchen, das für das Schreiben der Befehle in die .navDatei zuständig ist:

\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

\miniframesonFügen Sie diesen Code in Ihr Dokument ein. Anschließend können Sie mit und zwischen der ursprünglichen Implementierung und der geänderten Implementierung wechseln, ohne dass Miniframes generiert werden \miniframesoff.

1 Dies kann jedoch einige unerwünschte Folgen haben, die mir nicht bekannt sind!

Vollständiger Beispielcode:

\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}

Resultierende Überschrift (nur vier von sechs Miniframes werden angezeigt):

durch den Beispielcode erzeugte Überschrift, die nur vier (von ursprünglich sechs) Mini-Frames zeigt

verwandte Informationen