Cómo usar diferentes colores de fondo para la sección actual y otras secciones en la barra de navegación de la sección del proyector

Cómo usar diferentes colores de fondo para la sección actual y otras secciones en la barra de navegación de la sección del proyector

Utilizo el siguiente código para crear una barra de navegación de sección:

\setbeamercolor{section in head/foot}{bg=blue,fg=white}
\addtobeamertemplate{footline}{%
    \leavevmode%
    \hbox{%
        \begin{beamercolorbox}[wd=\paperwidth,ht=2.25ex,dp=1ex,center]{section in head/foot}%
            \insertsectionnavigationhorizontal{\paperwidth}{}{}
        \end{beamercolorbox}}%

}{}

Ahora la barra de navegación tiene un fondo azul y una fuente blanca para la sección actual, mientras que una fuente gris para otras secciones. ¿Pero es posible tener diferentes colores de fondo para ellos? Por ejemplo, ¿bg azul oscuro para la sección actual y bg azul claro para otras secciones?

Todo el archivo beamer tex es solo este mínimo.

\documentclass{beamer}

\usetheme{Madrid}
\title{Title}
\author{Author}
\date{\today}
\addtobeamertemplate{footline}{%
    \leavevmode%
    \hbox{%
        \begin{beamercolorbox}[wd=\paperwidth,ht=2.25ex,dp=1ex,center]{author in head/foot}%
            \insertsectionnavigationhorizontal{\paperwidth}{}{}
        \end{beamercolorbox}}%

}{}

\begin{document}
\titlepage
\section{Sec 1}
\begin{frame}{Frame Title}{Frame Subtitle}
    Frame contents
    \begin{itemize}
        \item Item 1
        \item Item 2
              \begin{itemize}
                  \item Subitem 2.1
                  \item Subitem 2.2
              \end{itemize}
    \end{itemize}
    This is \textbf{bold text for normal text}.
\end{frame}

\section{Sec 2}
\begin{frame}{Frame Title}{Frame Subtitle}
    \begin{block}{Block}
        This is \textbf{bold text for blocks}.
    \end{block}
    \begin{alertblock}{Alert Block}
        This is \textbf{bold text for alert blocks}.
    \end{alertblock}
    \begin{example}
        This is \textbf{bold text for example blocks}.
    \end{example}
    \begin{block}{}
        \centering
        This is \textbf{bold text for unnamed blocks}.
    \end{block}
\end{frame}

\end{document}

Y el resultado es ingrese la descripción de la imagen aquí

Como se ve fácilmente, la sección 1 y la sección 2 en la barra de navegación parecen pertenecer a una barra horizontal larga y completa sin ningún límite entre ellas. Comparten el mismo color de fondo, sólo que con el actual resaltado. Me gustaría hacerles diferentes colores de fondo. ¿Es eso posible?

Respuesta1

Podrías redefinir las section in head/foot (shaded)plantillas para incluir algún tipo de cuadro de colores:

\documentclass{beamer}

\usetheme{Madrid}
\title{Title}
\author{Author}
\date{\today}

\addtobeamertemplate{footline}{%
    \leavevmode%
    \hbox{%
        \begin{beamercolorbox}[wd=\paperwidth,ht=2.5ex,dp=1.1ex,center]{author in head/foot}%
            \insertsectionnavigationhorizontal{\paperwidth}{}{\hskip0pt plus1filll}
        \end{beamercolorbox}}%

}{}

\makeatletter
\newcommand{\secwidth}{\dimexpr\paperwidth/\beamer@sectionmax-2\fboxsep\relax}

\setbeamertemplate{section in head/foot}{\colorbox{orange}{\parbox{\secwidth}{\centering\insertsectionhead}}}
\setbeamertemplate{section in head/foot shaded}{\colorbox{cyan}{\parbox{\secwidth}{\centering\insertsectionhead}}}

\def\insertsectionnavigationhorizontal#1#2#3{%
  \hbox to #1{{%
     \def\slideentry##1##2##3##4##5##6{}%
     #2%\hskip.3cm%
     \usebeamerfont{section in head/foot}\usebeamercolor[fg]{section in head/foot}%
     \setbox\beamer@sectionbox=\hbox{}%
     \ht\beamer@sectionbox=1.875ex%
     \dp\beamer@sectionbox=0.75ex%
     \dohead%
     \box\beamer@sectionbox\hfil%\hskip.3cm%
     #3}}}
     
\def\sectionentry#1#2#3#4#5{% section number, section title, page
  \beamer@xpos=0\relax%
  \beamer@ypos=1\relax%
  \beamer@ypos@offset=0\relax%
  \ifnum#5=\c@part%
  \beamer@section@set@min@width%
  \box\beamer@sectionbox\hskip0ex plus 1fill%
  \setbox\beamer@sectionbox=
  \hbox{\def\insertsectionhead{#2}%
    \def\insertsectionheadnumber{#1}%
    \def\insertpartheadnumber{#5}%
    {%
      \usebeamerfont{section in head/foot}\usebeamercolor[fg]{section in head/foot}%
      \ifnum\c@section=#1%
        \hyperlink{Navigation#3}{{\usebeamertemplate{section in head/foot}}}%
      \else%
        \hyperlink{Navigation#3}{{\usebeamertemplate{section in head/foot shaded}}}%
      \fi}%
  }%
  \ht\beamer@sectionbox=1.875ex%
  \dp\beamer@sectionbox=0.75ex%
  \fi\ignorespaces}     
\makeatother

\begin{document}

\section{Sec 1}
\begin{frame}
\end{frame}

\section{Sec 2}
\begin{frame}
\end{frame}

\section{Sec 3}
\begin{frame}
\end{frame}

\end{document}

ingrese la descripción de la imagen aquí

información relacionada