在 beamer 中,我想在部分和章节之间插入书签级别(或深度?)。在示例中,我将其称为章节,就像在报告类中一样。我的代码将部分和章节放在正确的级别,但章节与章节处于同一级别。
我尝试过书签包中的命令和其他一些类似的东西\toclevel@section
,但显然,我不知道我在做什么,我无法改变章节级别(除非我\bookmarksetupnext{rellevel=1}
在章节命令的末尾放置它,它只对下一节有效)。我怎样才能将章节和子章节书签的级别设置为高一级?
\documentclass{beamer}
\usepackage{bookmark}
\AtBeginPart{%
\frame{\partpage}
}%
\AtBeginSection[]{%
\frame{\sectionpage}
}%
\AtBeginSubsection[]{%
\frame{\subsectionpage}
}%
\newcounter{chapter}%
\setcounter{chapter}{0}%
\newcommand{\chapter}[1]{%
\hypertarget{chap\thechapter}{}
\bookmark[level=2, dest=chap\thechapter]{#1}{}
\refstepcounter{chapter}%
\begin{frame}
\begin{center}
{\large \textcolor{red}{Chapitre \thechapter \\ \ \\ #1}}%
\end{center}
\end{frame}
}%
\begin{document}
\part{First part}
\chapter{First chapter}
\section{First section}
\subsection{First subsection}
\section{Second section}
\chapter{Second chapter}
\section{Thrid section}
\part{Second part}
\chapter{Third chapter}
\section{Fourth section}
\section{Fifth section}
\end{document}
答案1
beamer 对级别进行硬编码。您可以修补例如 \part 命令并将其级别设置为零:
\documentclass{beamer}
\usepackage{bookmark}
\AtBeginPart{%
\frame{\partpage}
}%
\AtBeginSection[]{%
\frame{\sectionpage}
}%
\AtBeginSubsection[]{%
\frame{\subsectionpage}
}%
\newcounter{chapter}%
\setcounter{chapter}{0}%
\newcommand{\chapter}[1]{%
\refstepcounter{chapter}%
\hypertarget{chap\thechapter}{}
\bookmark[level=1, dest=chap\thechapter]{#1}{}%
\begin{frame}
\begin{center}
{\large \textcolor{red}{Chapitre \thechapter \\ \ \\ #1}}%
\end{center}
\end{frame}
}%
\makeatletter
\usepackage{etoolbox}
\patchcmd\beamer@part{{1}{toc}}{{0}{toc}}{}{\fail}
\makeatother
\begin{document}
\part{First part}
\chapter{First chapter}
\section{First section}
\subsection{First subsection}
\section{Second section}
\chapter{Second chapter}
\section{Thrid section}
\part{Second part}
\chapter{Third chapter}
\section{Fourth section}
\section{Fifth section}
\end{document}