我发现了一些相关问题,我将在下面进行解释,但目前还没有真正解决这个问题的方法。
我想在以下场景下展示 Beamer TOC,并且仅在这些场景下展示:
- 当某一节没有子节时,创建一个新节
- 当新章节包含子章节但第一个子章节至少要等到 1 张幻灯片后才开始,并且只会突出显示该章节时,就会出现新章节。我不希望它显示子章节何时立即开始(因为 3)
- 新增一个子部分,其中子部分突出显示
1 和 2 似乎不需要“向前看”。当AtBeginSection
触发时,我们还不知道是否有子部分即将出现,也不知道它将在哪里出现。
- 你的答案在这里Beamer:目录仅在包含小节的章节之前出现没有达到我想要的效果,正是因为答案本身指出了缺点“唯一的缺点(或特点)是,对于带有小节的部分,在第一个目录中不会“遮蔽”后面的小节。”
- samcarter_is_at_topanswers.xyz 的答案基本上总是
AtBeginSection
无效的。在新部分的开头,\insertsubsectionstartpage=\insertsectionstartpage
将总是被评估为 TRUE。
我不想听到这样的答案https://stackoverflow.com/questions/2795478/latex-beamer-prevent-showing-the-toc-at-one-occasion我们定义一个新命令来\section
表示本节没有子节(手动)。
AtBeginSection
我认为答案需要向前看,看看我们是否可以在触发时获取当前部分中的子部分数和第一个子部分的页码(如果存在) 。只有AtBeginSection
当该部分中没有后续子部分或第一个子部分的第一页在当前页之后时,才会显示目录。我没有从.aux
或.nav
文件中获取信息的经验,但我认为相关信息应该存在于这些文件中,因为每次触发时都会填充完整的目录。
将不胜感激任何帮助!
代码片段:
\AtBeginSection[]{ %I want to add a condition here such that this is only when this current section has no subsections within it OR the subsection does not start right away
\addtocounter{framenumber}{-1}
\begin{frame}
\frametitle{Roadmap}
\tableofcontents[currentsection,subsectionstyle=shaded/shaded/hide]
\end{frame}
}
\AtBeginSubsection[]{
\addtocounter{framenumber}{-1}
\begin{frame}
\frametitle{Roadmap}
\tableofcontents[currentsection,currentsubsection]
\end{frame}
}
梅威瑟:
\documentclass{beamer}
\AtBeginSection[]{ %I want to add a condition here such that this is only when this current section has no subsections within it OR the subsection does not start right away
\addtocounter{framenumber}{-1}
\begin{frame}
\frametitle{Roadmap}
\tableofcontents[currentsection,subsectionstyle=shaded/shaded/hide]
\end{frame}
}
\AtBeginSubsection[]{
\addtocounter{framenumber}{-1}
\begin{frame}
\frametitle{Roadmap}
\tableofcontents[currentsection,currentsubsection]
\end{frame}
}
\begin{document}
\section{section without subsections}
\begin{frame}
slide 1
\end{frame}
\section{section with subsection starting right away}
\subsection{subsection at the beginning of section}
\begin{frame}
slide 2
\end{frame}
\subsection{second subsection}
\begin{frame}
slide 3
\end{frame}
\section{section with subsection starting later}
\begin{frame}
slide 4
\end{frame}
\subsection{first subsection after a slide}
\begin{frame}
slide 5
\end{frame}
\end{document}
编辑:我发现了另一个答案在特殊条件下在 Beamer 中显示目录。它使用包xcntperchap
来解决第 1 项。但第 2 项仍未解决。还请注意,的文档xcntperchap
说它不适用于 Beamer。但是,在纠正 2020 年 1 月的这个问题后,该答案中的示例可以正常工作xassoccnt 错误 - LaTeX3 \c_one 已弃用