应使用 biber 的功能创建仅包含特定作者条目的参考书目sourcemap
。答案https://tex.stackexchange.com/a/65145/99345演示了如何通过向每个匹配条目添加特定关键字来实现这一点。这对我来说也有效,只要没有关键字仍存在于匹配的 bib 条目中。因此,以下示例生成仅包含一个条目而不是两个条目的参考列表。
删除第二个条目中的现有关键字foo
会使两个条目都出现在列表中,正如预期的那样。
\begin{filecontents}{\jobname.bib}
@book{first, author = {Doe, John}, title = {First}}
@book{second, author = {Doe, John}, title = {Second}, keywords = {foo}}
\end{filecontents}
\documentclass{article}
\usepackage[backend=biber]{biblatex}
\addbibresource{\jobname.bib}
\DeclareSourcemap{
\maps[datatype=bibtex, overwrite]{
\map{
\step[fieldsource=author, match=Doe, final]
\step[fieldset=keywords, fieldvalue=doe, append]
}
}
}
\begin{document}
\nocite{*}
\printbibliography[keyword=doe]
\end{document}
overwrite
设置和属性后append
,我认为现有的关键字也可以通过这种方式进行修改。如何实现预期的行为?
答案1
该keyword
字段是一个逗号分隔的列表。如果您只是像获得一样附加doe
到列表,但当然您想要,所以您需要附加(如果字段为空,这可能会留下一个空条目,您甚至可能会收到警告,但您可以忽略它)。然后您可以使用keya,keyb
keya,keybdoe
keya,keyb,doe
,doe
keyword
\DeclareSourcemap{
\maps[datatype=bibtex, overwrite]{
\map{
\step[fieldsource=author, match=Doe, final]
\step[fieldset=keywords, fieldvalue={,doe}, append]
}
}
}