latexbeamer

Block header colour in a beamer presentation


I want to make an environment for definition-blocks in a beamer presentation. The block header and bullet point symbols should have the same colour. This colour should be something else than the corresponding colours in other types of blocks (e.g. theorems, examples etc.). Is there a way to do this?

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

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

\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

\setbeamertemplate{theorem begin}{%
\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}%
\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=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

\begin{document}

\section{Section}
\begin{frame}[<+->]{Colours in environment}
    \begin{theorem}[(Wanted: block header colour=blue)]
        \begin{itemize}
            \item Wanted: Colour of bullet point symbol=blue
        \end{itemize}    
        \begin{enumerate}
            \item Wanted: Colour of bullet point symbol=blue
        \end{enumerate}  
    \end{theorem}
\end{frame}

\end{document}

Solution

  • Instead of overwriting the colour for all kinds of theorem in the theorem begin template, change them for whatever types of theorems you'd like to modify:

    \documentclass[9pt,trans,xcolor={table},envcountsect]{beamer} % Plain
    
    \usefonttheme[onlymath]{serif}
    \usetheme[shownavsym,right]{Aalborg}
    
    \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{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}%
    }
    
    \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
    
    \begin{document}
    
    \section{Section}
    \begin{frame}[<+->]{Colours in environment}
        \begin{theorem}[Wanted: block header colour=blue]
            \begin{itemize}
                \item Wanted: Colour of bullet point symbol=blue
            \end{itemize}    
            \begin{enumerate}
                \item Wanted: Colour of bullet point symbol=blue
            \end{enumerate}  
        \end{theorem}
    
        \begin{definition}[Wanted: block header colour=blue]
            \begin{itemize}
                \item Wanted: Colour of bullet point symbol=blue
            \end{itemize}    
            \begin{enumerate}
                \item Wanted: Colour of bullet point symbol=blue
            \end{enumerate}  
        \end{definition}
    \end{frame}
    
    \end{document}
    

    enter image description here