![使用 biblatex 在具有多个中间名首字母的作者之间添加空格](https://linux22.com/image/383125/%E4%BD%BF%E7%94%A8%20biblatex%20%E5%9C%A8%E5%85%B7%E6%9C%89%E5%A4%9A%E4%B8%AA%E4%B8%AD%E9%97%B4%E5%90%8D%E9%A6%96%E5%AD%97%E6%AF%8D%E7%9A%84%E4%BD%9C%E8%80%85%E4%B9%8B%E9%97%B4%E6%B7%BB%E5%8A%A0%E7%A9%BA%E6%A0%BC.png)
我在 biblatex 中使用 IEEE 样式。我有一篇文章,作者有多个中间名首字母。不幸的是,中间名首字母之间的间距丢失了:
这是一个最小的例子。
\documentclass{article}
\usepackage[style=ieee,backend=bibtex]{biblatex}
\begin{filecontents*}{test.bib}
@Article{Martins2003,
author = {Martins, Joaquim R. R. A. and Sturdza, Peter and Alonso, Juan J.},
title = {The complex-step derivative approximation},
journal = {ACM Transactions on Mathematical Software},
year = {2003},
volume = {29},
number = {3},
pages = {245--262}
}
\end{filecontents*}
\renewrobustcmd*{\bibinitdelim}{\addnbthinspace}
\addbibresource{test.bib}
\begin{document}
\nocite{*}
\printbibliography
\end{document}
答案1
这是
biblatex
3.11 及更早版本中的一个错误,已在 3.12 中得到解决biblatex
。请参阅https://github.com/plk/biblatex/issues/806和https://github.com/plk/biblatex/pull/808。如果您遇到此问题,请更新您的 TeX 发行版。
您应该能够使用 来控制所有姓名首字母之间的空格\bibinitdelim
,但正如您的 MWE 所示,这并不总是有效。
使用 BibTeX 编译时,.bbl
文件包含
giveni={J\bibinitperiod\bibinitdelim R\bibinitperiod
R\bibinitperiod\bibinitdelim A\bibinitperiod},
这意味着由于某种原因,BibTeX 没有\bibinitdelim
在两个R
s 之间添加 a。
在内部,发生的情况是,BibTeX 的正常名称解析和缩写例程添加 .~
或.
(一个.
和一个空格),然后分别将其转换回\bibinitperiod\bibinitdelim
或\bibinitperiod
。btxhak
解释说 BibTeX 会自行决定是否放置空格或不间断空格(第 9 页):
BibTeX 将默认字符串放在名称部分的标记之间:对于整个标记,它使用空格或领带,具体取决于它认为哪一个最好;对于缩写标记,它使用句点后跟空格或领带。
如果我使用 Biber 编译你的例子,我会得到
giveni={J\bibinitperiod\bibinitdelim R\bibinitperiod\bibinitdelim R\bibinitperiod\bibinitdelim A\bibinitperiod}
并因此\bibinitdelim
按预期工作。
因此,这似乎是与 BibTeX 后端一起使用时出现的问题biblatex-bst
,我已经在 bugtracker 上打开了有关此问题的问题biblatex
:https://github.com/plk/biblatex/issues/806
目前我只能建议使用 Biber
\documentclass{article}
\usepackage[style=ieee,backend=biber]{biblatex}
\begin{filecontents*}{\jobname.bib}
@Article{Martins2003,
author = {Martins, Joaquim R. R. A. and Sturdza, Peter and Alonso, Juan J.},
title = {The complex-step derivative approximation},
journal = {ACM Transactions on Mathematical Software},
year = {2003},
volume = {29},
number = {3},
pages = {245--262}
}
\end{filecontents*}
\renewrobustcmd*{\bibinitdelim}{\addnbthinspace}
\addbibresource{\jobname.bib}
\begin{document}
\nocite{*}
\printbibliography
\end{document}