Abrufdatum der Url im Literaturverzeichnis nur als Jahr

Erstellung eines Literaturverzeichnisses mit BibTeX, Biber, BibLaTeX und Co.


ferdilehmann
Forum-Newbie
Forum-Newbie
Beiträge: 9
Registriert: Mo 29. Aug 2016, 09:27

Abrufdatum der Url im Literaturverzeichnis nur als Jahr

Beitrag von ferdilehmann »

Hallo!

Ich habe beim Schreiben einer Arbeit das Problem, dass Urls im Literaturverzeichnis nur als "besucht am 2016" dargestellt werden. Natürlich hätte ich gern das genaue Datum. Ich habe ein Template der Uni verwenden müssen, daher stammt der Zitierstil. Für das Quellenmanagement benutze ich Zotero. Hier das Minimalbeispiel:
\documentclass[12pt,german,abstracton,twoside,pdftex,parskip=off]{scrartcl} 

\usepackage[utf8]{inputenc}
\usepackage[ngerman]{babel}

\usepackage[T1]{fontenc}
\usepackage{lmodern}


\usepackage[natbib=true,style=nejm,maxnames=6,minnames=6,sorting=none,sortcites=true,backend=biber]{biblatex}

\addbibresource{Quellen.bib}
\bibliography{Quellen}{}

\begin{document}

\autocite{xy2000}


\printbibliography
\end{document}
Ich hoffe das klappt so und dass mir jemand helfen kann.

Danke und liebe Grüße
Ferdinand

Gast

Beitrag von Gast »

