Biblatex 按作者对书目进行排序,然后根据书目中的出现进行编号

Biblatex 按作者对书目进行排序,然后根据书目中的出现进行编号

我正在biblatex创建一个包含两部分的书目,一部分是文献,一部分是互联网资源。现在我想按 NTY 对每个书目进行排序。之后,书目中的条目应从上到下编号。这应该发生在两个书目中,我希望第二个书目的第一个编号紧随第一个书目最后一个编号之后。

我认为 MWE 没有意义,因为我甚至不知道这个问题的开始。

答案1

如果你只想将@online所有其他类型拆分成两个书目,那么很简单

\printbibliography[nottype=online]
\printbibliography[type=online]

第一个命令打印除类型外的所有条目@online,而后一个命令仅打印@online条目。

然后我们使用defernumbers=true,此选项确保“数字标签(即labelnumber在任何书目中第一次打印条目时分配数字标签(即字段 [...])”(第 52 页,§3.1.1加载时选项/defernumbersbiblatex文档

nty排序通过以下方式获得

\usepackage[style=numeric,sorting=nty,defernumbers=true]{biblatex}

完整代码

\documentclass[a4paper,12pt]{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{lmodern}
\usepackage[style=numeric,sorting=nty,defernumbers=true]{biblatex}
\usepackage{hyperref}
\addbibresource{biblatex-examples.bib}

\begin{document}
  \nocite{baez/online,cicero,wassenberg,wilde}
  \printbibliography[nottype=online]
  \printbibliography[type=online]
\end{document}

在此处输入图片描述

答案2

这是一个独立于所用后端的解决方案biblatex。由于 OP 询问使用bibtex,我的示例指定了这一点,但没有任何内容依赖于它。backend=biber至少可以同样有效。

这个答案基于 moewe 的解决方案。我运行了该代码并读取了输出。在那里biblatex建议了该defernumbers选项。查看文档后,我了解到defernumbers,与 不同\DeclarePresort并不特定于biber。一个额外的(但非常小的)好处是它消除了biblatex编译时的警告。

通常,biblatex在文档开头为参考条目分配编号。但是,如果defernumbers设置为true,则直到它们在参考书目中第一次使用时才会分配编号。

\documentclass[a4paper,12pt]{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{lmodern}
\usepackage[sorting=nty,defernumbers=true,backend=bibtex]{biblatex}
\usepackage{hyperref}
\addbibresource{biblatex-examples.bib}

\begin{document}
  \nocite{baez/online,cicero,wassenberg,wilde}
  \printbibliography[nottype=online]
  \printbibliography[type=online]
\end{document}

延迟编号的参考文献

请注意,文档警告您需要运行两次latex才能正确编号,这要超过使分页等正确所需的运行次数。此外,如果您更改了的值defernumbers,则可能需要删除该文件。(虽然我发现从默认设置.aux改为时不需要这样做。)falsetrue

相关内容