Biblatex: Internetquellen um Erstellungs-/Aktualisierungsdatum erweitern

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


Erebos
Forum-Newbie
Forum-Newbie
Beiträge: 9
Registriert: Sa 3. Jul 2021, 13:22

Biblatex: Internetquellen um Erstellungs-/Aktualisierungsdatum erweitern

Beitrag von Erebos »

Hallo zusammen,

leider habe ich bei der Erstellung meines Literaturverzeichnisses bzw. dem darin enthaltenen Internetquellenverzeichnis ein Problem, bei dem ich nicht mehr weiter komme.

Ich verwende BibLaTeX zusammen mit Biber und dem Zitierstil authoryear-ibid.
Leider passt die Ausgabe der Stils im Literaturverzeichnis für die Internetquellen nicht mit der geforderten Darstellung aus unserem Leitfaden zusammen.
Laut diesem müssen Internetquellen wie folgt formatiert sein oder zumindest dieselben Elemente in derselben Reihenfolge aufweisen:

Kaiser, Arvid (VW, 2015): Diese Städte zittern um VW-Milliarden, http://manager-magazin.de/unternehmen/a ... 55321.html (2015-09-30) [2017-11-12]

Das einzige Feld, welches mir eigentlich fehlt, ist das hinter der URL, das das letzte Aktualisierungsdatum enthält. Dieses Feld ist in Citavi auch schon gepflegt und meine erste Überlegung war es, dieses Feld als date (oder etwas ähnliches) exportieren zu lassen, um darauf zugreifen zu können.

Ein etwas größeres Beispiel an dieser Stelle, das dem Aufbau meines Dokuments entspricht, wäre folgendes:

