我目前正在使用它biblatex
来创建文档。我想知道是否可以仅使用 bibkeys 来拆分参考书目。
我们的想法是利用
\printbibliography[title=Primal,key={KEY1,KEY2}]
\printbibliography[title=Complementary,notkey={KEY1,KEY2}]
KEY1
并KEY2
在此指定与参考文献相关的 bibkeys。我知道我可以使用参考文献中的关键字进行过滤,但如果可能的话,我想避免这样做。
答案1
按输入键过滤的方法非常不具语义性,也许可以找到一种更优雅的解决方案,即基于关键字、输入类型或其他固定标准,而不是任意输入键。但这并不是说,在某些情况下,按输入键拆分或分组不是最佳或最明智的解决方案。
一个相当优雅的解决方案是使用类别。书目类别旨在从文档内部动态地对条目进行分类/分组.tex
,而不是在(更静态的).bib
数据中(这才keywords
是正确的方法)。
\documentclass[british]{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{babel}
\usepackage{csquotes}
\usepackage[style=authoryear, backend=biber]{biblatex}
\DeclareBibliographyCategory{keys}
\addtocategory{keys}{sigfridsson,nussbaum}
\addbibresource{biblatex-examples.bib}
\begin{document}
\cite{sigfridsson,worman,nussbaum,geer}
\printbibliography[category=keys]
\printbibliography[notcategory=keys]
\end{document}
不太优雅的蛮力方法是使用 bibchecks,随着列表的增长,它会变得有点混乱,但可以更容易地与其他类型的测试相结合。
\documentclass[british]{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{babel}
\usepackage{csquotes}
\usepackage[style=authoryear, backend=biber]{biblatex}
\defbibcheck{keys}{%
\iffieldequalstr{entrykey}{sigfridsson}
{}
{\iffieldequalstr{entrykey}{nussbaum}
{}
{\skipentry}}}
\defbibcheck{notkeys}{%
\iffieldequalstr{entrykey}{sigfridsson}
{\skipentry}
{\iffieldequalstr{entrykey}{nussbaum}
{\skipentry}
{}}}
\addbibresource{biblatex-examples.bib}
\begin{document}
\cite{sigfridsson,worman,nussbaum,geer}
\printbibliography[check=keys]
\printbibliography[check=notkeys]
\end{document}
输出将是相同的。