Der Stil biblatex-nejm, der übrigens schon seit einigen Jahren nicht mehr aktualisiert wurde und inzwischen aufgrund veralteten Codes einige seiner Features eingebüßt hat - aber immerhin wieder ohne Fehler kompiliert -, benutzt eine sehr holzhammerige Methode, um nur das Jahr auszugeben. Statt alldates=year werden die sprachspezifischen Datumsmakros radikal zusammengestutzt. Wir bekommen sie mit
\DefineBibliographyExtras{ngerman}{%
  \protected\def\mkbibdatelong#1#2#3{%
    \iffieldundef{#3}
      {}
      {\mkbibordinal{\thefield{#3}}%
       \iffieldundef{#2}{}{\nobreakspace}}%
    \iffieldundef{#2}
      {}
      {\mkbibmonth{\thefield{#2}}%
       \iffieldundef{#1}{}{\space}}%
    \iffieldbibstring{#1}
      {\bibstring{\thefield{#1}}}
      {\dateeraprintpre{#1}\stripzeros{\thefield{#1}}}}%
  \protected\def\mkbibdateshort#1#2#3{%
    \iffieldundef{#3}
      {}
      {\mkdayzeros{\thefield{#3}}\adddot
       \iffieldundef{#2}{}{\thinspace}}%
    \iffieldundef{#2}
      {}
      {\mkmonthzeros{\thefield{#2}}%
       \iffieldundef{#1}
	 {}
	 {\iffieldundef{#3}{/}{\adddot\thinspace}}}%
    \iffieldbibstring{#1}
      {\bibstring{\thefield{#1}}}
      {\dateeraprintpre{#1}\mkyearzeros{\thefield{#1}}}}%
}
zurück.

Beachte, dass Du in Deinem Beispiel \documentclass[12pt,german,abstracton,twoside,pdftex,parskip=off]{scrartcl} hast, also german (alte (!) deutsche Rechtschreibung) lädst, dann aber mit \usepackage[ngerman]{babel} die neue bestellst. Einige dich auf eine, am besten die neue, im Argument zur Dokumentenklasse. Siehe mein Beispiel unten.

Ferner ist
\addbibresource{Quellen.bib}
\bibliography{Quellen}{}
overkill,
\addbibresource{Quellen.bib}
alleine reicht völlig.

Beispiel
\documentclass[ngerman]{scrartcl}
\usepackage[utf8]{inputenc}
\usepackage{babel}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage[natbib=true, style=nejm, maxnames=6, minnames=6, sorting=none, sortcites=true, backend=biber]{biblatex}

\DefineBibliographyExtras{ngerman}{%
  \protected\def\mkbibdatelong#1#2#3{%
    \iffieldundef{#3}
      {}
      {\mkbibordinal{\thefield{#3}}%
       \iffieldundef{#2}{}{\nobreakspace}}%
    \iffieldundef{#2}
      {}
      {\mkbibmonth{\thefield{#2}}%
       \iffieldundef{#1}{}{\space}}%
    \iffieldbibstring{#1}
      {\bibstring{\thefield{#1}}}
      {\dateeraprintpre{#1}\stripzeros{\thefield{#1}}}}%
  \protected\def\mkbibdateshort#1#2#3{%
    \iffieldundef{#3}
      {}
      {\mkdayzeros{\thefield{#3}}\adddot
       \iffieldundef{#2}{}{\thinspace}}%
    \iffieldundef{#2}
      {}
      {\mkmonthzeros{\thefield{#2}}%
       \iffieldundef{#1}
	 {}
	 {\iffieldundef{#3}{/}{\adddot\thinspace}}}%
    \iffieldbibstring{#1}
      {\bibstring{\thefield{#1}}}
      {\dateeraprintpre{#1}\mkyearzeros{\thefield{#1}}}}%
}

\addbibresource{biblatex-examples.bib}

\begin{document}
\autocite{markey}

\printbibliography
\end{document}

ferdilehmann
Forum-Newbie
Forum-Newbie
Beiträge: 9
Registriert: Mo 29. Aug 2016, 09:27

Beitrag von ferdilehmann »

Danke für die Hilfe und die vielen Tipps!
Leider ist irgendetwas schief gegangen, da jetzt bspw. "besucht am 12. 07. urlyear2016 "ausgegeben wird (inklusive Leerzeichen). Außerdem steht bei allen anderen Zeitschrift-Zitaten jetzt zum Beispiel "Mai year2001", wo ich ja nur das Jahr brauche.

Wiederum durch eine andere Änderung (kann nicht sagen ob aktuell oder bereits vorher) stehen Kommas zwischen Nach- und Vornamen (Pugh, RN, Murray-Lyon, IM etc.). Diese sind natürlich überflüssig. Kann ich diese auch wieder entfernen?

Danke und viele Grüße

Gast

Beitrag von Gast »

Welche Version von biblatex verwendest Du denn? Der Code unten funktioniert mit der aktuellen Version 3.5 einwandfrei. Da in dieser Version aber die Datumsbehandlung neu implementiert wurde, wird der Code bei älteren Versionen wohl nur Murks produzieren.

Mit den Optionen alldates=year, urldate=short bekommst Du nur das Abrufdatum als vollständiges Datum, alles andere bleibt ein Jahr.

Sollte ich Deinen Kommentar zu den Leerzeichen so verstehen, dass die weg sollen? Laut Duden ist sowohl mit als auch ohne Leerzeichen OK (der Duden sagt, dass in der Textverarbeitung mit Leerzeichen gesetzt wird, DIN 5008 dagegen keine Leerzeichen macht).

Die Kommas sollten so um Version 3.3/3.4 auf einmal aufgetaucht sein, da hat sich nämlich das Namensformat geändert. Eigentlich sollte
\renewcommand*{\revsdnamepunct}{}
ausreichen.

Das Beispiel funktioniert in Version 3.5 einwandfrei, mit älteren Versionen sollte es teils erhebliche Probleme geben.
\documentclass[ngerman]{scrartcl}
\usepackage[utf8]{inputenc}
\usepackage{babel}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage[natbib=true, style=nejm, maxnames=6, minnames=6, sorting=none, sortcites=true, backend=biber, alldates=year, urldate=short]{biblatex}

\DefineBibliographyExtras{ngerman}{%
  \protected\def\mkbibdatelong#1#2#3{%
    \iffieldundef{#3}
      {}
      {\mkbibordinal{\thefield{#3}}%
       \iffieldundef{#2}{}{\nobreakspace}}%
    \iffieldundef{#2}
      {}
      {\mkbibmonth{\thefield{#2}}%
       \iffieldundef{#1}{}{\space}}%
    \iffieldbibstring{#1}
      {\bibstring{\thefield{#1}}}
      {\dateeraprintpre{#1}\stripzeros{\thefield{#1}}}}%
  \protected\def\mkbibdateshort#1#2#3{%
    \iffieldundef{#3}
      {}
      {\mkdayzeros{\thefield{#3}}\adddot
       \iffieldundef{#2}{}{\thinspace}}%
    \iffieldundef{#2}
      {}
      {\mkmonthzeros{\thefield{#2}}%
       \iffieldundef{#1}
	 {}
	 {\iffieldundef{#3}{/}{\adddot\thinspace}}}%
    \iffieldbibstring{#1}
      {\bibstring{\thefield{#1}}}
      {\dateeraprintpre{#1}\mkyearzeros{\thefield{#1}}}}%
}

\addbibresource{biblatex-examples.bib}

\renewcommand*{\revsdnamepunct}{}

\begin{document}
\autocite{markey,sigfridsson,worman,knuth:ct:a}

\printbibliography
\end{document}

ferdilehmann
Forum-Newbie
Forum-Newbie
Beiträge: 9
Registriert: Mo 29. Aug 2016, 09:27

Beitrag von ferdilehmann »

Meine Güte, das hat ja alles direkt geklappt! Ich danke dir vielmals!
Meine Version von Biblatex war noch 3.4 und Biber 2.5, das habe ich alles geupdatet. Toll, dass du den Braten direkt gerochen hast.

Antworten