如何從 Beamer 的導覽項目符號中刪除某些頁面?

如何從 Beamer 的導覽項目符號中刪除某些頁面?

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

產生的標題(僅顯示六個迷你框架中的四個):

由範例程式碼產生的標題,僅顯示四個(原來六個)迷你框架

相關內容