我有以下文件:
\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
\addspace
textcite
numeric.cbx
biblatex
\usepackage{xpatch}
\xpatchbibmacro{textcite}{\addspace}{\addnbspace}{}{}
对于较新的版本,有一个专用的分隔符。可以通过将以下内容添加到序言中来更改它。
\renewcommand\namelabeldelim{\addnbspace}
该补丁也适用于numeric-comp
和numeric-verb
风格。
在您的 MWE 中,这会导致“et al.”出现换行符。为了避免这种情况,您可以增加换行符的惩罚\addabbrvspace
- 缩写本地化字符串中使用的空格。在biblatex.def
此惩罚中,分配的值是
\defcounter{abbrvpenalty}{\hyphenpenalty}
默认值为 50。你可以增加惩罚,但要冒着箱子过满的风险,比如说
\defcounter{abbrvpenalty}{9000}
或者
\xpretobibmacro{textcite}{\defcounter{abbrvpenalty}{9000}}{}{}
值等于或高于 10000 时将\addabbrvspace
无法被破坏。