бимер: цвет шрифтов в заголовке/подножии отличается от цвета заднего/переднего плана

бимер: цвет шрифтов в заголовке/подножии отличается от цвета заднего/переднего плана

Можно ли изменить цвет шрифта разделов в верхней/нижней части независимо от цвета переднего/заднего плана верхней/нижней части?

редактирование: Вот 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. Это объясняет, почему неактивные заголовки разделов кажутся прозрачными. Назначение грубого нового цвета в этой точке решает вашу проблему.

Связанный контент