You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Beamer中创建跟随章节编号的独立环境计数器

实现Beamer中定理与定义环境的独立章节式编号

要让Beamer里的定理和定义环境按章节独立编号(比如第5节第一个定理为Theorem 5.1,第一个定义为Definition 5.1),可以通过重新定义环境计数器实现,具体修改如下:

修改后的完整代码

\documentclass[9pt,trans,xcolor={table}]{beamer} % 移除默认的envcountsect,避免环境共享计数器

\usefonttheme[onlymath]{serif}
\usetheme[shownavsym,right]{Aalborg}

\setbeamertemplate{section in toc}[sections numbered] % 章节自动编号
\setbeamertemplate{blocks}[rounded][shadow=true] 

\definecolor{dgreen}{rgb}{0.,0.6,0.} 
\definecolor{aaublue}{RGB}{33,26,82}% 深蓝色

\usepackage{etoolbox} % 适配旧版beamer

% 重新定义定理环境:绑定section计数器,独立计数
\newtheorem{theorem}{Theorem}[section]
% 重新定义定义环境:绑定section计数器,独立计数
\newtheorem{definition}{Definition}[section]

\AtBeginEnvironment{theorem}{%
\setbeamertemplate{itemize items}[circle]                    % 项目符号形状
\setbeamercolor{block title}{bg=dgreen!100!white,fg=white}%
\setbeamercolor{itemize item}{fg=dgreen!100!white}%
\setbeamercolor{itemize subitem}{fg=dgreen!100!white}%
\setbeamercolor{itemize subsubitem}{fg=dgreen!100!white}%
\setbeamercolor{enumerate item}{fg=dgreen!100!black}%
\setbeamercolor{enumerate subitem}{fg=dgreen!100!black}%
\setbeamercolor{enumerate subsubitem}{fg=dgreen!100!black}%
}

\AtBeginEnvironment{definition}{%
\setbeamertemplate{itemize items}[circle]                    % 项目符号形状
\setbeamercolor{block title}{bg=blue,fg=white}%
\setbeamercolor{itemize item}{fg=blue}%
\setbeamercolor{itemize subitem}{fg=blue}%
\setbeamercolor{itemize subsubitem}{fg=blue}%
\setbeamercolor{enumerate item}{fg=blue}%
\setbeamercolor{enumerate subitem}{fg=blue}%
\setbeamercolor{enumerate subsubitem}{fg=blue}%
}

\setbeamercolor*{block body}{bg=black!10!white,fg=black} 
\setbeamercolor*{block body alerted}{bg=normal text.bg!90!black,fg=black} 
\setbeamercolor*{block body example}{bg=normal text.bg!90!black,fg=black} 
\setbeamercolor*{block title}{parent=structure2,bg=normal text.bg!0!blue}
\setbeamercolor*{block title alerted}{use={normal text,alerted text},fg=alerted text.fg!0!white,bg=normal text.bg!10!red}
\setbeamercolor*{block title example}{use={normal text,example text},fg=white,bg=cyan}
\setbeamercolor*{block title theorem}{use={normal text,example text},fg=example text.fg!100!normal text.fg,bg=normal text.bg!0!dgreen}

\makeatletter
\pgfdeclareverticalshading[lower.bg,upper.bg]{bmb@transition}{200cm}{color(0pt)=(lower.bg); color(4pt)=(lower.bg); color(4pt)=(upper.bg)}
\makeatother

\makeatletter
\newcommand{\ShiftSectionNumber}[1]{%
\beamer@tocsectionnumber=\numexpr#1+\beamer@tocsectionnumber}
\makeatother

\setbeamertemplate{theorem begin}[normal font]

\begin{document}

\begin{frame}%[allowframebreaks]
    \frametitle{Overview}
    \tableofcontents
\end{frame}

\ShiftSectionNumber{4}
\addtocounter{section}{4} % 让章节编号从5开始

\section{Section}
\begin{frame}[<+->]{Enumeration of environments}
    \begin{theorem}[Counter Works]
        \begin{itemize}
            \item 当前编号:Theorem 5.1(符合章节编号规则)
        \end{itemize}     
    \end{theorem}
    \begin{theorem}[Counter Works]
        \begin{itemize}
            \item 当前编号:Theorem 5.2
        \end{itemize}     
    \end{theorem}
    \begin{definition}[Counter Works]
        \begin{itemize}
            \item 当前编号:Definition 5.1(与定理计数器独立)
        \end{itemize}        
    \end{definition}
\end{frame}

\end{document}

关键修改说明

  • 移除envcountsect选项:原文档类的该选项会让所有定理类环境共享同一个计数器,导致定义编号跟随定理编号,移除后可手动设置独立计数。
  • 重新定义环境:使用\newtheorem{环境名}{显示名称}[section]语法,将每个环境的计数器绑定到section计数器,章节切换时环境计数器自动重置为1,且两个环境计数完全独立。
  • 保留原有样式:所有颜色、项目符号样式的设置均保留,确保文档外观与原版本一致。

内容的提问来源于stack exchange,提问作者Peter Jensen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 18:55:17