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}
关键说明
- 专属颜色定义:为定义块单独创建
defblue颜色,与定理的thmgreen区分开,确保视觉上的差异 - 环境判断逻辑:通过
etoolbox包的\ifstrequal命令,判断当前定理环境名称,为定义块和定理块分别设置对应的标题颜色与列表符号颜色 - 标题样式绑定:单独设置
block title definition的颜色样式,保证定义块标题栏的颜色与内部列表符号颜色统一 - 扩展性:如果需要添加其他类型的块(如引理、推论),只需在
theorem begin模板中新增对应的判断分支,配置专属颜色即可
内容的提问来源于stack exchange,提问作者Peter Jensen
相关产品推荐
相关产品推荐

