Ich versuche mich gerade daran, ein eigenes Beamer theme zu erstellen. Die wesentlichsten Merkmale für mein simples theme:

  • dünne blaue Line oben auf jeder Folie (daher verwende ich dafür \setbeamertemplate{background})
  • Übersicht der sections oben auf jeder "normalen" Folie (dafür verwende ich \setbeamertemplate{headline})
  • eine Titelfolie mit einer Titelgrafik in der oberen, linken Ecke (bündig unterhalb der blauen Line), Titel und Autor (dafür verwende ich \setbeamertemplate{title page})

Das schaut auch schon fast so aus, wie ich es mir erhofft hatte. Das einzige, was noch nicht passt: Die Übersicht der sections (welche ich mit \insertsectionnavigationhorizontal erzeuge) erscheint auch der Titelseite. Dort wird sie allerdings großteils von der Titelgrafik verdeckt. Eine schnelle Lösung wäre es ja jetzt, innerhalb der eigentlichen Präsentation für die Titelseite selbst das entsprechende template leer zu definieren. Aber dann müsste man da jedes mal wieder daran denken. Deshalb möchte ich das eleganter gelöst bekommen, direkt in der .sty Datei des themes.

Beispiel:

%!TeX LuaLaTeX
%=== sty Datei für eigenes theme "custom" =====================================
\begin{filecontents}[overwrite]{beamerthemecustom.sty}
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{beamerthemecustom}

\RequirePackage{mwe}
\RequirePackage{tikz}
\usetikzlibrary{calc}

\useoutertheme{custom}
\end{filecontents}


%=== sty Datei für eigenes outer theme "custom" ===============================
\begin{filecontents}[overwrite]{beamerouterthemecustom.sty}
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{beamerouterthemecustom}

\setbeamertemplate{headline}{%
  % in der headline soll eine Übersicht aller sections stehen
  \leavevmode%
  \hbox{%
    \begin{beamercolorbox}[wd=\paperwidth,ht=5ex,dp=1ex]%
    {section in head/foot}%
      \insertsectionnavigationhorizontal{\paperwidth}{}{}%
    \end{beamercolorbox}%
  }%
}

\setbeamertemplate{background}{%
  % der Hintergrund soll ein blauer Balken am oberen Rand sein
  \begin{tikzpicture}
    \useasboundingbox (0,0) rectangle (\the\paperwidth,\the\paperheight);
    \fill[color=blue] (0,\the\paperheight) rectangle
    ($(0,\the\paperheight) + (\the\paperwidth,-3pt)$);
  \end{tikzpicture}
}

\setbeamertemplate{title page}{%
  % bei der Titelseite soll eine Graphik oben links (bündig unter dem
  % blauen Rahmen) erscheinen und darunter Titel und Autor
  \begin{tikzpicture}
    \useasboundingbox (0,0) rectangle (\the\paperwidth,\the\paperheight);
    \node[anchor=north east] (titleImage) at
    ($(\the\paperwidth,\the\paperheight) + (-25pt,17pt)$)
    {%
      \includegraphics[width=.75\pagewidth,height=.5\pageheight]
      {example-image}%
    };
    \node[anchor=north west] (title) at
    ($(titleImage.south west) + (0,-2ex)$)
    {%
      \inserttitle%
    };
    \node[anchor=north west] (author) at
    ($(title.south west) + (0,-2ex)$)
    {%
      \insertauthor%
    };
  \end{tikzpicture}
}
\end{filecontents}


%=== eigentliche Präsentation =================================================
\documentclass[ngerman]{beamer}
\usetheme{custom}

\begin{document}
\title{ein Test}
\author{Max Musterman}

\begin{frame}
  \maketitle
\end{frame}


\section{Eine section}

\begin{frame}{Der Titel}
  Der Inhalt
\end{frame}

\section{Eine andere section}

\begin{frame}{Ein anderer Titel}
  Ein anderer Inhalt
\end{frame}

\end{document}

Ist es möglich innerhalb von \setbeamertemplate{headline} irgendwie zu testen, ob man sich gerade auf der Titelseite befindet? Und dann quasi zu sagen, dass auf dieser Titelseite die headline leer bleiben soll?

gefragt 25 Mai, 16:30

AndreGismo's gravatar image

AndreGismo
531224
Akzeptiert-Rate: 80%

bearbeitet 25 Mai, 16:35


