我希望按字母顺序排列我的参考书目,但按年份列出文中的引用。
这个问题是关于同一问题的。但是,给出的答案依赖于包装\printbibliography
来refcontext
更改排序:
\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
如果您使用biblatex
v3.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}
这
\AtBeginRefsection{\GenRefcontextData{sorting=ynt}}
确保每个refcontext
文档使用也生成一个带有ynt
排序的文档。
这
\AtEveryCite{\localrefcontext[sorting=ynt]}
将我们的引用切换到ynt
排序refcontext
。\localrefcontext
只在本地起作用,不需要“关闭”或重置,因为它发生在组内部。