biblatex:在首字母之间留出细空格

biblatex:在首字母之间留出细空格

这个问题引出了包中的一个新功能:
biblatex

罗伯特·布林赫斯特,印刷风格的要素,规则 2.1.5 规定“在首字母字符串内添加很少的空格或不添加空格。

如果启用了biblatexfirstinits选项,“所有名字和中间名都将呈现为首字母”(手册第 54 页)。但是,这会~在首字母之间产生连线( ),即不可断开的单词间空格。(请参阅.bbl我编译的示例的 -file。)我如何用细空格(\,)替换这些连线,从而遵循 Bringhurst?

\documentclass{article}

\usepackage[firstinits=true]{biblatex}

\usepackage{filecontents}

\begin{filecontents}{\jobname.bib}
@book{Knu86,
  author = {Knuth, Donald E.},
  year = {1986},
  title = {The \TeX book},
}
\end{filecontents}

\bibliography{\jobname}

\begin{document}

\nocite{*}

\printbibliography

\end{document}

答案1

[更新至 biber 0.9+,2011 年 4 月]

您可以使用以下方式自定义\bibinitdelim

\renewrobustcmd*{\bibinitdelim}{\,}

请参阅 biblatex 手册第 3.12.4 节以获取所有名称间距宏的列表。


旧答案:

只是更新一下 - biber 0.8.3/biblatex 1.3 刚刚发布,他们解决了这个问题。Biber 不再对名称中的任何排版进行硬编码---它只使用可以从 biblatex 更改的宏。请参阅新 biblatex 手册的第 3.11.4 节。

[删除了误导性的 biber 0.8.2 评论,这些评论现已过时]

实际上,如果再更连贯地思考一下,我们很快要做的就是在 biblatex 中将其设为一个宏,这样您就可以在 biblatex 中重新定义任何首字母分隔符。可能在 1.3/0.8.3 中

答案2

对于不成立的情况,此解决方案并不完全通用firstinits,但是它确实可以满足您的要求:

\documentclass{article}
\RequirePackage[firstinits=true]{biblatex}
\bibliography{xampl}
\renewcommand*{\mkbibnamefirst}[1]{{\let~\,#1}}
\makeatother
\begin{document}
 \nocite{whole-collection}
 \printbibliography
\end{document}

此代码使用 的biblatex钩子来打印“名字”(在本例中为首字母),并替代~\,(我不确定是否需要嵌套的括号,但小心一点也无妨。)

firstinits不生效时,这会导致某人的名字和首字母之间出现很窄的空格,这可能不是理想的情况。因此,您可能希望将上述定义限定为

\renewcommand*{\mkbibnamefirst}[1]{{\iffirstinits{\let~\,}{}#1}}

答案3

biblatex.bst首字母之间的分隔符是少数在文件中定义而不是在 LaTeX 级别定义的元素之一。如果你看一个biblatex样式文件,您会发现biblatex内核提供了全名和首字母缩写。追溯一下,这些来自 BibTeX 的format.name$功能。我怀疑定制此功能的唯一方法(目前)是破解该过程以对首字母缩写进行搜索和替换。当然,更长期的解决方案是提出功能请求。

为了解释其firstinits工作原理,它是一个开关,您可以在biblatex样式中使用它来选择内核提供给样式的全名或首字母biblatex。因此,当样式获取数据时,首字母本身的格式化已经完成。

相关内容