%Schriftgröße, Layout, Papierformat, Art des Dokuments:
\documentclass[12pt,
bibliography=totoc,
paper=a4,
titlepage,
listof=entryprefix,
listof=totoc,
index=totoc,
DIV=calc,
twoside,	%oneside / twoside
ngerman
]{scrartcl}
\usepackage{filecontents}
\begin{filecontents}{Literatur_bsp.bib}
@online{Kaiser.2015,
  author = {Kaiser, Arvid},
  year = {2015},
  title = {Diese Städte zittern um VW-Milliarden},
  url = {http://manager-magazin.de/unternehmen/a ... 55321.html},
  urldate = {2017-11-12},
  abstract = {},
  pagetotal = {1},
  location= {Wolfsburg},
  file = {xPath},
  date= {2015-09-30},
}
\end{filecontents}

%Deutsche Sprachunterstützung und Silbentrennung
\usepackage[ngerman]{babel}

%Zeichensatz auswählen | Umlaute ermöglichen:
\usepackage[utf8]{inputenc}

%Zeichensatz Kompatibilität:
\usepackage[T1]{fontenc}
\usepackage{lmodern}

%Datum formatieren:
\usepackage[yyyymmdd]{datetime}
\renewcommand{\dateseparator}{-}

%Literaturverzeichnis | Zitation | URL
\usepackage{url}	%Bib-Datei mit URL-Packet exportieren!
\urlstyle{same}		%URLs nicht in Schreibmaschinenschrift

\usepackage[babel, german=quotes]{csquotes}
\usepackage[style=authoryear-ibid, maxbibnames=99, maxcitenames=2, sorting=nyt, uniquelist=false, uniquename=minfull, mincrossrefs=1, date=short, isbn=false, doi=false, url=false, backend=biber]{biblatex}	

%Ändern der Ausgabe von Namen und Floskeln:
%\DefineBibliographyStrings{ngerman}{andothers={et\addabbrvspace al\adddot}}      % et al. statt u.a
\renewcommand{\finentrypunct}{\addspace}										%
\renewcommand{\multicitedelim}{\addsemicolon\space}							%
\DeclareFieldFormat{urldate}{\mkbibbrackets{\bibstring{urlseen}\space#1}}		%Eckige Klammern um das Zugriffsdatum einer URL
\DefineBibliographyStrings{ngerman}{urlseen = {Zugriff}}						%"besucht am" in "Zugriff" ändern (Leitfaden)

\bibliography{Literatur_bsp}

%Felder ausschließen, damit sie nicht prozessiert werden und nicht im Verzeichnis landen:
\DeclareSourcemap{
  \maps[datatype=bibtex]{
    \map{
      \step[fieldset=addendum, null]
      \step[fieldset=note, null]
      \step[fieldset=abstract, null]
      \step[fieldset=eventdate, null]
      \step[fieldset=file, null]
      \step[fieldset=language, null]
      \step[fieldset=pagetotal, null]
      \step[fieldset=eprint, null]
    } 
  }
}

%Abstände und Formatierung Literaturverzeichnis setzen
\DeclareNameAlias{sortname}{family-given}% <- eingefügt		%Autorennamen im Literaturverzeichnis immer Nachname, Vorname
\DeclareNameAlias{default}{sortname}						%Anpassung der Herausgeber von Sammelwerken an die normalen Werke
\renewcommand{\multinamedelim}{\addcomma\space}		%Bei mehreren Autoren trotzdem Nachname, Vorname beibehalten
\renewcommand{\finalnamedelim}{\addcomma\space}		%Letzter Autor ebenfalls (wie alle anderen) mit Komma angehängt

%Formatierung Literaturverzeichnis
\setlength{\bibhang}{1cm}
\setlength{\bibinitsep}{18pt}							%Abstand zwischen verschiedenen Anfangsbuchstaben

%Doppelpunkt nach Autor + Jahr:
\renewcommand*{\labelnamepunct}{\addcolon\addspace}

%Erweiterte Verweise
\usepackage[colorlinks, linkcolor = black, citecolor = black, filecolor = black, urlcolor = blue, breaklinks=true]{hyperref} 

\begin{document}
Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum \parencites[vgl.][S.1]{Kaiser.2015}.

\printbibliography[nottype={online}, nottype={misc}, nottype={thesis}, title={Literaturverzeichnis}, heading=bibnumbered]

\printbibliography[type=online, title={Internetquellen}, heading=subbibliography]
\printbibliography[type=misc, type=thesis, title={Quellenverzeichnis}, heading=subbibliography]	


\end{document}

Ist es möglich das Datum der letzten Aktualisierung ausschließlich für Internetquellen einzufügen und das Jahr nach dem Autor trotzdem zu erhalten?


MoeWe
Forum-Meister
Forum-Meister
Beiträge: 801
Registriert: Fr 30. Aug 2019, 15:35
Kontaktdaten:

Re: Biblatex: Internetquellen um Erstellungs-/Aktualisierungsdatum erweitern

Beitrag von MoeWe »

Zunächst sei angemerkt, dass ein Eintrag nicht sowohl ein year als auch ein date haben darf. Daher auch die Warnung

WARN - Overwriting field 'year' with year value from field 'date' for entry 'Kaiser.2015'

Beide beziehen sich auf dasselbe Datum (normalerweise das Veröffentlichungsdatum). biblatex stellt date bereit, um die ganze Bandbreite an ISO-8601-Datumsangaben abbilden zu können, year (wie auch month) wird zur Kompatibilität mit BibTeX-Stilen bereitgestellt und kann date ersetzen. In den Standardstilen von biblatex gibt es keine Möglichkeit, zwischen einem Veröffentlichungs- und einem Aktualisierungsdatum zu unterscheiden. (Die Frage ist aber, ob Du das wirklich brauchst.) Die Stile stellen das Datum origdate bereit, mit dem man soetwas basteln könnte (Veröffentlichung origdate, Aktualisierung date). Wobei ich mir nicht ganz sicher bin, ob ich origdate semantisch hier so passen finde. Man könnte natürlich auch ein ganz neues Datum definieren.

In Deinem Beispiel kommen wir schon auf einem anderen Weg weiter. Hier wäre die Option mergedate ein erster Schritt. Was die Option bewirkt und welche Werte sie hat, kannst Du in der Stil-Dokumentation Deines Stils nachsehen: http://mirrors.ctan.org/macros/latex/co ... -biber.pdf Voreingestellt ist mergedate=compact,, Du könntest an mergedate=false, oder mergedate=basic, interessiert sein.

\documentclass[12pt,
bibliography=totoc,
paper=a4,
titlepage,
listof=entryprefix,
listof=totoc,
index=totoc,
DIV=calc,
twoside,
ngerman
]{scrartcl}

\usepackage[ngerman]{babel}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage[yyyymmdd]{datetime}
\renewcommand{\dateseparator}{-}

\usepackage{url}
\urlstyle{same}

\usepackage[babel, german=quotes]{csquotes}
\usepackage[
  backend=biber,
  style=authoryear-ibid,
  maxbibnames=99, maxcitenames=2,
  uniquelist=false, uniquename=minfull,
  mincrossrefs=1,
  date=short,
  isbn=false, doi=false, url=false,
]{biblatex}

\renewcommand*{\finentrypunct}{}
\renewcommand*{\multicitedelim}{\addsemicolon\space}
\DeclareFieldFormat{urldate}{\mkbibbrackets{\bibstring{urlseen}\space#1}}
\DefineBibliographyStrings{ngerman}{urlseen = {Zugriff}}

\DeclareSourcemap{
  \maps[datatype=bibtex]{
    \map{
      \step[fieldset=addendum, null]
      \step[fieldset=note, null]
      \step[fieldset=abstract, null]
      \step[fieldset=eventdate, null]
      \step[fieldset=file, null]
      \step[fieldset=language, null]
      \step[fieldset=pagetotal, null]
      \step[fieldset=eprint, null]
    }
  }
}

\DeclareNameAlias{default}{family-given}
\DeclareNameAlias{sortname}{default}
\DeclareDelimFormat{multinamedelim}{\addcomma\space}
\DeclareDelimAlias{finalnamedelim}{multinamedelim}

\setlength{\bibhang}{1cm}
\setlength{\bibinitsep}{18pt}

\DeclareDelimFormat{nametitledelim}{\addcolon\space}

\ExecuteBibliographyOptions[online]{mergedate=false}

\usepackage[
  colorlinks,
  linkcolor = black, citecolor = black, filecolor = black,
  urlcolor = blue,
]{hyperref}

\begin{filecontents}{\jobname.bib}
@online{Kaiser.2015,
  author   = {Kaiser, Arvid},
  title    = {Diese Städte zittern um VW-Milliarden},
  url      = {https://www.manager-magazin.de/unterneh ... 55321.html},
  urldate  = {2017-11-12},
  location = {Hamburg},
  file     = {xPath},
  date     = {2015-09-30},
}
\end{filecontents}
\addbibresource{\jobname.bib}

\begin{document}
Lorem ipsum \parencites[vgl.][1]{Kaiser.2015}.

\printbibliography[
  nottype={online}, nottype={misc}, nottype={thesis},
  title={Literaturverzeichnis}, heading=bibnumbered]
\printbibliography[
  type=online,
  title={Internetquellen}, heading=subbibliography]
\printbibliography[
  type=misc, type=thesis,
  title={Quellenverzeichnis}, heading=subbibliography]
\end{document}

So bekommen wir schonmal (2015) nach dem Namen und dann später im Eintrag das volle Datum. Das steht jetzt noch nicht genau an der Stelle, an der Du es gerne hättest, aber bevor wir uns das antun, möchte ich aus dem Bauch heraus ("Leitfaden" und der Beispieleintrag) auf https://github.com/andygrunwald/FOM-LaTeX-Template verweisen. Ist Dir die Vorlage bekannt und hilft sie Dir vielleicht weiter?


Erebos
Forum-Newbie
Forum-Newbie
Beiträge: 9
Registriert: Sa 3. Jul 2021, 13:22

Re: Biblatex: Internetquellen um Erstellungs-/Aktualisierungsdatum erweitern

Beitrag von Erebos »

Vielen Dank für deine schnelle Antwort!

Tatsächlich war mir die Vorlage bisher nicht bekannt, was natürlich nach all den Anpassungen, die ich selbst vorgenommen habe sehr schade ist - anscheinend war eine solche Suche aber einfach zu naheliegend!
Außerdem scheinst du ja bei den (speziellen) Anforderungen der FOM hier im Forum bereits eine Art Experte zu sein!

Leider ist die Vorlage bereits schon wieder veraltet bzw. hat sich der Leitfaden dieses Jahr erneut verändert, weshalb ich die Lösung nicht 1:1 übernehmen konnte.
Dennoch hat sie mir bis zu einem gewissen Punkt weitergeholfen und ich konnte zumindest die geforderten Felder bzw. Informationen ergänzen, auch wenn die Interpunktion und der Aufbau noch nicht ganz stimmen (was allerdings nicht Teil dieser Frage war).

Gelöst habe ich es mithilfe von Teilen des Codes aus der von dir angesprochenen Vorlage und aktuell sieht es wie folgt aus:

%Schriftgröße, Layout, Papierformat, Art des Dokuments:
\documentclass[12pt,
bibliography=totoc,
paper=a4,
titlepage,
listof=entryprefix,
listof=totoc,
index=totoc,
DIV=calc,
twoside,	%oneside / twoside
ngerman
]{scrartcl}
\usepackage{filecontents}
\begin{filecontents}{Literatur_bsp.bib}
@online{Kaiser.2015,
  author = {Kaiser, Arvid},
  year = {2015},
  title = {Diese Städte zittern um VW-Milliarden},
  url = {http://manager-magazin.de/unternehmen/a ... 55321.html},
  urldate = {2017-11-12},
  abstract = {},
  pagetotal = {1},
  location= {Wolfsburg},
  file = {xPath},
  date= {2015-09-30},
}
\end{filecontents}

%Deutsche Sprachunterstützung und Silbentrennung
\usepackage[ngerman]{babel}

%Zeichensatz auswählen | Umlaute ermöglichen:
\usepackage[utf8]{inputenc}

%Zeichensatz Kompatibilität:
\usepackage[T1]{fontenc}
\usepackage{lmodern}

%Datum formatieren:
\usepackage[yyyymmdd]{datetime}
\renewcommand{\dateseparator}{-}

%Literaturverzeichnis | Zitation | URL
\usepackage{url}	%Bib-Datei mit URL-Packet exportieren!
\urlstyle{same}		%URLs nicht in Schreibmaschinenschrift

\usepackage[babel, german=quotes]{csquotes}
\usepackage[style=ext-authoryear-ibid, 	%style=ext-authoryear-ibid, %um "Ebd." (ebenda) für sich-wiederholende Fussnoten zu nutzen %style=ext-authoryear,
%			mergedate=false,
			date=iso,				%iso dateformat für YYYY-MM-DD
			urldate=iso,
			innamebeforetitle,		%InCollections Autor/Herausgeber vor Titel
			dashed=true,			%Substitution vorhandener wiederholender Autorennamen
			useprefix=true, 		% 'von' im Namen beachten (beim Anzeigen)
			maxbibnames=99, 
			maxcitenames=2, 
			sorting=nyt, 
			uniquelist=false, 
			uniquename=minfull, 
			mincrossrefs=1, 
			isbn=false, 
			doi=false, 
			url=false,
			 backend=biber]
			 {biblatex}		

%\AtBeginBibliography{\singlespacing}		%Einzeiliges Literaturverzeichnis
\ExecuteBibliographyOptions[online]{mergedate=false}

%Ändern der Ausgabe von Namen und Floskeln:
%\DefineBibliographyStrings{ngerman}{andothers={et\addabbrvspace al\adddot}}      % et al. statt u.a
\renewcommand{\finentrypunct}{\addspace}										%
\renewcommand{\multicitedelim}{\addsemicolon\space}							%
\DeclareFieldFormat{urldate}{\mkbibbrackets{\bibstring{urlseen}\space#1}}		%Eckige Klammern um das Zugriffsdatum einer URL
\DefineBibliographyStrings{ngerman}{urlseen = {Zugriff}}						%"besucht am" in "Zugriff" ändern (Leitfaden)

\bibliography{Literatur_bsp}

%Felder ausschließen, damit sie nicht prozessiert werden und nicht im Verzeichnis landen:
\DeclareSourcemap{
  \maps[datatype=bibtex]{
    \map{
      \step[fieldset=addendum, null]
      \step[fieldset=note, null]
      \step[fieldset=abstract, null]
      \step[fieldset=eventdate, null]
      \step[fieldset=file, null]
      \step[fieldset=language, null]
      \step[fieldset=pagetotal, null]
      \step[fieldset=eprint, null]
    } 
  }
}

%Änderungen an der Darstellung im Literaturverzeichnis
\renewcommand*{\finentrypunct}{}%Kein Punkt am Ende des Literaturverzeichnisses
\DeclareDelimFormat[bib,biblist]{innametitledelim}{\addcomma\space}%

%Namen kursiv schreiben
\renewcommand{\mkbibnamefamily}{\mkbibemph}%
\renewcommand{\mkbibnamegiven}{\mkbibemph}%
\renewcommand{\mkbibnamesuffix}{\mkbibemph}%
\renewcommand{\mkbibnameprefix}{\mkbibemph}%

%Abstände und Formatierung Literaturverzeichnis setzen
\DeclareNameAlias{sortname}{family-given}% <- eingefügt		%Autorennamen im Literaturverzeichnis immer Nachname, Vorname
\DeclareNameAlias{default}{sortname}%						%Anpassung der Herausgeber von Sammelwerken an die normalen Werke
%\DeclareNameAlias{ineditor}{sortname}						%Anpassung der Herausgeber von Sammelwerken an die normalen Werke
%\DeclareNameAlias{bookauthor}{sortname}					%Anpassung der Autoren von Sammelwerken an die normalen Werke
%Überschreibt alles!:
%\renewcommand{\mkbibnamefamily}[1]{\textsc{#1}}%		%Nachnamen der Autoren in Kapitälchen
%\renewcommand{\multinamedelim}{\addcomma\space}%		%Bei mehreren Autoren trotzdem Nachname, Vorname beibehalten
%\renewcommand{\finalnamedelim}{\addspace\&\space}%		%Letzter Autor mit & angehängt (nicht Leitfadengetreu)
%\renewcommand{\finalnamedelim}{\addcomma\space}%		%Letzter Autor ebenfalls (wie alle anderen) mit Komma angehängt
\DeclareDelimFormat[bib, parencite]{multinamedelim}{\addcomma\space}%		%Setzt für Textzitate und das Literaturverzeichnis die Trennung zwischen Autoren auf Komma
\DeclareDelimAlias[bib]{finalnamedelim}{multinamedelim}%					%Setzt nur für das Literaturverzeichnis die Trennung des letzten Autors ebenfalls auf Komma (nicht aber für Textzitate)

%----------------------
%ONLINE Quellen:
%----------------------
\usepackage{xpatch}
\xpatchbibdriver{online}
  {\usebibmacro{organization+location+date}\newunit\newblock}
  {}
  {}{}
  
\DeclareFieldFormat[online]{date}{\mkbibparens{#1}}% \DeclareFieldFormat{urltime}{\addspace #1\addspace Uhr}% \DeclareFieldFormat{urldate}{%urltime zu urldate hinzufügen [Zugriff\addspace#1\printfield{urltime}] %\addcolon entfernt } \DeclareFieldFormat[online]{url}{<\url{#1}>} \renewbibmacro{url+urldate}{% \usebibmacro{url}% \ifentrytype{online} {\setunit{\addspace}% \iffieldundef{year} {\printtext[date]{keine Datumsangabe}} {\usebibmacro{date}}}% {}% \setunit*{\addspace}% \usebibmacro{urldate} } %% Anzeige des Jahres nach dem Stichwort (usera) im Literaturverzeichnis %% Wenn das Jahr bei Online-Quellen nicht explizit angegeben wurde, wird nach %% dem Stichwort 'o. J.' ausgegeben. Nach der URL steht dann 'keine %% Datumsangabe'. Ist das Jahr definiert, wird es an beiden Stellen ausgegeben. %% Das Zugriffsdatum (urldate) spielt hier keine Rolle. %% Für Nicht-Online-Quellen wird nichts geändert. \renewbibmacro{date+extradate}{% \printtext[parens]{% \printfield{usera}% \setunit{\printdelim{titleyeardelim}}% \ifentrytype{online} {\setunit{\addspace\addcomma\addspace}% \iffieldundef{year} {\bibstring{nodate}} {\printlabeldateextra}}% {\printlabeldateextra}}} %% Anzeige des Jahres nach dem Stichwort (usera) in der Fussnote %% das Stichwort hat der Aufrufer hier schon ausgegeben. %% siehe auch Kommentar zu: \renewbibmacro{date+extradate} \renewbibmacro{cite:labeldate+extradate}{% \ifentrytype{online} {\setunit*{\addspace\addcomma\addspace}% \iffieldundef{year} {\bibstring{nodate}} {\printlabeldateextra}}% {\printlabeldateextra}} \DefineBibliographyStrings{german}{ nodate = {{}o.\adddot\addspace J\adddot}, andothers = {\textit{et\addabbrvspace al\adddot}} } %Formatierung Literaturverzeichnis \setlength{\bibhang}{1cm} \setlength{\bibinitsep}{18pt} %Abstand zwischen verschiedenen Anfangsbuchstaben %Doppelpunkt nach Autor + Jahr: \renewcommand*{\labelnamepunct}{\addcolon\addspace} %Erweiterte Verweise \usepackage[colorlinks, linkcolor = black, citecolor = black, filecolor = black, urlcolor = blue, breaklinks=true]{hyperref} \begin{document} Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum \parencites[vgl.][S.1]{Kaiser.2015}. \printbibliography[nottype={online}, nottype={misc}, nottype={thesis}, title={Literaturverzeichnis}, heading=bibnumbered] \printbibliography[type=online, title={Internetquellen}, heading=subbibliography] \printbibliography[type=misc, type=thesis, title={Quellenverzeichnis}, heading=subbibliography] \end{document}

Grummelgast

Re: Biblatex: Internetquellen um Erstellungs-/Aktualisierungsdatum erweitern

Beitrag von Grummelgast »

Erebos hat geschrieben:
Fr 9. Jul 2021, 00:00

Leider ist die Vorlage bereits schon wieder veraltet bzw. hat sich der Leitfaden dieses Jahr erneut verändert, weshalb ich die Lösung nicht 1:1 übernehmen konnte.

Du könntest in dem Fall einen Eintrag im Issue-Tracker des Projekts erstellen und dort auf die relevanten Änderungen hinweisen. Soweit du diese bereits gelöst hast, kannst du auch hierher verlinken oder sie dort direkt angeben.

Als Maximum könntest du sogar einen Pull request mit den Änderungen erstellen.

OpenSource-Projekte leben vom Mitmachen und funktionieren am besten mit Nehmen und Geben.

Danke, dass du deine bisherige Lösung hier gezeigt hast.


Erebos
Forum-Newbie
Forum-Newbie
Beiträge: 9
Registriert: Sa 3. Jul 2021, 13:22

Re: Biblatex: Internetquellen um Erstellungs-/Aktualisierungsdatum erweitern

Beitrag von Erebos »

Danke für den Hinweis!

Aktuell arbeite ich selbst noch daran die neue Darstellungsweise der einzelnen Dokumententypen richtig umzusetzen (vielleicht auch hinzupfuschen?! :D ), da ich leider nicht mehr die Zeit habe auf die Umsetzung zu warten.

Da ich mich selbst wohl eher als LaTeX-Anfänger bezeichnen würde, weis ich nicht, ob meine Lösung von all zu hoher Qualität sein wird, aber das können ja dann auch andere entscheiden.


Erebos
Forum-Newbie
Forum-Newbie
Beiträge: 9
Registriert: Sa 3. Jul 2021, 13:22

Re: Biblatex: Internetquellen um Erstellungs-/Aktualisierungsdatum erweitern

Beitrag von Erebos »

Jetzt muss ich mich doch noch einmal melden, da die Thematik doch noch nicht ganz so gelöst ist, wie ich das mir erhofft hatte.

Und zwar geht es um die von MoeWe bereits angesprochene Warnung:

WARN - Overwriting field 'year' with year value from field 'date' for entry

Ich habe dabei durchaus verstanden, wieso ich diese Warnung erhalten und was im Hintergrund geschieht, allerdings hängt genau damit mein Problem zusammen.
Warum auch immer - aber gegen die Vorgabe kann ich leider nichts machen - müssen unsere angegebenen Internetquellen (aus sich von BibLaTeX) 3 verschiedene Daten enthalten:

Verfasser (Erscheinungsjahr): Titel, <Internetadresse>(Änderungsdatum) [Zugriffsdatum]

Dabei KANN das Änderungsdatum mit dem Erscheinungsdatum/-jahr übereinstimmen muss es aber natürlich nicht.
Zusätzlich kann es natürlich auch noch sein, dass eines oder sogar beide Daten nicht bekannt sind.
In diesen Fällen soll für das Erscheinungsjahr ein "o.J." und für das Änderungsdatum ein "keine Datumsangabe" erscheinen. (Leider behandelt auch die Github-Vorlage diese Fälle nicht.)

Aktuell wird das Feld year (Erscheinungsjahr) in erster Linie durch das date (Änderungsdatum) überschrieben. Sollte dieses allerdings leer sein, wird year von urldate (Zugriffsdatum) überschrieben.
Außerdem habe ich festgestellt, dass das Feld date, wenn dieses leer und dafür year vorhanden ist, durch year überschrieben wird.

Mein Wunsch bzw. Ziel wäre es, eine Lösung für den Dokumententyp ONLINE zu haben, bei dem ich Erscheinungsjahr, Änderungsdatum und Zugriffsdatum getrennt und unabhängig von einander eintragen oder auch freilassen kann (entweder komplett leer oder mit "o.J."/"keine Datumsangabe", das ist egal) und die Felder dementsprechend im obigen Format ausgegeben werden.

Dabei sollen diese ganzen Änderungen natürlich keine Auswirkungen auf die anderen Dokumententypen haben.

Ich habe bereits versucht eigene Lösungsansätze mit origdate (oder auch eine Pfuschlösung mit eventdate) versucht, allerdings sind diese Ansätze bislang - vermutlich an meiner eigenen LaTeX-(In-)Kompetenz - gescheitert.

Ich habe mir auch bereits überlegt meine aktuelle Lösung einfach zu lassen und den Rest im nachhinein händisch zu korrigieren - hätte aber doch schon gerne die Möglichkeit das Dokument final direkt ohne zusätzliche anschließende Änderungen auszugeben!

Wenn jemand hierfür eine Lösung kennt oder mir sogar dabei helfen würde eine zu erstellen, wäre ich demjenigen SEHR dankbar!

Abschließend natürlich noch mein aktueller Stand nur für die ONLINE-Typen als "MWE":

%Schriftgröße, Layout, Papierformat, Art des Dokuments:
\documentclass[12pt,
bibliography=totoc,
paper=a4,
titlepage,
listof=entryprefix,
listof=totoc,
index=totoc,
DIV=calc,
twoside,	%oneside / twoside
ngerman
]{scrartcl}
\usepackage{filecontents}
\begin{filecontents}{Literatur_bsp.bib}
@online{ABC.2019,
 author = {ABC, DEF},
  title = {GoLaTeX-Forum},
 url = {posting.php?mode=reply&f=15&t=23931#review},
 urldate = {2021-02-15},
 abstract = {},
 pagetotal = {16},
 location = {o.O.},
 file = {PDF:pdf},
 year = {2019},
 date = {2020-01-01}
 }
@online{Test1.2019,
 author = {Ohne, Jahr},
  title = {GoLaTeX-Forum},
 url = {posting.php?mode=reply&f=15&t=23931#review},
 urldate = {2021-02-15},
 abstract = {},
 pagetotal = {16},
 location = {o.O.},
 file = {PDF:pdf},
 year = {},
 date = {2020-01-01}
 }
@online{Test2.2019,
 author = {Ohne, Änderungsdatum},
  title = {GoLaTeX-Forum},
 url = {posting.php?mode=reply&f=15&t=23931#review},
 urldate = {2021-02-15},
 abstract = {},
 pagetotal = {16},
 location = {o.O.},
 file = {PDF:pdf},
 year = {2019},
 date = {}
 }
@online{Test3.2019,
 author = {Beides, NichtVorhanden},
  title = {GoLaTeX-Forum},
 url = {posting.php?mode=reply&f=15&t=23931#review},
 urldate = {2021-02-15},
 abstract = {},
 pagetotal = {16},
 location = {o.O.},
 file = {PDF:pdf},
 year = {},
 date = {}
 }

\end{filecontents}

%Deutsche Sprachunterstützung und Silbentrennung
\usepackage[ngerman]{babel}

%Zeichensatz auswählen | Umlaute ermöglichen:
\usepackage[utf8]{inputenc}

%Zeichensatz Kompatibilität:
\usepackage[T1]{fontenc}
\usepackage{lmodern}

%Datum formatieren:
\usepackage[yyyymmdd]{datetime}
\renewcommand{\dateseparator}{-}

%Literaturverzeichnis | Zitation | URL
\usepackage{url}	%Bib-Datei mit URL-Packet exportieren!
\urlstyle{same}		%URLs nicht in Schreibmaschinenschrift

\usepackage[babel, german=quotes]{csquotes}
\usepackage[style=ext-authoryear-ibid, 	%style=ext-authoryear-ibid, %um "Ebd." (ebenda) für sich-wiederholende Fussnoten zu nutzen %style=ext-authoryear,
			mergedate=false,
			date=iso,				%iso dateformat für YYYY-MM-DD
			urldate=iso,
			innamebeforetitle,		%InCollections Autor/Herausgeber vor Titel
			dashed=true,			%Substitution vorhandener wiederholender Autorennamen
			useprefix=true, 		% 'von' im Namen beachten (beim Anzeigen)
			maxbibnames=99, 
			maxcitenames=2, 
			sorting=nyt, 
			uniquelist=false, 
			uniquename=minfull, 
			mincrossrefs=1, 
			isbn=false, 
			doi=false, 
			url=false,
			 backend=biber]
			 {biblatex}	


%\AtBeginBibliography{\singlespacing}		%Einzeiliges Literaturverzeichnis
\ExecuteBibliographyOptions[online]{mergedate=false}

%Ändern der Ausgabe von Namen und Floskeln:
%\DefineBibliographyStrings{ngerman}{andothers={et\addabbrvspace al\adddot}}      % et al. statt u.a
\renewcommand{\finentrypunct}{\addspace}										
\renewcommand{\multicitedelim}{\addsemicolon\space}							%

%Doppelpunkt nach Autor + Jahr:
\renewcommand*{\labelnamepunct}{\addcolon\addspace}

%Titel-Interpunktion:
\renewcommand{\newunitpunct}{\addcomma\addspace}
%Komma nach dem Titel + Untertitel
\renewcommand{\titleaddonpunct}{\newunitpunct}	
%Gedankenstrich zwischen Titel und Untertitle:
\renewcommand{\subtitlepunct}{\addspace--\space}
\renewcommand{\titleaddonpunct}{\addspace--\space}


\bibliography{Literatur_bsp}

%Felder ausschließen, damit sie nicht prozessiert werden und nicht im Verzeichnis landen:
\DeclareSourcemap{
  \maps[datatype=bibtex]{
    \map{
      \step[fieldset=addendum, null]
      \step[fieldset=note, null]
      \step[fieldset=abstract, null]
      \step[fieldset=eventdate, null]
      \step[fieldset=file, null]
      \step[fieldset=language, null]
      \step[fieldset=pagetotal, null]
      \step[fieldset=eprint, null]
      \step[fieldset=titleaddon, null]
    } 
  }
}

%Aufräumen die Felder werden laut Leitfaden nicht benötigt.
\AtEveryBibitem{%
\ifentrytype{book}{
    \clearfield{issn}%
    \clearfield{doi}%
    \clearfield{isbn}%
    \clearfield{url}%
    \clearfield{eprint}%
}{}
\ifentrytype{collection}{
  \clearfield{issn}%
  \clearfield{doi}%
  \clearfield{isbn}%
  \clearfield{url}%
  \clearfield{eprint}%
  \clearfield{volume}%
  \clearfield{series}%
  \clearfield{note}%
  \clearfield{language}%
  \clearfield{editor}%
  \clearfield{byeditor}%
}{}
\ifentrytype{incollection}{
  \clearfield{issn}%
  \clearfield{doi}%
  \clearfield{isbn}%
  \clearfield{url}%
  \clearfield{eprint}%
  \clearfield{series}%
  \clearfield{publisher}%
  \clearfield{editor}%
  \clearfield{byeditor}%
  \clearfield{pagetotal}%
  \clearfield{number}%
}{}
\ifentrytype{article}{
  \clearfield{issn}%
  \clearfield{doi}%
  \clearfield{isbn}%
  \clearfield{url}%
  \clearfield{eprint}%
}{}
\ifentrytype{inproceedings}{
  \clearfield{issn}%
  \clearfield{doi}%
  \clearfield{isbn}%
  \clearfield{url}%
  \clearfield{eprint}%
}{}
	%Allgemein
    \clearfield{abendum}%
    \clearfield{note}%
    \clearfield{abstract}%
    \clearfield{eventdate}%
    \clearfield{file}%
    \clearfield{language}%
    \clearfield{pagetotal}%
}

%Änderungen an der Darstellung im Literaturverzeichnis
\renewcommand*{\finentrypunct}{}%Kein Punkt am Ende des Literaturverzeichnisses

\DeclareFieldFormat{editortype}{\mkbibparens{#1}}%
\DeclareDelimFormat{editortypedelim}{\addspace}%
\DeclareFieldFormat{translatortype}{\mkbibparens{#1}}%
\DeclareDelimFormat{translatortypedelim}{\addspace}%
\DeclareDelimFormat[bib,biblist]{innametitledelim}{\addcomma\space}%

\DeclareFieldFormat{citetitle}{#1}%
\DeclareFieldFormat{title}{#1}%
\DeclareFieldFormat{booktitle}{#1}%
\DeclareFieldFormat{journaltitle}{#1}%

%Nach Title muss ein Komma statt einem Punkt kommen:
\renewbibmacro*{title}{%
  \ifboolexpr{
    test {\iffieldundef{title}}
    and
    test {\iffieldundef{subtitle}}
  }
    {}
    {\printtext[title]{%
       \printfield[titlecase]{title}%
       \setunit{\subtitlepunct}%
       \printfield[titlecase]{subtitle}}%
     \newunit}%
  \printfield{titleaddon}%
  \printunit{\addcomma\addperiod\space}}

%Namen kursiv schreiben
\renewcommand{\mkbibnamefamily}{\mkbibemph}%
\renewcommand{\mkbibnamegiven}{\mkbibemph}%
\renewcommand{\mkbibnamesuffix}{\mkbibemph}%
\renewcommand{\mkbibnameprefix}{\mkbibemph}%

%----------------------
%ONLINE Quellen:
%----------------------
\DeclareFieldFormat{urldate}{\mkbibbrackets{\bibstring{urlseen}\space#1}}		%Eckige Klammern um das Zugriffsdatum einer URL
\DefineBibliographyStrings{ngerman}{urlseen = {Zugriff}}						%"besucht am" in "Zugriff" ändern (Leitfaden)

%Reihenfolge ändern:
\DeclareBibliographyDriver{online}{%
  \usebibmacro{introcite:plain}%
  \usebibmacro{bibindex}%
  \usebibmacro{begentry}%
  \usebibmacro{author/editor+others/translator+others}%
  \setunit{\printdelim{nametitledelim}}\newblock
  \usebibmacro{title}%
  \newunit
  \usebibmacro{language}%
  \newunit\newblock
  \usebibmacro{byauthor}%
  \newunit\newblock
  \usebibmacro{byeditor+others}%
  \newunit\newblock
  \usebibmacro{version}%
  \newunit
  \usebibmacro{note}%
  \newunit\newblock
  \usebibmacro{organization+location+date}%
  \newunit\newblock
  \usebibmacro{doi+eprint+url}%
  \newunit\newblock
  \usebibmacro{addendum+pubstate}%
  \setunit{\bibpagerefpunct}\newblock
  \usebibmacro{pageref}%
  \newunit\newblock
  \iftoggle{bbx:related}
    {\usebibmacro{related:init}%
     \usebibmacro{related}}
    {}%
    \usebibmacro{finentry}
}
   
\usepackage{xpatch} \xpatchbibdriver{online} {\usebibmacro{organization+location+date}\newunit\newblock} {} {}{}
\DeclareFieldFormat[online]{date}{\mkbibparens{#1}}% \DeclareFieldFormat{urltime}{\addspace #1\addspace Uhr}% \DeclareFieldFormat{urldate}{%urltime zu urldate hinzufügen [Zugriff\addspace#1\printfield{urltime}] %\addcolon entfernt } \DeclareFieldFormat[online]{url}{<\url{#1}>} \renewbibmacro{url+urldate}{% \usebibmacro{url}% \ifentrytype{online} {\setunit{}% %\addspace entfernt, da laut Leitfaden kein Leerzeichen zwischen URL und Änderungsdatum \iffieldundef{year} {\printtext[date]{keine Datumsangabe}} {\usebibmacro{date}}}% {}% \setunit*{\addspace}% \usebibmacro{urldate} } %% Anzeige des Jahres nach dem Stichwort (usera) im Literaturverzeichnis %% Wenn das Jahr bei Online-Quellen nicht explizit angegeben wurde, wird nach %% dem Stichwort 'o. J.' ausgegeben. Nach der URL steht dann 'keine %% Datumsangabe'. Ist das Jahr definiert, wird es an beiden Stellen ausgegeben. %% Das Zugriffsdatum (urldate) spielt hier keine Rolle. %% Für Nicht-Online-Quellen wird nichts geändert. \renewbibmacro{date+extradate}{% \printtext[parens]{% \printfield{usera}% \setunit{\printdelim{titleyeardelim}}% \ifentrytype{online} {\setunit{\addspace\addcomma\addspace}% \iffieldundef{year} {\bibstring{nodate}} {\printlabeldateextra}}% {\printlabeldateextra}}} %% Anzeige des Jahres nach dem Stichwort (usera) in der Fussnote %% das Stichwort hat der Aufrufer hier schon ausgegeben. %% siehe auch Kommentar zu: \renewbibmacro{date+extradate} \renewbibmacro{cite:labeldate+extradate}{% \ifentrytype{online} {\setunit*{\addspace\addcomma\addspace}% \iffieldundef{year} {\bibstring{nodate}} {\printlabeldateextra}}% {\printlabeldateextra}} \DefineBibliographyStrings{german}{ nodate = {{}o.\adddot\addspace J\adddot}, andothers = {\textit{et\addabbrvspace al\adddot}} } %Abstände und Formatierung Literaturverzeichnis setzen \DeclareNameAlias{sortname}{family-given}% <- eingefügt %Autorennamen im Literaturverzeichnis immer Nachname, Vorname \DeclareNameAlias{default}{sortname}% %Anpassung der Herausgeber von Sammelwerken an die normalen Werke \DeclareDelimFormat[bib, parencite]{multinamedelim}{\addcomma\space}% %Setzt für Textzitate und das Literaturverzeichnis die Trennung zwischen Autoren auf Komma \DeclareDelimAlias[bib]{finalnamedelim}{multinamedelim}% %Setzt nur für das Literaturverzeichnis die Trennung des letzten Autors ebenfalls auf Komma (nicht aber für Textzitate) % %Formatierung Literaturverzeichnis \setlength{\bibhang}{1cm} \setlength{\bibinitsep}{18pt} %Abstand zwischen verschiedenen Anfangsbuchstaben %Erweiterte Verweise \usepackage[colorlinks, linkcolor = black, citecolor = black, filecolor = black, urlcolor = blue, breaklinks=true]{hyperref} \begin{document} Lorem ipsum dolor sit amet \parencites[vgl.][S.0]{ABC.2019}. Test1: Autor (o.J.): Titel, <HTML>,(2020-01-01) [2021-02-15] \parencites[vgl.][S.1]{Test1.2019} Test2: Autor (2019): Titel, <HTML>,(keine Datumsangabe) [2021-02-15] \parencites[vgl.][S.2]{Test2.2019} Test3: Autor (o.J.): Titel, <HTML>,(keine Datumsangabe) [2021-02-15] \parencites[vgl.][S.3]{Test3.2019} %Literaturverzeichnis(se) \defbibfilter{Quellentypen}{ %Filter für Quellenverzeichnis erstellen \type{misc} \or \type{thesis} } \printbibliography[nottype={online}, nottype={misc}, nottype={thesis}, title={Literaturverzeichnis}, heading=bibnumbered] %Ausschließen mehrerer Typen funktioniert \printbibliography[type=online, title={Internetquellen}, heading=subbibliography] \printbibliography[filter=Quellentypen, title={Quellenverzeichnis}, heading=subbibliography] %filter=Quellentypen %Einschließen mehrerer Typen nur über Filter, da sonst AND \end{document}

Antworten