按时间顺序排列参考书目

按时间顺序排列参考书目

不使用 biblatex,我希望我的参考书目按时间顺序排列。

我为什么要这样做?主要是因为我认为书目不仅可以作为参考文献的“存储库”,还可以显示该主题文献的进展。

我已经在网上搜索过,但主要结果是只能进行文内排序,或者无法修改 bibtex 风格的 bst 文件。

答案1

我对 bst 文件做了一些小修改。我只用作者年份样式 francaissc.bst 测试了它。

基本上,presort必须改变其功能。

无需输入太多有关 bst 文件的细节,只需了解进行这些修改的一件事:.sort 是必须定义的函数,例如author.editor.sort很可能已经以作者年份样式定义。

因此,首先要做的是添加这些功能:

FUNCTION {year.author.sort}
{ year empty$
    { author empty$
        { key empty$
            { "to sort, need year, author, or key in " cite$ * warning$
              ""
            }
            { key sortify }
          if$
        }
        { author sort.format.names }
      if$
    }
    { year sort.format.names }
  if$
}
FUNCTION {year.sort}
{ year empty$
    { key empty$
        { "to sort, need year or key in " cite$ * warning$
          ""
        }
        { key sortify }
      if$
    }
    { year sort.format.names }
  if$
}

它们非常简单,因为它们依赖于已经在其中定义的东西,主要是函数sort.format.names

然后,您必须修改presort函数本身。基本上,更改authoryear,但我让您判断您真正想要更改的内容。就我而言,我现在有(注释行是之前的内容,下一行是新内容):

FUNCTION {presort}
{ calc.label
  label sortify
  "    "
  *
  type$ "book" =
  type$ "inbook" =
  or
%    'author.editor.sort
     'year.author.sort
    { type$ "proceedings" =
%        'editor.sort
%        'author.sort
        'author.sort
        'year.sort
      if$
    }
  if$
  #1 entry.max$ substring$
  'sort.label :=
  sort.label
  *
  "    "
  *
%  title field.or.null
  year field.or.null
  sort.format.title
  *
  #1 entry.max$ substring$
  'sort.key$ :=
}

另外,使用 natbib 包的“排序”选项,文内引用现在也按时间顺序排列,因为主要参考书目是按时间顺序排列的。

答案2

包裹multibibliography http://www.ctan.org/pkg/multibibliography包括创建按时间顺序排列的参考列表。您可能只使用 Perl 脚本即可创建时间线参考列表。

目前,迈克尔科恩 (Michael Cohen) 和我正在研究该软件包的重构版本,其中将包括一个独立的时间顺序bst文件。

相关内容