将参考书目分成 3 个部分,使用不同的标签,并按照调用顺序排序

将参考书目分成 3 个部分,使用不同的标签,并按照调用顺序排序

我想根据我的资料来源类型(文章、互联网和其他)将我的参考书目分为三个部分。这一步我没有遇到任何问题,您可以看到我提供的代码:

在此处输入图片描述 在此处输入图片描述

我得到了一个结构,如下图左侧所示(右侧是我需要的):

在此处输入图片描述

但是,我想为每个书目部分的“标签”(括号之间的内容)设置不同的逻辑,并获得类似于上一张图片右侧的内容。

例如,对于“文章”部分,我想按顺序对它们进行排序:[A1],[A2],[A3] ...互联网部分:[I1],[I2] [I3]和“其他”:[O1],[O2],[O3]

同样,我希望参考书目中的参考文献按照我在文中引用的顺序进行排序。我希望我在文中引用的第一篇文章为 [A1],第二篇文章为 [A2],第一个互联网参考文献为 [I1]。

答案1

可以在标签前面加上\newrefcontext[labelprefix=<prefix>]相应的前缀\printbibliography。(labelprefix需要defernumbers作为全局选项。)

请注意,无需为其他书目,我们可以合并s。如果只使用and ,nottype也可以省去s 。\addcontentslineheading=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}{

在上面的代码中。(但是这么旧的版本可能还存在其他问题。)

相关内容