Hallo,

die Kopfzeile im theme AnnArbor scheint Links zu enthalten, da sich der Mauszeiger ändert. Beim Klicken passiert aber nicht die von mir erwartete Reaktion, dass man auf die erste Seite der section bzw. subsection springt. Ein Beispiel:

Open in Online-Editor
\documentclass[12pt]{beamer}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}
\usetheme{AnnArbor}

\begin{document}

\section{Thema A}
\subsection{Unterthema 1}
\begin{frame}
  Frame 1
\end{frame}
\begin{frame}
  Frame 2
\end{frame}
\begin{frame}
  Frame 3
\end{frame}
\begin{frame}
  Frame 4
\end{frame}
\end{document}

Gibt es eine Möglichkeit, wenn ich z.B. auf der Seite "Frame4" bin und oben auf "Thema A" bzw. "Unterthema 1" klicke, die Präsentation auf Frame1 springt?

gefragt 24 Jul '15, 16:59

tom75's gravatar image

tom75
2.2k277984
Akzeptiert-Rate: 57%

bearbeitet 04 Sep '15, 12:34

esdd's gravatar image

esdd
17.8k284257


Die Lösung, die @tom75 angegeben hat, lässt sich durch ein gezieltes \unexpanded so erweitern, dass \operatorname im Argument von \section (ggf. zusammen mit \texorpdfstring) wieder funktioniert:

Open in Online-Editor
\documentclass[12pt]{beamer}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}
\usetheme{AnnArbor}

