如何在Beamer中创建带独立章节计数器的自定义Opgave环境
解决方案
要让Opgave环境拥有随章节变化的独立计数器,且格式和现有Definition、Example一致,只需把原手动定义的环境改成和其他定理环境相同的newtheorem方式,具体修改如下:
关键修改步骤
- 替换原Opgave相关代码:把你代码中从
\def \roed到最后一个\AtBeginEnvironment{opgave}的部分,替换成以下内容:
\def \roed {normal text.bg!10!red} \def \exerciseblockcolour {\roed} % 清除可能存在的同名命令,避免冲突 \let\opgave\undefined % 定义Opgave环境,计数器随章节重置,格式为「章节号.序号」 \newtheorem{opgave}{Opgave}[section] % 设置Opgave环境的样式,和其他环境保持统一 \AtBeginEnvironment{opgave}{% \setbeamertemplate{itemize items}[circle] \setbeamercolor{block title}{fg=white,bg=\exerciseblockcolour} \setbeamercolor{itemize item}{fg=\exerciseblockcolour} \setbeamercolor{itemize subitem}{fg=\exerciseblockcolour} \setbeamercolor{itemize subsubitem}{fg=\exerciseblockcolour} \setbeamercolor{enumerate item}{fg=\exerciseblockcolour} \setbeamercolor{enumerate subitem}{fg=\exerciseblockcolour} \setbeamercolor{enumerate subsubitem}{fg=\exerciseblockcolour} }
- 原理说明:
newtheorem{opgave}{Opgave}[section]会自动生成一个随章节编号的独立计数器,格式和你现有的Definition、Example完全一致(比如第5章的第一个Opgave会显示为Opgave 5.1)- 用
AtBeginEnvironment统一设置颜色和项目符号,和其他环境的配置逻辑对齐,确保格式统一
修改后的完整代码
\documentclass[9pt,trans,xcolor={table},envcountsect]{beamer} % Plain \usefonttheme[onlymath]{serif} \usetheme[shownavsym,right]{Aalborg} \setbeamertemplate{section in toc}[sections numbered] % Automatic enumeration of sections \setbeamertemplate{blocks}[rounded][shadow=true] \definecolor{dgreen}{rgb}{0.,0.6,0.} \definecolor{aaublue}{RGB}{33,26,82}% dark blue \usepackage{etoolbox} % In order to still use an outdated beamer version \AtBeginEnvironment{theorem}{% \setbeamertemplate{itemize items}[circle] % Shape of bullet-points \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{lemma}{% \setbeamertemplate{itemize items}[circle] % Shape of bullet-points \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{corollary}{% \setbeamertemplate{itemize items}[circle] % Shape of bullet-points \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] % Shape of bullet-points \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}% } \def \exampleblockcolour {cyan} \AtBeginEnvironment{example}{% \setbeamertemplate{itemize items}[circle] % Shape of bullet-points \setbeamercolor{block title}{bg=\exampleblockcolour,fg=white}% \setbeamercolor{itemize item}{fg=\exampleblockcolour}% \setbeamercolor{itemize subitem}{fg=\exampleblockcolour}% \setbeamercolor{itemize subsubitem}{fg=\exampleblockcolour}% \setbeamercolor{enumerate item}{fg=\exampleblockcolour}% \setbeamercolor{enumerate subitem}{fg=\exampleblockcolour}% \setbeamercolor{enumerate subsubitem}{fg=\exampleblockcolour}% } \def \roed {normal text.bg!10!red} \def \exerciseblockcolour {\roed} % 清除可能存在的同名命令,避免冲突 \let\opgave\undefined % 定义Opgave环境,计数器随章节重置,格式为「章节号.序号」 \newtheorem{opgave}{Opgave}[section] % 设置Opgave环境的样式,和其他环境保持统一 \AtBeginEnvironment{opgave}{% \setbeamertemplate{itemize items}[circle] \setbeamercolor{block title}{fg=white,bg=\exerciseblockcolour} \setbeamercolor{itemize item}{fg=\exerciseblockcolour} \setbeamercolor{itemize subitem}{fg=\exerciseblockcolour} \setbeamercolor{itemize subsubitem}{fg=\exerciseblockcolour} \setbeamercolor{enumerate item}{fg=\exerciseblockcolour} \setbeamercolor{enumerate subitem}{fg=\exerciseblockcolour} \setbeamercolor{enumerate subsubitem}{fg=\exerciseblockcolour} } \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{theorems}[numbered] \addtobeamertemplate{theorem begin}{\normalfont} \let\definition\undefined \newtheorem{definition}{\translate{Definition}}[section] \let\example\undefined \newtheorem{example}{\translate{Example}}[section] \uselanguage{danish} \languagepath{danish} \deftranslation[to=danish]{Example}{Eksempel} \deftranslation[to=danish]{Theorem}{S\ae tning} \deftranslation[to=danish]{Corollary}{Korollar} \begin{document} \begin{frame}%[allowframebreaks] \frametitle{Overview} \tableofcontents \end{frame} \ShiftSectionNumber{4} \addtocounter{section}{4} % Enumeration of theorems and examples follows section numbers \section{Section} \begin{frame}[<+->]{Enumeration of self-made environment} \begin{definition}[Indpendent counter] \begin{itemize} \item Counter independent of all other counters: Definition 5.1 \end{itemize} \end{definition} \begin{example}[Indpendent counter] \begin{itemize} \item Counter independent of all other counters: Eksempel 5.1 \end{itemize} \end{example} \begin{opgave}[Wanted: Indpendent counter] \begin{itemize} \item Wanted: Counter independent of all other counters: Opgave 5.1 \end{itemize} \end{opgave} \end{frame} \end{document}
内容的提问来源于stack exchange,提问作者Peter Jensen
相关产品推荐
相关产品推荐

