平均能量损失

平均能量损失

考虑这个例子:

\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宏的驱动程序。

我认为不会有任何副作用,但请仔细检查您使用的参考资料volumepart确保无误。

平均能量损失

\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}

MWE 输出

相关内容