Vor einigen Jahren,eine Fragewurde darüber gepostet, wie man die Anrede „Sir“ in das author
Feld eines bibliographischen Eintrags eintragen soll. (Abgesehen davon: Ich nehme an, die Abfrage ist auch für die Verwendung der Anrede „Dame“ relevant. Eine zweite Anmerkung: Ich halte es nicht für eine gute Idee, die Anrede „Sir“ und „Dame“ in das Feld einzutragen author
. Lassen Sie uns jedoch fortfahren.)
Betrachten wir beispielsweise den Fall von Sir Isaac Newton
. Wenn man einfach schreibt
author = "Sir Isaac Newton",
und man verwendet einen Bibliographiestil, der Vornamen abschneidet, endet man mit entweder S. I. Newton
oder Newton, S. I.
. Nicht gut! Laut Konvention müssen „Sir“ und „Dame“niemalsabgekürzt werden. Ich habe damals eineAntwortdas den folgenden „Fix“ auf das author
Feld anwendet:
author = "{\relax Sir I}saac Newton",
Dieser Fix funktioniert mit BibTeX einwandfrei. Er funktioniert auch, biblatex
wenn BibTeX als Backend verwendet wird oder wenn angegebene Namen gekürzt werden (über eine Option wie giveninits=true
). Wie ich jedoch kürzlich in einem Kommentar darauf hingewiesen wurde, gibt es ein Problem, wenn (a) biber
als Backend verwendet wirdUnd(b) die Option giveninits=false
gesetzt ist, d.h. wenn Vornamennichtabgeschnitten werden. Betrachten Sie die Ausgabe eines einfachen MWE mit zwei Einträgen (Code weiter unten veröffentlicht; die Autorenfelder sind author = "{\relax Sir I}saac Newton",
bzw. author = "Zoe Zerlina Zwicky",
):
Beachten Sie das Leerzeichen unmittelbar vor „Sir“. Das MWE wurde mit MacTeX2017, biblatex
3.7 und biber
2.7 kompiliert. Hier sind die beiden given
von erstellten Felder biber
(kopiert und eingefügt von \jobname.bbl
):
given={{\relax\bibnamedelimb Sir\bibnamedelimb I}saac},
given={Zoe\bibnamedelima Zerlina},
Beachten Sie, dass zwischen und biber
eingefügt wurde . Das Vorhandensein dieses Makros ist für das Einfügen des unerwünschten Leerzeichens verantwortlich.\bibnamedelimb
\relax
Sir
Frage: Gibt es eine Option, die gesetzt werden kann/muss, um entweder die erste Instanz \bibnamedelimb
oder die gesamte Zeichenfolge \relax\bibnamedelimb
aus dem given
Feld zu entfernen? Oder handelt es sich hierbei um einen Fehler biber
(der irgendwann behoben wird)?
\RequirePackage{filecontents}
\begin{filecontents*}{mybib.bib}
@misc{SIN, author = "{\relax Sir I}saac Newton", title = "Opticks", year = 1730, note = "Fourth edition"}
@misc{ZZZ, author = "Zoe Zerlina Zwicky", title = "Thoughts", year = 3001}
\end{filecontents*}
\documentclass{article}
\usepackage[giveninits=false,backend=biber]{biblatex}
\addbibresource{mybib.bib}
\begin{document}
\nocite{*}
\printbibliography
\end{document}
Antwort1
Bei Biber können Sie das „erweiterte Namensformat“ verwenden. Dort können Sie die Kurzform eines Namensteils explizit angeben, wenn Ihnen die Vorgabe nicht gefällt.
Sie verwenden
author = {family={Newton}, given={Sir Isaac}, given-i={Sir I}},
Und würde bekommen
Herr Isaac Newton
vollständig oder
Sir I. Newton
in Kurzform.
\RequirePackage{filecontents}
\begin{filecontents*}{\jobname.bib}
@misc{IsaacNewton,
author = {family={Newton}, given={Sir Isaac}, given-i={Sir I}},
title = {Opticks},
year = 1730,
edition = {4},
}
@misc{xyz,
author = {Zoe Zwicky},
title = {Thoughts},
year = 3001,
}
\end{filecontents*}
\documentclass{article}
\usepackage[giveninits=true,backend=biber]{biblatex}
\addbibresource{\jobname.bib}
\begin{document}
\nocite{*}
\printbibliography
\end{document}
Antwort2
Angeregt durch Kommentare von @moewe unter seinemgute Antwort-- und insbesondere durch die Anspielung darauf, wie biber
Material in sogenannten „Klammerngruppen“ (jedes Material, das in ein zusätzliches Paar geschweifter Klammern eingeschlossen ist) behandelt wird -- habe ich eine andere funktionierende Lösung gefunden. Sie ist nicht so gründlich wie die von @moewe, aber sie ist recht einfach, da sie nur die Verwendung einer zusätzlichen Klammergruppe erfordert, um herauszufinden, biber
was die Vornamenskomponente des vollständigen Namens ist. Konkret muss lediglich ersetzt werden
author = "{\relax Sir I}saac Newton",
mit
author = "{{\relax Sir I}saac} Newton",
Mit der zusätzlichen Klammergruppe biber
kommt man nicht dazu, eine \bibnamedelimb
Direktive zwischen \relax
und Sir
oder zwischen „Sir“ und dem Anfangsbuchstaben „I“ einzufügen. Als Ergebnis werden normale Leerzeichen zwischen Wörtern eingefügt. Ich nehme an, dass dies ein neues Problem verursachen könnte, wenn aus irgendeinem Grund \bibnamedelimb
etwas anderes als eingestellt würde \space
; glücklicherweise scheint dies hier nicht der Fall zu sein.
Ein vollständiges MWE:
\RequirePackage{filecontents}
\begin{filecontents*}{mybib.bib}
@misc{SIN0,
author = "{\relax Sir I}saac Newton",
title = "Opticks", note = "Not correct"
}
@misc{SIN1,
author = {family={Newton}, given={Sir Isaac}, given-i={Sir I}},
title = {Opticks}, note = "Correct"
}
@misc{SIN2,
author = "{{\relax Sir I}saac} Newton",
title = "Opticks", note = "Also correct"
}
\end{filecontents*}
\documentclass{article}
\usepackage[giveninits=false,backend=biber]{biblatex}
\addbibresource{mybib.bib}
\begin{document}
\nocite{*}
\printbibliography
\end{document}