基本上我需要知道的只是如何从第二次引用来源开始使用“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
。详细信息可在手册中找到。