Interacción inesperada entre biber y una forma especial del componente del nombre de pila del nombre "completo" de un autor

Interacción inesperada entre biber y una forma especial del componente del nombre de pila del nombre "completo" de un autor

Hace algunos años,una preguntaSe publicó sobre cómo se debe ingresar el honorífico "Señor" en el authorcampo de una entrada bibliográfica. (Aparte: supongo que la consulta también es relevante para el uso del honorífico "Dame". Un segundo comentario: no creo que sea una buena idea proporcionar los honoríficos "Sir" y "Dame" en el authorcampo. Sin embargo, procedamos.)

Por ejemplo, considere el caso de Sir Isaac Newton. Si uno simplemente escribe

author = "Sir Isaac Newton",

y uno usa un estilo de bibliografía que trunca los nombres de pila, termina con S. I. Newtono Newton, S. I.. ¡No es bueno! Por convención, "Señor" y "Dama" debennuncaser abreviado. En ese momento, proporcioné unrespuestaque aplica la siguiente "corrección" al authorcampo:

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

Esta solución funciona bien con BibTeX. También funciona biblatexsi se utiliza BibTeX como backend o si los nombres de pila se truncan (a través de una opción como giveninits=true). Sin embargo, como me señalaron recientemente en un comentario, hay un problema si (a) biberse usa como backendy(b) la opción giveninits=falseestá configurada, es decir, si los nombres de pila sonnosiendo truncado. Considere el resultado de un MWE simple de dos entradas (código publicado más abajo; los campos de autor son author = "{\relax Sir I}saac Newton",y author = "Zoe Zerlina Zwicky",, respectivamente):

ingrese la descripción de la imagen aquí

Tenga en cuenta el espacio en blanco inmediatamente antes de "Señor". El MWE se compiló con MacTeX2017, biblatex3.7 y biber2.7. FWIW, aquí están los dos givencampos creados por biber(copiados y pegados de \jobname.bbl):

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

Observe que biberse ha insertado \bibnamedelimbentre \relaxy Sir. La presencia de esta macro es responsable de la inserción del espacio en blanco no deseado.

Pregunta: ¿Existe alguna opción que pueda o deba configurarse para eliminar la primera instancia \bibnamedelimbo la cadena completa \relax\bibnamedelimbdel givencampo? Alternativamente, ¿se trata de un error biber(que eventualmente se solucionará)?


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

Respuesta1

Con Biber puedes utilizar el 'formato de nombre extendido'. Allí puede especificar explícitamente la forma abreviada de una parte del nombre si no le gusta el valor predeterminado.

tu usarias

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

y obtendría

Señor Isaac Newton

en su totalidad, o

Señor I. Newton

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

Respuesta2

Impulsado por los comentarios de @moewe debajo del suyo.gran respuesta- y especialmente por la alusión a cómo biberse trata el material en los llamados "grupos de llaves" (cualquier material encerrado en un par adicional de llaves) - se me ocurrió otra solución de trabajo. No es tan completo como el proporcionado por @moewe, pero es bastante simple, ya que requiere el uso de solo un grupo de llaves adicional para ayudar a biberdescubrir cuál es el componente del nombre completo. En concreto, lo único que hay que hacer es sustituir

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

con

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

Con el grupo de llaves adicional en su lugar, biberno llega a insertar una \bibnamedelimbdirectiva entre \relaxy Sirentre "Señor" y la "I" inicial. Como resultado, se insertan espacios ordinarios entre palabras. Supongo que esto podría causar un nuevo problema si, por alguna razón, \bibnamedelimbse estableciera algo que sea materialmente diferente de \space; Afortunadamente, este no parece ser el caso aquí.

Un MWE completo:

ingrese la descripción de la imagen aquí

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

información relacionada