使用 \printbiblist 与 biblatex (后端 Biber) 时未找到过滤器错误

使用 \printbiblist 与 biblatex (后端 Biber) 时未找到过滤器错误

我正在尝试从具有短标题的参考书目条目子集中生成缩写表。我的想法是使用\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上述相同并配有合适的驱动程序。

相关内容