Hyperlinks für individuelle Nummerierungsliste Thema ist als GELÖST markiert

Schriftbild, Absätze und Auflistungen einstellen


MeganovaBass
Forum-Anfänger
Forum-Anfänger
Beiträge: 33
Registriert: Do 24. Okt 2013, 23:40

Hyperlinks für individuelle Nummerierungsliste

Beitrag von MeganovaBass »

Hallo Leute,

ich habe mir vor einiger Zeit eine nummerierte Liste definiert, Enum, die eine angepasstere Version von enumerate sein soll. An sich funktioniert sie ja super, aber ich habe beim Referenzieren Probleme.

Bei der ersten Ebene konnte ich es einstellen, dass diese in richtiger Farbe referenziert wird, d.h. wenn global Rot als Farbe festgelegt wurde, wird hier auch das Rot übernommen. Das ist ja schon mal gut. Aber bei allen weiteren Ebenen wusste ich einfach nicht, wie ich das codetechnisch umsetzen soll, denn dort erscheinen die Hyperlinks in schwarz, also in Farbe dessen, wie die nummerierten Symbole an sich im PDF zu sehen sind.

Kann mir jemand sagen, wie ich es auf allen Ebenen einstellen kann, dass die Hyperlinks komplett (z.B.) rot werden? Dankeschön. Anbei das Code-Beispiel.
%Pakete.
\documentclass[ngerman,11pt,a4paper,linkcolor=Red4]{book}	%Dokumentenklasse.
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage[ngerman]{babel}
\usepackage[intlimits]{amsmath}
\usepackage{longtable,array}
\usepackage[usenames,x11names,dvipsnames,table]{xcolor}
\usepackage{graphicx,rotating,xurl}
\usepackage[a4paper,outermargin=1in,innermargin=3cm]{geometry}
\usepackage[hang]{footmisc}
\usepackage{blindtext,calc,enumitem,caption,tikz}
\usepackage[bookmarks,bookmarksnumbered,backref,pagebackref,pdfpagelabels=true,colorlinks,extension=pdf,plainpages=false]{hyperref}


