Posso usar uma entrada abreviada de "idioma" (código de idioma) em meu arquivo .bib?

Posso usar uma entrada abreviada de "idioma" (código de idioma) em meu arquivo .bib?

Estou usando BiblaTeXe tenho uma dúvida: como vejo em quase todos os tipos de fontes do meu .bibarquivo posso usar a entrada language.

No entanto, tudo o que coloco é literário exibido em minhas referências. Então, não posso, por exemplo, também usar um ISO-639-1 ou outroCódigo ISO?

Por exemplo:

@online{SOTexBibLangIso,
    author = {Stackoverflow Tex Community},
    title = {Can I use a shortened "language" entry (language code) in my .bib file?},
    url = {https://tex.stackexchange.com/questions/294703/can-i-use-a-shortened-language-entry-language-code-in-my-bib-file},
    language = {en},
    urldate = {2016-02-18},
}

Responder1

biblatexdistingue dois campos de linguagem: (1) languagee (2) langid. De acordo combiblatexdocumentação, pág. 20,

[o languagecampo contém o] idioma(s) do trabalho. Os idiomas podem ser especificados literalmente ou como chaves de localização. Se forem usadas chaves de localização, o prefixo langserá omisso.

na pág. 25 nós temos

[ langid] O ID do idioma da entrada da bibliografia. [...] O identificador deve ser um nome de idioma conhecido pelos pacotes babel/ . polyglossiaEsta informação pode ser usada para mudar padrões de hifenização e localizar strings na bibliografia. Observe que os nomes dos idiomas diferenciam maiúsculas de minúsculas.

Portanto, o languagecampo é o que está impresso na bibliografia como o idioma da obra, enquanto langidé usado internamente para o biblatexcomportamento de troca de idioma de (pode ser usado para mudar a hifenização na bibliografia, para que as palavras sejam hifenizadas corretamente, ou pode mudar o strings dependentes de idioma também; isso é controlado com a autolangopção). Observe que por padrão a languageinformação não é impressa se o idioma ali indicado coincidir com o idioma principal do documento; isso é controlado pela clearlangopção e \DeclareRedundantLanguages.

Você pode, por exemplo, ter

@online{elk,
  author   = {Anne Elk},
  title    = {Über die Anatomie der Donnerechse},
  url      = {http://www.example.edu/~elk/bronto.pdf},
  date     = {2016-01-01},
  language = {german},
  langid   = {ngerman},
}

para um texto alemão ( languageis german, langgermantambém estaria OK) seguindo as novas regras de ortografia ( langidis ngerman).


O langidcampo só pode funcionar com identificadores de idioma conhecidos por babel/ polyglossia, mas de acordo com o comentário de PLK acima, Biber também pode lidar com códigos de idioma BCP47 e mapeá-los para suas respectivas contrapartes. Na verdade, Biber aceitará alegremente entradas sem sentido como langid = {flobbel}, mas isso levará a problemas com babelou polyglossiase você usar qualquer coisa diferente de autolang=nonee o pacote de idiomas tentar carregar o idioma desconhecido flobbel.


O languagecampo aceita qualquer entrada, mas os identificadores de idioma que biblatexconhece são tratados de forma diferente, são traduzidos. Para ser um pouco mais preciso, isso funciona para idiomas definidos no .lbxarquivo usado atualmente como lang<language>, você pode fornecê-los como <language>ou lang<language>. Se a bibstring não estiver definida no .lbx, o conteúdo do languagecampo será impresso como está.Você pode ver os idiomas suportados english.lbxaqui,para holandês a lista está aqui). Você pode fornecer o identificador do idioma com langou sem prefixo langgreeke greekproduzir os mesmos resultados. Se você usar

language = {english},

em um documento holandês, você obtém a saída "Engels" e se o idioma do documento for o inglês, obteremos "English".

A string ennão está na lista de identificadores de idioma reconhecidos e é impressa como está.

Você pode emular o que Biber faz com o langidcampo usando um mapa de origem

\DeclareSourcemap{
  \maps[datatype=bibtex]{
    \map{
      \step[fieldsource=language,
            match=\regexp{\Aen\Z},
            replace=\regexp{english}]
      \step[fieldsource=language,
            match=\regexp{\Ade\Z},
            replace=\regexp{german}]
    }
  }
}

informação relacionada