Seite 1 von 1

Dynamische Verweise in der Kopfzeile

Verfasst: Fr 3. Feb 2017, 19:19
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!

Verfasst: Fr 3. Feb 2017, 20:22
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).

Verfasst: Fr 3. Feb 2017, 21:18
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?