我想创建一个参考书目,从一个大型 bib 文件中选择包含特定作者并在特定年份出版的所有项目。
到目前为止,我只看到带有 * 的 nocite 命令,它是所有内容或手动指定单个项目,但没有看到任何具有更通用规则的示例。
printbibliography 似乎遵循了一些规则,但初步测试表明,项目不会按顺序编号,因为它是从完整列表中选择的。
我可以在某些 GUI 工具(例如 Zotero)中导入 bib 文件,在那里选择我想要的项目并将其再次导出为新文件,但我希望有一个保留在 TeX 领域中的解决方案,例如可以扩展为自动选择不同的年份、作者等。
答案1
以下是使用 Biblatex 和“源映射”的解决方案,它忽略了我们不感兴趣的条目:
\begin{filecontents}{\jobname.bib}
@book{one,
author={Someone Else},
year={2014},
title={Uninteresting book},
}
@book{two,
author={This Author},
year={1999},
title={Book that's too early},
}
@book{three,
author={Author, This},
year={2014},
title={An interesting book},
}
@book{four,
author={This Author},
year={2014},
title={Another interesting book},
}
@book{five,
author={Someone Else and This Author},
year={2014},
title={Joint effort},
}
\end{filecontents}
\documentclass{article}
\usepackage{biblatex}
\addbibresource{\jobname.bib}
\DeclareSourcemap{
\maps{
\map{
% Remove those not by chosen author
\step[fieldsource=author,
notmatch=\regexp{Author,\s+This|This\s+Author},
final]
\step[entrynull]
}
\map{
% Remove those not from chosen year
\step[fieldsource=year,
notmatch={2014},
final]
\step[entrynull]
}
}
}
\begin{document}
\nocite{*}
\printbibliography
\end{document}
您必须编写一个与作者姓名匹配的正则表达式。这只会查看该author
字段。您可能希望对editor
字段和其他内容使用额外的规则。
答案2
bib2bib 就是我所寻找的。(相反,bibtex2html 包中直观地包含了它)