我正在使用biblatex-ext
withintrocite=label
来获取如以下问题所示的引用样式:
使用 biblatex 和 biber 创建具有固定缩进和作者年份标签的参考书目
这样,标签和参考书目中的作者和年份之间都会有一个空格。但是,我需要在标签中的作者和年份之间留一个空格,在参考书目条目中的作者和年份之间留一个逗号。所以我需要这样的东西:
Tietze et al. 2012 Tietze, Ulrich; Schenk, Christoph, 2012.
Halbleiterschaltungstechnik. ...
请注意,我使用以下解决方案删除年份周围的括号:biblatex:如何删除 authoryear 样式中年份周围的括号?
在寻找解决方案时,我发现
\renewcommand*{\nameyeardelim}{\addcomma\space}
但这只适用于进行上述输入的标签
Tietze et al., 2012 Tietze, Ulrich; Schenk, Christoph 2012.
Halbleiterschaltungstechnik. ...
这与我的要求正好相反。我需要在标签中的作者和年份之间留一个空格,并在参考书目条目中留一个逗号。
答案1
正如所提到的大卫·普顿在评论,nameyeardelim
是上下文敏感的分隔符。这意味着您可以为参考书目和引文赋予不同的定义。标签introcite
具有上下文,它与参考书目其余部分的bbx@introcite
上下文不同,因此我们可以在此处使用不同的值。bib
nameyeardelim
nameyeardelim
所有上下文的默认值都是\addspace
,因此我们只需要将上下文的分隔符更改bib
为逗号后跟一个空格。
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[british]{babel}
\usepackage{csquotes}
\usepackage[style=ext-authoryear, backend=biber, introcite=label, dashed=false]{biblatex}
\addbibresource{biblatex-examples.bib}
\setlength{\bibitemsep}{0.5\baselineskip plus 0.5\baselineskip}
\setlength{\introcitewidth}{6em}
\DeclareDelimFormat[bib]{nameyeardelim}{\addcomma\space}
\DeclareFieldFormat{biblabeldate}{#1}
\begin{document}
\cite{sigfridsson,worman,geer,knuth:ct:a}
\printbibliography
\end{document}