
Wie kann ich einen Befehl definieren, um nur den Domänennamen eines Links beizubehalten, z. B.http://www.google.com/search?=bangwird nur google.com angegeben und als Organisationsfeld für eine URL-Referenz angezeigt?
Vielen Dank
Antwort1
Dies ist wirklich keine triviale Anfrage und ich rate Ihnen dringend, das Feld manuell auszufüllen organization
(Ihr geringstes Problem ist die Groß- und Kleinschreibung des Organisationsnamens: Es soll ja nicht als , sondern als url = {http://nssdc.gsfc.nasa.gov/planetary/factsheet/moonfact.html}
herauskommen ).organization = {nasa}
organization = {NASA}
Einige mehr oder weniger brauchbare Lösungen als Proof of Concept mit biblatex
und biber
.
Diese Quellkarte geht in die Präambel.
\DeclareSourcemap{
\maps[datatype=bibtex]{
\map[overwrite=false]{
\step[fieldsource=url, match=\regexp{^((?:f|ht)tps?://)?(?:www\.)?([^/]+)}, final]
\step[fieldset=organization, fieldvalue={$2}]
}
}
}
Es versucht, den Domänenteil einer URL aus dem url
Feld zu extrahieren und ordnet ihn dem organization
Feld zu. Da das Entfernen von Subdomänen keine triviale Aufgabe ist, insbesondere wenn man berücksichtigt, dass es TLDs wie .co.uk
, .info
, .de
, .com
usw. gibt, werden diese dennoch einbezogen.
\documentclass{article}
\usepackage[style=authoryear, backend=biber]{biblatex}
\usepackage{hyperref}
\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@ELECTRONIC{MEMSnet,
title = {What is {MEMS}?},
url = {http://www.memsnet.org/mems/what_is.html},
urldate = {2013-12-01},
}
\end{filecontents}
\addbibresource{\jobname.bib}
\addbibresource{biblatex-examples.bib}
\DeclareSourcemap{
\maps[datatype=bibtex]{
\map[overwrite=false]{
\step[fieldsource=url, match=\regexp{^((?:f|ht)tps?://)?(?:www\.)?([^/]+)}, final]
\step[fieldset=organization, fieldvalue={$2}]
}
}
}
\begin{document}
\nocite{MEMSnet,wilde,markey}
\printbibliography
\end{document}
gibt
MEMSnet
Hier können beide oben genannten Probleme beobachtet werden: Man würde wahrscheinlich anstelle von memsnet.org
und CTAN
anstelle von sehen wollen tug.ctan.org
.