PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Class Beamer - Miniframes nicht über ganze Breite für Logo



Dirk2718
30-04-2012, 09:01
Hallo Zusammen,

ich nutze die Miniframes in meiner Präsentation. Dort würde ich gerne oben rechts ein kleines Logo meiner Uni einfügen. Kann ich den Platz den die Miniframes nutzen, aktuell ist es ja die Textbreite, einschränken, so dass rechts daneben noch ein kleines Logo eingefügt werden kann? Aktuell würde ein Logo "Zusammenfassung" und den Punkt überdecken.

Hier ein Minimalbeispiel in dem ich das gerne realisieren würde:

\documentclass[compress, handout]{beamer}
\usepackage[ngerman]{babel}
\usepackage[latin1]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{lmodern}

\mode<presentation>
{
% Präsentationsthema auswählen
\usetheme{Boadilla}

% äußeres Thema anpassen
\useoutertheme[subsection=false]{miniframes}
}

\title{Titel}
\author{Autor}
\institute{Uni}
\date{\today}

\begin{document}

\begin{frame}
\titlepage
\end{frame}

\section{Start}
\subsection{Overview}

\begin{frame}[<+->]
\frametitle{Start}

\begin{itemize}
\item Nummer 1
\item Nummer 2
\end{itemize}
\end{frame}

\section{Zusammenfassung}
\subsection{Overview}

\begin{frame}[<+->]
\frametitle{Zusammenfassung}

\begin{itemize}
\item Nummer 1
\item Nummer 2
\end{itemize}
\end{frame}

\end{document}

Vielen Dank für eure Tipps und Grüße
Dirk

André25
30-04-2012, 17:29
Hallo Dirk!

Probiere mal das in Deine Präambel einzufügen und variiere -- je nach Belieben -- die im Beispiel rot markierte .8 (ist ein Faktor von .0 bis 1).

\makeatletter
\defbeamertemplate*{headline}{My miniframes theme}
{%
\begin{beamercolorbox}[colsep=1.5pt]{upper separation line head}
\end{beamercolorbox}
\begin{beamercolorbox}{section in head/foot}
\vskip2pt\insertnavigation{.8\paperwidth}\vskip2pt
\end{beamercolorbox}%
\ifbeamer@theme@subsection%
\begin{beamercolorbox}[colsep=1.5pt]{middle separation line head}
\end{beamercolorbox}
\begin{beamercolorbox}[ht=2.5ex,dp=1.125ex,%
leftskip=.3cm,rightskip=.3cm plus1fil]{subsection in head/foot}
\usebeamerfont{subsection in head/foot}\insertsubsectionhead
\end{beamercolorbox}%
\fi%
\begin{beamercolorbox}[colsep=1.5pt]{lower separation line head}
\end{beamercolorbox}
}
\makeatother


Gruß,

André :cool:

Dirk2718
03-05-2012, 00:09
Hallo André!

Vielen Dank für den Code. Ich habe den im obigen Minibeispiel nach den \usepackages{} eingefügt. Aber auch nach mehrmaligem kompilieren und ändern der 0.8, verteilen sich "Start" und "Zusammenfassung" immer noch über die ganze Breite.
Muss ich noch irgendwas anderes ändern oder aufrufen, damit das klappt?

Viele Grüße
Dirk

André25
03-05-2012, 18:56
Aber auch nach mehrmaligem kompilieren und ändern der 0.8, verteilen sich "Start" und "Zusammenfassung" immer noch über die ganze Breite.
Muss ich noch irgendwas anderes ändern oder aufrufen, damit das klappt?

Hallo Dirk!

Eigentlich sollte es so klappen. Das einzige, was ich noch geändert hatte, war, dass ich Dein \mode heraus genommen habe. Damit hat's bei mir nicht kompiliert.

Hier der Code und anbei das Ergebnis, was bei mir heraus kommt. Wie sieht dieses Beispiel bei Dir aus?

\documentclass[compress, handout]{beamer}
\usepackage[ngerman]{babel}
\usepackage[latin1]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{lmodern}

%\mode%

% Präsentationsthema auswählen
\usetheme{Boadilla}

% äußeres Thema anpassen
\useoutertheme[subsection=false]{miniframes}


\title{Titel}
\author{Autor}
\institute{Uni}
\date{\today}


\makeatletter
\defbeamertemplate*{headline}{My miniframes theme}
{%
\begin{beamercolorbox}[colsep=1.5pt]{upper separation line head}
\end{beamercolorbox}
\begin{beamercolorbox}{section in head/foot}
\vskip2pt\insertnavigation{.8\paperwidth}\vskip2pt
\end{beamercolorbox}%
\ifbeamer@theme@subsection%
\begin{beamercolorbox}[colsep=1.5pt]{middle separation line head}
\end{beamercolorbox}
\begin{beamercolorbox}[ht=2.5ex,dp=1.125ex,%
leftskip=.3cm,rightskip=.3cm plus1fil]{subsection in head/foot}
\usebeamerfont{subsection in head/foot}\insertsubsectionhead
\end{beamercolorbox}%
\fi%
\begin{beamercolorbox}[colsep=1.5pt]{lower separation line head}
\end{beamercolorbox}
}
\makeatother


\begin{document}

\begin{frame}
\titlepage
\end{frame}

\section{Start}
\subsection{Overview}

\begin{frame}[<+->]
\frametitle{Start}

\begin{itemize}
\item Nummer 1
\item Nummer 2
\end{itemize}
\end{frame}

\section{Zusammenfassung}
\subsection{Overview}

\begin{frame}[<+->]
\frametitle{Zusammenfassung}

\begin{itemize}
\item Nummer 1
\item Nummer 2
\end{itemize}
\end{frame}

\end{document}

Gruß, André :)

Dirk2718
04-05-2012, 10:06
Hallo André!

Super! Das klappt! :)
Hast du den Code selbst verfasst? Ich wüsste nicht ansatzweise wie ich auf so einen Code kommen sollte, bzw. wo ich nachschaue, falls ich selbst mal in der Richtung was machen wollte.

Es lag übrigens nicht an der Zeile \mode (Wo ich dann nochmal nachgucke wofür die überhaupt ist, wenn man die einfach so ausblenden kann.). Ich hatte deinen Code unter \usepackage eingefügt. Da geht er nicht. Fügt man den wie du direkt über \begin{document} ein, klappt es.

Viele Grüße
Dirk

André25
04-05-2012, 14:43
Hast du den Code selbst verfasst?

Nein, von mir ist nur die .8! ;)


Ich wüsste nicht ansatzweise wie ich auf so einen Code kommen sollte, bzw. wo ich nachschaue, falls ich selbst mal in der Richtung was machen wollte.

In Deinem Code steht: \useoutertheme[subsection=false]{miniframes}. Also nachschauen unter (bei Windows+MiKTeX) c:\Program Files (x86)\MiKTeX 2.9\tex\latex\beamer\base\themes\outer\ in die Datei beamerouterthememiniframes.sty. Dort die Definition der Kopfzeile kopiert (ab Zeile 96). In der Zeile 101 wird die Breite mit \paperwidth festgelegt. Dort einfach einen Faktor wie .8 davor. Das Ganze in die Präambel kopiert mit einem \makeatletter davor und einem \makeatother dahinter. Die Bezeichnung miniframes theme muss noch umbenannt werden (da ja so schon vorhanden) also z. B. My miniframes theme.


Ich hatte deinen Code unter \usepackage eingefügt. Da geht er nicht. Fügt man den wie du direkt über \begin{document} ein, klappt es.

Dann wird offensichtlich die Änderung (der Code mit der .8) wieder überschrieben, wenn Du danach \useoutertheme[subsection=false]{miniframes} lädst.

Beste Grüße und viel Erfolg!

André :cool:

Dirk2718
06-05-2012, 12:18
Hallo André!

Danke für die Anleitung.
Ich wollte jetzt selbstständig versuchen ein Bild in den freigewordenen Platz einzufügen. Dazu muss ich scheinbar den Befehl

\insertnavigation{0.8\paperwidth}
anpassen. Nur leider finde ich das Verzeichnis nicht. Bei mir geht es bis
C:\Program Files (x86)\MiKTeX 2.9\tex\latex
Da drunter existiert aber kein Verzeichnis "beamer".
Ist da irgendwas falsch, oder ist es nur wo anders?

Edit:
Hab es gefunden. Liegt im Userverzeichnis
C:\User\-Name-\AppData\Roaming\MiKTeX\2.9

Vielen Dank und Grüße
Dirk

Dirk2718
06-05-2012, 14:47
Ich stöbere gerade nach der Doku zu Tipps zu meinem Bildproblem. Dabei kommt mir glatt eine andere Lösung zur eigentlichen Frage über den Weg gelaufen (Kapitel 8.2.1):

\setbeamertemplate{headline}
{%
\begin{beamercolorbox}{section in head/foot}
\vskip2pt\insertnavigation{0.8\paperwidth}\vskip2p t
\end{beamercolorbox}%
}


Nur zur Info.

Viele Grüße
Dirk

Dirk2718
21-06-2012, 13:09
Hallo Zusammen,

ich arbeite gerade an diesem Problem weiter. Aktuell sieht es so aus:


\setbeamertemplate{headline}
{%
\leavevmode%
\begin{beamercolorbox}[wd=0.8\paperwidth]{section in head/foot}
\vskip2pt\insertnavigation{0.8\paperwidth}\vskip2p t
\end{beamercolorbox}%
\begin{beamercolorbox}[wd=0.2\paperwidth, right]{section in head/foot}%
\fbox{%
%\includegraphics[height=9ex]{logo_left.eps}%
\rule{20ex}{10ex}
}%
\end{beamercolorbox}%
}


Soweit fast gut, man könnte jetzt die Höhe ausprobieren und das Bild dementsprechend in der Höhe verändern. Das ist mir allerdings etwas zu statisch. Kann man die Höhe der ersten beamercolorbox vielleicht ermitteln und an die zweite Box, bzw. das Bild übergeben? Dann bräuchte man "nur" noch die 0.8 bzw. 0.2 manuell einstellen, nicht aber die Höhe des Logos.

Vielen Dank und Grüße
Dirk

Dirk2718
22-06-2012, 16:20
Lösung:
Hab jetzt die erste beamercolorbox in eine savebox gepackt, diese danach direkt wieder aufgerufen und anschließend mit \settoheight vermessen. Den damit ermittelten Wert gebe ich an die zweite beamercolorbox und an die Graphik und stelle damit gleiche Höhen ein.

Viele Grüße
Dirk