在自定义 biblatex 样式中按年份 (ynt) 对引文进行排序,按名称 (nyt) 对参考文献进行排序

在自定义 biblatex 样式中按年份 (ynt) 对引文进行排序,按名称 (nyt) 对参考文献进行排序

我希望按字母顺序排列我的参考书目,但按年份列出文中的引用。

这个问题是关于同一问题的。但是,给出的答案依赖于包装\printbibliographyrefcontext更改排序:

\begin{refcontext}[sorting=nyt]
\printbibliography
\end{refcontext}

我正在为我的大学编写自定义 biblatex 样式。我希望此行为成为默认行为,而样式的用户无需更改文档内的排序。

为了实现这一点,我需要在.bbx和/或文件中包含什么?.cbx

编辑:

我可以使用以下方法实现此目的:

\NewCommandCopy{\oldprintbibliography}{\printbibliography}
\renewcommand{\printbibliography}{
\begin{refcontext}[sorting=nyt]
  \oldprintbibliography
\end{refcontext}
}

但这有一个严重的缺点,即用户无法(没有错误)\printbibliography自己进行包装refcontext

答案1

如果您使用biblatexv3.18b (2022-07-12) 或更高版本,则可以使用新的\localrefcontext\GenRefcontextData在引用中切换到不同的参考上下文(例如排序),如下所示

\documentclass[british]{article}
\usepackage[T1]{fontenc}
\usepackage{babel}
\usepackage{csquotes}

\usepackage[backend=biber, style=authoryear-comp]{biblatex}

\AtBeginRefsection{\GenRefcontextData{sorting=ynt}}
\AtEveryCite{\localrefcontext[sorting=ynt]}

\addbibresource{biblatex-examples.bib}

\begin{document}
Lorem \autocite{sigfridsson,worman,nussbaum,geer}

\printbibliography
\end{document}

Lorem(Nussbaum 1978;Geer 1985;Sigfridsson 和 Ryde 1998;Worman 2002) Geer,Ingrid de(1985)。《伯爵、圣人、主教、吟游诗人——和音乐。十二世纪的奥克尼伯爵领地。音乐学研究》。博士论文。乌普萨拉:乌普萨拉大学。 Nussbaum,Martha(1978)。亚里士多德的《动物运动论》。普林斯顿:普林斯顿大学出版社。 Sigfridsson,Emma 和 Ulf Ryde(1998)。《从电势和电矩推导原子电荷的方法比较》。在:《计算化学杂志》19.4,第 377-395 页。 doi: 10.1002/(SICI)1096-987X(199803)19:4<377::AID-JCC1>3.0.CO;2-P. Worman, Nancy (2002). 人物性格。希腊文学风格。奥斯汀:德克萨斯大学出版社。

\AtBeginRefsection{\GenRefcontextData{sorting=ynt}}

确保每个refcontext文档使用也生成一个带有ynt排序的文档。

\AtEveryCite{\localrefcontext[sorting=ynt]}

将我们的引用切换到ynt排序refcontext\localrefcontext只在本地起作用,不需要“关闭”或重置,因为它发生在组内部。

相关内容