
Ich erstelle eine beamer
Präsentation mit dem miniframes
äußeren Design, mit Navigationspunkten und der subsection=false
Option, 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@framepages
Einträ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@writeslidentry
Makro patchen, das für das Schreiben der Befehle in die .nav
Datei 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
\miniframeson
Fü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}