两篇具有相同作者和年份的论文的参考书目中缺少字母标识。(Natbib+BibTex+makebst)

两篇具有相同作者和年份的论文的参考书目中缺少字母标识。(Natbib+BibTex+makebst)

.bst使用 制作了一个自定义文件makebst。使用 时Natbib,我会得到两篇论文,这些论文属于同一年和同一作者,在引文中,一个字母将这两篇论文标识为“a”和“b”。遗憾的是,参考书目中没有添加任何字母。如果我将 更改为bibliographystyleplainnat我就会看到字母。希望有人能帮助我……

\documentclass{article}
\usepackage{natbib}
\usepackage{filecontents}
\begin{filecontents*}{\jobname.bib}
@misc{Hansen2015a,
author = {Hansen, Jens},
title = {Title One},
year = {2015}
}
@misc{Hansen2015b,
author = {Hansen, Jens},
title = {Title Two},
year = {2015}
}
\end{filecontents*}
\begin{document}
\citep{Hansen2015a} and~\citep{Hansen2015b} or \citep{Hansen2015a,Hansen2015b}.
\bibliographystyle{bibstyle}
%\bibliographystyle{plainnat}
\bibliography{\jobname}
\end{document}

BST 文件

自定义 bst 样式:

比比风格

PlainNat 风格:

平原

答案1

该问题与 有关extra.label,原始 bst 文件中缺少 。makebst现在,再次运行 并从新的 bst 文件中复制代码片段对我来说有效。

旧代码:

FUNCTION {format.date}
{
  month "month" bibinfo.check
  duplicate$ empty$
  year  "year"  bibinfo.check duplicate$ empty$
    { swap$ 'skip$
        { "there's a month but no year in " cite$ * warning$ }
      if$
      *
    }
    { swap$ 'skip$
        {
          swap$
          " " * swap$
        }
      if$
      *
    }
  if$
}

函数 {format.date} 的新 bst 代码

FUNCTION {format.date}
{ year "year" bibinfo.check duplicate$ empty$
    {
    }
    'skip$
  if$
  month "month" bibinfo.check duplicate$ empty$
    'skip$
    {
      " " * swap$
    }
  if$
  *
  extra.label *
  before.all 'output.state :=
  ", " swap$ *
}

相关内容