Interação inesperada entre biber e uma forma especial do componente de nome próprio do nome "completo" de um autor

Interação inesperada entre biber e uma forma especial do componente de nome próprio do nome "completo" de um autor

Alguns anos atrás,uma perguntafoi postado sobre como se deve inserir o título honorífico “Senhor” no authorcampo de um verbete bibliográfico. (Além disso: suponho que a consulta também seja relevante para o uso do título honorífico "Dame". Um segundo aparte: não acho que seja uma boa ideia fornecer os títulos honoríficos "Senhor" e "Dame" no authorcampo. No entanto, vamos prosseguir.)

Por exemplo, considere o caso de Sir Isaac Newton. Se alguém simplesmente escreve

author = "Sir Isaac Newton",

e se usa um estilo de bibliografia que trunca nomes próprios, termina-se com S. I. Newtonou Newton, S. I.. Não é bom! Por convenção, "Senhor" e "Dama" devemnuncaser abreviado. Na época, eu forneci umresponderque aplica a seguinte "correção" ao authorcampo:

author = "{\relax Sir I}saac Newton",

Esta correção funciona perfeitamente com BibTeX. Ele também funciona biblatexse o BibTeX for usado como backend ou se os nomes estiverem sendo truncados (por meio de uma opção como giveninits=true). No entanto, como foi recentemente apontado para mim em um comentário, há um problema se (a) biberfor usado como back-ende(b) a opção giveninits=falseestá definida, ou seja, se os nomes foremnãosendo truncado. Considere a saída de um MWE simples de duas entradas (código postado mais abaixo; os campos do autor são author = "{\relax Sir I}saac Newton",e author = "Zoe Zerlina Zwicky",, respectivamente.):

insira a descrição da imagem aqui

Observe o espaço em branco imediatamente antes de “Senhor”. O MWE foi compilado com MacTeX2017, biblatex3.7 e biber2.7. FWIW, aqui estão os dois givencampos criados por biber(copiados e colados de \jobname.bbl):

given={{\relax\bibnamedelimb Sir\bibnamedelimb I}saac},
given={Zoe\bibnamedelima Zerlina},

Observe que biberfoi inserido \bibnamedelimbentre \relaxe Sir. A presença desta macro é responsável pela inserção do bit indesejado de espaço em branco.

Pergunta: Existe uma opção que pode/deve ser definida para eliminar a primeira instância \bibnamedelimbou toda a string \relax\bibnamedelimbdo givencampo? Alternativamente, isso é um bug biber(que eventualmente será corrigido)?


\RequirePackage{filecontents}
\begin{filecontents*}{mybib.bib}
@misc{SIN, author = "{\relax Sir I}saac Newton", title = "Opticks", year = 1730, note = "Fourth edition"}
@misc{ZZZ, author = "Zoe Zerlina Zwicky", title = "Thoughts", year = 3001}
\end{filecontents*}

\documentclass{article}
\usepackage[giveninits=false,backend=biber]{biblatex}
\addbibresource{mybib.bib}

\begin{document}
\nocite{*}
\printbibliography
\end{document}

Responder1

Com Biber você pode usar o 'formato de nome estendido'. Lá você pode especificar explicitamente a forma abreviada de uma parte do nome se não gostar do padrão.

Você usaria

author  = {family={Newton}, given={Sir Isaac}, given-i={Sir I}},

E conseguiria

Senhor Isaac Newton

na íntegra, ou

Senhor I. Newton

em forma abreviada.

\RequirePackage{filecontents}
\begin{filecontents*}{\jobname.bib}
@misc{IsaacNewton,
  author  = {family={Newton}, given={Sir Isaac}, given-i={Sir I}},
  title   = {Opticks},
  year    = 1730,
  edition = {4},
}
@misc{xyz,
  author = {Zoe Zwicky},
  title  = {Thoughts},
  year   = 3001,
}
\end{filecontents*}

\documentclass{article}
\usepackage[giveninits=true,backend=biber]{biblatex}
\addbibresource{\jobname.bib}

\begin{document}
\nocite{*}
\printbibliography
\end{document}

Responder2

Solicitado por comentários de @moewe abaixo de seuÓtima resposta- e especialmente pela alusão a como bibertrata o material nos chamados "grupos de chaves" (qualquer material envolto em um par extra de chaves) - eu encontrei outra solução de trabalho. Não é tão completo quanto o fornecido por @moewe, mas é bastante simples, pois requer o uso de apenas um grupo de chaves extra para ajudar a biberdescobrir qual é o componente do nome completo. Especificamente, tudo o que precisa ser feito é substituir

author = "{\relax Sir I}saac Newton", 

com

author = "{{\relax Sir I}saac} Newton", 

Com o grupo de chaves extra instalado, bibernão é possível inserir uma \bibnamedelimbdiretiva entre \relaxe Sirou entre "Senhor" e o "I" inicial. Como resultado, espaços comuns entre palavras são inseridos. Suponho que isso poderia causar um novo problema se, por algum motivo, \bibnamedelimbfosse definido como algo materialmente diferente de \space; felizmente, este não parece ser o caso aqui.

Um MWE completo:

insira a descrição da imagem aqui

\RequirePackage{filecontents}
\begin{filecontents*}{mybib.bib}
@misc{SIN0, 
  author = "{\relax Sir I}saac Newton", 
  title  = "Opticks", note = "Not correct"
}
@misc{SIN1,
  author = {family={Newton}, given={Sir Isaac}, given-i={Sir I}},
  title  = {Opticks}, note = "Correct"
}
@misc{SIN2, 
  author = "{{\relax Sir I}saac} Newton", 
  title  = "Opticks", note = "Also correct"
}
\end{filecontents*}

\documentclass{article}
\usepackage[giveninits=false,backend=biber]{biblatex}
\addbibresource{mybib.bib}

\begin{document}
\nocite{*}
\printbibliography
\end{document}

informação relacionada