Ich habe gerade angefangen, Biber/Biblatex zu verwenden, und habe Probleme, einige seiner Verhaltensweisen zu verstehen. Ich kann mir nicht vorstellen, dass ich der Erste bin, der auf dieses Problem gestoßen ist, aber ich konnte keine doppelte Frage finden.
Ich zitiere mehrere Artikel, die in derselben Zeitschrift veröffentlicht wurden. Um sicherzustellen, dass die Zeitschrifteninformationen in allen Zitaten konsistent sind, habe ich einen separaten Bib-Eintrag erstellt, der nur die Zeitschrifteninformationen enthält. Ich verweise dann auf diesen Eintrag mit den Artikeleinträgen. Eine Beispieldatei references.bib
:
@article{myjournal,
journaltitle={Journal of Interesting Things},
publisher={Someone}
}
@article{myarticle1,
crossref={myjournal},
title={That thing},
author={Martypants, Susan},
year={2019},
}
@article{myarticle2,
crossref={myjournal},
title={That other thing},
author={Rofessor, Peter},
year={2020}
}
myarticle1
Wenn ich nun in meinem Dokument sowohl als auch zitiere myarticle2
, enthält die Referenzliste eine zusätzliche Zeile ohne Namen und nur die Zeitschrifteninformationen:
Ein minimales funktionierendes Beispiel, das diese Ausgabe erzeugt, ist:
\documentclass{article}
\usepackage[backend=biber,style=alphabetic]{biblatex}
\addbibresource{references.bib}
\begin{document}
\cite{myarticle1,myarticle2}
\printbibliography{}
\end{document}
Interessanterweise erscheint der „leere“ Zeitschrifteneintrag nicht, wenn ich nur einen der beiden Artikel zitiere. (Das Ersetzen durch führt also \cite{myarticle1,myarticle2}
zu \cite{myarticle1}
einer Referenzliste mit einem statt drei Einträgen.)
Problemumgehungslösungen:Ich kann die Zeitschrifteninformationen in jeden Artikel kopieren und einfügen und den Querverweis entfernen. Wenn ich jedoch später einige Informationen zur Zeitschrift ändern möchte (z. B. eine Adresse des Herausgebers hinzufügen), muss ich alle Einträge durchgehen. Alternativ kann ich den Eintrag manuell aus der .bbl
Datei entfernen, was ebenfalls zum gewünschten Ergebnis führt. Keine dieser Lösungen ist für mich wirklich zufriedenstellend.
Frage:Welche Struktur sollte vorzugsweise gewählt werden, .bib
damit (a) ich die Zeitschrifteninformationen nicht doppelt eingeben und pflegen muss und (b) der Zeitschrifteneintrag nicht als separates Element in der Referenzliste erscheint, sofern er nicht ausdrücklich zitiert wird?
Ich danke Ihnen für Ihre Hilfe!
Antwort1
Bei dem crossref
Feld geht es um mehr als nur die Datenvererbung. Es geht auch darum, eine gewisse Eltern-Kind-Beziehung zwischen Einträgen herzustellen (vgl. das xref
Feld, welches diese Eltern-Kind-Beziehung nur ohne Datenvererbung modelliert).
Eine Besonderheit dieser Eltern-Kind-Beziehung besteht darin, dass ein Elterneintrag automatisch zur Bibliographie hinzugefügt wird, wenn er von einer bestimmten Anzahl von Kindern referenziert wird (auch wenn er nicht explizit zitiert wird). Die genaue Anzahl der Kindverweise kann mit der mincrossrefs
Option gesteuert werden. Der Standardwert ist 2
, was bedeutet, dass ein Elterneintrag zur Bibliographie hinzugefügt wird, wenn er von mindestens zwei (verschiedenen) Kindeinträgen referenziert wird. Dies ist in Ihrem Beispiel der Fall: myjournal
wird referenziert von myarticle1
und myarticle2
.
Eine Möglichkeit, dies zu umgehen, wäre, mincrossrefs
einen höheren (vielleicht unangemessen hohen) Wert einzustellen, wie 999
von vorgeschlagenManuel WeinkaufimKommentare.
\documentclass{article}
\usepackage[backend=biber, style=alphabetic, mincrossrefs=999]{biblatex}
\begin{filecontents}{\jobname.bib}
@article{myjournal,
journaltitle = {Journal of Interesting Things},
publisher = {Someone},
}
@article{myarticle1,
crossref = {myjournal},
title = {That thing},
author = {Martypants, Susan},
year = {2019},
}
@article{myarticle2,
crossref = {myjournal},
title = {That other thing},
author = {Rofessor, Peter},
year = {2020},
}
\end{filecontents}
\addbibresource{\jobname.bib}
\begin{document}
\autocite{myarticle1,myarticle2}
\printbibliography
\end{document}
Eine Alternative wäre, anzugeben, biblatex
dass myjournal
es sich nur um einen Datencontainer handelt und nicht um einen Eintrag, der als eigenständiger Eintrag in der Bibliographie erscheinen könnte. Dies geschieht durch Hinzufügen options = {dataonly},
zum Eintrag. Dies ist nicht unähnlichZikade'SVorschlag vonoptions={skipbib=true},
, aber etwas strenger (da dadurch auch die Erstellung von Labels vermieden wird, was hier, um fair zu sein, ohnehin fehlschlägt). Mit dieser Lösung myjournal
erscheint es allerdings nicht einmal in der Bibliographie, wenn es explizit zitiert wird.
\documentclass{article}
\usepackage[backend=biber, style=alphabetic]{biblatex}
\begin{filecontents}{\jobname.bib}
@article{myjournal,
journaltitle = {Journal of Interesting Things},
publisher = {Someone},
options = {dataonly},
}
@article{myarticle1,
crossref = {myjournal},
title = {That thing},
author = {Martypants, Susan},
year = {2019},
}
@article{myarticle2,
crossref = {myjournal},
title = {That other thing},
author = {Rofessor, Peter},
year = {2020},
}
\end{filecontents}
\addbibresource{\jobname.bib}
\begin{document}
\autocite{myarticle1,myarticle2}
\printbibliography
\end{document}
Wenn Sie diese zusätzliche Eltern-Kind-Beziehung nicht herstellen möchten, ist es möglicherweise besser, für diese Aufgabe ein anderes Werkzeug zu wählen:Zikadevorgeschlagene @xdata
Behälter in derKommentare.Die biblatex
Dokumentationerklärt xdata
wie folgt (§2.2.3Spezialgebiete, S. 31)
Dieses Feld erbt Daten von einem oder mehreren
@xdata
Einträgen. Konzeptionellxdata
ist das Feld verbunden mitcrossref
undxref
:crossref
stellt eine logische Eltern-Kind-Beziehung her und erbt Daten;xref
stellt eine logische Eltern-Kind-Beziehung her, ohne Daten zu erben;xdata
erbt Daten, ohne eine Beziehung herzustellen. Der Wert vonxdata
kann ein einzelner Eintragsschlüssel oder eine getrennte Liste von Schlüsseln sein. Weitere Einzelheiten finden Sie in §3.13.6.
Und das scheint gut zu passen: xdata
Es crossref
fehlt die Eltern-Kind-Beziehung, die das unerwünschte Verhalten überhaupt erst verursacht hat.
Dabei ist allerdings zu beachten, dass @xdata
Einträge selbst nicht im Literaturverzeichnis erscheinen und auch nicht sinnvoll zitiert werden können. Darüber hinaus @crossref
kann die Feldvererbung mit die Eintragstypen der Eltern- und Kindeinträge berücksichtigen und Regeln aufstellen, wie das title
Feld eines Elternteils an ein Kind @collection
vererbt wird . Dies ist bei nicht möglich (und auch nicht sinnvoll) .booktitle
@incollection
@xdata
\documentclass{article}
\usepackage[backend=biber, style=alphabetic]{biblatex}
\begin{filecontents}{\jobname.bib}
@xdata{myjournal,
journaltitle = {Journal of Interesting Things},
publisher = {Someone},
}
@article{myarticle1,
xdata = {myjournal},
title = {That thing},
author = {Martypants, Susan},
year = {2019},
}
@article{myarticle2,
xdata = {myjournal},
title = {That other thing},
author = {Rofessor, Peter},
year = {2020},
}
\end{filecontents}
\addbibresource{\jobname.bib}
\begin{document}
\autocite{myarticle1,myarticle2}
\printbibliography
\end{document}
In diesem speziellen Fall ignorieren alle Standardstile das publisher
Feld für @article
s, sodass Sie nur ein Feld erben, nämlich das journal(title)
. Einzelfeldvererbung kann auch mit @string
Einträgen modelliert werden. (Aber das ist natürlich keine Option, wenn Sie mehrere Felder auf einmal erben möchten.)
\documentclass{article}
\usepackage[backend=biber, style=alphabetic]{biblatex}
\begin{filecontents}{\jobname.bib}
@string{myjournal = {Journal of Interesting Things}}
@article{myarticle1,
journal = myjournal,
title = {That thing},
author = {Martypants, Susan},
year = {2019},
}
@article{myarticle2,
journal = myjournal,
title = {That other thing},
author = {Rofessor, Peter},
year = {2020},
}
\end{filecontents}
\addbibresource{\jobname.bib}
\begin{document}
\autocite{myarticle1,myarticle2}
\printbibliography
\end{document}
Alle veröffentlichten Beispiele erzeugen
Antwort2
Der Kommentar von Manuel Weinkauf war tatsächlich die Lösung:
\usepackage[backend=biber,style=alphabetic,mincrossrefs=99]{biblatex}
Ich füge es als Antwort hinzu, damit die Frage geschlossen werden kann.