Biblatex 的 textcite 在作者姓名和引用编号之间插入一个空格

Biblatex 的 textcite 在作者姓名和引用编号之间插入一个空格

我有以下文件:

\documentclass{article}
\usepackage[backend=biber,style=numeric,maxnames=2,maxbibnames=6,firstinits]{biblatex}
\bibliography{sample}

\begin{document}
Here we want to generate a long sentence so the citation will split \textcite{fictive}.
\printbibliography
\end{document}

与相应的 bib 文件:

@article{fictive,
    author = {John Doe and John Smith and John Carpenter and John McCain},
    year = 2012,
    title = {Super awesome paper},
    journal = {Super awesome journal}}

该文件的呈现如下:

Here we want to generate a long sentence so the citation will split Doe et al.
[1].

换行符完全在同一个位置。这感觉不对。我更喜欢以下做法,即在作者和引文编号之间使用不间断空格而不是断行空格:

Here we want to generate a long sentence so the citation will split Doe 
et al. [1].

在 tex 文件中以文本形式写入:

Doe et al.~[1]

还有人同意这是正确的做法吗?我该如何改变这种情况?

答案1

命令是 的一个不可破坏的变体。您可以在 中定义的参考书目宏中交换这些命令。对于 的旧版本,biblatex只需将以下内容添加到您的序言中即可轻松完成此操作。\addnbspace\addspacetextcitenumeric.cbxbiblatex

\usepackage{xpatch}
\xpatchbibmacro{textcite}{\addspace}{\addnbspace}{}{}

对于较新的版本,有一个专用的分隔符。可以通过将以下内容添加到序言中来更改它。

\renewcommand\namelabeldelim{\addnbspace}

该补丁也适用于numeric-compnumeric-verb风格。

在您的 MWE 中,这会导致“et al.”出现换行符。为了避免这种情况,您可以增加换行符的惩罚\addabbrvspace- 缩写本地化字符串中使用的空格。在biblatex.def此惩罚中,分配的值是

\defcounter{abbrvpenalty}{\hyphenpenalty}

默认值为 50。你可以增加惩罚,但要冒着箱子过满的风险,比如说

\defcounter{abbrvpenalty}{9000}

或者

\xpretobibmacro{textcite}{\defcounter{abbrvpenalty}{9000}}{}{}

值等于或高于 10000 时将\addabbrvspace无法被破坏。

相关内容