我正在尝试在报告中添加“方法”部分,但无法按我想要的方式生成参考资料,因此希望得到一点帮助。到目前为止,输出的 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
refsection
s 始终保持完全独立,因此您无法轻易地在第 1 节中仅打印上一节中未引用的参考文献。还请注意,对于refsection
s,同一作品在不同的 中可能会获得不同的编号refsections
,因此您无论如何都不能省略参考书目中的条目,因为您的读者将无法正确识别来源。
我建议你使用refsegment
s。srefsegment
与 s 类似refsection
,但它们并不分开。相反,它们的作用或多或少像是一个附加关键字或类别分类:biblatex
可以通过 s 过滤书目refsegment
。
不幸的是,没有内置的“仅有的在这个refsegment
'-test 中。这必须手动构建。在您的 MWE 中,这相当简单,但如果您使用更多refsgement
s,它可能会变得有点复杂(因为您必须堆叠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}
在包含多个段的长文档中(甚至只有两个较长的段),列表可能有点难以导航,因为读者可能不知道在哪个参考列表中查找参考文献(他们必须记住每个参考文献列表的最后一个数字)。如果您添加
\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}
结果: