Ich versuche, ein zu erstellen beamer theme. Ich möchte, dass das frametitleam linken Rand des verläuft frame. Also schreibe ich dieses MWE
\documentclass{beamer}
\title{Title}
\author{John Smith}
\date{\today}
\usepackage{tikz}
\setbeamertemplate{frame numbering}{\insertframenumber}
\defbeamertemplate{frametitle}{plain}{%
\nointerlineskip%
\rotatebox[origin=c]{90}{\begin{beamercolorbox}[%
wd=\paperheight,%
sep=0pt,%
leftskip=0cm,%
rightskip=1cm,%
]{frametitle}%%
\begin{tikzpicture}[baseline={(0,0)}]
\fill[fg] (0,.5ex-1.5pt) rectangle (.1*\paperheight,.5ex+1.5pt);
\end{tikzpicture}%
\insertframetitle%
\nolinebreak%%
\hfill
\rotatebox[origin=c]{270}{\usebeamertemplate*{frame numbering}}%
\end{beamercolorbox}}%
}
\setbeamertemplate{frametitle}[plain]
\begin{document}
\begin{frame}[t]{Frame Title}
\end{frame}
\end{document}
was zu folgendem Ergebnis führt
Dies funktioniert aus zwei Hauptgründen nicht: (1) das frametitlesteht nicht genau am linken Rand, aber es ist etwas Platz vorhanden, (2) der Inhalt verschiebt sich hinter das frametitle. Gibt es eine Möglichkeit, diese beiden Probleme zu lösen? Ich verwende lieber nicht das overlay/remember picture from- tikzPaket.
WAS ICH VERSUCHT HABEsidebar leftIch habe versucht, die Vorlage statt der Vorlage zu ändern frametitle. Dieser Ansatz hat einige Probleme: (1) es wird von überschrieben \useoutertheme{sidebar}oder überschreibt es zumindest, es wird nicht daneben platziert, (2) die Breite der Seitenleiste ändert sich nicht mit dem Inhalt, ein langer Titel kann sich mit dem Inhalt überschneiden (3) es ändert den Rand in der titlepage.
Antwort1
-
(1) der Rahmentitel steht nicht genau am linken Rand, aber es ist etwas Platz
Bewegen Sie die Box nach links
\beamer@leftmargin -
(2) Der Inhalt wird nach dem Frametitle verschoben
Sie können sicherstellen, dass das Titelfeld keinen vertikalen Raum einnimmt (und somit den Rahmenkörper nach unten drückt), indem Sie das Feld zerschlagen
-
(2) Die Breite der Seitenleiste ändert sich nicht mit dem Inhalt. Ein langer Titel kann sich mit dem Inhalt überschneiden.
Dies wird in der folgenden Lösung nicht behandelt. Wenn Sie möchten, dass der Frametitle die Breite des Textbereichs beeinflusst, müssen Sie möglicherweise die Art und Weise, wie Beamer seine Frames erstellt, neu schreiben ...
Vielleicht wäre es einfacher, den linken Textrand zu vergrößern, sodass zwei Zeilen Rahmentitel hineinpassen?
Einige der Zahlen im folgenden Code müssen möglicherweise etwas feinabgestimmt werden ...
\documentclass{beamer}
\title{Title}
\author{John Smith}
\date{\today}
\usepackage{tikz}
\setbeamertemplate{frame numbering}{\insertframenumber}
\makeatletter
\defbeamertemplate{frametitle}{plain}{%
\hspace{-\beamer@leftmargin}%
\smash{\rotatebox[origin=tr]{90}{\begin{beamercolorbox}[%
wd=\paperheight,%
sep=0pt,%
leftskip=0cm,%
rightskip=0cm,%
vmode
]{frametitle}%%
\hspace*{0.1em}
\parbox[t]{.85\linewidth}{%
\begin{tikzpicture}[baseline={(0,0)}]
\fill[fg] (0,.5ex-1.5pt) rectangle (.1*\paperheight,.5ex+1.5pt);
\end{tikzpicture}%
\strut\insertframetitle}%
\hfill
\parbox{.1\linewidth}{\hfill\rotatebox[origin=c]{270}{\usebeamertemplate*{frame numbering}}\hspace{0.35em}\mbox{}}%
\end{beamercolorbox}}}%
\vskip-1.47em
}
\makeatother
\setbeamertemplate{frametitle}[plain]
\begin{document}
\begin{frame}[t]{Frame Title}
ghds
\end{frame}
\begin{frame}[t]
ghds
\end{frame}
\begin{frame}[t]{Frame Title which is terrible long and occupies two line}
ghds
\end{frame}
\begin{frame}[t]{Frame Title}
ghds
\end{frame}
\end{document}




