如何隐藏 beamerclass 侧边栏中的其他 SubSubsections?

如何隐藏 beamerclass 侧边栏中的其他 SubSubsections?

我使用 Latex 中的 beamer 类翻译了一本 600 页的书,因此我有很多小节和小子节。我想在侧边栏中显示当前部分的所有小节以及当前小节的所有小子节。我偶然发现了一个提示,并做了

\setbeamertemplate{subsubsection in sidebar shaded}
{\vspace*{-\baselineskip}}

但这样只会隐藏当前子部分以外的所有子部分。最好的解决方案是

\setbeamertemplate{subsubsection in sidebar shaded}[subsubsectionstyle=show/shaded/hide]

或者其他任何可以改变 subsubsectionstyle 的方法。我最好的想法是

\setbeamertemplate{subsubsection in sidebar shaded}
{\tableofcontents[subsubsectionstyle=show/shaded/hide]}

但这只会产生 3000 多个错误,并没有解决我的问题。有谁有办法解决这个问题吗?

下面是一个 MWE 来解释我的意思:

    \documentclass[9pt]{beamer}

\usetheme[hideothersubsections]{Goettingen}

\begin{document}

\section{Section 1}
\begin{frame}
\frametitle{Section 1}
\end{frame}

\subsection{Subsection 1.1}
\subsubsection{SubSubsection1.1.1}
\begin{frame}
bla
\end{frame}
\subsubsection{SubSubsection 1.1.2}
\begin{frame}
bla
\end{frame}

\subsection{Subsection 1.2}
\subsubsection{SubSubsection1.2.1}
\begin{frame}
bla
\end{frame}
\subsubsection{SubSubsection 1.2.2}
\begin{frame}
bla
\end{frame}

\section{Section 2}
\begin{frame}
\frametitle{Section 2}
\end{frame}

\subsection{Subsection 2.1}
\subsubsection{SubSubsection2.1.1}
\begin{frame}
bla
\end{frame}
\subsubsection{SubSubsection 2.1.2}
\begin{frame}
bla
\end{frame}

\subsection{Subsection 2.2}
\subsubsection{SubSubsection2.2.1}
\begin{frame}
bla
\end{frame}
\subsubsection{SubSubsection 2.2.2}
\begin{frame}
bla
\end{frame}
\end{document}

其中一页输出如下: 在此处输入图片描述

如您所见,使用 \usetheme[hideothersubsections]{Goettingen} 中的选项 [hideothersubsections],当前部分之外的子部分不会显示在侧边栏中。我希望子部分与子部分具有相同的效果。因此,Subsubsection1.2.1 和 SubSubsection1.2.2 不应显示在侧边栏中,因为我位于子部分 1.1 中

因此它看起来应该是这样的: 在此处输入图片描述

当我的幻灯片继续移动并且子部分发生变化(从子部分 1.1 到子部分 1.2)时,显示的子部分也会发生变化。它应该看起来像这样: 在此处输入图片描述

当然,子节 1.1 和子节 1.2 之间的空格应该消失。

答案1

我想使用命令hideothersubsections选项就足够了\usetheme

\documentclass{beamer}
\usepackage{multido}

\usetheme[hideothersubsections]{PaloAlto}

\begin{document}
\multido{\i=1+1}{2}{%
  \section{Section}
  \multido{\i=1+1}{5}{%
    \subsection{Subsection}
    \multido{\i=1+1}{3}{%
      \subsubsection{Subsubsection}
      \begin{frame}
        \frametitle{Foo}
        Bar.
      \end{frame}
    }
  }
}
\end{document}

答案2

我遇到了同样的问题。下面是我解决问题的方法。(一个丑陋的黑客,但对我来说效果很好。)

在包中找到“beamerbasenavigation.sty” beamer。搜索命令的定义\insertverticalnavigation。将此代码复制到文档的 preempt 部分。

在函数内部,更改

\def\beamer@subsubsectionentry##1##2##3##4##5##6{%
  \ifnum##1=\c@part%
  \def\insertpartheadnumber{##1}%

\def\beamer@subsubsectionentry##1##2##3##4##5##6{%
  \ifnum##1=\c@part%
  \ifnum##2=\c@section
  \ifnum##3=\c@subsection
  \def\insertpartheadnumber{##1}%

这确保了仅当节号和小节号都与当前节号匹配时,才会出现子小节条目。

希望这可以帮助。 :)

相关内容