Startseite > Bibtex, Digitale Aspekte, Latex > Klickbare DOI-Links mit Bibtex realisieren

Klickbare DOI-Links mit Bibtex realisieren

Mit Hilfe von Bibtex und einem passenden Style wie Angewandte können in Latex sehr schöne Literaturverzeichnisse erstellt werden. Um dieses aber noch komfortabler zugestalten soll der Titel eines Eintrags verlinkt werden auf die in der .bib-Datei angegebene doi. Wenn diese nicht vorhanden ist, nehme die url, falls angegeben. Nichts leichter als das!

Zuerst müssen die zusätzlichen Felder „doi“ und „url“ deklariert werden, so dass der Style damit umgehen. Die Definition der ENTRYs kann dann wie folgt aussehen:

ENTRY
  { address
    author
    booktitle
    chapter
    doi
    edition
    editor
    howpublished
    institution
    journal
    key
    month
    note
    number
    organization
    pages
    publisher
    school
    series
    title
    type
    url
    volume
    year
  }

Als nächstes muss eine neue Funktion, die den Link einfügt definiert werden:

FUNCTION {doiurllink}
{ duplicate$ empty$
   { pop$ "" }
   { doi empty$
         { url empty$
               { skip$ }
               { "\href{" url * "}{" * swap$ * "}" * }
               if$
         }
         { "\href{http://dx.doi.org/" doi * "}{" * swap$ * "}" * }
         if$
   }
   if$
}

DIe Arbeitsweise dieser Funktion ist nicht kompliziert: Ist der oberste Inhalt des Stack beim Aufrufen der Funktion nicht leer, so wird mit „\href“ daraus ein Link, falls doi oder url existieren.

Benutzt wird die Funktion, indem sie bei der Formatierung eines Eintragstyps aufgerufen wird. Das Beispiel zeigt die Verlinkung des Titels eines „articles“.

FUNCTION {article}
{ output.bibitem
  format.authors "author" output.check
  format.btitle "title" output.check
  doiurllink
  crossref missing$
    { journal
      "journal" output.check
      add.blank
      format.vol.num.pages output
      format.date "year" output.check
    }
    { format.article.crossref output.nonnull
      format.pages output
    }
  if$
  note output
  fin.entry
}

Edit: Der Befehl „\href“ stammt aus dem Package hyperref, das für korrektes Funktionieren eingebunden werden muss.
Credit: Link

Advertisements
Kategorien:Bibtex, Digitale Aspekte, Latex Schlagwörter: , ,
  1. David
    24/11/2013 um 12:09

    Hallo chemieunser,

    Ich habe eben versucht, den BST-Stil „elsarticle-harv“ (http://www.elsevier.com/author-schemas/the-elsarticle-latex-document-class) gemäß Deiner Beschreibung zu erweitern, so dass er die DOI-Links einbaut:

    – In der ENTRY Definition war schon ein Feld „url“ vorhanden, also habe ich den Schritt übersprungen.

    – Die Funktion „doiurllink“ habe ich unmittelbar oberhalb der schon vorhandenen Funktion „article“ eingefügt.

    – In der Funktion „article“ habe ich dann den Befehl „doiurllink“ nach der Zeile „format.title „title“ output.check“ eingefügt. (Der Rest der article Funktion sieht in elsartcl-harv etwas anders aus als Dein Beispiel).

    Das ganze kompiliert ohne Probleme, allerdings sieht das Literaturverzeichnis genau so aus wie vorher. Irgendwas hat also wohl nicht geklappt… 😦

    Hast Du einen Tip, wie ich den BST Stil aufpeppen kann?

    Viele Grüße,
    David

  2. 24/11/2013 um 16:22

    Hallo David,

    leider hatte ich im ursrpünglichen Artikel vergessen zu erwähnen, dass das „hyperref“-Package notwendig ist für die korrekten Links. Tur mir leid dafür! Der Hinweis ist jetzt oben zu finden, ein Minimalbeispiel hat bei mir funktioniert und es sollte jetzt möglich sein. Der Stil „elsarticle-harv“ druckt allerdings standardmäßig sowohl URL als auch DOI, wobei ersteres mit hyperref allein (ohne Änderung im BST) bereits klickbar ist. Für weitere Fragen gerne hier oder direkt über chemieunser@gmx.de

    lg
    chemieunser

  3. David
    24/11/2013 um 22:00

    Hi chemieunser,

    Jetzt hat es funktioniert!! Ich hatte übersehen, dass die Zeile „doi“ im ENTRY ebenfalls noch ergänzt werden musste.

    Super, vielen Dank!

    Was müsste man eigentlich machen, um den DOI-Link nicht in den Artikeltitel zu setzen, sondern z.B. auf ein spezielles Icon oder Wort (z.B. „(DOI)“) was zusätzlich in die Literaturstelle getan wird?

    Viele Grüße,
    David

    • 25/11/2013 um 17:58

      Hi David,

      das ist ja wunderbar! Und für ein spezielles Symbol musst du einfach
      „(DOI)“ output
      doiurllink
      an der intendierten Stelle ins BST schreiben, dann erscheint ein verlinktes (DOI).

      lg
      chemieunser

  1. No trackbacks yet.

Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s

%d Bloggern gefällt das: