PDF 书签中的 beamer 子部分如何拥有 4 级?

PDF 书签中的 beamer 子部分如何拥有 4 级?

当使用 beamer 时,我发现我的子部分没有显示在 PDF 书签中。

我可以使用\setcounter{tocdepth}{4}\hypersetup{bookmarksdepth=4}来修复它。但我不知道为什么。

在此回答,据说:

由于subsubsections处于第 4 级,因此 tocdepth 必须设置为 4。

但我们知道子小节属于第 3 级,此图来自latex2e.pdf第 38 页:

在此处输入图片描述

此外,我发现 PDF 书签似乎总是比计数器“少一级” tocdepth,因为如果你使用\setcounter{tocdepth}{2}更改tocdepth为 2,甚至小节的书签也会消失。

您可以使用此 MWE 来测试 PDF 书签和目录的行为。
(我正在使用 TeX Live 2022,用于latexmk -xelatex ...编译。)

\documentclass{beamer}


\hypersetup{bookmarksdepth=4} % this let PDF bookmarks show subsubsections
%\setcounter{tocdepth}{2} % this let TOC frame don't show subsubsections, but also cause subsections not shown in PDF bookmarks
% (try comment both, or comment the former and uncomment the latter)



\usetheme{Berlin}

\begin{document}

\begin{frame} % TOC frame here!
  \tableofcontents
\end{frame}

\section{a}
\subsection{aaa}
\subsubsection{aaaaa}
\begin{frame}a\end{frame}
\subsubsection{aaabb}
\begin{frame}a\end{frame}
\subsection{abb}
\subsubsection{abbaa}
\begin{frame}a\end{frame}
\subsubsection{abbbb}
\begin{frame}a\end{frame}
\section{b}
\subsection{baa}
\subsubsection{baaaa}
\begin{frame}a\end{frame}

\end{document}

答案1

beamer 改变了数字。它将 1 分配给 part,将 2 分配给 section。您可以在 beamerbasesection.sty 中找到相关代码,例如:

% in the \part definition
 \Hy@writebookmark{\the\c@part}{#1}{Outline\the\c@part}{1}{toc}%

% in \beamer@@section
 \Hy@writebookmark{\the\c@section}{\secname}{Outline\the\c@part.\the\c@section}{2}{toc}%

相关内容