Skip to content
Snippets Groups Projects
beamerthemei4.sty 7.13 KiB
Newer Older
  • Learn to ignore specific revisions
  • Christian Spangler's avatar
    Christian Spangler committed
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    % $Id$
    % 
    % a beamer style for i4
    %
    % Copyright 2009 by Daniel Lohmann (dl@cs.fau.de)
    %
    % This file may be distributed and/or modified
    %
    % 1. under the LaTeX Project Public License and/or
    % 2. under the GNU Public License.
    %
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    
    
    \mode<presentation>
    
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    % color setup 
    %
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
      \definecolor{i4red}{rgb}{0.69,0.11,0.18}
      \definecolor{i4blue}{rgb}{0.0,0.4,0.62}
      \definecolor{i4gray}{rgb}{0.827,0.827,0.827}
      \definecolor{darkred}{rgb}{0.8,0,0}
      
      % the "example green" beamer defines in the default colortheme
      \colorlet{beamergreen}{green!50!black}
    
      \setbeamercolor{structure}{fg=i4blue,bg={}}
      \setbeamercolor{section in toc}{fg=black,bg={}}
      \setbeamercolor{subsection in toc}{fg=black,bg={}}
      \setbeamercolor{alerted text}{fg=i4red}
      \setbeamercolor*{palette primary}{fg=black,bg=white}
      \setbeamercolor*{palette secondary}{fg=i4blue,bg=white}
      \setbeamercolor*{palette tertiary}{fg=i4red,bg=white}
      \setbeamercolor*{palette quaternary}{fg=darkred,bg=gray!5!white}
      \setbeamercolor{titlelike}{parent=structure}
      \setbeamercolor{itemize subitem}{fg=i4red}
      \setbeamercolor{page number in head/foot}{fg=i4red}
      \setbeamercolor{sidebar left}{bg={}}
      \setbeamercolor{footline}{parent=structure}
    
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    % background image setup
    %
    % This is the real trick :-) All graphical elements of the i4-layout are just
    % in the background image. To support the "plain"-option for frames, we actually
    % need two different background images (and probably a third one for the title
    % slide, don't know yet)
    %
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
      \usebackgroundtemplate{
        \ifbeamer@plainframe%
          \includegraphics[width=\paperwidth]{beamerthemei4_bgplain}%
        \else %
          \includegraphics[width=\paperwidth]{beamerthemei4_bg}
        \fi%
      }
    
    
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    % enumeration style and borders setup
    %
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
      \setbeamersize{sidebar width left=1.07cm}
      \setbeamersize{text margin left=0.5em}
      \setbeamersize{text margin right=3.5mm}
    
    	% the top-level item symbol is rendered into the sidebar 
      \setbeamertemplate{itemize item}{\raise.5pt\hbox{\vrule width 1ex height 1ex}\hspace{0.5em}}
      \setbeamertemplate{itemize subitem}{\raise.5pt\hbox{\vrule width 0.8ex height 0.8ex}}
      \setbeamertemplate{itemize subsubitem}{\raise.5ex\hbox{\vrule width 1ex height 0.2ex}}
      \setbeamertemplate{headline}[default]
     
      \setlength{\labelwidth}{2em}
      \setlength{\labelsep}{0.5em}
      \setlength{\leftmargini}{0em}
      \setlength{\leftmarginii}{1em}
      \setlength{\leftmarginiii}{1em}
    
    % the above looks nice on slides, but bad in block environments; hence we override
    % beamers original block envs to modify them
    
      % command to be installed at the begin of every block environment
      \newcommand{\beamerblock}{
        \setbeamertemplate{itemize item}{\raise.5pt\hbox{\vrule width 0.8ex height 0.8ex}}
        \setbeamertemplate{itemize subitem}{\raise.5pt\hbox{\vrule width 0.6ex height 0.6ex}}
    		\setlength{\leftmargini}{1.5em}
        \setlength{\labelsep}{0.5em}
    	}
    
      \renewenvironment{block}[1]{%
        \begin{actionenv}%
    			\beamerblock%
          \def\insertblocktitle{#1}%
          \par%
          \usebeamertemplate{block begin}}
        {\par%
          \usebeamertemplate{block end}%
        \end{actionenv}
      }
      \renewenvironment{alertblock}[1]{%
        \begin{actionenv}%
    			\beamerblock%
          \def\insertblocktitle{#1}%
          \par%
          \mode<presentation>{%\usebeamerfont{block}%
            \setbeamercolor{local structure}{parent=alerted text}}%
          \usebeamertemplate{block alerted begin}}
        {\par%
          \usebeamertemplate{block alerted end}%
        \end{actionenv}
      }
      \renewenvironment{exampleblock}[1]{%
        \begin{actionenv}%
    			\beamerblock%
          \def\insertblocktitle{#1}%
          \par%
          \mode<presentation>{%\usebeamerfont{block}%
            \setbeamercolor{local structure}{parent=example text}}%
          \usebeamertemplate{block example begin}}
        {\par%
          \usebeamertemplate{block example end}%
        \end{actionenv}
      }
    
      
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    % footline definitions
    % 
    % The footline is one of the things that are heavily customizable in beamer using
    % outer themes. However, we skip (and do not support) all those fancy beamer 
    % themes here and just let beamer it render as text line. This gives us full 
    % control and easy adaptation, but some things (especially the vertical layout)
    % remain a bit hacky :-)
    %
    % To provide for more easy customization within presentations, the framenumbering
    % can be customized (and also locally surpressed) by overwriting the 
    % macro \InsertFrameNumber
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    
      % default style for frame numbers 
      \def\InsertFrameNumber{\insertframenumber\,--\,\inserttotalframenumber}
      \setbeamertemplate{footline}[text line]{
        % beamer has already set footline color/font here
        %
        % use raisebox to align footline with i4logo
        \raisebox{2.5mm}{\vbox{
          % insert a strut (invisible vertical line) to prevent line breaks
          \rule{0mm}{3mm}
          % here the real content starts
          % print author and title
          \insertshortauthor
          \hspace{2em}
          \insertshorttitle
          % if a shortdate is given, print it in brackets after the title 
          \ifx\insertshortdate\@empty
          \else
            ~(\insertshortdate)
          \fi
          \hspace{2em}
          % if section/subsection are defined, print them (seperated by an em-dash)
          \ifx\insertsection\@empty%
          \else%
            \insertsection%
              \ifx\insertsubsection\@empty%
              \else%
                \,--\,\insertsubsection%
              \fi
            \fi
          % print the remaining stuff right-aligned
          \hfill
          % print page number
          {
            \usebeamercolor[fg]{page number in head/foot}\usebeamerfont{page number in head/foot}    
            \parbox[t]{0.7cm}{\centering{\InsertFrameNumber}}
          }%
        }}
      }
    
    
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    % frametitle setup 
    % 
    % This is probably the most hacky part of i4beamer We completely overwrite the  
    % code beamer uses to render the frame title, especially to get the vertical
    % spacing and alignment right, so it fits with the "background".
    %
    % The i4-Layout does not really offer space for subtitles. We support them 
    % anyway by printing them right-aligned.
    %
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
      \setbeamertemplate{frametitle}{
        \usebeamerfont{frametitle}\usebeamercolor[fg]{frametitle}
        \insertframetitle\strut
        \ifx\insertframesubtitle\@empty
        \else {%
          \usebeamerfont{framesubtitle}\usebeamercolor[fg]{framesubtitle}
          \hfill\insertframesubtitle\strut
        }%
        \fi
        \par\vskip2pt
      }
    
    \mode
    <all>