biblatex: Namen des Autors je nach Sprache ändern?

biblatex: Namen des Autors je nach Sprache ändern?

Normalerweise bleibt ein Name in jeder Sprache derselbe. Wenn ich also ein Werk von Knuth zitiere – sei es in einem englischen oder einem deutschen Artikel – zitiere ich ihn als Donald E. Knuth.

Bei antiken oder mittelalterlichen Namen ist das nicht immer der Fall. Sie werden in verschiedenen Sprachen unterschiedlich geschrieben. Zwei Beispiele auf Englisch | Deutsch | Französisch:

  • Aristoteles | Aristoteles | Aristote
  • Thomas von Aquin | Thomas von Aquin | Thomas d'Aquin

Das bedeutet, dass ich, wenn ich einen englischen Artikel schreibe, eine -Datei benötige bib, die die englischen Namen enthält, aber wenn ich einen deutschen Artikel schreiben möchte, muss ich meine Bib-Datei durchgehen und die Namen entsprechend ändern. Je nachdem, wie oft ich tatsächlich auf Englisch oder Deutsch veröffentliche, kann mich das auf Trab halten und ist fehleranfällig.

Also dachte ich, vielleicht könnte ich die verschiedenen Namen bereits in einer einzigen bibDatei haben und biblatexden richtigen Namen entsprechend der im Dokument verwendeten Hauptsprache auswählen lassen. Irgendwelche Ideen?

NB: Ich möchte nicht in einem einzigen Dokument die beiden Schreibweisen Aristotle und Aristoteles verwenden (wie das folgende MWE Sie vielleicht glauben machen könnte). Wenn die Hauptsprache des Artikels Englisch ist, werden natürlich alle Verweise auf Aristoteles die englische Schreibweise seines Namens verwenden. Ich möchte jedoch in der Lage sein, Artikel in verschiedenen Sprachen zu schreiben, ohne (a) jedes Mal meine bib-Dateien bearbeiten zu müssen oder (b) generell nicht eine einzige bib-Datei, sondern zwei verschiedene zu pflegen, eine für jede Sprache, oder (c) zwei unterschiedliche Einträge in einer bib-Datei zu haben.

MWE

% !TEX TS-program = lualatexmk
\documentclass{scrartcl}

\usepackage{fontspec}    
    \setmainfont[Ligatures=TeX]{Times New Roman}

\usepackage[ngerman, british]{babel}
\usepackage[babel]{csquotes}
\usepackage[style=verbose,abbreviate=false,backend=biber]{biblatex}

\usepackage{filecontents}

\begin{filecontents}{\jobname.bib}
@book{aristotle:ross:1924,
    Author = {Aristotle},    % It is here, I think, that something could be done, e.g., ...
    Title = {Metaphysics},     % ... british=Aristotle,ngerman=Aristoteles,french=Aristote
    Editor = {William David Ross},
    Commentator = {William David Ross},
    Introduction = {William David Ross},
    Hyphenation = {british},
    Location = {Oxford},
    Publisher = {Clarendon Press},
    Volumes = {2},
    Year = {1924}}
\end{filecontents}

\addbibresource{\jobname.bib}

\begin{document}

\selectlanguage{british}
Some English text.\footcite{aristotle:ross:1924}

\selectlanguage{ngerman}
Etwas Text auf Deutsch.\footcite{aristotle:ross:1924}

\end{document}

Antwort1

So geht's:

\begin{filecontents}{\jobname.bib}
@book{aristotle:ross:1924,
    Author = {\Aristotle},    % It is here, I think, that something could be done, e.g., ...
    Title = {Metaphysics},     % ... british=Aristotle,ngerman=Aristoteles,french=Aristote
    Editor = {William David Ross},
    Commentator = {William David Ross},
    Introduction = {William David Ross},
    Hyphenation = {british},
    Location = {Oxford},
    Publisher = {Clarendon Press},
    Volumes = {2},
    Year = {1924}}
\end{filecontents}

\documentclass{scrartcl}

\usepackage{fontspec}    
\setmainfont[Ligatures=TeX]{Times New Roman}

\usepackage[ngerman,french,british]{babel}
\usepackage[babel]{csquotes}
\usepackage[style=verbose,abbreviate=false,backend=biber]{biblatex}
\addbibresource{\jobname.bib}


\usepackage{xparse}
\ExplSyntaxOn
\NewDocumentCommand{\newauthor}{mm}
 {
  \clint_newauthor:nn {#1} {#2}
 }
\tl_new:N \l__clint_author_tl
\cs_new_protected:Npn \clint_newauthor:nn #1 #2
 {
  \prop_new:c { g_clint_author_#1_prop }
  \tl_set:Nn \l__clint_author_tl { #1 }
  \keys_set:nn { clint-author } { #2 }
  \cs_new:cpn { #1 } { \prop_get:cV { g_clint_author_#1_prop } \languagename }
 }
\cs_generate_variant:Nn \prop_get:Nn { cV }
\keys_define:nn { clint-author }
 {
  unknown .code:n = 
   \prop_gput:cVn { g_clint_author_ \l__clint_author_tl _prop }
                  \l_keys_key_tl
                  { #1 }
 }
\ExplSyntaxOff

\newauthor{Aristotle}{
 british=Aristotle,
 ngerman=Aristoteles,
 french=Aristote
}

\begin{document}

\selectlanguage{british}
Some English text.\footcite{aristotle:ross:1924}

\selectlanguage{ngerman}
Etwas Text auf Deutsch.\footcite{aristotle:ross:1924}

\selectlanguage{french}
Du texte en Français.\footcite{aristotle:ross:1924}

\end{document}

Sie definieren eine Steuersequenz mit

\newauthor{Aristotle}{
 british=Aristotle,
 ngerman=Aristoteles,
 french=Aristote
}

Der Befehl wird aufgerufen \Aristotle(die Zeichenfolge ist jedoch beliebig). Der Befehl sollte in der .bibDatei verwendet werden. Möglicherweise ist es möglich, biblatexMethoden zur Verarbeitung des Autorennamens zu verwenden, ohne ihn zu ändern.

Bildbeschreibung hier eingeben

Antwort2

Dies ist nicht wirklich eine „Antwort“ an sich. Dies ist jedoch für Biblatex 4.0/Biber 4.0 geplant. Sie werden (hoffentlich) in der Lage sein, Alternativen wie diese zu definieren:

AUTHOR = {Aristotle},
AUTHOR_translated_ngerman = {Aristoteles},
AUTHOR_translated_french = {Aristote}

und wählen Sie diese dann innerhalb des Stils wie folgt aus:

\printname{author}
\printname[form=translated,lang=ngerman]{author}
\printname[form=translated,lang=french]{author}

wahrscheinlich gewechselt, \selectlanguagewie @egreg zeigt.

Diese Art von (optionaler, aus Gründen der Abwärtskompatibilität) Form/Lang-Schnittstelle ist für alle Makros geplant, die mit Feldern, Listen oder Namen arbeiten. Die Arbeit ist im Gange, der Biber-Teil ist bereits fertig, der Biblatex-Teil ist in Arbeit, erfordert aber noch einiges an Arbeit.

verwandte Informationen