Dynamische Verweise in der Kopfzeile

Redefinition von Makros, Definition eigener Befehle sowie neuer Umgebungen


Eddie144
Forum-Anfänger
Forum-Anfänger
Beiträge: 37
Registriert: Do 18. Jun 2015, 08:40

Dynamische Verweise in der Kopfzeile

Beitrag von Eddie144 »

Hallo zusammen,

ich habe folgendes vor: Ich habe mehrere Labels in einem Dokument, im MB lb1 bis lb5. Ich habe in der Kopfzeile vier Pfeile, die ein bequemes Springen zum ersten, vorigen, nächsten und letzten Label ermöglichen sollen. Der Sprung zum ersten und zum letzten Label ist an sich unproblematisch, ich hab das mit Hyperlink im MB gelöst. Hier habe ich schon das Problem, dass der Sprung zu lb5 nicht funktioniert; er springt immer auf die erste Seite.

Das vorige und nächste Label ändern sich logischerweise dynamisch. Ich habe mir überlegt, zwei variablen zu bauen (z.b. "prevref" und "nextref"), die bei jeder neuen label-Definition geändert werden. Die Links in der Kopfzeile wären dementsprechend à la
\hyperlink{\prevref}{$\rcurvearrowleft$}
\hyperlink{\nextref}{$\lcurvearrowright$}


Ich bin nicht so vertraut mit der Definition von eigenen Variablen, deswegen bin ich etwas ratlos, wie man das umsetzen könnte.
\documentclass{article}

\usepackage[utf8]{inputenc}
\usepackage[bookmarks=true,urlbordercolor={1 1 1},linkbordercolor={1 1 1},citebordercolor={1 1 1},colorlinks=true,citecolor=blue,urlcolor=red,linkcolor=blue]{hyperref}
\usepackage{blindtext}
\usepackage{fancyhdr}
\usepackage{MnSymbol}
\pagestyle{fancy}


\fancyhead[RE,RO]{\hyperlink{lb1}{$\Leftarrow$} $\rcurvearrowleft$ $\lcurvearrowright$  \hyperlink{lb5}{$\Rightarrow$}}


\begin{document}
%	 
\blindtext
One \label{lb1}

\blindtext
Two \label{lb2}

\Blindtext
Three \label{lb3}
\Blindtext
Four \label{lb4}

\blindtext
Five \label{lb5}



	
\end{document}
Vielen Dank schonmal!

Benutzeravatar
u_fischer
Forum-Meister
Forum-Meister
Beiträge: 4283
Registriert: Do 22. Nov 2012, 11:09
Kontaktdaten:

Beitrag von u_fischer »

\label alleine setzt keine Anker, du musst \phantomsection\label{lb5} benutzen. Verweise auf \label macht man mit \hyperref[lb1]{$\Leftarrow$} nicht mit hyperlink (eckige Klammern beachten).

Eddie144
Forum-Anfänger
Forum-Anfänger
Beiträge: 37
Registriert: Do 18. Jun 2015, 08:40

Beitrag von Eddie144 »

Vielen Dank, das löst schonmal das erste Problem. Ich habe jetzt folgendes gebastelt, um das vorige und das nächste Label zu verlinken. Das funktioniert so weit auch gut:
\documentclass[12pt]{article}

\usepackage[utf8]{inputenc}
\usepackage[bookmarks=true,urlbordercolor={1 1 1},linkbordercolor={1 1 1},citebordercolor={1 1 1},colorlinks=true,citecolor=blue,urlcolor=red,linkcolor=black]{hyperref}
\usepackage{blindtext}
\usepackage{fancyhdr}
\usepackage{MnSymbol}

\pagestyle{fancy}

\newcommand{\prevref}{lb1}
\newcommand{\nextref}{lb2}

\fancyhead[RE,RO]{\large \hyperref[lb1]{$\Leftarrow$} \hyperref[\prevref]{$\rcurvearrowleft$} \hyperref[\nextref]{$\lcurvearrowright$}  \hyperref[lb5]{$\Rightarrow$}}


\begin{document}
%	 
%\Marge
\blindtext

\textbf{One} \phantomsection\label{lb1}

\blindtext

\textbf{Two} \phantomsection\label{lb2}\renewcommand{\nextref}{lb3}

\Blindtext

\textbf{Three} \phantomsection\label{lb3}\renewcommand{\prevref}{lb2}\renewcommand{\nextref}{lb4}

\Blindtext

\textbf{Four} \phantomsection\label{lb4}\renewcommand{\prevref}{lb3}\renewcommand{\nextref}{lb5}

\blindtext

\textbf{Five} \phantomsection\label{lb5}
	
\end{document}
Am liebsten würde ich jetzt aber nicht direkt zum Label springen, sondern zum obersten Punkt der Seite, auf dem sich das Label befindet. Hierzu habe ich hier eine Lösung gefunden und folgendermaßen eingebaut:
\documentclass[12pt]{article}

\usepackage[utf8]{inputenc}
\usepackage[bookmarks=true,urlbordercolor={1 1 1},linkbordercolor={1 1 1},citebordercolor={1 1 1},colorlinks=true,citecolor=blue,urlcolor=red,linkcolor=black]{hyperref}
\usepackage{blindtext}
\usepackage{fancyhdr}
\usepackage{MnSymbol}
\usepackage{marvosym}
\usepackage{refcount}
\newcommand{\pagereftop}[1]{\hyperlink{page.\getpagerefnumber{#1}}{\pageref*{#1}}}


\pagestyle{fancy}

\newcommand{\prevref}{lb1}
\newcommand{\nextref}{lb2}

\fancyhead[RE,RO]{\large \hyperref[lb1]{$\Leftarrow$} \hyperref[\pagereftop{\prevref}]{$\rcurvearrowleft$} \hyperref[\pagereftop{\nextref}]{$\lcurvearrowright$}  \hyperref[lb5]{$\Rightarrow$}}


\begin{document}
%	 
%\Marge
\blindtext

\textbf{One} \phantomsection\label{lb1}

\blindtext

\textbf{Two} \phantomsection\label{lb2}\renewcommand{\nextref}{lb3}

\Blindtext

\textbf{Three} \phantomsection\label{lb3}\renewcommand{\prevref}{lb2}\renewcommand{\nextref}{lb4}

\Blindtext

\textbf{Four} \phantomsection\label{lb4}\renewcommand{\prevref}{lb3}\renewcommand{\nextref}{lb5}

\blindtext

\textbf{Five} \phantomsection\label{lb5}



	
\end{document}
Leider funktioniert das nicht. Hat jemand noch eine Idee?

Antworten