\usepackage{etoolbox}
\makeatletter
\patchcmd{\beamer@section}
  {\def\insertsectionhead{\hyperlink{Navigation\the\c@page}{#1}}}
  {\edef\insertsectionhead{\noexpand\hyperlink{Navigation\the\c@page}{\unexpanded{#1}}}}
  {}{}
\patchcmd{\beamer@subsection}
  {\def\insertsubsectionhead{\hyperlink{Navigation\the\c@page}{#1}}}
  {\edef\insertsubsectionhead{\noexpand\hyperlink{Navigation\the\c@page}{\unexpanded{#1}}}}
  {}{}
\makeatother

\begin{document}

\section{\texorpdfstring{$\operatorname{e}$-Funktion}{e-Funktion}}
\subsection{Unterthema 1}
\begin{frame}
  Frame 1
\end{frame}
\begin{frame}
  Frame 2
\end{frame}
\begin{frame}
  Frame 3
\end{frame}
\begin{frame}
  Frame 4
\end{frame}
\end{document}

Der Vorteil dabei ist, dass dann auch komplexere Dinge wie \texorpdfstring{$\sqrt{e}$-Funktion}{Wurzel-e-Funktion} verwendet werden können.

Ein ähnliches Ergebnis kann man auch mit \protected@edef statt \edef erzielen.

Open in Online-Editor
\documentclass[12pt]{beamer}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}
\usetheme{AnnArbor}

\usepackage{etoolbox}
\makeatletter
\patchcmd{\beamer@section}
  {\def\insertsectionhead{\hyperlink{Navigation\the\c@page}{#1}}}
  {\protected@edef\insertsectionhead{\noexpand\hyperlink{Navigation\the\c@page}{#1}}}
  {}{}
\patchcmd{\beamer@subsection}
  {\def\insertsubsectionhead{\hyperlink{Navigation\the\c@page}{#1}}}
  {\protected@edef\insertsubsectionhead{\noexpand\hyperlink{Navigation\the\c@page}{#1}}}
  {}{}
\makeatother

\begin{document}

\section{\texorpdfstring{$\operatorname{e}$-Funktion}{e-Funktion}}
\subsection{Unterthema 1}
\begin{frame}
  Frame 1
\end{frame}
\begin{frame}
  Frame 2
\end{frame}
\begin{frame}
  Frame 3
\end{frame}
\begin{frame}
  Frame 4
\end{frame}
\end{document}

Bei dieser Lösung muss man ggf. einzelne zerbrechliche Anweisungen selbst mit \protect schützen. Im gezeigten Beispiel ist ein explizites \protect jedoch nicht erforderlich, da viele Mathe-Befehle wie auch \operatorname oder \sqrt so definiert sind, dass sie quasi das \protect selbst mitbringen.

Permanenter link

beantwortet 08 Sep '15, 09:33

saputello's gravatar image

saputello
11.1k174365
Akzeptiert-Rate: 51%

bearbeitet 08 Sep '15, 11:03

@saputello: Lässt sich das \unexpanded{#1} generell verwenden, oder hat das andere Seiteneffekte?

Ggf. müsst man dem Autor das mitteilen, denn er hat den Patch für die nächste Version der beamer-Klasse so eingebaut.

(08 Sep '15, 09:51) tom75
1

@tom75: Soweit ich beurteilen kann, kann man das an dieser Stelle generell verwenden, da an der Stelle IMO nur \the\c@page expandiert werden muss/soll, Es verhindert schlicht, dass bei der Definition von \insert(sub)sectionhead das zweite Argument von \hyperlink bereits expandiert wird. Es wird also tatsächlich erst expandiert, wenn die Anweisung \insert(sub)sectionhead später expandiert wird.

Eigentlich sollte man an der Stelle mindestens \protected@edef statt \edef verwenden, damit \protect etc. in der Überschrift beachtet wird. Das genügt im Beispiel auch.

(08 Sep '15, 10:17) saputello
1

@saputello: Ich hab ihm gemailt.

(08 Sep '15, 10:53) tom75

Ich hab unter Navigation to section/subsection from Beamer headline titles eine Lösung gefunden. Es handelt sich um einen Fehler in beamerbasesection.sty, der in der nächsten Version von beamer behoben werden soll. Der Beitrag schlägt auch eine vorübergehende Lösung vor:

Open in Online-Editor
\documentclass[12pt]{beamer}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}
\usetheme{AnnArbor}

\usepackage{etoolbox}
\makeatletter
\patchcmd{\beamer@section}
  {\def\insertsectionhead{\hyperlink{Navigation\the\c@page}{#1}}}
  {\edef\insertsectionhead{\noexpand\hyperlink{Navigation\the\c@page}{#1}}}
  {}{}
\patchcmd{\beamer@subsection}
  {\def\insertsubsectionhead{\hyperlink{Navigation\the\c@page}{#1}}}
  {\edef\insertsubsectionhead{\noexpand\hyperlink{Navigation\the\c@page}{#1}}}
  {}{}
\makeatother

\begin{document}

\section{Thema A}
\subsection{Unterthema 1}
\begin{frame}
  Frame 1
\end{frame}
\begin{frame}
  Frame 2
\end{frame}
\begin{frame}
  Frame 3
\end{frame}
\begin{frame}
  Frame 4
\end{frame}
\end{document}

Die obige Lösung funktioniert nicht, wenn man als section beispielsweise den folgenden Code verwendet:

Open in Online-Editor
\section{\texorpdfstring{$\operatorname{e}$-Funktion}{e-Funktion}}

Hier erhält man die Fehlermeldung

Argument of \@gobble has an extra }. ...{$\operatorname{e}$-Funktion}{e-Funktion}}

Im konkreten Fall, kann man die Fehlermeldung umgehen, wenn man einfach nur

Open in Online-Editor
\section{e-Funktion}

verwendet, da dies optisch das selbe Resultat liefert.

Permanenter link

beantwortet 25 Jul '15, 14:16

tom75's gravatar image

tom75
2.2k277984
Akzeptiert-Rate: 57%

bearbeitet 08 Sep '15, 11:07

saputello's gravatar image

saputello
11.1k174365

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
×38
×6

gestellte Frage: 24 Jul '15, 16:59

Frage wurde gesehen: 10,528 Mal

zuletzt geändert: 08 Sep '15, 11:07