我不是 TeX 专家,基本上我花了半天时间来弄清楚 beamer 的新加坡主题的以下变化。
我想要的是让标题中的每个子部分(部分)具有不同的颜色。我甚至更改了标题中的阴影颜色(见图)。
但是,我还想实现一个目标,即“简介”、“概述”等部分有不同的背景颜色(而阴影颜色保持不变),但未能实现。我的想法是,每个部分标题的背景都有不同的颜色,当我进入该部分时,阴影会变为该特定颜色。
我不介意它不是一个完全自动化的解决方案,而是手工制作的。任何帮助都将不胜感激。
编辑根据要求,以下是我更改阴影颜色的方式。我基本上定义了一个新命令,在每个部分命令之后调用它。
\newcommand{\changecolor}[1]{
\setbeamercolor{title}{fg=black}
\setbeamercolor{frametitle}{fg=black}
\pgfdeclareverticalshading{beamer@headfade}{\paperwidth}
{
color(0cm)=(section in head/foot.bg);%
color(.95cm)=(#1)
}
}
编辑2为了不造成不必要的努力,这里是我想要的结果的非常便宜的 gimp 版本。
答案1
现在我对最初的解决方案进行了重大简化。在下面的代码中,我使用了基于绿色的配色方案,但通过适当重新定义color0
、color1
、... ,color7
可以自定义颜色。我还在框架的右下角添加了一些(可选)装饰:
\documentclass{beamer}
\usepackage{totcount}
\usepackage{tikz}
\regtotcounter{section}
\definecolor{color0}{HTML}{00675E}
\definecolor{color1}{HTML}{00B366}
\definecolor{color2}{HTML}{34CFCB}
\definecolor{color3}{HTML}{007D48}
\definecolor{color4}{HTML}{80FFC9}
\definecolor{color5}{HTML}{5DCFC3}
\definecolor{color6}{HTML}{BFFFE4}
\definecolor{color7}{HTML}{009E8E}
\makeatletter
\def\sectioncolor{color0}% color to be applied to section headers
\setbeamercolor{palette primary}{use=structure,fg=structure.fg}
\setbeamercolor{palette secondary}{use=structure,fg=structure.fg!75!black}
\setbeamercolor{palette tertiary}{use=structure,fg=structure.fg!50!black}
\setbeamercolor{palette quaternary}{fg=black}
\setbeamercolor{local structure}{fg=color0}
\setbeamercolor{structure}{fg=color0}
\setbeamercolor{title}{fg=color0}
\setbeamercolor{section in head/foot}{fg=black}
\setbeamercolor{normal text}{fg=black,bg=white}
\setbeamercolor{block title alerted}{fg=red}
\setbeamercolor{block title example}{fg=color0}
% Each \section redefines \sectioncolor and applies the shading with this color
% add as many colors as you need
\AtBeginSection{%
\renewcommand\sectioncolor{%
\ifcase\value{section} color0\or color1\or color2\or color3\or color4\or color5\else color6\fi}
\setbeamercolor{frametitle}{fg=black}%
\pgfdeclareverticalshading{beamer@headfade}{\paperwidth}
{%
color(0.25cm)=(bg);
color(1.25cm)=(\sectioncolor)%
}
}
\newlength\sectionboxwd
\AtBeginDocument{%
\ifnum\totvalue{section}>0
\setlength\sectionboxwd{\dimexpr\paperwidth/\totvalue{section}\relax}
\else
\setlength\sectionboxwd{\paperwidth}
\fi
}
\newcommand\insertcolors{%
\ifnum\totvalue{section}>0
\setlength\fboxsep{0pt}%
\foreach \x in {1,...,\totvalue{section}}
{\colorbox{color\x}{\phantom{\rule{\dimexpr\the\sectionboxwd\relax}{5ex}}}}%
\else\fi
}
\setbeamertemplate{section in head/foot}{\setlength\fboxsep{0pt}\hspace{-1.875ex}%
\parbox[c][4ex][t]{\sectionboxwd}{%
\hfill\parbox{\dimexpr\sectionboxwd-8pt\relax}{%
\raggedright\insertsectionhead%
}\hfill\mbox{}%
}%
}
\setbeamertemplate{headline}
{%
\begin{beamercolorbox}[wd=\paperwidth]{section in head/foot}
\insertcolors%
\vskip-4ex%
\insertsectionnavigationhorizontal{\paperwidth}{\hskip-1.875ex}{\hskip-8pt}\vskip2pt
\end{beamercolorbox}%
}
\pgfdeclareverticalshading{beamer@headfade}{\paperwidth}
{%
color(0.25cm)=(bg);
color(1.25cm)=(color7)%
}
\addtoheadtemplate{}{\pgfuseshading{beamer@headfade}\vskip-1.25cm}
\setbeamertemplate{navigation symbols}{}
\addtobeamertemplate{footline}{}{%
\hfill\color{\sectioncolor}\rule[0.5cm]{2.5cm}{1pt}\rule[0.5cm]{1pt}{1cm}\hspace*{0.5cm}}
\title{A Beamer Theme}
\subtitle{With colorful headline}
\author{Gonzalo Medina}
\institute{\texttt{tex,stackexchange.com}}
\date{\today}
\begin{document}
\begin{frame}
\maketitle
\end{frame}
\section{Test section}
\begin{frame}
\begin{enumerate}
\item Test
\end{enumerate}
\end{frame}
\section{A test section with a really really long title}
\begin{frame}
\begin{enumerate}
\item Test
\end{enumerate}
\end{frame}
\section{Another test section}
\begin{frame}
\begin{enumerate}
\item Test
\end{enumerate}
\end{frame}
\section{Another test section with a really really long title}
\begin{frame}
\begin{enumerate}
\item Test
\end{enumerate}
\end{frame}
\end{document}
还有一些图像,显示了示例中的标题页和每个部分的第一框架;这些图像说明了每个部分所需的颜色自动变化和导航栏中的彩色背景。
放大其中一个框架来显示标题:
评论:
该代码需要两次(或三次)运行才能稳定。