问题
我想改变样式提供firstfull
的选项的行为biblatex-dw
。我不想对文档中第一次出现的每一部作品都进行完整引用,但仅有的如果在整篇文档中只引用一次,则不应将其列为参考书目。此外,如果引用完整,则不应将其列为参考书目。
例子
MWE 可以澄清我的意思:
\documentclass{article}
\usepackage[
style=authortitle-dw,
backend=biber,
autocite=footnote,
firstfull=true,
]{biblatex}
\DeclareAutoCiteCommand{footnote}[l]{\footcite}{\footcites} % prevent some warnings
\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@book {foo,
author = {Foo, Francis},
title = {All about Foo},
year = {2011},
location = {Footown},
}
@book {bar,
author = {Bar, Bernie},
title = {Barstory},
year = {2000},
location = {Barcity},
}
\end{filecontents}
\addbibresource{\jobname.bib}
\begin{document}
\autocite{bar}
\autocite{foo}
\autocite{bar}
\printbibliography
\end{document}
其结果如下:
引用
“Francis”的引用没有问题,因为它只被引用过一次。但对于另一个(“Bernie”),我更希望不要有完整的引用。
参考书目
正如预期的那样,所有被引用的作品都已包含在参考书目中。这也不是我想要的。因为“Francis”只被引用过一次,所以在脚注中还没有完整引用。所以我不需要把它放在参考书目中。
不理想的部分解决方案
options = {skipbib=true}
如果我手动将只会被引用一次的条目添加到文件中的每个条目中,则可以解决参考书目的第二个问题.bib
。因此,在这种情况下,“Francis”将不再出现在参考书目中。这是不是我希望有一个解决方案,因为这种操作很容易出错。
备注:这个问题不是检查某个条目是否被多次引用但解决方案可能建立在步调一致回答。
答案1
\documentclass{article}
\usepackage[
style=authortitle-dw,
backend=biber,
autocite=footnote,
firstfull=true,
citecounter=true% ADDED
]{biblatex}
\DeclareAutoCiteCommand{footnote}[l]{\footcite}{\footcites}% prevent some warnings
\DeclareBibliographyCategory{citedmorethanonce}% ADDED
\renewbibmacro*{cite:full}{%
\ifnumgreater{\value{citecounter}}{1}{% ADDED
\addtocategory{citedmorethanonce}{\thefield{entrykey}}% ADDED
\usebibmacro{cite:normal}% ADDED
}{% ADDED
\usebibmacro{cite:full:citepages}%
\usedriver
{\DeclareNameAlias{sortname}{default}}
{\thefield{entrytype}}%
\iffieldundef{shorthand}
{}
{\ifbool{cbx:citedas}
{\addspace\usebibmacro{shorthandintro}}
% {}}}% DELETED
{}}}}% ADDED
\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@book {foo,
author = {Foo, Francis},
title = {All about Foo},
year = {2011},
location = {Footown},
}
@book {bar,
author = {Bar, Bernie},
title = {Barstory},
year = {2000},
location = {Barcity},
}
\end{filecontents}
\addbibresource{\jobname.bib}
\textheight=150pt% just for the example
\begin{document}
\autocite{bar}
\autocite{foo}
\autocite{bar}
\printbibliography[category=citedmorethanonce]
\end{document}