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

Beamer演示文稿自定义定义块:统一标题与项目符号颜色

实现Beamer自定义定义块:标题与项目符号同色且区分其他块类型

要实现定义块标题与内部项目符号同色,且和定理、示例等块颜色区分开,可通过以下方式实现:

核心思路

为定义块配置专属颜色主题,在定理环境的起始模板中根据当前环境类型动态切换颜色设置,确保定义块的标题栏、列表符号使用独立颜色,与其他块类型形成区分。

完整代码示例

\documentclass[9pt,trans,xcolor={table},envcountsect]{beamer} % Plain

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

\setbeamertemplate{blocks}[rounded][shadow=true] 

% 定义各块专属颜色
\definecolor{thmgreen}{rgb}{0.,0.6,0.}    % 定理块颜色
\definecolor{defblue}{RGB}{33,26,82}      % 定义块专属深蓝色
\definecolor{aaublue}{RGB}{33,26,82}% 原深蓝色可复用

\usepackage{etoolbox} % 用于环境判断

\setbeamertemplate{theorem begin}{%
\setbeamertemplate{itemize items}[circle] % 设置项目符号形状
% 根据当前环境类型切换颜色配置
\ifstrequal{\inserttheoremname}{Definition}{%
    % 定义块颜色设置:标题背景为深蓝色,前景白色;列表符号为深蓝色
    \setbeamercolor{block title}{bg=defblue,fg=white}%
    \setbeamercolor{itemize item}{fg=defblue}%
    \setbeamercolor{itemize subitem}{fg=defblue}%
    \setbeamercolor{itemize subsubitem}{fg=defblue}%
    \setbeamercolor{enumerate item}{fg=defblue}%
    \setbeamercolor{enumerate subitem}{fg=defblue}%
    \setbeamercolor{enumerate subsubitem}{fg=defblue}%
}{%
    % 定理块颜色设置:标题背景为绿色,前景白色;列表符号为绿色
    \setbeamercolor{block title}{bg=thmgreen,fg=white}%
    \setbeamercolor{itemize item}{fg=thmgreen}%
    \setbeamercolor{itemize subitem}{fg=thmgreen}%
    \setbeamercolor{itemize subsubitem}{fg=thmgreen}%
    \setbeamercolor{enumerate item}{fg=thmgreen}%
    \setbeamercolor{enumerate subitem}{fg=thmgreen}%
    \setbeamercolor{enumerate subsubitem}{fg=thmgreen}%
}
\begin{\inserttheoremblockenv}
  {%
    \inserttheoremname
    \inserttheoremnumber
    \ifx\inserttheoremaddition\@empty\else\ \inserttheoremaddition\fi%
  }%
  \normalfont%
}

\setbeamertemplate{theorem end}{%
\end{\inserttheoremblockenv}%
}

% 全局块样式设置
\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=white,bg=thmgreen}
\setbeamercolor*{block title definition}{use={normal text,example text},fg=white,bg=defblue} % 定义块标题专属样式

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

\begin{document}

\section{Section}
\begin{frame}[<+->]{自定义块颜色展示}
    \begin{theorem}[定理示例]
        \begin{itemize}
            \item 定理项目符号为绿色,与标题栏颜色一致
        \end{itemize}    
        \begin{enumerate}
            \item 定理编号符号为绿色
        \end{enumerate}  
    \end{theorem}
    
    \begin{definition}[定义示例]
        \begin{itemize}
            \item 定义项目符号为深蓝色,与标题栏颜色一致
        \end{itemize}    
        \begin{enumerate}
            \item 定义编号符号为深蓝色
        \end{enumerate}  
    \end{definition}
    
    \begin{example}[示例块]
        示例块保持原有样式,与定理、定义块颜色区分
    \end{example}
\end{frame}

\end{document}

关键说明

  1. 专属颜色定义:为定义块单独创建defblue颜色,与定理的thmgreen区分开,确保视觉上的差异
  2. 环境判断逻辑:通过etoolbox包的\ifstrequal命令,判断当前定理环境名称,为定义块和定理块分别设置对应的标题颜色与列表符号颜色
  3. 标题样式绑定:单独设置block title definition的颜色样式,保证定义块标题栏的颜色与内部列表符号颜色统一
  4. 扩展性:如果需要添加其他类型的块(如引理、推论),只需在theorem begin模板中新增对应的判断分支,配置专属颜色即可

内容的提问来源于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.07 00:54:58