这是一个 MWE,我以为它只会删除没有annotation
AKAannote
字段的条目。但实际上它删除了全部的条目。
以下是 biblatex 手册第 78 页上的文档内容:
如果
notfield
使用,则仅当 ⟨入口字段⟩ 不存在。如果
entrynull
设置了,则处理将\map
立即终止,并且不会创建当前条目。就好像它在数据源中不存在一样。显然,您应该使用先前的映射步骤选择要应用此操作的条目。
通过将这些步骤合并为一个步骤,我认为我将首先测试注释字段是否已设置,然后,如果没有,则删除该条目。有没有办法实现这一点。
\documentclass{article}
\usepackage[style=reading,
entryhead=true,
entrykey=false,
natbib,
hyperref=false,
url=false,
doi=false,
%style=apa,
sorting=nyt,
isbn=false,
%backref=true,
firstinits=true,
minnames=13,
maxnames=35,
minbibnames=10,
maxbibnames=100,
parentracker=true,
defernumbers=true,
backend=biber]{biblatex}
\DeclareSourcemap{
\maps[datatype=bibtex]{
\map{
\step[notfield=annotation,entrynull=true]
}
}
}
\begin{filecontents}{\jobname.bib}
@inproceedings{ABCDFG,
annote = {This is a very nice paper.},
author = {GGPB},
booktitle = {BOEUS},
keywords = {clipping},
title = {NOAP},
volume = {0},
year = {2005},
}
@inproceedings{XXXXXX,
author = {PQR},
booktitle = {BBC},
keywords = {LLM},
title = {ARP},
year = {2010},
}
\end{filecontents}
\addbibresource{\jobname.bib}
\begin{document}
\nocite{*}
\printbibliography
\end{document}
答案1
数据映射发生在非常早期的阶段,此时annote
字段仍被调用annote
但尚未(从到 的annotation
重命名也发生在源映射中,但该映射是在用户定义的s 之后执行的)。所以你需要。annote
annotation
\DeclareSourcemap
notfield=annote
此外,似乎entrynull
只有在其自身中使用时才可以安全地工作\step
。文档中的所有示例都这样使用它。
如果您认为这\step[notfield=annotation,entrynull=true]
应该可行(并且从文档文本中我发现没有令人信服的论据表明它不应该可行),请在 Biber 错误跟踪器上打开一个问题:https://github.com/plk/biber/issues。
编辑:Biber bugracker 上有关于此问题的讨论https://github.com/plk/biber/issues/238. 因此,biblatex
文档已被修改强调notfield
应该\step
与final
。
为了捕获没有并将它们置零的条目,annote
我annotation
建议
\documentclass{article}
\usepackage[style=reading, backend=biber]{biblatex}
\DeclareSourcemap{
\maps[datatype=bibtex]{
\map{
\step[notfield=annote, final]
\step[notfield=annotation, final]
\step[entrynull]
}
}
}
\begin{filecontents}{\jobname.bib}
@inproceedings{ABCDFG,
annote = {This is a very nice paper.},
author = {GGPB},
booktitle = {BOEUS},
keywords = {clipping},
title = {NOAP},
volume = {0},
year = {2005},
}
@inproceedings{XXXXXX,
author = {PQR},
booktitle = {BBC},
keywords = {LLM},
title = {ARP},
year = {2010},
}
\end{filecontents}
\addbibresource{\jobname.bib}
\begin{document}
\nocite{*}
\printbibliography
\end{document}