在特殊条件下在 Beamer 中显示目录

在特殊条件下在 Beamer 中显示目录

我想知道如何显示目录:

  • 如果没有小节,则位于节的开头
  • 在 else 小节的开头

每个选项都可以通过命令轻松单独实现

\AtBeginSection[]
{
  \begin{frame}
  \frametitle{Outline}
  \tableofcontents[currentsection]
  \end{frame}
}

或者

\AtBeginSubsection[]
{
  \begin{frame}
  \frametitle{Outline}
  \tableofcontents[currentsection,currentsubsection]
  \end{frame}
}

分别。

答案1

因此,您基本上需要测试某个部分内的子部分数量是否为 0。幸运的是,有一个包可以执行此操作:xcntperchap

\documentclass{beamer}

\usepackage{xcntperchap}
\RegisterCounters{section}{subsection}

\newcounter{totalsubsection}
\setcounter{totalsubsection}{0}
\usepackage{etoolbox}

\AtBeginSection[]
{
    \setcounter{totalsubsection}{\ObtainTrackedValueExp[\value{section}]{section}{subsection}}
    \ifnum\value{totalsubsection}=0%
      \begin{frame}
      \frametitle{Outline}
      \tableofcontents[currentsection]
      \end{frame}
    \fi%
}

\AtBeginSubsection[]
{
  \begin{frame}
  \frametitle{Outline}
  \tableofcontents[currentsection,currentsubsection]
  \end{frame}
}

\title{title}
\author{author}

\begin{document}

\begin{frame}
  \titlepage
\end{frame}

\section{Section1}
\frame{}

\subsection{Subsection1}
\frame{}

\subsection{Subsection2}
\frame{}

\section{Section2}
\frame{}

\subsection{Subsection1}
\frame{}

\subsection{Subsection2}
\frame{}

\subsection{Subsection3}
\frame{}

\section{Section3}
\frame{}

\end{document}

只要不对小节使用特殊的阴影样式,另一种方法可以是在每个节后显示节目录,但如果小节页面紧跟在节页面之后,则删除小节页面:

\documentclass{beamer}

\newcounter{foo}

\AtBeginSection[]
{
      \begin{frame}
      \frametitle{Outline}
      \tableofcontents[currentsection]
      \end{frame}
}
\AtBeginSubsection[]
{   
    \setcounter{foo}{\insertsectionstartpage}
    \addtocounter{foo}{1}
    \ifnum\thefoo=\thepage
    \else
  \begin{frame}
  \tableofcontents[currentsection,currentsubsection]
  \end{frame}
  \fi
}

\begin{document}

\section{Section1}

\subsection{Subsection1}
\frame{sec 1 sub 1}

\section{Section2}
\frame{sec 2}

\subsection{Subsection1}
\frame{sec 2 sub 1}

\section{Section 3}
\frame{sec 3}

\section{Section4}

\subsection{Subsection1}
\frame{sec 4 sub 1}


\end{document}

相关内容