我想根据我的资料来源类型(文章、互联网和其他)将我的参考书目分为三个部分。这一步我没有遇到任何问题,您可以看到我提供的代码:
我得到了一个结构,如下图左侧所示(右侧是我需要的):
但是,我想为每个书目部分的“标签”(括号之间的内容)设置不同的逻辑,并获得类似于上一张图片右侧的内容。
例如,对于“文章”部分,我想按顺序对它们进行排序:[A1],[A2],[A3] ...互联网部分:[I1],[I2] [I3]和“其他”:[O1],[O2],[O3]
同样,我希望参考书目中的参考文献按照我在文中引用的顺序进行排序。我希望我在文中引用的第一篇文章为 [A1],第二篇文章为 [A2],第一个互联网参考文献为 [I1]。
答案1
可以在标签前面加上\newrefcontext[labelprefix=<prefix>]
相应的前缀\printbibliography
。(labelprefix
需要defernumbers
作为全局选项。)
请注意,无需为其他书目,我们可以合并s。如果只使用and ,nottype
也可以省去s 。\addcontentsline
heading=bibintoc,
heading=subbibintoc
\documentclass[british]{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{babel}
\usepackage{csquotes}
\usepackage[style=numeric, sorting=none, defernumbers, backend=biber]{biblatex}
\addbibresource{biblatex-examples.bib}
\begin{document}
Lorem \autocite{sigfridsson,worman,geer,nussbaum,markey,ctan,aksin}
\printbibheading[heading=bibintoc]
\newrefcontext[labelprefix=A]
\printbibliography[type=article, heading=subbibintoc, title=Articles]
\newrefcontext[labelprefix=I]
\printbibliography[type=online, heading=subbibintoc, title=Internet]
\newrefcontext[labelprefix=O]
\printbibliography[nottype=article, nottype=online, heading=subbibintoc, title=Other references]
\end{document}
如果你还想对引用进行排序,则需要选项sortcites
并对排序模板进行一些调整
\usepackage[style=numeric, sorting=none-pre, sortcites, defernumbers, backend=biber]{biblatex}
\DeclareSortingTemplate{none-pre}{
\sort{
\field{presort}
}
\sort{\citeorder}
}
\DeclareSourcemap{
\maps[datatype=bibtex]{
\map{
\pertype{article}
\step[fieldset=presort, fieldvalue = {A}]
}
\map{
\pertype{online}
\step[fieldset=presort, fieldvalue = {I}]
}
\map{
\pernottype{article}
\pernottype{online}
\step[fieldset=presort, fieldvalue = {O}]
}
}
}
请注意,我可以使用A
, I
,O
作为presort
此处的值,因为如果按字母顺序排序,它们具有预期的顺序。如果您想要不同的顺序或需要额外的前缀,您可以为字段选择不同的字符串presort
。
如果\DeclareSortingTemplate
抛出未定义的控制序列错误,则说明您使用的biblatex
版本已过时(自 2016-12-08 起最高为 v3.7),该命令以前被调用\DeclareSortingScheme
,因此请尝试替换
\DeclareSortingTemplate{none-pre}{
和
\DeclareSortingScheme{none-pre}{
在上面的代码中。(但是这么旧的版本可能还存在其他问题。)