将 biblatex 宏更改应用于引文或参考书目条目

将 biblatex 宏更改应用于引文或参考书目条目

我希望宏\finalnamedelim对于引用和书目条目有不同的行为。

尤其是在正好两个作者(如果有更多作者,引用格式无论如何都使用“et al”),在引用中应该使用“and”作为分隔符,但逗号在围兜条目中。

这是我的 MWE:

\documentclass[a4paper,12pt,oneside]{scrreprt}
% ----------------------------------------------------------
\usepackage[%
    style=authoryear,
    bibstyle=authoryear,
    maxcitenames=2,
    dashed=false,
    firstinits=true
    backend=biber,
]{biblatex}
% ----------------------------------------------------------
\renewcommand*{\finalnamedelim}{\addcomma\space}
\renewcommand*{\revsdnamepunct}{}
% ----------------------------------------------------------
\addbibresource{biblatex-examples.bib}
% ----------------------------------------------------------
\begin{document}

\parencite{bertram}

\printbibliography
\end{document}

由此得出以下引用: 在此处输入图片描述 以及这个围兜条目: 在此处输入图片描述

但是我想实现这个目标: 在此处输入图片描述 在此处输入图片描述

最好的方法是什么?

祝好,大卫

答案1

\AtBeginBibliography您可以使用钩子将某些设置应用于参考书目

\AtBeginBibliography{\renewcommand*{\finalnamedelim}{\addcomma\space}}

hooks\AtEveryCite对引用的作用相同,因此原则上你也可以使用

\renewcommand*{\finalnamedelim}{\addcomma\space}
\AtEveryCite{%
  \renewcommand*{\finalnamedelim}{%
    \ifnumgreater{\value{liststop}}{2}{\finalandcomma}{}%
    \addspace\bibstring{and}\space}}

但你为什么会这么做呢?


还有 和\AtEveryCitekey\AtEveryBibitem这些钩子在相关条目的书目数据已经可用的上下文中执行。这对于此处使用的命令并不重要,但\clearfield和 朋友只能与\AtEveryCitekey和 一起使用\AtEveryBibitem

您可以在§4.10.6中阅读有关这些代码钩子的更多信息通用挂钩,第 244-246 页,biblatex文档

相关内容