我正在尝试从具有短标题的参考书目条目子集中生成缩写表。我的想法是使用\printbiblist{shorttitle}
过滤器,以便只有具有特定关键字的参考文献才会包含在缩写表中。不幸的是,过滤器无法被识别。以下是 MWE:
\documentclass{book}
\usepackage[backend=biber]{biblatex}
\DeclareBibliographyDriver{shorttitle}{%
\printfield{title}}
\DeclareBiblistFilter{f1}{
\filter[type=keyword,filter=Testkey]
}
\begin{filecontents}{\jobname.bib}
@ARTICLE{test1,
AUTHOR = {John Doe},
TITLE = {The Extraordinary Life of the Camel},
SHORTHAND = {JIQ},
SHORTTITLE = {ELC},
JOURNALTITLE = {The Journal of Ideas Quarterly},
VOLUME = {1},
NUMBER = {1},
YEAR = {1993},
KEYWORD = {Testkey}
}
@ARTICLE{test2,
AUTHOR = {James Clark},
TITLE = {The Fantastic Life of the Giraffe},
SHORTHAND = {JKQ},
SHORTTITLE = {FLG},
JOURNALTITLE = {The Journal of Knowledge Quarterly},
VOLUME = {1},
NUMBER = {1},
YEAR = {1980},
KEYWORD = {irrelevant}
}
\end{filecontents}
\addbibresource{\jobname.bib}
\begin{document}
Title\autocite{test1} and then\autocite{test2}
\printbiblist[title={Table of Abbreviations},filter=f1]{shorttitle}
\end{document}
这里我尝试使用关键字“Testkey”来确定哪些项目会出现在缩写列表中,但我只收到“未找到过滤器”错误。我做错了什么?
答案1
您的 MWE 存在几个问题。
首先,在.bib
文件中,关键字字段称为keywords
,而不是keyword
,请注意s。
BiblistFilter 只能用作 的强制参数,\printbiblist
然后需要驱动程序。这些都是为 预定义的shorthand
,对于其他用途,您必须提供自己的驱动程序(就像您对 所做的那样shorttitle
)。
它不能在论证中被使用filter
。
如果你想过滤任何书目列表,你需要声明一个 bibfilter via \defbibfilter
(这对所有这些\print...
语句都有效),请参阅§3.6.10 书目过滤器和检查,第 82 页了解更多详细信息。你可能会选择
\defbibfilter{f1}{keyword=Testkey}
进而
\printbiblist[title={Table of Abbreviations},filter=f1]{shortitle}
但如果你只想检查关键字,你可以选择keyword
并\printbiblist
直接发出
\printbiblist[title={Table of Abbreviations},keyword=Testkey]{shortitle}
无需手动声明任何过滤器。
如果您只想要包含关键字“Testkey”的条目列表shorttitle
,那么这个 BiblistFilter 可能会有所帮助(您需要一个驱动程序)
\DeclareBiblistFilter{bf1}{
\filter[type=field,filter=shorttitle]
\filter[type=keyword,filter=Testkey]
}
现在的问题是一个哲学问题,你是否想过滤带有短标题的条目列表,并且会选择
\printbiblist[title={Table of Abbreviations},filter=f1]{shortitle}
甚至
\printbiblist[title={Table of Abbreviations},keyword=Testkey]{shortitle}
shorttitle
或者,如果您想显示包含关键字“Testkey”的条目列表,在这种情况下您需要
\printbiblist[title={Table of Abbreviations}]{bf1}
与bf1
上述相同并配有合适的驱动程序。