按第一作者和年份对参考文献进行排序

按第一作者和年份对参考文献进行排序

我有一定数量的参考文献。(这将是标准输出)

  • Doe, Jane 和 Aart, Steve, 2010a
  • Doe,Jane 和 Bart,Mark,2004 年
  • Doe,Jane 和 Smith,Mike,2010b

我只需要按第一作者和年份对它们进行排序,因此它们就会出现:

  • Doe,Jane 和 Bart,Mark,2004 年
  • Doe, Jane 和 Aart, Steve, 2010a
  • Doe,Jane 和 Smith,Mike,2010b

答案1

\DeclareSourcemap{
  \maps[datatype=bibtex]{
    \map[overwrite=false]{
      \step[fieldsource=author, match=\regexp{(.+?)\s+and\s+(.+)}, final]
      \step[fieldset=sortname, fieldvalue={$1}]
    }
  }
}

您可以sortname仅使用列表中的第一个名字来填充该字段author。排序的名字部分实际上仅依赖于列表中的第一个人。

数学家协会

\documentclass{article}
\usepackage[style=numeric,
            backend=biber,
            ]{biblatex}

\usepackage{filecontents}
\begin{filecontents*}{\jobname.bib}
@book{Doe10a,
  author = {Jane Doe and Steve Aart},
  year   = {2010}
}
@book{Doe04,
  author = {Jane Doe and Mark Bart},
  year   = {2004},
}
@book{Doe10b,
  author = {Jane Doe and Mike Smith},
  year   = {2010}
}
\end{filecontents*}
\addbibresource{\jobname.bib}

\DeclareNameAlias{default}{family-given}

\DeclareSourcemap{
  \maps[datatype=bibtex]{
    \map[overwrite=false]{
      \step[fieldsource=author, match=\regexp{(.+?)\s+and\s+(.+)}, final]
      \step[fieldset=sortname, fieldvalue={$1}]
    }
  }
}

\begin{document}
\nocite{*}
\printbibliography
\end{document}

给出

[1] Doe, Jane 和 Bart, Mark。2004 年。

[2] Doe, Jane 和 Aart, Steve. 2010 年。

[3] Doe, Jane 和 Smith, Mike。2010 年。

答案2

排序选项在手册的第 3.5 节中描述biblatex,并适当交叉引用第 2.2 节中描述的用于在bib资源文件中创建条目的输入字段。

从手册中我们可以很快发现,至少有两种方法可以满足您的要求。

第一个也是最明显的选项是使用presort字段 (p27)。使用字段presort可以按照您希望的顺序列出项目,从而对参考书目进行细致的排序。第二个选项是使用字段sortname。它覆盖了作者或编辑者的默认使用 (p27),在这里,这是两个作者的姓名列表,而不仅仅是名字。

本 MWE 中提供了这两种解决方案。

\documentclass[a4paper,10pt]{article}
\usepackage{filecontents}
\usepackage[style=numeric,
            backend=biber,
            ]{biblatex}

\addbibresource{refs.bib}
\DeclareNameAlias{default}{last-first}

% Option 1 using sortname which overrides author as the primary sort field
%\begin{filecontents*}{refs.bib}
%    @article{Doe10a,
%        author={Jane Doe and Steve Aart},
%        sortname={Jane Doe},
%        year={2010}
%    }
%    @article{Doe04,
%        author={Jane Doe and Mark Bart},
%        sortname={Jane Doe},
%        year={2004},
%    }
%    @article{Doe10b,
%    author={Jane Doe and Mike Smith},
%    sortname={Jane Doe},
%    year={2010}
%}
%\end{filecontents*}

% Option 2: Uses presort so the bibliography is printed in a given order, here: A, B, C
\begin{filecontents*}{refs.bib}
    @article{Doe10a,
        author={Jane Doe and Steve Aart},
        presort={B},
        year={2010}
    }
    @article{Doe04,
        author={Jane Doe and Mark Bart},
        presort={A},
        year={2004},
    }
    @article{Doe10b,
        author={Jane Doe and Mike Smith},
        presort={C},
        year={2010}
    }
\end{filecontents*}

\begin{document}

\nocite{*}
\printbibliography

\end{document}

在此处输入图片描述

在以后的问题中,请发布 MWE 来展示您已尝试过的操作。这样人们就更容易帮助您。

相关内容