考虑这个例子:
\RequirePackage{filecontents}
\begin{filecontents}{Bibliography.bib}
@InCollection{Aut19,
author = {Author, J.},
booktitle = {Book Title},
date = {2019-08-26},
title = {Title},
part = {2},
}
\end{filecontents}
\documentclass{article}
\usepackage[backend=biber,style=ieee]{biblatex}
\addbibresource{Bibliography.bib}
\begin{document}
\nocite{*}
\printbibliography
\end{document}
结果包含(可能)格式不正确的part
字段:
它被打印为'。2',而在这种情况下,我认为它应该是“第 2 部分”、“第 2 部分”或只是“2”(不带前导句号)。
我是否需要一些额外的宏来获得适当的结果 - 或者也许这样的引用应该是这样的?
答案1
biblatex
假设部分与装订成两部分的卷有关。因此,对于第 2 卷第 1 部分和第 2 卷第 2 部分,您会得到“第 2.1 卷”和“第 2.2 卷”。它不处理作品只有一卷且包含两个部分的情况,因此您会忽略该卷。
biblatex
可以说,这是(和)中的一个错误biblatex-ieee
。
要解决这个问题,需要做三件事。
- 重新定义 的字段格式
part
。 - 重新定义
volume+part
宏。 - 修补
incollection
驱动程序,奇怪的是,它是唯一不使用volume+part
宏的驱动程序。
我认为不会有任何副作用,但请仔细检查您使用的参考资料volume
以part
确保无误。
平均能量损失
\RequirePackage{filecontents}
\begin{filecontents}{Bibliography.bib}
@InCollection{Aut19,
author = {Author, J.},
booktitle = {Book Title},
date = {2019-08-26},
title = {Title},
part = {2},
}
@InCollection{Aut18,
author = {Author, K.},
booktitle = {Another Book Title},
date = {2018-08-26},
title = {Another Title},
volume = {4},
part = {2},
}
\end{filecontents}
\documentclass{article}
\usepackage[style=ieee]{biblatex}
\addbibresource{Bibliography.bib}
\usepackage{xpatch}
\xpatchbibdriver{incollection}
{\printfield{volume}\printfield{part}}
{\usebibmacro{volume+part}}
{}
{}
\renewbibmacro*{volume+part}{%
\printfield{volume}%
\setunit*{\addperiod}%
\iffieldundef{volume}
{\printfield{part}}
{\printfield[default]{part}}}
\DeclareFieldFormat{part}{\bibstring{part}~#1}
\begin{document}
\nocite{*}
\printbibliography
\end{document}