von Hagbard Celine » Fr 19. Apr 2013, 13:59
Hallo Mr. Nofreeze,
ich habe mir jetzt nicht die Mühe gemacht, deine ursprüngliche Lösung durchzuarbeiten, habe aber eine recht simple gefunden:
\usepackage{etoolbox}
\let\oldref\ref
\listgadd{\labelliste}{dummy-label}
\renewcommand{\ref}[1]
{%
\ifinlist{#1}{\labelliste}%
{\oldref{#1}}%
{%
\underline{\oldref{#1}}%
\listgadd{\labelliste}{#1}%
}%
}
Dabei wird der Befehl \ref so umdefiniert, dass jedes bereits referenzierte Label in eine interne Liste (aus dem Paket etoolbox) eingetragen wird. Der Befehl kann also anhand dieser Liste sehen, ob ein Label schon referenziert wurde und entscheiden, ob die Referenz unterstrichen werden soll oder nicht.
Das funktioniert für alle Label.
Dabei wird nicht automatisch "Abbildung" bzw. "Tabelle" geschrieben. Es gibt aber viele Pakete, die das können. Ich empfehle dir das Paket cleveref. Dort musst du dann nicht den Befehl \ref, sondern \cref entsprechend umdefinieren.
Viele Grüße,
Jonas
Hallo Mr. Nofreeze,
ich habe mir jetzt nicht die Mühe gemacht, deine ursprüngliche Lösung durchzuarbeiten, habe aber eine recht simple gefunden:
[code] \usepackage{etoolbox}
\let\oldref\ref
\listgadd{\labelliste}{dummy-label}
\renewcommand{\ref}[1]
{%
\ifinlist{#1}{\labelliste}%
{\oldref{#1}}%
{%
\underline{\oldref{#1}}%
\listgadd{\labelliste}{#1}%
}%
}
[/code]
Dabei wird der Befehl \ref so umdefiniert, dass jedes bereits referenzierte Label in eine interne Liste (aus dem Paket etoolbox) eingetragen wird. Der Befehl kann also anhand dieser Liste sehen, ob ein Label schon referenziert wurde und entscheiden, ob die Referenz unterstrichen werden soll oder nicht.
Das funktioniert für alle Label.
Dabei wird nicht automatisch "Abbildung" bzw. "Tabelle" geschrieben. Es gibt aber viele Pakete, die das können. Ich empfehle dir das Paket cleveref. Dort musst du dann nicht den Befehl \ref, sondern \cref entsprechend umdefinieren.
Viele Grüße,
Jonas