按同一作者和同一年份对书目进行排序(biblatex)

按同一作者和同一年份对书目进行排序(biblatex)

当我引用同一作者在同一年出版的两部作品时,biblatex我会根据它们的标题对参考书目进行排序。但在某些情况下,我知道排在第二位的作品实际上是最早出版的。我该如何重新排序?

\documentclass{article}
\usepackage{filecontents}
\usepackage[style=authoryear,sorting=nyt]{biblatex}
\begin{filecontents}{\jobname.bib}
@BOOK{lennon1972a,
    AUTHOR = "John Lennon",
    TITLE = "My music",
    YEAR = "1972"}
@BOOK{lennon1972b,
    AUTHOR = "John Lennon",
    TITLE = "More of my music",
    YEAR = "1972"}
\end{filecontents}
\addbibresource{\jobname.bib}
\begin{document}
\cites{lennon1972a}{lennon1972b}
\printbibliography
\end{document}

在此处输入图片描述

答案1

灵感来自恩里克回答,最好的方法似乎是使用选项sorttitle,如第 3.5 条所述biblatex文档。根据该描述,biblatex按以下顺序排序:

  1. presort2. sortkey3. author4. year5.sorttitle如果定义了,则 ,否则title

1 和 2 通常不定义。若要覆盖 5 中按标题排序,请定义sorttitle

\documentclass{article}
\usepackage{filecontents}
\usepackage[style=authoryear,sorting=nyt]{biblatex}
\begin{filecontents}{\jobname.bib}
@BOOK{lennon1972a,
    AUTHOR = "John Lennon",
    TITLE = "My music",
    YEAR = "1972",
    SORTTITLE = "a"}
@BOOK{lennon1972b,
    AUTHOR = "John Lennon",
    TITLE = "More of my music",
    YEAR = "1972",
    SORTTITLE = "b"}
\end{filecontents}
\addbibresource{\jobname.bib}
\begin{document}
\cites{lennon1972a}{lennon1972b}
\printbibliography
\end{document}

在此处输入图片描述

答案2

请参阅 biblatex 手册中的排序选项。默认为“nty”(名称,然后是标题,然后是年份),但可以更改,或者您可以定义自己的自定义排序方案(请参阅\DeclareSortingScheme)。看起来您可能想要sorting=nyt

或者,您可能想让您的 .bib 知道哪一个先出现(仅仅让您知道没有多大意义……)。在您的 .bib 中放入一个 MONTH 字段以区分同一 YEAR 内的条目,然后使用自定义排序规范:

\DeclareSortingScheme{nymt}{
  \sort{
    \field{presort}
  }
  \sort[final]{
    \field{sortkey}
  }
  \sort{
    \field{sortname}
    \field{author}
    \field{editor}
    \field{translator}
    \field{sorttitle}
    \field{title}
  }
  \sort{
    \field{sortyear}
    \field{year}
  }
  \sort{
    \field{month}
  }
  \sort{
    \field{sorttitle}
    \field{title}
  }
  \sort{
    \field[padside=left,padwidth=4,padchar=0]{volume}
    \literal{0000}
  }
}

然后使用选项sorting=nymt

如果您不想在参考书目中看到月份,请也将其放入序言中:

\AtEveryBibitem{\clearfield{month}\clearfield{labelmonth}}

答案3

你正在寻找的是类似于sortkey字段(或可能是presort)的内容。检查§3.5(或§4.5.5 以获得更复杂的排序方案 - 检查这个答案是一个很好的例子)biblatex文档

恕我直言,你应该将书目视为引文索引;它旨在“解码”引文标签,并为读者提供有关该主题的优秀文献汇编。无论看起来多么奇怪,中途更改排序方案都可能使你的书目混乱。

以下是 MWE:

\documentclass{article}
\usepackage{filecontents}
\usepackage[style=authoryear,sorting=nyt]{biblatex}
\begin{filecontents}{\jobname.bib}
@BOOK{lennon1972a,
    AUTHOR = "John Lennon",
    TITLE = "My music",
    YEAR = "1972",
    SORTKEY = {a}
  }
@BOOK{lennon1972b,
    AUTHOR = "John Lennon",
    TITLE = "More of my music",
    YEAR = "1972",
    SORTKEY = {b}
  }
\end{filecontents}
\addbibresource{\jobname.bib}
\begin{document}
\cites{lennon1972a}{lennon1972b}
\printbibliography
\end{document}

在此处输入图片描述

答案4

最简单的方法是在参考书目文件中设置月份,因为它是排序的默认后备,例如:

month = jan

(如果作者多产,你也可以瞄准出版当天)

如果您不知道,并且不想人为地放置一个,或者如果您想要另一种解决方案,您也可以在编译后编辑 .bbl 文件,手动重新排序这两个文章(并更改其名称)并再次编译。来自:

 \bibitem[Lennon 1972a]{lennon1972b}
John Lennon.
\newblock More of my music. 1972

 \bibitem[Lennon 1972b]{lennon1972a}
 John Lennon.
 \newblock My music. 1972

 \bibitem[Lennon 1972a]{lennon1972a}
 John Lennon.
 \newblock My music. 1972

\bibitem[Lennon 1972b]{lennon1972b}
John Lennon.
\newblock More of my music. 1972

(只要本案中冲突的论文数量较少,此解决方案即可有效)

相关内容