不使用 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
函数本身。基本上,更改author
为year
,但我让您判断您真正想要更改的内容。就我而言,我现在有(注释行是之前的内容,下一行是新内容):
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
文件。