biblatex: ¿cambiar nombre del autor según idioma?

biblatex: ¿cambiar nombre del autor según idioma?

Por lo general, un nombre permanece igual en cualquier idioma. Por eso, siempre que cito una obra de Knuth, ya sea en un artículo en inglés o en alemán, lo citaré como Donald E. Knuth.

Este no es siempre el caso de los nombres antiguos o medievales. Se escriben de manera diferente en diferentes idiomas. Dos ejemplos en inglés | alemán | Francés:

  • Aristóteles | Aristóteles | Aristóteles
  • Tomás de Aquino | Tomás de Aquino | Tomás de Aquino

Esto significa que cuando escribo un artículo en inglés, necesito un bibarchivo que contenga los nombres en inglés, pero cuando quiero escribir un artículo en alemán, necesito revisar mi archivo bib y cambiar los nombres en consecuencia. Dependiendo de la frecuencia con la que publique en inglés o alemán, esto podría mantenerme ocupado y es propenso a errores.

Entonces, pensé, tal vez podría tener los diferentes nombres ya incluidos en un solo bibarchivo y dejar biblatexelegir el nombre correcto de acuerdo con el idioma principal utilizado en el documento. ¿Algunas ideas?

NB: No quiero utilizar en un solo documento ambas grafías Aristóteles y Aristóteles (como podría hacerles pensar el siguiente MWE). Por supuesto, si el idioma principal del artículo es el inglés, entonces todas las referencias a Aristóteles utilizarán la ortografía inglesa de su nombre. Sin embargo, quiero poder escribir artículos en diferentes idiomas, sin (a) tener que editar mis bibarchivos cada vez o (b) generalmente mantener no un solo bibarchivo sino dos diferentes, uno para cada idioma, o (c ) tener dos entradas distintas en un bibarchivo

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}

Respuesta1

He aquí una manera:

\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}

Se define una secuencia de control con

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

Se llamará el comando \Aristotle(pero la cadena es arbitraria). El comando debe usarse en el .bibarchivo. Quizás sea posible utilizar biblatexmétodos para procesar el nombre del autor sin cambiarlo.

ingrese la descripción de la imagen aquí

Respuesta2

Esto no es realmente una "respuesta" per se. Sin embargo. Esto está previsto para biblatex 4.0/biber 4.0. (Con suerte) podrá definir alternativas como esta:

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

y luego selecciónelos dentro del estilo como:

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

probablemente cambió usando \selectlanguagecomo muestra @egreg.

Este tipo de interfaz de formulario/idioma (opcional, para compatibilidad con versiones anteriores) está prevista para cualquier macro que trate con campos, listas o nombres. El trabajo está en marcha, la parte del biber ya está hecha, la parte del biblatex está en marcha pero es bastante trabajo.

información relacionada