如何生成第二个 biblatex 书目而不重复第二个 biblatex 书目中的条目?

如何生成第二个 biblatex 书目而不重复第二个 biblatex 书目中的条目?

我正在尝试在报告中添加“方法”部分,但无法按我想要的方式生成参考资料,因此希望得到一点帮助。到目前为止,输出的 MWE 如下所示:

在此处输入图片描述

主要部分中引用的任何来源均正确出现在主要参考文献中。但是,我经常会在方法部分引用一个来源,该来源已经在主要部分中引用过一次,但它也出现在方法参考文献中。我希望方法参考文献中只出现唯一的来源,而不是在两个部分中出现重复。

在上面的例子中,Horowitz 和 Hill 的引用不应再次出现在“方法参考”中。但我仍应能够在“方法”中引用它,并且它应指向 (1)。我该如何实现这一点?

生成上述示例的代码是

\documentclass{article}

\usepackage[backend=biber,
            style=numeric-comp,
            firstinits=true,
            sorting=none,
            doi=false,isbn=false,url=false,eprint=false]{biblatex}
\usepackage{hyperref}
\usepackage[capitalise]{cleveref}
\addbibresource{bibliography_list.bib}

\begin{document}

\section{Main Section}
Here is my reference for the main section: \autocite{horowitz1989art}.
\printbibliography[title={Main References}]

\subsection{Methods}
\begin{refsection}
My references for the Methods are: \autocite{bloch2000measurement,horowitz1989art,DfE}.
\printbibliography[heading=subbibliography,title={Methods References}]
\end{refsection}

\end{document}

和 bib 文件

@book{horowitz1989art,
  title={The art of electronics},
  author={Horowitz, Paul and Hill, Winfield},
  year={1989},
  publisher={Cambridge Univ. Press}
}

