
我使用以下程式碼建立部分導覽列:
\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}}%
}{}
現在導覽列的背景為藍色,目前部分為白色字體,其他部分為灰色字體。但是它們可以有不同的背景顏色嗎?例如目前部分為深藍色背景,其他部分為淺藍色背景?
整個 beamer tex 檔案就是這個非常小的檔案。
\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}
不難看出,導覽列中的 sec 1 和 sec 2 似乎屬於一個完整的長水平條,它們之間沒有任何邊界。它們共享相同的背景顏色,只是突出顯示當前的顏色。我想為他們製作不同的背景顏色。那可能嗎?
答案1
您可以重新定義section in head/foot (shaded)
模板以包含某種顏色框:
\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}