biblatex 多组作者,带有选项子条目

biblatex 多组作者,带有选项子条目

biblatex当我使用带有选项的命令来区分作者\mcite集合中的不同作者时,我注意到一些奇怪的事情。subentry如果我多次调用一个集合,第一次调用时子条目无法正常工作:我只得到 a),而不是 a)、b)...

以下是 MWE:

\documentclass{book}

\usepackage[utf8]{inputenc} 
\usepackage[T1]{fontenc}    

\usepackage{hyperref}   


\usepackage[citestyle=numeric,      
    bibstyle=numeric,       
    mcite=true,             
    subentry,               
    backend=biber           
    ]{biblatex}

    \addbibresource[datatype=bibtex]{./biblio.bib}


\begin{document}        
    This is some nice text I want to cite as a set\mcite{set1,*Boncella1984,*Tilley1982}.

    Another set cite\mcite{set2,*Tilley1982,*Boncella1984}.

    \printbibliography
\end{document}

和 bib 文件biblio.bib

@article{Boncella1984,
author = {Boncella, James M. and Andersen, Richard A.},
journal = {Inorg. Chem.},
pages = {432--437},
volume = {23},
year = {1984}
}

@article{Tilley1982,
author = {Tilley, T. Don and Andersen, Richard},
journal = {J. Am. Chem. Soc.},
pages = {1772--1774},
volume = {104},
year = {1982}
}

答案1

这可以被认为是一个错误,biblatex并被报告为https://github.com/plk/biblatex/issues/815,修复https://github.com/plk/biblatex/pull/822已合并并出现在biblatex3.12中

如果您遇到此问题,请考虑更新您的 TeX 发行版。以下答案仅供参考历史兴趣和背景信息。

仅当子条目在多个不同的(父)集合(在不同位置)中使用时,才会出现问题。为了使\cite{<child>}(例如\cite{Boncella1984},在下面的示例中\cite{sigfridsson})正常工作,在读取时需要为条目分配子条目信息.bbl。如果一个条目属于多个集合,则最后处理的集合获胜(因此\cite{Boncella1984}/\cite{sigfridsson}在引用中显示为 [2b] 而不是 [1a])。先验地不清楚什么应该在这种情况下会发生这种情况,所以我猜想“最后一组获胜”是一个不错的规则。然而,在参考书目中,孩子属于哪个组总是很清楚的,并且应该从当前组中获取数字。

这就是https://github.com/plk/biblatex/pull/822当在参考书目中处理设置的条目时,只需增加一个计数器即可实现。

在修复版本发布之前,您可以使用以下解决方法

\documentclass{article}
\usepackage[utf8]{inputenc} 
\usepackage[T1]{fontenc}    

\usepackage[style=numeric,
    mcite=true,
    subentry,
    backend=biber,
    ]{biblatex}

\usepackage{hyperref}

\makeatletter
\newcount\blx@entrysetcounter

\def\blx@entryset#1{%
  \blx@ifdata{#1}
    {\begingroup
     \blx@imc@clearlist{pageref}%
     \blx@getdata{#1}%
     \blx@setoptions@type\abx@field@entrytype
     \blx@setoptions@entry
     \global\blx@entrysetcounter\@ne
     \edef\abx@field@entrysetcount{\the\blx@entrysetcounter}%
     \blx@execute
     \blx@beglangbib
     \blx@begunit
     \blx@anchor
     \blx@entryset@precode
     \blx@driver{\blx@imc@thefield{entrytype}}%
     \blx@entryset@postcode
     \blx@endunit
     \blx@endlangbib
     \endgroup}
    {}%
  \let\do\blx@entryset@i}

\def\blx@entryset@i#1{%
  \blx@ifdata{#1}
    {\begingroup
     \blx@resetdata
     \blx@getdata{#1}%
     \blx@setoptions@type\abx@field@entrytype
     \blx@setoptions@entry
     \global\advance\blx@entrysetcounter\@ne
     \edef\abx@field@entrysetcount{\the\blx@entrysetcounter}%
     \addtocounter{instcount}\@ne
     \blx@execute
     \blx@beglangbib
     \blx@begunit
     \blx@anchor
     \blx@entryset@precode
     \blx@driver{\blx@imc@thefield{entrytype}}%
     \blx@entryset@postcode
     \blx@endunit
     \blx@endlangbib
     \endgroup}
    {\blx@nounit}}

\makeatother


\addbibresource{biblatex-examples.bib}

\begin{document}        
  This is some nice text I want to cite as a set\mcite{set1,*sigfridsson,*worman}.
  \cite{sigfridsson} and \cite{worman}

  Another set cite\mcite{set2,*worman,*sigfridsson}.
  \cite{sigfridsson} and \cite{worman}

  \printbibliography
\end{document}

在此处输入图片描述

相关内容