我正在使用 创建文档biblatex
。该文档需要环境提供的多个单独的参考书目refsegment
。同一篇作品可能在多个 s 中被引用refsegment
,但我希望引文仅出现在使用它的第一个参考书目中,而不出现在后面的参考书目中。后续部分中的引文应指向先前的参考书目。是否可以使用 自动执行此操作biblatex
?
答案1
选项segment=<integer>
将\printbibliography
参考书目限制为仅在参考文献部分中引用的条目<integer>
。此过滤也适用于\bibbysegment
。
您可以通过应用其他过滤器将打印限制为新引用的条目。这种方法是在类似问题用于数字样式。biblatex
使用条目键列表在内部跟踪参考段中引用的条目。因此,另一种方法是仅将新键添加到此列表中。
以下文档给出了示例。请注意,您需要启用引用跟踪才能使\ifentryseen
测试正常运行。
\documentclass{report}
\usepackage[style=authoryear,citetracker,backref,refsegment=chapter]{biblatex}
\usepackage[colorlinks]{hyperref}
\makeatletter
\patchcmd{\blx@citation@entry}
{\ifinlistcs{#1}{blx@segm@\the\c@refsection @\the\c@refsegment}
{}
{\listcsgadd{blx@segm@\the\c@refsection @\the\c@refsegment}{#1}}}
{\ifboolexpr{ test {\blx@ifentryseen@global{#1}}
or test {\ifinlistcs{#1}{blx@segm@\the\c@refsection @\the\c@refsegment}} }
{}
{\listcsgadd{blx@segm@\the\c@refsection @\the\c@refsegment}{#1}}}
{}{}
\makeatother
\defbibheading{subbibliography}{%
\section*{References for Chapter \ref{refsegment:\therefsegment}}}
\addbibresource{biblatex-examples.bib}
\begin{document}
\chapter{First}
\textcite{companion,cms}
\chapter{Second}
\textcite{companion,cms,markey,ctan}
\printbibheading
\bibbysegment[heading=subbibliography]
\end{document}
答案2
Audrey 已经为您的第一个需求提供了解决方案。我将给出另一种答案:不要这样做。
假设不想按主题、条目类型等拆分参考书目,则biblatex
允许对整个文档进行参考书目以及按“引用部分”或“引用段”进行参考书目。后两者的区别在于,引用部分的标签是环境本地的,而引用段的标签在整个文档中是唯一的(类似于合并参考书目)。但这三种参考书目类型的共同点是,在某个文档部分(整个文档/引用部分/引用段)中引用了一个条目也将纳入相应部分的参考书目。您提议的文档设计与此不同,并且需要在另一部分的参考书目中查找某一部分中引用的某些(但不是全部)条目,在我看来,这是相当有害的。如果您的目标是不惜一切代价避免重复的参考书目条目,我建议对整个文档进行合并参考书目。