biblatex – 等从第二次引用开始?

biblatex – 等从第二次引用开始?

基本上我需要知道的只是如何从第二次引用来源开始使用“et. al”。我使用以下方法

\usepackage[
natbib=true,
style=authoryear
]{biblatex}

我需要的引用看起来如下:

首次引用来源

Drobetz、Schillhofer 和 Zimmermann (2004)

第二次及进一步引用

Drobetz 等人(2004 年)

现在,每个引文看起来都像第一个。通过该biblatex选项,maxcitenames我只能调整所有引文,而不是所有引文,只能调整第一个引文。有什么帮助吗?

答案1

中的名称数量labelname(部分)由计数器决定maxnames。在引用中,这等于您为选项指定的任何内容maxcitenames。为了避免第一次引用时名称列表被截断,您可以maxnames使用钩子内的 etoolbox\defcounter命令进行本地更改\AtEveryCitekey

\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[style=authoryear,citetracker=true,maxcitenames=1]{biblatex}

\AtEveryCitekey{\ifciteseen{}{\defcounter{maxnames}{99}}}

\addbibresource{biblatex-examples.bib}

\begin{document}
\textcite{companion} showed that...
\textcite{companion,bertram} showed that...
Filler text \parencite{bertram,companion,aksin}.
Filler text \parencite{bertram,companion,aksin}.
\end{document}

在此处输入图片描述

请注意,测试\ifciteseen{<true>}{<false>}需要启用引文跟踪器。默认情况下authoryear不使用引文跟踪。在这里我使用 启用了全局跟踪citetracker=true。因此,无论第一次引用出现在文档中的什么位置(例如引文列表或脚注),它都会在第一次引用后\ifciteseen展开<true>。手册中描述了其他跟踪器设置。

对于这种authoryear-comp风格,解决方案需要稍微修改一下。这里我们使用了相同的钩子,但我们也清除了该namehash字段,这样条目在第一次被引用时就不会成为紧凑引用列表的一部分。

\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[style=authoryear-comp,citetracker=true,maxcitenames=1]{biblatex}

\AtEveryCitekey{%
  \ifciteseen{}{\defcounter{maxnames}{99}\clearfield{namehash}}}

\begin{filecontents}{\jobname.bib}
@article{bertram2,
  title = {Gromov Invariants for Holomorphic Maps from Riemann Surfaces to Grassmannians},
  author = {Bertram, Aaron and Daskalopoulos, Georgios and Wentworth, Richard},
  journal = {Journal of the American Mathematical Society},
  volume = {9},
  number = {2},
  pages = {529--571},
  year = {1996}}
\end{filecontents}

\addbibresource{\jobname.bib}
\addbibresource{biblatex-examples.bib}

\begin{document}
\textcite{companion,aksin} showed that...
\textcite{companion,bertram} showed that...
Filler text \parencite{bertram,bertram2,companion}.
Filler text \parencite{bertram,bertram2,companion,aksin}.
\end{document}

在此处输入图片描述

使用 biber 作为后端,您可能希望避免弄乱计数器maxnames。我们可以\printnames通过 patch 命令从xpatch 包。以下序言中的补丁应该适用于所有作者年份样式变体。

\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[backend=biber,style=authoryear-comp,citetracker=true,%
            maxcitenames=1,uniquename=false,uniquelist=false]{biblatex}
\usepackage{xpatch}

\AtEveryCitekey{\ifciteseen{}{\clearfield{namehash}}}

\xpatchbibmacro{cite}
  {\printnames{labelname}}
  {\ifciteseen
     {\printnames{labelname}}
     {\printnames[][1-99]{labelname}}}
  {}
  {}

\xpatchbibmacro{textcite}
  {\printnames{labelname}}
  {\ifciteseen
     {\printnames{labelname}}
     {\printnames[][1-99]{labelname}}}
  {}
  {}

这些选项设置将提供与上述文档相同的输出authoryear-comp,但您可能需要考虑uniquename和的其他值uniquelist。详细信息可在手册中找到。

相关内容