biblatex: alterar nome do autor de acordo com o idioma?

biblatex: alterar nome do autor de acordo com o idioma?

Normalmente, um nome permanece o mesmo em qualquer idioma. Então, sempre que eu citar uma obra de Knuth – seja em um artigo inglês ou alemão – eu o citarei como Donald E. Knuth.

Nem sempre é o caso dos nomes antigos ou medievais. Eles são escritos de maneira diferente em idiomas diferentes. Dois exemplos em inglês | Alemão | Francês:

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

Isso significa que quando escrevo um artigo em inglês, preciso de um bibarquivo que contenha os nomes em inglês, mas quando quero escrever um artigo em alemão, preciso acessar meu arquivo bib e alterar os nomes de acordo. Dependendo da frequência com que eu publico em inglês ou alemão, isso pode me manter ocupado e sujeito a erros.

Então, pensei, talvez eu pudesse ter os diferentes nomes já incluídos em um único bibarquivo e deixar biblatexescolher o nome correto de acordo com o idioma principal usado no documento. Alguma ideia?

NB: Não quero usar em um único documento as grafias Aristóteles e Aristóteles (como o seguinte MWE pode fazer você pensar). É claro que, se o idioma principal do artigo for o inglês, todas as referências a Aristóteles usarão a grafia inglesa de seu nome. No entanto, quero poder escrever artigos em idiomas diferentes, sem (a) ter que editar meus bibarquivos a cada vez ou (b) geralmente manter não um único bibarquivo, mas dois arquivos diferentes, um para cada idioma, ou (c ) tendo duas entradas distintas em um bibarquivo

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}

Responder1

Aqui está uma maneira:

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

Você define uma sequência de controle com

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

O comando será chamado \Aristotle(mas a string é arbitrária). O comando deve ser usado no .bibarquivo. Talvez seja possível usar biblatexmétodos para processar o nome do autor sem alterá-lo.

insira a descrição da imagem aqui

Responder2

Esta não é realmente uma "resposta" em si. No entanto. Isso está planejado para biblatex 4.0/biber 4.0. Você (espero) será capaz de definir alternativas como esta:

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

e escolha-os dentro do estilo como:

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

provavelmente mudou de uso \selectlanguagecomo mostra @egreg.

Este tipo de interface formulário/lang (opcional, para compatibilidade com versões anteriores) é planejado para qualquer macro que lide com campos, listas ou nomes. O trabalho está em andamento, a parte do biber já está feita, a parte do biblatex está em andamento, mas dá bastante trabalho.

informação relacionada