我想强制 biber/biblatex 在作者姓名首字母和姓氏之间放置不间断空格。示例:
\documentclass{article}
\usepackage[backend=biber,natbib=true]{biblatex}
\newcommand*{\person}[2]{\citename{#1}[#2]{author}}
\DeclareNameFormat{firstinits-last}{%
\usebibmacro{name:first-last}{#1}{#4}{#5}{#7}%
\usebibmacro{name:andothers}}
\DeclareNameAlias{sci}{firstinits-last}
\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@misc{latour,
AUTHOR = {Latour, Bruno},
OPTIONS = {dataonly=true}
}
\end{filecontents}
\addbibresource{\jobname.bib}
\begin{document}
Foo bar foo bar foo bar foo bar foo bar foo bar foo bar foo bar foo bar.
\person{latour}{sci} says about the ``new object'' that emerges\ldots
\end{document}
B.
这会在和之间产生换行符Latour
:
我看过这个问题,但建议的代码在这里没有任何效果:
\renewcommand*{\mkbibnamefirst}[1]{{\let~\,#1}}
\renewcommand*{\mkbibnamefirst}[1]{{\iffirstinits{\let~\,}{}#1}}
B. Latour
在这个例子中我该如何将其呈现为B.~Latour
(正常的不间断空格)?
答案1
现在,名称各部分之间有一系列不同的灵活分隔符(使用 Biber 时)。它们是\bibnamedelima
、 到 \bibnamedelimd
加号\bibnamedelimi
和 标记命令\revsdnamepunct
。手册中描述了它们的完整用例:基本上,\bibnamedelima
/\bibnamedelimb
在名字之间或姓氏之间(IE表示姓名同一“部分”内的间隙),而 \bibnamedelimc
/\bibnamedelimd
表示名字和姓氏之间(“部分”之间)的间隙。当转换为首字母时\bibnamedelimi
,在名字部分的首字母后面,替换\bibnamedelima
/ \bibnamedelimb
。因此,根据设置,在当前情况下,要么适用\bibnamedelimc
,要么\bibnamedelimd
适用(参见手册):这只是改变定义的问题
\documentclass{article}
\usepackage[backend=biber,natbib=true]{biblatex}
\newcommand*{\person}[2]{\citename{#1}[#2]{author}}
\DeclareNameFormat{firstinits-last}{%
\usebibmacro{name:first-last}{#1}{#4}{#5}{#7}%
\usebibmacro{name:andothers}}
\DeclareNameAlias{sci}{firstinits-last}
\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@misc{latour,
AUTHOR = {Latour, Bruno},
OPTIONS = {dataonly=true}
}
\end{filecontents}
\renewcommand*\bibnamedelimc{\addnbspace}
\renewcommand*\bibnamedelimd{\addnbspace}
\addbibresource{\jobname.bib}
\begin{document}
Foo bar foo bar foo bar foo bar foo bar foo bar foo bar foo bar foo bar.
\person{latour}{sci} says about the ``new object'' that emerges\ldots
\end{document}
我在这里改变了两个设置,但它d
适用于当前情况。