投影机中星号部分的行为

投影机中星号部分的行为

在 LaTeX 文章中,\section*行为如下:

\documentclass[12pt]{article} \begin{document}
\section*{Not numbered} \thesection % --> 0
\section{Numbered} \thesection % --> 1
\end{document}

然而,使用 beamer 时会发生以下情况:

\documentclass[12pt]{beamer} \begin{document}
\section*{Not numbered} \frame{\thesection}  % --> 1
\section{Numbered} \frame{\thesection} % --> 2
\end{document}

这是为什么?我能纠正这个行为吗?

现在,我真正需要的是 beamer 的一个命令\secnr,它在带星号的部分不打印任何内容,而在不带星号的部分打印正确的 -viz. documentclass article- 编号。因此,这需要:

  1. 修复 beamer 中编号错误的问题
  2. 测试if“当前部分是否已加星标...”

解决其中一个问题(或两个问题)的解决方案将非常受欢迎。

答案1

投影机以不同的方式实现\section*。实际的节号保存在 (TeX) 计数器中,当找到\beamer@tocsectionnumber时不会增加。\section*

解决您问题的一个可能方法是

\usepackage{etoolbox}
\newif\ifstarred
\def\secnr{}
\makeatletter
\pretocmd\beamer@@ssection{\gdef\secnr{}\global\starredtrue}{}{}
\patchcmd\beamer@section{by 1\relax}
  {by 1\relax\xdef\secnr{\the\beamer@tocsectionnumber}\global\starredfalse}{}{}
\makeatother

\secnr按您的需要定义:在 a 中\section*它扩展为无,而在 a 中\section它扩展为节的编号。\ifstarred条件在 a 之后为真\section*,在 a 之后为假\section

相关内容