我有两个参考书目列表。我refsection
使用
\begin{refsection}
\defbibentryset{test}{not-exist-key}
\printbibliography[heading=none,....]
\end{refsection}
printbibliography
而另一个则是正常的
\printbibliography
一切按预期运行,直到我只有一个不存在的键\defbibentryset
。可以忽略 biber 警告生成 pdf 文件,但文档中没有其他参考书目列表,并且引用样式也是错误的。
以下是 MWE:
\documentclass{article}
\usepackage{biblatex}
\addbibresource{biblatex-examples.bib}
\begin{document}
\begin{refsection}
\defbibentryset{test}{sugfrudssun}
\printbibliography[heading=none]
\end{refsection}
\textcite{sigfridsson}
\end{document}
答案1
事实证明,如果你足够固执,你就能做到这一点……
首先,我dummy
用 创建一个参考书目条目options={dataonly}
。然后我重新定义\defbibentryset
为始终包含此条目。如果由于选项的原因,集合中仅包含不存在的条目,它将不会出现在参考书目中。skipbib,skiplab
然后我稍微调整一下,如果当前是\blx@entryset@i
,则不执行任何操作。entrykey
dummy
如果您引用条目集,它仍将显示为 []。
\documentclass{article}
\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@misc{dummy,
options = {dataonly}
}
\end{filecontents}
\usepackage{biblatex}
\addbibresource{\jobname.bib}
\addbibresource{biblatex-examples.bib}
\let\origdefbibentryset\defbibentryset
\renewcommand{\defbibentryset}[2]{%
\origdefbibentryset{#1}{#2,dummy}}
\makeatletter
\def\blx@entryset@i#1{%
\blx@ifdata{#1}
{\begingroup
\blx@resetdata
\blx@getdata{#1}%
\iffieldequalstr{entrykey}{dummy}
{}
{\blx@entrysetcount
\blx@setoptions@type\abx@field@entrytype
\blx@setoptions@entry
\addtocounter{instcount}\@ne
\blx@execute
\blx@beglangbib
\blx@begunit
\blx@anchor
\blx@entryset@precode
\blx@driver{\blx@imc@thefield{entrytype}}%
\blx@entryset@postcode
\blx@endunit
\blx@endlangbib}%
\endgroup}
{\blx@nounit}}
\makeatother
\begin{document}
\begin{refsection}
\defbibentryset{test}{sugfrudssun}
\printbibliography[heading=none]
\end{refsection}
\textcite{sigfridsson}
\end{document}