
Я делаю beamer
презентацию, используя miniframes
внешнюю тему с маркерами навигации и subsection=false
опцией, что означает, что маркеры все в одной строке. Проблема в том, что если в одном разделе слишком много страниц, маркеры перетекают в следующий раздел:
Section 1 Section 2
oooooooooooooooooooo
У меня обычно много кадров, некоторые из них просто задают вопрос, ведущий к следующему подробному кадру. Мне на самом деле не нужно, чтобы эти кадры были представлены навигационными маркерами, и их удаление решило бы проблему. Есть идеи, как это сделать?
Я мог бы схитрить, используя наложения, чтобы вопрос и ответ были в одном кадре, но это было бы беспорядок...
Пример кода для ответа на вопрос percusse: это должно дать вам один круг на кадр, а не один на подраздел. Если вы добавите много кадров в один подраздел, круги переполнят следующий раздел.
\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}
решение1
Мини-фреймы генерируются с использованием \beamer@framepages
записей во вспомогательном .nav
файле. Если вы удалите их для определенных фреймов, они не появятся в навигации 1 . Для этого вам нужно пропатчить макрос, \beamer@writeslidentry
отвечающий за запись команд в .nav
файл:
\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
и \miniframesoff
.
1 Однако это может иметь некоторые нежелательные последствия, о которых я не знаю!
Полный пример кода:
\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}