我有一份文档,其中两篇论文具有相同的第一作者和相同的年份。在我当前的 bitex 样式文件中,论文按照年份和作者列出并编号,这通常很好,但在这个特定情况下,我希望根据它们的出现而不是第二作者列出两篇论文:
例子:
当前列表:
hqkjshdqksd qhsdqh by Peterson et al. (**2013b**), hdqkjshdkqjsdhsqd (Peterson et al. **2013a**).
参考:
Peterson, A. & **Meier**, B. **2013a** Second listed reference
Peterson, A. & **Umber**, B. **2013b** First listed reference
应该:
hqkjshdqksd qhsdqh by Peterson et al. (**2013a**), hdqkjshdkqjsdhsqd (Peterson et al. **2013b**).
参考:
Peterson, A. & **Umber**, B. **2013a** First listed reference
Peterson, A. & **Meier**, B. **2013b** Second listed reference
不确定如何实现这一点。由于文件是唯一的问题,所以尝试破解文件,但没有成功。认为它与、或预排序函数bibtex
之一有关(见下文)。提前谢谢!!sort.format.nales
author.sort
calc.label
FUNCTION {sort.format.names}
{ 's :=
#1 'nameptr :=
""
s num.names$ 'numnames :=
numnames 'namesleft :=
{ namesleft #0 > }
{ s nameptr
"{vv{ } }{ll{ }}{ f{ }}{ jj{ }}"
format.name$ 't :=
nameptr #1 >
{
nameptr #7
#1 + =
numnames #7
> and
{ "others" 't :=
#1 'namesleft := }
'skip$
if$
" " *
namesleft #1 = t "others" = and
{ "zzzzz" * }
{ t sortify * }
if$
}
{ t sortify * }
if$
nameptr #1 + 'nameptr :=
namesleft #1 - 'namesleft :=
}
while$
}
FUNCTION {author.sort}
{ author empty$
{ key empty$
{ "to sort, need author or key in " cite$ * warning$
""
}
{ key sortify }
if$
}
{ author sort.format.names }
if$
}
FUNCTION {calc.label}
{ calc.short.authors
short.list
"("
*
year duplicate$ empty$
short.list key field.or.null = or
{ pop$ "" }
'skip$
if$
*
'label :=
}
FUNCTION {presort}
{ calc.label
label sortify
" "
*
type$ "book" =
type$ "inbook" =
or
'author.editor.sort
{ type$ "proceedings" =
'editor.sort
'author.sort
if$
}
if$
#1 entry.max$ substring$
'sort.label :=
sort.label
*
" "
*
title field.or.null
sort.format.title
*
#1 entry.max$ substring$
'sort.key$ :=
}
梅威瑟:
\documentclass[english]{article}
\usepackage[authoryear]{natbib}
\usepackage{babel}
\begin{document}
hqkjshdqksd qhsdqh by \citet{Peterson2013},
hdqkjshdkqjsdhsqd \citep{Peterson2013a}.
\bibliographystyle{icesjms}
\bibliography{order_citations}
\end{document}
围兜文件:
@ARTICLE{Peterson2013a,
author = {Peterson, A and Meier, B. and Kensington, U},
title = {Second listed reference},
year = {2013},
owner = {robert},
timestamp = {2013.07.17}
}
@ARTICLE{Peterson2013,
author = {Peterson, A and Umber, B. and Kensington, U},
title = {First listed reference},
year = {2013},
owner = {robert},
timestamp = {2013.07.17}
}
答案1
非常感谢 Mico!\noopsort
完成了工作!
在.bib 文件中仅做了以下更改:
@PREAMBLE{ {\providecommand{\noopsort}[1]{}}
@ARTICLE{Peterson2013b,
author = {Peterson, A. and {\noopsort{b}}Meier, B. and Kensington, U},
title = {Second listed reference},
year = {2013},
owner = {robert},
timestamp = {2013.07.17}
}
@ARTICLE{Peterson2013a,
author = {Peterson, A. and {\noopsort{a}}Umber, B. and Kensington, U},
title = {First listed reference},
year = {2013},
owner = {robert},
timestamp = {2013.07.17}
}