我正在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}