You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

156 lines
5.9 KiB

% Beamer Color Theme using the Solarized Palette,
% http://ethanschoonover.com/solarized.
%
% Copyright 2012 Jeffrey B. Arnold
%
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
% the Free Software Foundation, either version 3 of the License, or
% (at your option) any later version.
%
% This program is distributed in the hope that it will be useful,
% but WITHOUT ANY WARRANTY; without even the implied warranty of
% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
% GNU General Public License for more details.
%
% You should have received a copy of the GNU General Public License
% along with this program. If not, see <http://www.gnu.org/licenses/>.
\ProvidesPackage{beamercolorthemesolarized}
\RequirePackage{etoolbox}
\RequirePackage{kvoptions}
%% This is ugly. First time using options and conditionals in LaTeX
\SetupKeyvalOptions{
family=solarized,
prefix=solarized@,
}
\DeclareBoolOption[false]{dark}
\DeclareComplementaryOption{light}{dark}
\DeclareStringOption[]{accent}[yellow]
\ProcessKeyvalOptions*
% Solarized palette
\definecolor{solarized@base03}{HTML}{002B36}
\definecolor{solarized@base02}{HTML}{073642}
\definecolor{solarized@base01}{HTML}{586e75}
\definecolor{solarized@base00}{HTML}{657b83}
\definecolor{solarized@base0}{HTML}{839496}
\definecolor{solarized@base1}{HTML}{93a1a1}
\definecolor{solarized@base2}{HTML}{EEE8D5}
\definecolor{solarized@base3}{HTML}{FDF6E3}
\definecolor{solarized@yellow}{HTML}{B58900}
\definecolor{solarized@orange}{HTML}{CB4B16}
\definecolor{solarized@red}{HTML}{DC322F}
\definecolor{solarized@magenta}{HTML}{D33682}
\definecolor{solarized@violet}{HTML}{6C71C4}
\definecolor{solarized@blue}{HTML}{268BD2}
\definecolor{solarized@cyan}{HTML}{2AA198}
\definecolor{solarized@green}{HTML}{859900}
% Set Accent color
% Ugly. Should be done with a switch
\ifdefstring{\solarized@accent}{yellow}{
\colorlet{solarized@accent}{solarized@yellow}
}{}
\ifdefstring{\solarized@accent}{orange}{
\colorlet{solarized@accent}{solarized@orange}
}{}
\ifdefstring{\solarized@accent}{red}{
\colorlet{solarized@accent}{solarized@red}
}{}
\ifdefstring{\solarized@accent}{magenta}{
\colorlet{solarized@accent}{solarized@magenta}
}{}
\ifdefstring{\solarized@accent}{violet}{
\colorlet{solarized@accent}{solarized@violet}
}{}
\ifdefstring{\solarized@accent}{blue}{
\colorlet{solarized@accent}{solarized@blue}
}{}
\ifdefstring{\solarized@accent}{cyan}{
\colorlet{solarized@accent}{solarized@cyan}
}{}
\ifdefstring{\solarized@accent}{green}{
\colorlet{solarized@accent}{solarized@green}
}{}
%% Set base colors for dark or light versions
%% Dark
% Switch between light and dark themes using the method in the CSS
% stylesheet http://ethanschoonover.com/solarized
\ifboolexpe{ bool {solarized@dark}}{
\colorlet{solarized@rebase03}{solarized@base03}
\colorlet{solarized@rebase02}{solarized@base02}
\colorlet{solarized@rebase01}{solarized@base01}
\colorlet{solarized@rebase00}{solarized@base00}
\colorlet{solarized@rebase0}{solarized@base0}
\colorlet{solarized@rebase1}{solarized@base1}
\colorlet{solarized@rebase2}{solarized@base2}
\colorlet{solarized@rebase3}{solarized@base3}
}{
%% Light
\colorlet{solarized@rebase03}{solarized@base3}
\colorlet{solarized@rebase02}{solarized@base2}
\colorlet{solarized@rebase01}{solarized@base1}
\colorlet{solarized@rebase00}{solarized@base0}
\colorlet{solarized@rebase0}{solarized@base00}
\colorlet{solarized@rebase1}{solarized@base01}
\colorlet{solarized@rebase2}{solarized@base02}
\colorlet{solarized@rebase3}{solarized@base03}
}
\mode<presentation>
\setbeamercolor{normal text}{fg=solarized@rebase0, bg=solarized@rebase03}
\setbeamercolor{alerted text}{fg=solarized@accent}
% based css pre element
\setbeamercolor{example text}{fg=solarized@rebase1, bg=solarized@rebase02}
% Header and footer from CSS
\setbeamercolor{footline}{bg=solarized@rebase02,fg=solarized@rebase01}
\setbeamercolor{headline}{bg=solarized@rebase01,fg=solarized@rebase1}
% Titles
\setbeamercolor*{titlelike}{fg=solarized@accent}
\setbeamercolor*{frametitle}{fg=solarized@accent}
\setbeamercolor*{title}{fg=solarized@accent}
% Structure elements use css style for header
\setbeamercolor*{structure}{bg=solarized@rebase01, fg=solarized@rebase1}
% Do not mess with subtle colors in palette. I don't like it.
\setbeamercolor*{palette primary}{bg=solarized@rebase01, fg=solarized@rebase1}
\setbeamercolor*{palette secondary}{parentbg=solarized@rebase01, fg=solarized@rebase1}
\setbeamercolor*{palette tertiary}{bg=solarized@rebase01, fg=solarized@rebase1}
\setbeamercolor*{palette quaternary}{bg=solarized@rebase01, fg=solarized@rebase1}
% Make Blocks slightly lighter/darker
\setbeamercolor{block title}{fg=solarized@accent, bg=solarized@rebase02}
%\setbeamercolor{block title alerted}{}
%\setbeamercolor{block title example}{}
\setbeamercolor{block body}{parent=normal text, bg=solarized@rebase02}
% \setbeamercolor{block body alerted}{}
% \setbeamercolor{block body example}{}
% same as footline
% Set Sidebar and footline to use the css style for footer
\setbeamercolor*{sidebar}{parent=headline}
\setbeamercolor*{palette sidebar primary}{fg=solarized@rebase01, fg=solarized@rebase1}
\setbeamercolor*{palette sidebar secondary}{fg=solarized@rebase01, fg=solarized@rebase1}
\setbeamercolor*{palette sidebar tertiary}{fg=solarized@rebase01, fg=solarized@rebase1}
\setbeamercolor*{palette sidebar quaternary}{fg=solarized@rebase01, fg=solarized@rebase1}
% border-color for headings
\setbeamercolor{separation line}{fg=solarized@rebase0}
\setbeamercolor{fine separation line}{fg=solarized@rebase0}
\setbeamercolor*{section in sidebar shaded}{parent=palette sidebar primary}
% a.hover.navlink in CSS
\setbeamercolor*{section in sidebar}{parent=palette sidebar primary, fg=solarized@rebase02}
\setbeamercolor*{subsection in sidebar}{parent=section in sidebar}
\setbeamercolor*{subsection in sidebar shaded}{parent=section in sidebar shaded}
\mode
<all>