我想使用biblatex
包和biber
作为后端创建多个子书目。我知道选项sorting=
负责biblatex
排序,但它只知道名称、年份、卷数和标题。所以现在我的顺序sorting=nty
是name > title > year
,但可以得到吗keywords > name > title
?
这是我的 MWE:
\documentclass{scrartcl}
\usepackage[utf8]{inputenc}
\usepackage{filecontents}
\begin{filecontents}{library.bib}
@book{book1,
author = {Einstein, Albert},
title = {The World as I See it},
keywords= {book}
}
@book{book2,
author = {Hawiking, Stephen},
title = {A Brief History of Time},
keywords= {book}
}
@book{intern1,
author = {Richards, John},
title = {Intern document},
keywords= {intern}
}
@book{intern2,
author = {Bobby, Ricky},
title = {Intern document 2},
keywords= {intern}
}
\end{filecontents}
\usepackage[%
backend=biber,
sorting=nty,
style=ieee,
]{biblatex}
\addbibresource{library.bib}
\begin{document}
\cite{book1} \cite{book2} \cite{intern1} \cite{intern2}
\printbibheading
\printbibliography[%
keyword=book,
heading=subbibliography,
title={Books}
]
\printbibliography[%
keyword=intern,
heading=subbibliography,
title={Intern documents}
]
\end{document}
其结果是:
但我想要更多类似的东西:
Books
[1]
[2]
...
[7]
Intern documents
[8]
[9]
...
答案1
如果您在同一级别有不相交的拆分书目,则很可能要使用选项defernumbers
。在旧版本中,您biblatex
会被明确警告使用defernumbers=true
,但这种情况在以下版本中发生了变化biblatex 建议 defernumbers=true,但参考文献的详细信息可能很难找到最终https://github.com/plk/biblatex/issues/493(顺便说一句,我认为应该保留这个警告,因为defernumbers
有用的情况比没用的情况要多得多,你会注意到引发这种情况的例子在两种设置下都给出了低于标准的输出,尽管可以defernumbers=false
说更好)。
这biblatex
手动的解释该defernumbers
选项为(第 56 页)
与标准 LaTeX 不同,此包生成的数字标签通常分配给文档正文开头的完整参考列表。如果启用此选项,则数字标签 [...] 将在第一次打印任何参考书目中的条目时分配。[...] 此选项要求在
bbl
后端将数据导出到文件后运行两次 LaTeX(除了分页符更改等所需的任何其他运行)。需要注意的一件重要事情是,如果您使用此选项,则对选项、bib 文件或某些命令的更改\printbibliography
通常将要求您删除当前aux
文件并重新运行 LaTeX 以获得正确的编号。
及后续版本 §3.14.5书目过滤器和引文标签提及(第 136 页)
此包生成的引文标签在被任何书目过滤器拆分之前会分配给完整的参考文献列表。
refsection
无论您使用多少个书目过滤器,它们都保证在整个文档(或环境中)中是唯一的。但是,当使用数字引文方案时,这很可能会导致拆分的书目中的编号不连续。使用defernumbers
包选项可以避免此问题。如果启用此选项,则在任何书目中第一次打印条目时都会分配数字标签。
因此,如果你设置,defernumbers=true
你将在参考书目中获得连续编号
\documentclass{scrartcl}
\usepackage[utf8]{inputenc}
\usepackage{filecontents}
\begin{filecontents}{library.bib}
@book{book1,
author = {Einstein, Albert},
title = {The World as I See it},
keywords= {book}
}
@book{book2,
author = {Hawiking, Stephen},
title = {A Brief History of Time},
keywords= {book}
}
@book{intern1,
author = {Richards, John},
title = {Intern document},
keywords= {intern}
}
@book{intern2,
author = {Bobby, Ricky},
title = {Intern document 2},
keywords= {intern}
}
\end{filecontents}
\usepackage[%
backend=biber,
sorting=nty,
style=ieee,
defernumbers=true,
]{biblatex}
\addbibresource{library.bib}
\begin{document}
\cite{book1} \cite{book2} \cite{intern1} \cite{intern2}
\printbibheading
\printbibliography[%
keyword=book,
heading=subbibliography,
title={Books}
]
\printbibliography[%
keyword=intern,
heading=subbibliography,
title={Intern documents}
]
\end{document}
请注意,从技术上讲,这并不是按关键字排序,但结果正是您在这种情况下所需要的。按关键字排序并不容易,因为关键字字段是一个列表,其中可能包含多个任意顺序的关键字。如果想要按此排序并希望能够强制执行非字母顺序的排序顺序,则需要一些技巧。