ahh, ich habe eine Lösung gefunden: mit \ifnum\value{framenumber} kann man Code in Abhängigkeit der aktuellen framenumber ausführen lassen. Für framenumber=1 bleibt die headline dann entsprechend leer.

%!TeX LuaLaTeX
%=== sty Datei für eigenes theme "custom" =====================================
\begin{filecontents}[overwrite]{beamerthemecustom.sty}
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{beamerthemecustom}

\RequirePackage{mwe}
\RequirePackage{tikz}
\usetikzlibrary{calc}

\useoutertheme{custom}
\end{filecontents}


%=== sty Datei für eigenes outer theme "custom" ===============================
\begin{filecontents}[overwrite]{beamerouterthemecustom.sty}
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{beamerouterthemecustom}

%\mode<presentation>
\setbeamertemplate{headline}{%
  % in der headline soll eine Übersicht aller sections stehen
  \ifnum\value{framenumber}=1
    % leer lassen
  \else
    \leavevmode%
    \hbox{%
      \begin{beamercolorbox}[wd=\paperwidth,ht=5ex,dp=1ex]%
      {section in head/foot}%
        \insertsectionnavigationhorizontal{\paperwidth}{}{}%
      \end{beamercolorbox}%
    }%
  \fi
}

\setbeamertemplate{background}{%
  % der Hintergrund soll ein blauer Balken am oberen Rand sein
  \begin{tikzpicture}
    \useasboundingbox (0,0) rectangle (\the\paperwidth,\the\paperheight);
    \fill[color=blue] (0,\the\paperheight) rectangle
    ($(0,\the\paperheight) + (\the\paperwidth,-3pt)$);
  \end{tikzpicture}
}

\setbeamertemplate{title page}{%
  % bei der Titelseite soll eine Graphik oben links (bündig unter dem
  % blauen Rahmen) erscheinen und darunter Titel und Autor
  \begin{tikzpicture}
    \useasboundingbox (0,0) rectangle (\the\paperwidth,\the\paperheight);
    \node[anchor=north east] (titleImage) at
    ($(\the\paperwidth,\the\paperheight) + (-25pt,2pt)$)
    {%
      \includegraphics[width=.75\pagewidth,height=.5\pageheight]
      {example-image}%
    };
    \node[anchor=north west] (title) at
    ($(titleImage.south west) + (0,-2ex)$)
    {%
      \inserttitle%
    };
    \node[anchor=north west] (author) at
    ($(title.south west) + (0,-2ex)$)
    {%
      \insertauthor%
    };
  \end{tikzpicture}
}
%\mode<all>
\end{filecontents}


%=== eigentliche Präsentation =================================================
\documentclass[ngerman]{beamer}
\usetheme{custom}

\begin{document}
\title{ein Test}
\author{Max Musterman}

\begin{frame}
  \maketitle
\end{frame}


\section{Eine section}

\begin{frame}{Der Titel}
  Der Inhalt
\end{frame}

\section{Eine andere section}

\begin{frame}{Ein anderer Titel}
  Ein anderer Inhalt
\end{frame}

\end{document}

Ist vermutlich immer noch nicht die eleganteste Lösung, weil ich dann das Titelbild manuell noch etwas verschieben musste, bis es wieder schön "in der Ecke liegt". Aber damit bin ich erst mal zufrieden.

Permanenter link

beantwortet 25 Mai, 22:18

AndreGismo's gravatar image

AndreGismo
531224
Akzeptiert-Rate: 80%

Deine Antwort
Vorschau umschalten

Folgen dieser Frage

Per E-Mail:

Wenn sie sich anmelden, kommen Sie für alle Updates hier in Frage

Per RSS:

Antworten

Antworten und Kommentare

Markdown-Grundlagen

  • *kursiv* oder _kursiv_
  • **Fett** oder __Fett__
  • Link:[Text](http://url.com/ "Titel")
  • Bild?![alt Text](/path/img.jpg "Titel")
  • nummerierte Liste: 1. Foo 2. Bar
  • zum Hinzufügen ein Zeilenumbruchs fügen Sie einfach zwei Leerzeichen an die Stelle an der die neue Linie sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Frage-Themen:

×141
×16
×4

gestellte Frage: 25 Mai, 16:30

Frage wurde gesehen: 420 Mal

zuletzt geändert: 25 Mai, 22:18