Beamer-Thema geheimnisvoll \hbox übervoll

Beamer-Thema geheimnisvoll \hbox übervoll

Ich versuche, ein benutzerdefiniertes Beamer-Design zu schreiben. Ich bin beim Frame-Titel hängen geblieben und habe versucht, sowohl Titel als auch Titel+Untertitel vertikal in einer Beamercolorbox mit fester Größe zu zentrieren. Durch die Kombination einiger Lösungen anderer Leute bin ich zu der Kombination aus \ifx\insertframesubtitle\@emptyund gekommen \vbox to 6ex{ \vfil. Es sieht jetzt genau so aus, wie ich es möchte, erzeugt aber \hbox overfullfür jeden Frame. Ein weiteres kleines Problem ist, dass ich manuell 6ex für die Titelversion und 6.05 für die Titel+Untertitelversion eingeben musste, damit sie genau die gleiche Größe haben (keine Ahnung, warum). Ich hätte gerne eine elegantere Lösung.

Ich freue mich über jede Hilfe!

Hauptdatei:

\documentclass{beamer}

\usetheme{TEST}

\begin{document}

\begin{frame}{Frame}
\end{frame}

\begin{frame}{Frame Title}{Subtitle}
\end{frame}

\end{document}

beamerthemeTEST.sty:

\mode<presentation>

\definecolor{salmon}{RGB}{240, 145, 145}
\setbeamercolor{frametitle}{fg=white, bg=salmon}
\setbeamerfont{frametitle}{size=\LARGE}
\setbeamerfont{framesubtitle}{size=\normalsize}

\defbeamertemplate*{frametitle}{}[1][]
{
    \nointerlineskip%
    \ifx\insertframesubtitle\@empty%
        \begin{beamercolorbox}[wd=\paperwidth, left, leftskip = 1ex]{frametitle}%
           \vbox to 6ex{%
            \vfil%
            \usebeamerfont{frametitle}\strut\insertframetitle%
            \vfil}%
        \end{beamercolorbox}%
    \else%
        \begin{beamercolorbox}[wd=\paperwidth, left, leftskip=1ex, rightskip=4ex]{frametitle}%
            \vbox to 6.05ex{%
            \vfil%
            \usebeamerfont{frametitle}\strut\insertframetitle\\%
            \usebeamerfont{framesubtitle}\strut\insertframesubtitle%
            \vfil}%
        \end{beamercolorbox}%
    \fi%
}
\mode<all>

BEARBEITEN: Wenn ich den Frame-Titel innerhalb der Hauptdatei definiere, wird der Titel im Nur-Titel-Frame nach oben verschoben (wird nicht zentriert).

EDIT2: Ich habe die folgende Lösung für die überfüllte Hbox gefunden (die Mechanik ist nicht klar, hat etwas damit zu tun \vbox to):

\begin{beamercolorbox}[wd=\paperwidth, left]{frametitle}%
    \vbox to 40pt{\vfil%     
    \usebeamerfont{frametitle}\hspace{10pt}\strut\insertframetitle%
    \vfil}%
\end{beamercolorbox}%

Ich versuche immer noch, einen besseren Weg für verschiedene bedingte Werte zu finden \vbox to.

Antwort1

Sie können sich von der Standardvorlage für Rahmentitel inspirieren lassen und erfahren, wie Sie einen Rahmentitel erstellen können, der sich über die gesamte Papierbreite erstreckt, ohne dass die Felder überfüllt werden:

\documentclass[11pt]{beamer}

\makeatletter
\setbeamertemplate{frametitle}{%
  \ifbeamercolorempty[bg]{frametitle}{}{\nointerlineskip}%
  \@tempdima=\textwidth%
  \advance\@tempdima by\beamer@leftmargin%
  \advance\@tempdima by\beamer@rightmargin%
  % changed code from here
  \begin{beamercolorbox}[sep=0cm,left,wd=\the\@tempdima,leftskip=0.5cm,rightskip=0.5cm]{frametitle}
    \begin{minipage}[c][2cm][c]{\textwidth}
      \usebeamerfont{frametitle}%
      \strut\insertframetitle\strut\par
      \ifx\insertframesubtitle\@empty%
      \else
        {\usebeamerfont{framesubtitle}\usebeamercolor[fg]{framesubtitle}\strut\insertframesubtitle\strut\par}%
      \fi
    \end{minipage}
  \end{beamercolorbox}%
}
\makeatother

\setbeamerfont{frametitle}{size=\LARGE}
\setbeamerfont{framesubtitle}{size=\normalsize}

\definecolor{salmon}{RGB}{240, 145, 145}
\setbeamercolor{frametitle}{fg=white, bg=salmon}

\begin{document}

\begin{frame}
\frametitle{Frame}
test
\end{frame}

\begin{frame}
\frametitle{Frame Title}
\framesubtitle{Subtitle}  
test
\end{frame}

\begin{frame}
content...
\end{frame}

\end{document}

Bildbeschreibung hier eingeben Bildbeschreibung hier eingeben

verwandte Informationen