Sorgen Sie dafür, dass Biblatex in Textzitaten unterschiedliche Autorennamen als denselben Autor behandelt

Sorgen Sie dafür, dass Biblatex in Textzitaten unterschiedliche Autorennamen als denselben Autor behandelt

Ein Typ hat ein paar Bücher geschrieben, aber er ist von Buch zu Buch inkonsistent, wenn es darum geht, seinen zweiten Vornamen anzugeben und/oder abzukürzen. Wenn ich diesen Autor im Text zitiere, möchte ich biblatexalle verschiedenen Versionen seines Namens als denselben Autor behandeln. Ich kann dies für die Sortierung in der Bibliographie mit erzwingen sortname, aber was mache ich, um dies für Textzitate durchzusetzen?

Das folgende Beispiel veranschaulicht, wie das Textzitat „Paul J[ohn] Smith“ als einen anderen Autor behandelt als „Paul John Smith“ und „Paul Smith“. Das erste Zitat sollte als (Smith 2002) erscheinen, und das zweite Zitat sollte als (2001a, 2001b, 2002) erscheinen.

\documentclass{article}
\usepackage{csquotes}
\usepackage[
        bibstyle = authoryear,
        citestyle = authoryear-comp,
        dashed = false,
        sorting = nyt,
        sortcites = false,
        language = american,
        abbreviate = false,
        backend = biber]{biblatex}
\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@BOOK{smith2001a,
    AUTHOR = "Paul John Smith",
    TITLE = "My first book",  
    YEAR = "2001"}

@BOOK{smith2001b,
    AUTHOR = "Paul Smith",
    TITLE = "My second book",  
    YEAR = "2001",
    SORTNAME = "Paul John Smith"}

@BOOK{smith2002,
    AUTHOR = "Paul J[ohn] Smith",
    TITLE = "My third book",  
    YEAR = "2002",
    SORTNAME = "Paul John Smith"}
\end{filecontents}
\addbibresource{\jobname.bib}
\begin{document}
\noindent
Some clever guy said that \parencite{smith2002}.
In fact, Paul Smith has talked about this several times \parencite*{smith2001a,smith2001b,smith2002}.
\printbibliography
\end{document}

Bildbeschreibung hier eingeben

Antwort1

Es gibt jetzt eine Biblatex-Makroschnittstelle für die Sourcemapping-Funktion. Sie können dies in Ihre Präambel einfügen:

\DeclareSourcemap{
  \maps[datatype=bibtex]{
    \map[overwrite]{
       \step[fieldsource=author, match=\regexp{Paul\s+(?:J\S+\s+)?Smith}, final]
       \step[fieldset=shortauthor, fieldvalue={Smith, Paul John}]
       \step[fieldset=sortname, fieldvalue={Smith, Paul John}]
    }
  }
}

Möglicherweise möchten Sie den regulären Ausdruck anpassen. Ich habe ihn ziemlich spezifisch gemacht, damit er nichts abfängt, was er nicht abfangen soll.

Antwort2

Dies soll nur zeigen, wie die obige Lösung von PLK in der Praxis funktioniert:

\documentclass{article}
\usepackage{csquotes}
\usepackage[
        bibstyle = authoryear,
        citestyle = authoryear-comp,
        dashed = false,
        sorting = nyt,
        sortcites = false,
        language = american,
        abbreviate = false,
        backend = biber]{biblatex}
\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@BOOK{smith2001a,
    AUTHOR = "Paul John Smith",
    TITLE = "My first book",  
    YEAR = "2001"}

@BOOK{smith2001b,
    AUTHOR = "Paul Smith",
    TITLE = "My second book",  
    YEAR = "2001",
    SORTNAME = "Paul John Smith"}

@BOOK{smith2002,
    AUTHOR = "Paul J[ohn] Smith",
    TITLE = "My third book",  
    YEAR = "2002",
    SORTNAME = "Paul John Smith"}
\end{filecontents}
\addbibresource{\jobname.bib}
\DeclareSourcemap{
  \maps[datatype=bibtex]{
    \map[overwrite]{
       \step[fieldsource=author, match=\regexp{Paul\s+(?:J\S+\s+)?Smith}, final]
       \step[fieldset=shortauthor, fieldvalue={Smith, Paul John}]
       \step[fieldset=sortname, fieldvalue={Smith, Paul John}]
    }
  }
}
\begin{document}
\noindent
Some clever guy said that \parencite{smith2002}.
In fact, Paul Smith has talked about this several times \parencite*{smith2001a,smith2001b,smith2002}.
\printbibliography
\end{document}

Bildbeschreibung hier eingeben

verwandte Informationen