这个问题之前已经问过,但是用于不同的 Beamer 主题那里的答案并没有让我清楚地知道如何处理我的情况,如下例所示(我认为几乎是最低限度的):
\documentclass[compress]{beamer}
\usetheme{Singapore}
\setbeamercolor{section in head/foot}{bg=white}
\useoutertheme{miniframes}
% ^ dots up top
\setbeamertemplate{navigation symbols}{}
% ^ disable annoying footer
\newcommand{\mytoc}{
\tableofcontents[
currentsubsection,
hideothersubsections,
subsectionstyle=show/shaded/hide,
]}
\newcommand{\mytocslide}{
\begin{frame}
\mytoc
\end{frame}}
\begin{document}
\section{Introduction}\subsection{}
\begin{frame}{hiya}
yo
\end{frame}
\mytocslide
\section{Second section}\subsection{}
\begin{frame}
yoyo
\end{frame}
\addcontentsline{toc}{section}{Section not in top nav}
\begin{frame}
yoyoyo
\end{frame}
\end{document}
生成的文档包含目录中的额外部分,但不包含导航栏(如期望的那样),但它在目录中看起来很奇怪。
答案1
为了实现与常规部分条目相同的格式,您需要做一些额外的工作:目录中的部分条目在垂直方向上有额外的间距,1.5em
并且具有特殊的颜色,因此您需要这样说:
\addtocontents{toc}{\vskip1.5em}
\addcontentsline{toc}{section}{\protect\usebeamercolor[fg]{structure} text}
完整示例:
\documentclass[compress]{beamer}
\usetheme{Singapore}
\setbeamercolor{section in head/foot}{bg=white}
\useoutertheme{miniframes}
\setbeamertemplate{navigation symbols}{}
\newcommand{\mytoc}{
\tableofcontents[
currentsubsection,
hideothersubsections,
subsectionstyle=show/shaded/hide,
]}
\newcommand{\mytocslide}{
\begin{frame}
\mytoc
\end{frame}}
\begin{document}
\section{Introduction}
\subsection{}
\begin{frame}{hiya}
yo
\end{frame}
\mytocslide
\section{Second section}
\subsection{}
\begin{frame}
yoyo
\end{frame}
\addtocontents{toc}{\vskip1.5em}
\addcontentsline{toc}{section}{\protect\usebeamercolor[fg]{structure} Section in ToC but not in the navigation bar}
\begin{frame}
yoyoyo
\end{frame}
\end{document}
生成的目录的图像显示了导航栏中不存在的新附加条目:
可以通过使用目录中包含章节的确切方式定义新命令来实现更强大的解决方案(不需要人工干预,甚至会为您提供超链接)(相关定义可以在文件中找到)beamerbasesection.sty
:
\documentclass[compress]{beamer}
\usetheme{Singapore}
\setbeamercolor{section in head/foot}{bg=white}
\useoutertheme{miniframes}
\setbeamertemplate{navigation symbols}{}
\newcommand{\mytoc}{
\tableofcontents[
currentsubsection,
hideothersubsections,
subsectionstyle=show/shaded/hide,
]}
\newcommand{\mytocslide}{
\begin{frame}
\mytoc
\end{frame}}
\makeatletter
\newcommand\addsectiontotoc[1]{%
\addtocontents{toc}{%
\protect\beamer@sectionintoc{\the\c@section}{#1}{\the\c@page}{\the\c@part}%
{\the\beamer@tocsectionnumber}}
}
\makeatother
\begin{document}
\section{Introduction}
\subsection{}
\begin{frame}{hiya}
yo
\end{frame}
\mytocslide
\section{Second section}
\subsection{}
\begin{frame}
yoyo
\end{frame}
\addsectiontotoc{Section in ToC but not in the navigation bar}
\begin{frame}
yoyoyo
\end{frame}
\end{document}