Anzeige:
Ergebnis 1 bis 5 von 5

Thema: Inhalte verlinken mit hyperref?

  1. #1
    Registrierter Benutzer
    Registriert seit
    22.08.2011
    Beiträge
    17

    Inhalte verlinken mit hyperref?

    Hallo,
    derzeit versuche ich Inhalte in meinem LaTeX-Dokument zu verlinken (im PDF-Resultat). Eine saubere und funktionierende Lösung habe ich bisher nicht finden können.

    Im Verlauf des Dokumentes sollen Anker (HTML-Analogie) angelegt werden können, die einen tag und ein label besitzen.
    \anker{tag}{label}
    Bsp: \anker{anker:hinweis5}{Hinweis Nummer 5}

    Später soll man sich mit dem tag auf diese Anker beziehen können und das label wird in den Text eingefügt:
    \link{tag}
    Bsp: siehe \link{anker:hinweis5} ... (führt zu verlinktem "Hinweis Nummer 5")

    Mit hypertarget+hyperlink aus dem hyperref-Paket bekommt man immerhin die Verlinkung hin, aber man trägt an beiden Stellen das label manuell ein. Außerdem habe ich das Problem, dass mit dem Link zwar zum Anker gesprungen wird, man aber leider eine Zeile zu tief rauskommt, also die relevante Zeile nicht mehr dargestellt wird.

    Gibt es eine Lösung für das o.g. Problem bzw. für mein Vorhaben?

  2. #2
    Registrierter Benutzer
    Registriert seit
    31.03.2010
    Beiträge
    1.039
    Zitat Zitat von Julian Beitrag anzeigen
    Mit hypertarget+hyperlink aus dem hyperref-Paket bekommt man immerhin die Verlinkung hin, aber man trägt an beiden Stellen das label manuell ein.
    Machst Du das bei Deinem rudimentären Beispiel nicht ebenfalls?

    Zitat Zitat von Julian Beitrag anzeigen
    Außerdem habe ich das Problem, dass mit dem Link zwar zum Anker gesprungen wird, man aber leider eine Zeile zu tief rauskommt, also die relevante Zeile nicht mehr dargestellt wird.
    Beispiel?

    Am einfachsten geht die Verlinkung übrigens mit \label/\ref und ggf. \phantomsection.

    Zitat Zitat von Julian Beitrag anzeigen
    Gibt es eine Lösung für das o.g. Problem bzw. für mein Vorhaben?
    Vielleicht solltest Du mal ein vollständiges Minimalbeispiel machen, das die Probleme zeigt, die Du mit hyperref hast.

  3. #3
    Registrierter Benutzer
    Registriert seit
    22.08.2011
    Beiträge
    17
    Minimalbeispiel:
    Code:
    \documentclass[a4paper,12pt,oneside]{scrreprt}
    
    \usepackage[T1]{fontenc}
    \usepackage[latin9]{inputenc}
    \usepackage[ngerman]{babel}
    \usepackage{blindtext}
    \usepackage{hyperref}
    
    \begin{document}
    \blindtext  \\
    Ziel: \hypertarget{link:tag}{label}\\
    \blindtext[5] \\
    Link: \hyperlink{link:tag}{label}
    \end{document}
    Der Acrobat Reader oder auch SumatraPDF springen nach einem Klick auf den Link zu der Stelle von hypertarget, aber besagte Zeile ist nicht mehr im sichtbaren Ausschnitt. Zudem würde ich gerne, wie oben erwähnt, das label nur beim Ziel setzen und beim Link sollte das label automatisch eingefügt werden.
    Ziel der Sache:
    Ich habe eine Tabelle, wo jede Zeile eine Nummer bekommt. In dem darauf folgenden Text soll man sich auf bestimmte Zeilen beziehen können. Das soll dann bspw. so aussehen: "laut Anforderung #Nummer wird ..." und #Nummer soll ein Link zu der dazugehörigen Zeile in der Tabelle sein.
    Code:
    \begin{tabular} usw.
    \hypertarget{link:tag1}{\texttt{0815}} & [...] \\\hline
    \hypertarget{link:tag2}{\texttt{4711}} & [...] \\\hline
    \end{tabular}
    Code:
    laut Anforderung \hyperlink{link:tag1} wird ... %funktioniert so natürlich nicht
    Gibt es vielleicht Befehle/Pakete mit denen das o.g. möglich ist?

  4. #4
    Registrierter Benutzer
    Registriert seit
    19.05.2009
    Beiträge
    4.045
    Code:
    \documentclass[a4paper,12pt,oneside]{scrreprt}
    
    \usepackage[T1]{fontenc}
    \usepackage[latin9]{inputenc}
    \usepackage[ngerman]{babel}
    \usepackage{blindtext}
    \usepackage{hyperref}
    \makeatletter
    \newcommand\mylabel[1]{%
      \def\@currentlabel{#1}\phantomsection\label{mylabel-#1}\textbf{#1}}
    \newcommand\myref[1]{\textbf{\ref{mylabel-#1}}}
    \begin{document}
    \blindtext  \\
    Ziel: \mylabel{1234}\\
    \blindtext[5] \\
    Link: \myref{1234}
    \end{document}
    (Wenn die Labeltexte nicht einfache Nummern sind, solltest du ggfs. zwei Argumente benutzen).

  5. #5
    Registrierter Benutzer
    Registriert seit
    22.08.2011
    Beiträge
    17
    Wow!
    Das funktioniert wirklich prima, vielen Dank!

    Ich habe es noch um das zweite Label erweitert und so funktioniert es genau wie ich es brauche.

    Code:
    \documentclass[a4paper,12pt,oneside]{scrreprt}
    \usepackage[T1]{fontenc}
    \usepackage[latin9]{inputenc}
    \usepackage[ngerman]{babel}
    \usepackage{blindtext}
    \usepackage{hyperref}
    \makeatletter
    \newcommand\mylabel[2]{%
      \def\@currentlabel{#2}\phantomsection\label{mylabel:#1}\texttt{#2}}
    \newcommand\myref[1]{\texttt{\ref{mylabel:#1}}}
    \begin{document}
    \blindtext \\
    Ziel: \mylabel{1234}{angezeigter Text: Nummer oder was auch immer}\\
    \blindtext[5] \\
    Link: \myref{1234}
    \end{document}

Stichworte

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •