我有一定数量的参考文献。(这将是标准输出)
- 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 来展示您已尝试过的操作。这样人们就更容易帮助您。