几年前,一个问题发布了关于如何在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
两个字段:given
biber
\jobname.bbl
given={{\relax\bibnamedelimb Sir\bibnamedelimb I}saac},
given={Zoe\bibnamedelima Zerlina},
观察在和之间biber
插入的宏。此宏的存在负责插入不需要的空格。\bibnamedelimb
\relax
Sir
问题:是否有可以/必须设置的选项来从字段中消除第一个实例\bibnamedelimb
或整个字符串?或者,这是一个错误(最终将被修复)?\relax\bibnamedelimb
given
biber
\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
。因此,会插入普通的单词间空格。我想,如果出于某种原因将其设置为与有实质性差异的内容,则可能会导致新的问题;幸运的是,这里似乎不是这种情况。\relax
Sir
\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}