biber 与作者“全名”中名字部分的特殊形式之间发生意外的交互

biber 与作者“全名”中名字部分的特殊形式之间发生意外的交互

几年前,一个问题发布了关于如何在author书目条目字段中输入敬语“Sir”的帖子。(题外话:我认为查询也与敬语“Dame”的使用有关。题外话:我认为在字段中提供敬语“Sir”和“Dame”不是一个好主意author。但是,让我们继续。)

例如,考虑的情况Sir Isaac Newton。如果简单地写

author = "Sir Isaac Newton",

并且使用截断名字的参考书目样式,则最终会S. I. Newton得到Newton, S. I.。不好!按照惯例,“Sir”和“Dame”必须绝不缩写。当时,我提供了一个回答将以下“修复”应用到该author字段:

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

此修复程序在 BibTeX 上工作得很好。biblatex如果使用 BibTeX 作为后端,或者给定名称被截断(通过诸如 的选项giveninits=true),它也适用。但是,正如最近有人在评论中向我指出的那样,如果 (a) 存在问题biber,如果使用 (a) 作为后端,(b) 选择权giveninits=false已设置,即,如果给定的名称是不是被截断。考虑一个简单的双条目 MWE 的输出(代码发布在下面;作者字段分别为author = "{\relax Sir I}saac Newton",author = "Zoe Zerlina Zwicky",):

在此处输入图片描述

请注意“Sir”前面的空格。MWE 是用 MacTeX2017、3.7biblatex和2.7 编译的。FWIW,以下是由(复制并粘贴自)创建的biber两个字段:givenbiber\jobname.bbl

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

观察在和之间biber插入的宏。此宏的存在负责插入不需要的空格。\bibnamedelimb\relaxSir

问题:是否有可以/必须设置的选项来从字段中消除第一个实例\bibnamedelimb或整个字符串?或者,这是一个错误(最终将被修复)?\relax\bibnamedelimbgivenbiber


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

答案1

使用 Biber 时,您可以使用“扩展名称格式”。如果您不喜欢默认格式,您可以在此处明确指定名称部分的缩写形式。

你会使用

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

并会得到

艾萨克·牛顿爵士

全部,或

艾森豪威尔·牛顿爵士

以缩写形式。

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

答案2

受到@moewe 在其下方评论的启发很好的答案——尤其是通过提及如何biber处理所谓的“括号组”(任何用一对额外的花括号括起来的材料)中的材料——我想出了另一个可行的解决方案。它不像@moewe 给出的那么彻底,但它相当简单,因为它只需要使用一个额外的括号组来帮助biber找出全名中的名字部分是什么。具体来说,只需替换

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

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

有了额外的括号组,biber就不会在和之间或“Sir”和首字母“I”之间插入指令\bibnamedelimb。因此,会插入普通的单词间空格。我想,如果出于某种原因将其设置为与有实质性差异的内容,则可能会导致新的问题;幸运的是,这里似乎不是这种情况。\relaxSir\bibnamedelimb\space

完整的 MWE:

在此处输入图片描述

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

相关内容