
Можно ли изменить цвет шрифта разделов в верхней/нижней части независимо от цвета переднего/заднего плана верхней/нижней части?
редактирование: Вот MWE:
\documentclass{beamer}
\useoutertheme{miniframes}
\setbeamercolor{palette tertiary}{fg=white,bg=black}
\begin{document}
\section{sec 1}
\begin{frame}
sec 1
\end{frame}
\section{sec 2}
\begin{frame}
sec 2
\end{frame}
\end{document}
Если бы я хотел изменить цвет названий активных разделов в заголовке на красный, а названия неактивных разделов на синий, но оставить цвета черного и белого для третичной палитры — как бы я это сделал?
решение1
Это должно сработать:
\setbeamercolor{section in head/foot}{parent=palette tertiary,fg=red}
\setbeamertemplate{section in head/foot shaded}{\color{blue}\usebeamertemplate{section in head/foot}}
Объяснение
Посмотрите на первую строку: она говорит, что section in head/foot
наследует цвета от palette tertiary
и переопределяет fg=red
. Поэтому palette tertiary
остается неизменным, а активные заголовки разделов устанавливаются красными.
Аналогично мы хотим что-то вроде \setbeamercolor{section in head/foot shaded}{parent=palette tertiary,fg=blue}
для неактивных заголовков разделов. Да, мы можем задать эти цвета. Но нет, Beamer никогда не будет их использовать. Смотрите следующий код из beamerbasenavigation.sty
:
\def\sectionentry#1#2#3#4#5{% section number, section title, page \ifnum#5=\c@part% \beamer@section@set@min@width \box\beamer@sectionbox\hskip1.875ex plus 1fill% \beamer@xpos=0\relax% \beamer@ypos=1\relax% \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}
Вы могли видеть, что есть \ifnum\c@section=#1
проверка, следует ли затенять заголовок раздела или нет. Однако цветовая тема уже применена в \usebeamercolor[fg]{section in head/foot}
. Поэтому \setbeamercolor{section in head/foot shaded}{parent=palette tertiary,fg=blue}
это допустимо, но бесполезно.
Но у нас все еще есть еще один шанс: после \ifnum
того, как есть \usebeamertemplate{section in head/foot shaded}
. Он определен в beamerouterthemedefault.sty
:
\defbeamertemplate*{section in head/foot shaded}{default}[1][50] {\color{fg!#1!bg}\usebeamertemplate{section in head/foot}}
Обратите внимание, что bg
и fg
вот цвета из section in head/foot
. Это объясняет, почему неактивные заголовки разделов кажутся прозрачными. Назначение грубого нового цвета в этой точке решает вашу проблему.