@online{DfE,
  author = {},
  organization = {{Department for Education}},
  title = {Guidance for schools: coronavirus (COVID-19)},
  url = {https://www.gov.uk/government/collections/guidance-for-schools-coronavirus-covid-19},
  urldate = {2020-07-24},
  year = 2020
}

@article{bloch2000measurement,
  title={Measurement of the spatial coherence of a trapped Bose gas at the phase transition},
  author={Bloch, Immanuel and H{\"a}nsch, Theodor W and Esslinger, Tilman},
  journal={Nature},
  volume={403},
  number={6766},
  pages={166--170},
  year={2000},
  publisher={Nature Publishing Group}
}

答案1

refsections 始终保持完全独立,因此您无法轻易地在第 1 节中仅打印上一节中未引用的参考文献。还请注意,对于refsections,同一作品在不同的 中可能会获得不同的编号refsections,因此您无论如何都不能省略参考书目中的条目,因为您的读者将无法正确识别来源。

我建议你使用refsegments。srefsegment与 s 类似refsection,但它们并不分开。相反,它们的作用或多或少像是一个附加关键字或类别分类:biblatex可以通过 s 过滤书目refsegment

不幸的是,没有内置的“仅有的在这个refsegment'-test 中。这必须手动构建。在您的 MWE 中,这相当简单,但如果您使用更多refsgements,它可能会变得有点复杂(因为您必须堆叠not segment=0 and ... and not segment=n-1才能获得 中的引用segment=n;refsegments 从 0 开始计数,不在 a 后面\newrefsegment或 a 内部的所有内容\begin{refsegment}...\end{refsegment}都属于段 0)。我们使用 bibfilters 来否定 的测试refsegment。但严格来说,第一个测试可以在这个 MWE 中filter=onlymain,被替换。segment=0,

请注意,我们需要defernumbers在参考书目中使用连续编号选项(好吧,严格来说sorting=none,,在此设置中,这意味着defernumbers可能不是那么重要,但对于其他sorting选项来说,它很重要)。此选项可能需要比您习惯的更多次 LaTeX 运行。如果您得到奇怪的输出,请删除该.aux文件并重新运行 LaTeX、Biber、LaTeX、LaTeX、LaTeX。

\documentclass{article}

\usepackage[backend=biber,
            style=numeric-comp,
            firstinits=true,
            sorting=none,
            defernumbers,
            doi=false, eprint=false, url=false, isbn=false,]{biblatex}
\usepackage{hyperref}
\usepackage[capitalise]{cleveref}

\defbibfilter{onlymain}{%
  segment=0
}

\defbibfilter{onlymethods}{%
  not segment=0
}


\begin{filecontents}{\jobname.bib}
@book{horowitz1989art,
  title     = {The Art of Electronics},
  author    = {Horowitz, Paul and Hill, Winfield},
  year      = {1989},
  publisher = {Cambridge Univ. Press},
}
@online{DfE,
  author  = {{Department for Education}},
  title   = {Guidance for schools: coronavirus (COVID-19)},
  url     = {https://www.gov.uk/government/collections/guidance-for-schools-coronavirus-covid-19},
  urldate = {2020-07-24},
  year    = 2020,
}
@article{bloch2000measurement,
  title   = {Measurement of the Spatial Coherence
             of a Trapped {Bose} Gas at the Phase Transition},
  author  = {Bloch, Immanuel and Hänsch, Theodor W. and Esslinger, Tilman},
  journal = {Nature},
  volume  = {403},
  number  = {6766},
  pages   = {166--170},
  year    = {2000},
}
\end{filecontents}
\addbibresource{\jobname.bib}

\begin{document}

\section{Main Section}
Here is my reference for the main section: \autocite{horowitz1989art}.
\printbibliography[filter=onlymain, title={Main References}]

\subsection{Methods}
\begin{refsegment}
My references for the Methods are: \autocite{bloch2000measurement,horowitz1989art,DfE}.
\printbibliography[heading=subbibliography,filter=onlymethods,title={Methods References}]
\end{refsegment}

\end{document}

第一个参考书目包含条目 1,第二个参考书目包含条目 2 和 3。


在包含多个段的长文档中(甚至只有两个较长的段),列表可能有点难以导航,因为读者可能不知道在哪个参考列表中查找参考文献(他们必须记住每个参考文献列表的最后一个数字)。如果您添加

\newrefcontext[labelprefix=M]

\printbibliography[heading=subbibliography,filter=onlymethods,title={Methods References}]在之前方法部分。这样,您的读者就会得到一个简单的视觉提示,决定是否要查看。


总体而言,我发现作为读者,我更喜欢单一的全局参考书目,而不是几个较小的参考书目,原因很简单,一段时间后,我就能弄清楚全局参考书目在哪里,这样我就可以轻松地来回切换。如果有几个参考书目,我需要跳转到更多的地方。如果从参考文献本身(或周围环境,比如章节号)中无法明显看出我必须在哪里寻找参考文献,这尤其令人痛苦。(当然,其中一些问题可以通过超链接在一定程度上得到缓解,但它们在打印时不起作用,有时我甚至不想跳转到 PDF,所以我打开了两次文档:我将阅读一个版本,并在参考部分打开另一个版本,如果我不得不跳转几次,这会让我的工作流程变得更加困难。)

答案2

您不能嵌套refsection环境,但可以使用关键字创建引用子集,例如“AAA”和“BBB”,例如:

@book{horowitz1989art,
  title={The art of electronics},
  author={Horowitz, Paul and Hill, Winfield},
  keywords={AAA, whatever},
  year={1989},
  publisher={Cambridge Univ. Press}
}

然后,您只需要按关键字打印,而无需对引用进行排序:

\documentclass{article}
\usepackage[sorting=none]{biblatex}
\usepackage[colorlinks,citecolor=blue]{hyperref}
\addbibresource{bibliography_list.bib}

\begin{document}

\section{Main Section}

Here is my reference for the main section: \autocite{horowitz1989art}.

\printbibliography[title={Main References},keyword=AAA]

\subsection{Methods}

My references for the Methods are: \autocite{horowitz1989art,bloch2000measurement,DfE}.
\printbibliography[heading=subbibliography,title={Methods References},keyword=BBB]
\end{document}

结果:

姆韦

相关内容