%Vorbereitung.
\newcommand{\Enumcolor}{black}																		%Farbe der Items in der Liste selbst.
\newcommand{\EnumFonta}[1]{\textbf{#1}}																%Fettdruck als Font A.
\newcommand{\EnumFontb}[1]{\textcolor{\Enumcolor}{#1}}												%Farbe als Font B.
\newcommand{\Exref}[2]{\hyperref[#2]{#1~}\ref{#2}}													%Auf Aufgaben (und co.) referenzieren.
\newcommand{\taref}[1]{\Exref{Teilaufgabe}{#1}}														%Auf Teilaufgaben referenzieren.
\newcommand{\uref}[1]{\Exref{Unteraufgabe}{#1}}														%Auf Unteraufgaben referenzieren.

%Das ist meine individuelle Nummerierungsumgebung.
\newlist{Enum}{enumerate}{10}																		%Die Tiefe kann erstmal bei 10 bleiben.
\setlist[Enum,1]{label=\EnumFontb{\EnumFonta{\arabic*}.},ref=\EnumFonta{\arabic*}}					%Erste Ebene von Enum.
\setlist[Enum,2]{label*=\EnumFontb{\EnumFonta{\arabic*}}}											%Zweite Ebene von Enum.
\setlist[Enum,3]{label=\EnumFontb{\EnumFonta{(\alph*)}}}											%Dritte Ebene von Enum.
\setlist[Enum,4]{label=\EnumFontb{\EnumFonta{(\roman*)}}}											%Vierte Ebene von Enum.
\setlistdepth{10}

\begin{document}
	\begin{Enum}
	\item Hier ist Aufgabe 1.
	\item Hier ist Aufgabe 2.\label{A2}
		\begin{Enum}
		\item Hier ist Aufgabe 2.1.
		\item Hier ist Aufgabe 2.2.
		\item Hier ist Aufgabe 2.3.\label{A2.3}
			\begin{Enum}
			\item Hier ist Aufgabe 2.3 (a).
			\item Hier ist Aufgabe 2.3 (b).\label{A2.3b}
				\begin{Enum}
				\item Hier ist Aufgabe 2.3 (b) (i).
				\item Hier ist Aufgabe 2.3 (b) (ii).\label{A2.3bii}
				\end{Enum}
			\end{Enum}
		\end{Enum}
	\end{Enum}
Man sieht, dass die Items in der \texttt{Enum}-Liste die richtige Farbe haben, also schwarz, was durch \texttt{\textbackslash Enumcolor} festgelegt wurde. Die Verlinkung durch \texttt{\textbackslash Exref} funktioniert richtig, denn man erhält \Exref{Aufgabe}{A2}. Die \texttt{linkcolor}-Option der Dokumentenklasse wird der Nummerierung zugewiesen und der Link erscheint -- so wie er sollte -- in \texttt{Red4}.\\[0.3cm]
Dies funktioniert jedoch nicht bei \texttt{\textbackslash taref}, denn man bekommt \taref{A2.3}. Hier ist die Nummerierung schwarz, aber sie sollte in \texttt{Red4} sein. Wie ändert man das?\\[0.3cm]
Eine Ebene weiter erhält man \uref{A2.3b} und dasselbe bei \uref{A2.3bii}. Hier tritt dasselbe Problem mit schwarz auf.
\end{document}

ich meine ja nur

Re: Hyperlinks für individuelle Nummerierungsliste

Beitrag von ich meine ja nur »

Wenn du einmal in die aux-Datei schaust, wirst du sehen, dass die Farbänderung bei dir Teil des Label-Textes ist. Man könnte das beispielsweise so zurechtmurksen:
\DeclareRobustCommand*{\EnumFontb}[1]{\textcolor{\Enumcolor}{#1}}% Farbbefehl robust
\newcommand{\Exref}[2]{\hyperref[#2]{\let\EnumFontb\relax#1~\ref*{#2}}}% Farbbefehl lokal deaktivieren
Ich würde aber insgesamt darüber nachdenken, die Farbe für die Labels bei \setlist per Option font oder format einzustellen. Dann hat man das Problem gar nicht erst. Außerdem solltest du dir eventuell cleveref anschauen, dann braucht du vermutlich die ganzen Befehle zur Referenzierung gar nicht, sondern kannst das alles mit dem Paket automatisieren. Bei Verwendung des Pakets unbedingt darauf achten, dass es ausnahmsweise nach hyperref zu laden ist.

Ach übrigens: Es genügt das Papierformat bei \documentclass anzugeben. Dann muss man es ggf. auch nicht an mehreren Stellen ändern.

MeganovaBass
Forum-Anfänger
Forum-Anfänger
Beiträge: 33
Registriert: Do 24. Okt 2013, 23:40

Re: Hyperlinks für individuelle Nummerierungsliste

Beitrag von MeganovaBass »

Hey,

danke für deine Lösung. Sie funktioniert super! Das mit der aux-Datei wusste ich gar nicht. Aber nun weiß ich ja Bescheid, dass man auch so etwas in der aux-Datei findet.

Wie würde denn das konkret aussehen, wenn ich in meinem Fall die Optionen font oder format einbauen würde? Ich habe das früher mal ausprobiert, aber es hat nicht hingehauen. Ich vermute, es lag an persönlichem Versagen und an keinem technischen Problem.

Bezüglich cleveref: Ich habe es mal probiert einzubinden, aber es gab mit anderen Paketen einen Konflikt. Im Code, den ich hier vorgeführt habe, habe ich einige Pakete ausgelassen. Aber danke für das Erwähnen, ebenso bezüglich des Papierformats.

ich meine ja nur

Re: Hyperlinks für individuelle Nummerierungsliste

Beitrag von ich meine ja nur »

Sinnvoll wäre beispielsweise etwas wie:
\colorlet{Enumcolor}{black}
\setlist[Enum,2]{label*=\arabic*,\font=\color{Enumcolor}\bfseries}
wenn die Labels der zweiten Ebene fett und in Enumcolor=black sein sollen, das beim Referenzieren aber nicht zu übernehmen ist. Siehe darüber hinaus die Erklärung zu font in der enumitem-Anleitung. In den Beispielen wird die Option auch teilweise verwendet, wenn auch nicht mit Farbe. Aber das macht keinen sehr großen Unterschied.

Bezgl. aux-Datei: Da landen alle Informationen, die für den nächsten LaTeX-Lauf noch gebraucht werden. Da TeX eine single-pass-Maschine ist, gibt es nur die Möglichkeit, Infos über eine Datei zwischen zu speichern und TeX mehrfach laufen zu lassen.

Antworten