Referenz in Tabelle Thema ist als GELÖST markiert

Tabellen und Grafiken erstellen und anordnen


ITEC
Forum-Newbie
Forum-Newbie
Beiträge: 2
Registriert: Do 17. Jun 2021, 16:46

Referenz in Tabelle

Beitrag von ITEC »

Bin Latex Anfänger und habe wohl das Thema mit den Referenzen noch nicht richtig verstanden. Dazu folgendes Minimalbeispiel:

\documentclass{article}
\usepackage[colorlinks, linkcolor = blue, citecolor = blue, urlcolor = blue]{hyperref} 


\newcounter{Mycount}
\newcounter{ReqCounter}
\newcommand{\Projekt}{A}


\def\threedigits#1{%
	\Projekt-%
	\ifnum#1<100 0\fi
	\ifnum#1<10 0\fi
	\number#1}

\def\RefCount{%
	\textbf{\threedigits{\theReqCounter}}
}

\def\RefCountRel#1{%
	\setcounter{Mycount}{\theReqCounter}\addtocounter{Mycount}{#1}%
	Anforderung \mbox{\textbf{\threedigits{\theMycount}}}%
}


\newcommand{\Anforderung}[1]{%
	\begin{center}
		\stepcounter{ReqCounter}
		\begin{tabular}[!h]{p{1.5cm}p{13.5cm}ll}
			\RefCount &  #1\\
		\end{tabular}
	\end{center}
}

\begin{document}
	\Anforderung{Das ist Text 1.}
	\Anforderung{Das ist Text 2.}
	\Anforderung{Das ist Text 3 mit Referenz nach \RefCountRel{-2}.}
\end{document}

Ich möchte, dass aus der 3. Zeile der Ausgabe eine Referenz wird und zwar der gesamte fett gedruckte Text. Also nicht nur eine Ziffer, wie sie z.B. ein \refstepcounter liefert.


Gute*r Gȧst*in

Re: Refernz in Tabelle

Beitrag von Gute*r Gȧst*in »

Das von hyperref verwendete Paket nameref bietet die Anweisung \nameref, um nicht nur den Zähler, der zu einem Label gehört zu referenzieren, sondern auch den Namen. Bei Gliederungsstrukturen wie Überschriften wird dieser Name üblicherweise durch den Inhaltsverzeichniseintrag gegeben. Bei Nicht-Standard-Strukturen, wie eigenen Definitionen muss ggf. selbst dafür gesorgt werden, dass \@currentlabelname passend gesetzt wird. Natürlich sollte auch \refstepcounter statt \stepcounter verwendet werden. Erschwerend kommt bei dir hinzu, dass das Erhöhen des Zählers in einer Umgebung und damit innerhalb einer Gruppe erfolgt. Die Referenz ist nach dem Ende der Umgebung damit nicht mehr gültig. Das könnte dadurch gelöst werden, dass die Anweisung \refstepcounter und die Definition von \@currentlabelname vor die center-Umgebung verschoben wird. Oder es wird einfach ein optionales Argument zum Setzen des Labels hinzugefügt:

\documentclass{article}
\usepackage{scrbase}% für \IfArgIsEmpty (siehe scrguide.pdf)
\usepackage[colorlinks, linkcolor = blue, citecolor = blue, urlcolor = blue]{hyperref} 


\newcounter{Mycount}
\newcounter{ReqCounter}
\newcommand{\Projekt}{A}


\def\threedigits#1{%
	\Projekt-%
	\ifnum#1<100 0\fi
	\ifnum#1<10 0\fi
	\number#1}

\def\RefCount{%
	\textbf{\threedigits{\theReqCounter}}
}

\def\RefCountRel#1{%
	\setcounter{Mycount}{\theReqCounter}\addtocounter{Mycount}{#1}%
	Anforderung \mbox{\textbf{\threedigits{\theMycount}}}%
}

\makeatletter
\newcommand{\Anforderung}[2][]{% optionales Argument für Label hinzugefügt
	\begin{center}
	    \def\@currentlabelname{#2}% Namen für die nachfolgende Referenz setzen.
		\refstepcounter{ReqCounter}% Zählerreferenz erzeugen
		\IfArgIsEmpty{#1}{}{\label{#1}}% Label nur setzen, wenn das optionale Argument nicht leer ist.
		\begin{tabular}[!h]{p{1.5cm}p{13.5cm}ll}
			\RefCount &  #2\\
		\end{tabular}
	\end{center}
}
\makeatother

\begin{document}
	\Anforderung{Das ist Text 1.}
	\Anforderung{Das ist Text 2.}
	\Anforderung[anf:test]{Das ist Text 3 mit Referenz nach \RefCountRel{-2}.}
	
	Siehe: \nameref{anf:test}.
\end{document}

ITEC
Forum-Newbie
Forum-Newbie
Beiträge: 2
Registriert: Do 17. Jun 2021, 16:46

Re: Refernz in Tabelle

Beitrag von ITEC »

Im Text selbst wieder ein Label anzugeben ist etwas unglücklich, da es schon ein paar hundert Anforderungen gibt.
Du hast mich mit hyperref aber schon auf die richtige Spur gebracht. Ich verwende jetzt \hypertarget und \hyperlink. Damit erhalte ich das gewünschte Ergebnis.

\documentclass{article}
\usepackage[colorlinks, linkcolor = blue, citecolor = blue, urlcolor = blue]{hyperref} 


\newcounter{Mycount}
\newcounter{ReqCounter}
\newcommand{\Projekt}{A}
\setcounter{ReqCounter}{10}


\def\threedigits#1{%
	\Projekt-%
	\ifnum#1<100 0\fi
	\ifnum#1<10 0\fi
	\number#1}

\def\RefCount{%
	\textbf{\threedigits{\theReqCounter}}
}

\def\RefCountRel#1{%
	\setcounter{Mycount}{\theReqCounter}\addtocounter{Mycount}{#1}%
	Anforderung \mbox{\textbf{\hyperlink{\theMycount}{\threedigits{\theMycount}}}}}%


\newcommand{\Anforderung}[1]{%
	\begin{center}
		\refstepcounter{ReqCounter}
		\hypertarget{\theReqCounter}{}
		\begin{tabular}[!h]{p{1.5cm}p{13.5cm}ll}
			\RefCount &   #1\\
		\end{tabular}
	\end{center}
}

\begin{document}
	\Anforderung{Das ist Text 1.}
	\Anforderung{Das ist Text 2.}
	\Anforderung{Das ist Text 3 \RefCountRel{-2}.}
\end{document}

Gute*r Gȧst*in

Re: Refernz in Tabelle

Beitrag von Gute*r Gȧst*in »

Die Frage hatte ich in der Tat ganz anders verstanden. Da könntest du künftig vielleicht etwas deutlich erklären, war du haben willst.


Antworten