%20im%20Beamer.png)
Betrachten Sie die folgenden MWE
\documentclass[leqno]{beamer}
\usepackage{lmodern}
\hypersetup{colorlinks=true,allcolors=blue}
\setbeamertemplate{theorems}[numbered]
\begin{document}
\begin{frame}
\begin{theorem}
\label{thm:a_theorem}
\begin{equation}
\label{eq:an_equation}
2 + 2 = 4
\end{equation}
\end{theorem}
Equation \ref{eq:an_equation} belongs to \ref{thm:a_theorem}.\\
Equation \eqref{eq:an_equation} belongs to \ref{thm:a_theorem}.\\
Equation \autoref{eq:an_equation} belongs to \autoref{thm:a_theorem}.
\end{frame}
\end{document}
Ich möchte, dass i) die Klammern um die Gleichungsnummer Teil des Hyperlinks sind (und daher auch blau hervorgehoben werden) und ii) „Get \autoref
to Work“ (und daher „Get Equation (1) belongs to Theorem (1)
with “ (auch blau hervorgehoben)) (1)
.Theorem (1)
Bearbeiten:Betrachten Sie das folgende MWE, das die vorgeschlagene Lösung in die eindeutige Antwort auf diese Frage einbezieht:
\documentclass[leqno]{beamer}
\usepackage{lmodern}
\hypersetup{colorlinks=true,allcolors=blue}
\setbeamertemplate{theorems}[numbered]
\begin{document}
\begin{frame}
Foo
\end{frame}
\begin{frame}
\phantomsection
\begin{theorem}
\label{thm:a_theorem}
Bar
\end{theorem}
\end{frame}
\begin{frame}
\phantomsection
\begin{equation}
\label{eq:an_equation}
2 + 2 = 4
\end{equation}
\end{frame}
\begin{frame}
\hyperref[eq:an_equation]{Equation (\ref*{eq:an_equation})} belongs
to \hyperref[thm:a_theorem]{Theorem \ref*{thm:a_theorem}}.
\end{frame}
\end{document}
Die Hyperlinks verweisen immer auf den ersten Frame und nicht auf die entsprechende Gleichung oder den Satz.
Antwort1
Klasse beamer
lädt hyperref
mit Option implicit=false
. Das bedeutet, dass das Laden von hyperref
früher abgebrochen wird und wichtige Teile nicht geladen werden. Dadurch erzeugen die Gleichungen nicht einmal Anker. Ohne Anker kein Link (zumindest nicht dorthin, wo er hin soll), ohne Ankernamen kein \autoref
.
Die Problemumgehung besteht aus zwei Teilen:
- Anker werden mit gesetzt
\phantomsection
. Der Ankername spielt ohnehin keine Rolle, da es sich bei den Einstellungen\autoref
nur um einen Stumpf für handelt . Da es sich bei jedoch auch um einen Dummy, also ein leeres Makro handelt, definiert das Beispiel einen , der einen Anker mit setzt .\ref
beamer
\phantomsection
\phantomtarget
\hypertarget
\hyperref
mit optionalem Argument wird die einfache Referenznummer durch die längere Phrase mit Name und Nummer ersetzt, beides innerhalb des Links.\ref*
mit Stern verhindert einen unnötigen verschachtelten Link.
Vollständiges Beispiel:
\documentclass[leqno]{beamer}
\usepackage{lmodern}
\hypersetup{colorlinks=true,allcolors=blue}
\setbeamertemplate{theorems}[numbered]
\makeatletter
\newcounter{phantomtarget}
\renewcommand*{\thephantomtarget}{phantom.\the\value{phantomtarget}}
\newcommand*{\phantomtarget}{%
\stepcounter{phantomtarget}%
\hypertarget{\thephantomtarget}{}%
\edef\@currentHref{\thephantomtarget}%
}
\makeatother
\begin{document}
\begin{frame}
\phantomtarget
\begin{theorem}
\label{thm:a_theorem}
\phantomtarget
\begin{equation}
\label{eq:an_equation}
2 + 2 = 4
\end{equation}
\end{theorem}
\hyperref[eq:an_equation]{Equation (\ref*{eq:an_equation})} belongs
to \hyperref[thm:a_theorem]{Theorem \ref*{thm:a_theorem}}.
\end{frame}
\end{document}