
Ich verwende den folgenden Code, um eine Abschnittsnavigationsleiste zu erstellen:
\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}}%
}{}
Jetzt hat die Navigationsleiste einen blauen Hintergrund und weiße Schrift für den aktuellen Abschnitt und graue Schrift für andere Abschnitte. Aber ist es möglich, für diese unterschiedliche Hintergrundfarben zu verwenden? Zum Beispiel dunkelblauer Hintergrund für den aktuellen Abschnitt und hellblauer Hintergrund für andere Abschnitte?
Die gesamte Beamer-Tex-Datei ist nur diese sehr minimale.
\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}
Wie man leicht erkennen kann, scheinen die Bereiche 1 und 2 in der Navigationsleiste zu einer ganzen, langen horizontalen Leiste ohne jegliche Abgrenzung zwischen ihnen zu gehören. Sie haben dieselbe Hintergrundfarbe, nur die aktuelle ist hervorgehoben. Ich würde ihnen gerne unterschiedliche Hintergrundfarben geben. Ist das möglich?
Antwort1
Sie könnten die section in head/foot (shaded)
Vorlagen neu definieren, um eine Art Farbfeld einzuschließen:
\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}