jlucswthesis/scutthesis.bst
2022-03-29 18:48:21 +08:00

3576 lines
88 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

% Copyright (C) 2010-2011 by Alwin Tsui <alwintsui@gmail.com>
% Mar 31, 2011, Quansheng Guan <qshguan@gmail.com> 修改了会议文献的格式
%
% This file is part of the scutthesis package project.
% http://scutthesis.googlecode.com/
% ---------------------------------------------------
% This file may be distributed and/or modified under the
% conditions of the GNU General Public License v3
% of this license or (at your option) any later version.
%
% modified from seuthesis.bst and GBT7714-2005N.bst
%% 在begin.bib函数中输出\setlength{\itemsep}{1ex}设置每个entry的行距
%% article类型entry不用非标准的url
ENTRY
{ address
author
booktitle
chapter
edition
editor
howpublished
institution
journal
key
month
note
number
organization
pages
publisher
school
series
title
type
volume
year
url
TypeofLit %新加入:文献类型和标志代码
normalauthor %不改变大小写的作者
normaleditor %不改变大小写的编者
translator %新加入:翻译者
date %日期,公告日期,公开日期
modifydate %修改日期
citedate %引用日期
patentid %专利号
country %国家(主要用于专利中)
miscyear %其它类中用于输出年份
startyear %起始年
startvolume %起始卷
startnumber %起始期
endyear %终止年
endvolume %终止卷
endnumber %终止期
language %默认是英文文献,非空则表明是中文文献
}
{}
{ label extra.label sort.label short.list }
INTEGERS { output.state before.all mid.sentence after.sentence after.block }
FUNCTION {new.block}
{ output.state before.all =
'skip$
{ after.block 'output.state := }
if$
}
FUNCTION {remove.dots}
{
}
FUNCTION {tie.or.space.connect}
{ duplicate$ text.length$ #3 <
{ "~" }
{ " " }
if$
swap$ * *
}
FUNCTION {format.url}
{ url empty$
{ "" }
{ new.block
"\url{" url * "}" * }
if$
}
FUNCTION {init.state.consts}
{ #0 'before.all :=
#1 'mid.sentence :=
#2 'after.sentence :=
#3 'after.block :=
}
STRINGS { s t }
FUNCTION {output.nonnull}
{ 's :=
output.state mid.sentence =
{ ", " * write$ }
{ output.state after.block =
{ add.period$ write$
newline$
"\newblock " write$
}
{ output.state before.all =
'write$
{ add.period$ " " * write$ }
if$
}
if$
mid.sentence 'output.state :=
}
if$
s
}
FUNCTION {output}
{ duplicate$ empty$
'pop$
'output.nonnull
if$
}
FUNCTION {coutput.nonnull} %wk
{ 's :=
output.state mid.sentence =
{ "" * write$ } %
{ output.state after.block =
{ add.period$ write$
newline$
"\newblock " write$
}
{ output.state before.all =
'write$
{ add.period$ " " * write$ }
if$
}
if$
mid.sentence 'output.state :=
}
if$
s
}
FUNCTION {coutput} %wk
{ duplicate$ empty$
'pop$
'coutput.nonnull
if$
}
FUNCTION {output.check}
{ 't :=
duplicate$ empty$
{ pop$ "empty " t * " in " * cite$ * warning$ }
'output.nonnull
if$
}
FUNCTION {coutput.check} %wk
{ 't :=
duplicate$ empty$
{ pop$ "empty " t * " in " * cite$ * warning$ }
'coutput.nonnull
if$
}
FUNCTION {output.year.month.check}
{ year empty$
{ "empty year in " cite$ * warning$ }
{ add.period$ write$
month empty$
{ " " year * extra.label * "." *
after.sentence 'output.state :=
}
{ " " year * extra.label * " (" * month * ")." *
after.sentence 'output.state :=
}
if$
}
if$
}
FUNCTION {output.cyear.month.check} %wk
{ year empty$
{ "empty year in " cite$ * warning$ }
{write$
month empty$
{year %wk
after.sentence 'output.state :=
}
{ "" year * extra.label * "(" * month * ")" * %wk
after.sentence 'output.state :=
}
if$
}
if$
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
FUNCTION {output.modifydate.check}
{modifydate
}
FUNCTION {output.citedate.check}
{ year empty$
{ "" }
{ write$
"[" citedate * extra.label * "]" *
after.sentence 'output.state :=
}
if$
}
FUNCTION {output.year.check}
{ year empty$
{ "empty year in " cite$ * warning$ }
{year}
if$
}
FUNCTION {output.cyear.check} %wk
{ year empty$
{ "empty year in " cite$ * warning$ }
{miscyear empty$
{year}
{miscyear}
if$ %wk
}
if$
extra.label *
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
FUNCTION {output.continue.year.check} %wk
{
endyear empty$
{startyear empty$
{year empty$
{ "empty year in " cite$ * warning$ }
{"" year * "" * }
if$
}
{"" startyear * "-" * }
if$
}
{startyear empty$
{year empty$
{ "empty year in " cite$ * warning$ }
{"" year * "" * }
if$
}
{"" startyear * "-" *
"" endyear * "" * *
}
if$
}
if$
}
FUNCTION {output.continue.cyear.check} %wk
{
endyear empty$
{startyear empty$
{year empty$
{ "empty year in " cite$ * warning$ }
{"" year * "" * }
if$
}
{"" startyear * "-" * }
if$
}
{startyear empty$
{year empty$
{ "empty year in " cite$ * warning$ }
{"" year * "" * }
if$
}
{"" startyear * "-" *
"" endyear * "" * *
}
if$
}
if$
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
FUNCTION {output.article.year.check}
{month empty$
{
year empty$
{ "empty year in " cite$ * warning$ }
{year %wk
}
if$
}
{
TypeofLit empty$
{year empty$
{ "empty year in " cite$ * warning$ }
{year %wk
}
if$}
{year empty$
{ "empty year in " cite$ * warning$ }
{year %wk
"-" month * "" * *
}
if$
}
if$
}
if$
}
FUNCTION {output.carticle.year.check} %wk
{month empty$
{
year empty$
{ "empty year in " cite$ * warning$ }
{year %wk
}
if$
}
{
TypeofLit empty$
{year empty$
{ "empty year in " cite$ * warning$ }
{year %wk
}
if$}
{year empty$
{ "empty year in " cite$ * warning$ }
{year %wk
"-" month * "" * *
}
if$
}
if$
}
if$
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
FUNCTION {output.bibitem}
{ newline$
"\bibitem[" write$
label write$
"]{" write$
cite$ write$
"}" write$
newline$
""
before.all 'output.state :=
}
FUNCTION {fin.entry}
{ add.period$
write$
newline$
}
FUNCTION {new.sentence}
{ output.state after.block =
'skip$
{ output.state before.all =
'skip$
{ after.sentence 'output.state := }
if$
}
if$
}
FUNCTION {not}
{ { #0 }
{ #1 }
if$
}
FUNCTION {and}
{ 'skip$
{ pop$ #0 }
if$
}
FUNCTION {or}
{ { pop$ #1 }
'skip$
if$
}
FUNCTION {new.block.checkb}
{ empty$
swap$ empty$
and
'skip$
'new.block
if$
}
FUNCTION {field.or.null}
{ duplicate$ empty$
{ pop$ "" }
'skip$
if$
}
FUNCTION {boldface}
{ duplicate$ empty$
{ pop$ "" }
{ "{\bf " swap$ * "}" * }
if$
}
%FUNCTION {emphasize}
%{ duplicate$ empty$
% { pop$ "" }
% { "{\em " swap$ * "}" * }
% if$
%}
%%%%%%%%%%%%%%%%%%%
Function{upcase}
{ duplicate$ empty$
{ pop$ "" }
{ "\textsc{" swap$ * "}" * } %{ "\textsc{" swap$ * "}" * }
if$
}
FUNCTION {bib.name.font}
{ }
FUNCTION {bib.fname.font}
{ bib.name.font }
%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%
INTEGERS { nameptr namesleft numnames }
FUNCTION {capitalize}
{ "u" change.case$ "t" change.case$ }
FUNCTION {format.names}
{ 's :=
#1 'nameptr :=
s num.names$ 'numnames :=
numnames 'namesleft :=
{ namesleft #0 > }
{ s nameptr "{vv~}{ll}{ f{~}}{, jj}"
format.name$
remove.dots
't :=
nameptr #1 >
{
nameptr #3
#1 + =
numnames #3
> and
{ "others" 't :=
#1 'namesleft := }
'skip$
if$
namesleft #1 >
{ ", " * t * }
{ numnames #2 >
{ "" * }
'skip$
if$
s nameptr "{ll}" format.name$ duplicate$ "others" =
{ 't := }
{ pop$ }
if$
t "others" =
{bib.name.font %改为大写
", et al" *
}
{", " * t * }
if$
}
if$
}
't
if$
nameptr #1 + 'nameptr :=
namesleft #1 - 'namesleft :=
}
while$
%%%%%%%%%%%
t "others" = %改为大写
'skip$ %改为大写
{ bib.name.font } %改为大写
if$ %改为大写
%%%%%%%%%%%
}
FUNCTION {format.cnames} %wk
{ 's :=
#1 'nameptr :=
s num.names$ 'numnames :=
numnames 'namesleft :=
{ namesleft #0 > }
{ s nameptr "{vv~}{ll}{ f{~}}{ jj}" format.name$
remove.dots
't :=
nameptr #1 >
{
nameptr #3
#1 + =
numnames #3
> and
{ "others" 't :=
#1 'namesleft := }
'skip$
if$
namesleft #1 >
{ ", " * t * }
{ numnames #2 >
{ "" * }
'skip$
if$
s nameptr "{ll}" format.name$ duplicate$ "others" =
{ 't := }
{ pop$ }
if$
t "others" =
{ ",等" *
bib.name.font %改为大写
}
{", " * t * }
if$
}
if$
}
't
if$
nameptr #1 + 'nameptr :=
namesleft #1 - 'namesleft :=
}
while$
%%%%%%%%%%%
t "others" = %改为大写
'skip$ %改为大写
{ bib.name.font } %改为大写
if$ %改为大写
%%%%%%%%%%%
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%不加大写的名字
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
FUNCTION {format.normal.names}
{ 's :=
#1 'nameptr :=
s num.names$ 'numnames :=
numnames 'namesleft :=
{ namesleft #0 > }
{ s nameptr "{vv~}{ll}{ f{~}}{, jj}"
format.name$
remove.dots
't :=
nameptr #1 >
{
nameptr #3
#1 + =
numnames #3
> and
{ "others" 't :=
#1 'namesleft := }
'skip$
if$
namesleft #1 >
{ ", " * t * }
{ numnames #2 >
{ "" * }
'skip$
if$
s nameptr "{ll}" format.name$ duplicate$ "others" =
{ 't := }
{ pop$ }
if$
t "others" =
{ ", et al" * }
{", " * t * }
if$
}
if$
}
't
if$
nameptr #1 + 'nameptr :=
namesleft #1 - 'namesleft :=
}
while$
}
FUNCTION {format.normal.cnames} %wk
{ 's :=
#1 'nameptr :=
s num.names$ 'numnames :=
numnames 'namesleft :=
{ namesleft #0 > }
{ s nameptr "{vv~}{ll}{ f{~}}{ jj}" format.name$
remove.dots
't :=
nameptr #1 >
{
nameptr #3
#1 + =
numnames #3
> and
{ "others" 't :=
#1 'namesleft := }
'skip$
if$
namesleft #1 >
{ ", " * t * }
{ numnames #2 >
{ "" * }
'skip$
if$
s nameptr "{ll}" format.name$ duplicate$ "others" =
{ 't := }
{ pop$ }
if$
t "others" =
{ ",等" * }
{", " * t * }
if$
}
if$
}
't
if$
nameptr #1 + 'nameptr :=
namesleft #1 - 'namesleft :=
}
while$
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
FUNCTION {format.authors}
{ author empty$
{ "" }
{normalauthor empty$
{author format.names }
{normalauthor format.normal.names}
if$
}
if$
}
FUNCTION {format.cauthors} %wk
{ author empty$
{ "" }
{normalauthor empty$
{author format.cnames }
{normalauthor format.normal.cnames}
if$
}
if$
}
FUNCTION {format.key}
{ empty$
{ key field.or.null }
{ "" }
if$
}
FUNCTION {format.editors}
{ editor empty$
{ "" }
{normaleditor empty$
{editor format.names}
{normaleditor format.normal.names}
if$
editor num.names$ #1 > % Use ODWE abbrevs.
{ "" * } % to avoid
{ "" * } % ambiguity between
if$ % "editor" and
} % "edition".
if$
}
FUNCTION {format.ceditors} %wk 本函数
{ editor empty$
{ "" }
{
normaleditor empty$
{editor * "" * format.cnames }
{normaleditor * "" * format.normal.cnames}
if$
}
if$
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
FUNCTION {format.title} % Nothing needs
{ title empty$ % doing here in
{ "" } % authordate1.bst
{ title } % or
if$ % authordate3.bst.
}
FUNCTION {format.ctitle} %wk % Nothing needs
{ title empty$ % doing here in
{ "" } % authordate1.bst
{title} % or
if$ % authordate3.bst.
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
FUNCTION {format.article.title} % Nothing needs
{title empty$ % doing here in
{ "" } % authordate1.bst
{
typeoflit empty$
{format.title "[J]" * title output.check}
{format.title title output.check}
if$
}
if$
TypeofLit empty$
{""}
{ "[" TypeofLit * "]" * * }
if$
% authordate3.bst.
}
FUNCTION {format.carticle.title} % Nothing needs
{title empty$ % doing here in
{ "" } % authordate1.bst
{
typeoflit empty$
{format.title "[J]" * title output.check}
{format.title title output.check}
if$
}
if$
TypeofLit empty$
{""}
{ "[" TypeofLit * "]" * * }
if$
% authordate3.bst.
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
FUNCTION {format.book.title} % Nothing needs
{title empty$ % doing here in
{ "" } % authordate1.bst
{
typeoflit empty$
{format.title "[M]" * title output.check}
{format.title title output.check}
if$
}
if$
TypeofLit empty$
{""}
{ "[" TypeofLit * "]" * * }
if$
% authordate3.bst.
}
FUNCTION {format.cbook.title} %wk % Nothing needs
{title empty$ % doing here in
{ "" } % authordate1.bst
{
typeoflit empty$
{format.title "[M]" * title output.check}
{format.title title output.check}
if$
}
if$
TypeofLit empty$
{""}
{ "[" TypeofLit * "]" * * }
if$
% authordate3.bst.
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
FUNCTION {format.misc.title} %wk % Nothing needs
{
patentid empty$
{%没有专利号应该是其它类型文献,直接标准输出
title empty$ % doing here in
{ "" } % authordate1.bst
{
typeoflit empty$
{format.title "[缺文献类型标志代码]." * title output.check}
{format.title "[" * TypeofLit * "]" * title output.check}
if$
}
if$
""
}
{%有专利号
country empty$
{
title empty$ % doing here in
{ "" } % authordate1.bst
{
typeoflit empty$
{format.title "[缺文献类型标志代码]." * title output.check}
{format.title title output.check}
if$
}
if$
TypeofLit empty$
{""}
{ "[" TypeofLit * "]." * * }
if$
"" patentid * "" * *
}
{%有专利号,有国家
title empty$ % doing here in
{ "" } % authordate1.bst
{
typeoflit empty$
{format.title "[缺文献类型标志代码]." * title output.check}
{format.title title output.check}
if$
}
if$
"" country * "" * *
"" patentid * "" * *
TypeofLit empty$
{""}
{ "[" TypeofLit * "]." * * }
if$
}
if$
}
if$
}
FUNCTION {format.cmisc.title}
{
title empty$
{ "No Title" }
{
typeoflit empty$
{format.title "[缺文献类型标志代码]" * title output.check}
{format.title "[" * TypeofLit * "]" * title output.check}
if$
}
if$
""
}
FUNCTION {format.cmisc.title.xx}
{
patentid empty$
{%没有专利号应该是其它类型文献,直接标准输出
title empty$
{ "" }
{
typeoflit empty$
{format.title "[缺文献类型标志代码]." * title output.check}
{format.title title output.check}
if$
}
if$
}
{%有专利号
country empty$
{
title empty$
{ "" }
{
typeoflit empty$
{format.title "[缺文献类型标志代码]." * title output.check}
{format.title title output.check}
if$
}
if$
"" patentid * "" * *
}
{%有专利号,有国家
title empty$
{ "" }
{
typeoflit empty$
{format.title "[缺文献类型标志代码]." * title output.check}
{format.title title output.check}
if$
}
if$
"" country * "" * *
"" patentid * "" * *
}
if$
}
if$
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
FUNCTION {format.proceedings.title} % Nothing needs
{title empty$ % doing here in
{ "" } % authordate1.bst
{
typeoflit empty$
{format.title "[C]" * title output.check}
{format.title title output.check}
if$
}
if$
TypeofLit empty$
{""}
{ "[" TypeofLit * "]" * * }
if$
% authordate3.bst.
}
FUNCTION {format.cproceedings.title} % Nothing needs
{title empty$ % doing here in
{ "" } % authordate1.bst
{
typeoflit empty$
{format.title "[C]" * title output.check}
{format.title title output.check}
if$
}
if$
TypeofLit empty$
{""}
{ "[" TypeofLit * "]" * * }
if$
% authordate3.bst.
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
FUNCTION {format.incollection.title} % Nothing needs
{title empty$ % doing here in
{ "" } % authordate1.bst
{
typeoflit empty$
{format.title "[M]//" * title output.check}
{format.title "" * title output.check}
if$
}
if$
TypeofLit empty$
{""}
{ "[" TypeofLit * "]//" * * }
if$
% authordate3.bst.
}
FUNCTION {format.cincollection.title} % Nothing needs
{title empty$ % doing here in
{ "" } % authordate1.bst
{
typeoflit empty$
{format.title "[M]//" * title output.check}
{format.title "" * title output.check}
if$
}
if$
TypeofLit empty$
{""}
{ "[" TypeofLit * "]//" * * }
if$
% authordate3.bst.
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
FUNCTION {format.inproceedings.title}
{
title empty$
{ "No Title" }
{
typeoflit empty$
{format.title "[A]" * title output.check}
{format.title "[" * TypeofLit * "]" * title output.check}
if$
}
if$
""
}
FUNCTION {format.cinproceedings.title} % Nothing needs
{title empty$ % doing here in
{ "" } % authordate1.bst
{
typeoflit empty$
{format.title "[A]" * title output.check}
{format.title "" * title output.check}
if$
}
if$
TypeofLit empty$
{""}
{ "[" TypeofLit * "]" * * }
if$
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
FUNCTION {n.dashify}
{ 't :=
""
{ t empty$ not }
{ t #1 #1 substring$ "-" =
{ t #1 #2 substring$ "--" = not
{ "--" *
t #2 global.max$ substring$ 't :=
}
{ { t #1 #1 substring$ "-" = }
{ "-" *
t #2 global.max$ substring$ 't :=
}
while$
}
if$
}
{ t #1 #1 substring$ *
t #2 global.max$ substring$ 't :=
}
if$
}
while$
}
FUNCTION {format.btitle}
{ title empty$
{ "" } % Don't change case
{booktitle} % in
if$ % authordate1.bst
} % or
FUNCTION {format.cbtitle} %wk % Nothing needs
{ title empty$ % doing here in
{ "" } % authordate1.bst
{booktitle} % or
if$ % authordate3.bst.
}
% authordate3.bst.
FUNCTION {either.or.check}
{ empty$
'pop$
{ "can't use both " swap$ * " fields in " * cite$ * warning$ }
if$
}
INTEGERS { multiresult }
FUNCTION {multi.page.check}
{ 't :=
#0 'multiresult :=
{ multiresult not
t empty$ not
and
}
{ t #1 #1 substring$
duplicate$ "-" =
swap$ duplicate$ "," =
swap$ "+" =
or or
{ #1 'multiresult := }
{ t #2 global.max$ substring$ 't := }
if$
}
while$
multiresult
}
FUNCTION {format.pages}
{ pages empty$
{ "" }
{ pages multi.page.check
{ ":" pages n.dashify tie.or.space.connect * }
{ ":" pages tie.or.space.connect * }
if$
}
if$
}
FUNCTION {format.numberinseries}
{ number empty$
{ "" }
{ number multi.page.check
{ ", nos. " number n.dashify tie.or.space.connect }
{ ", no. " number tie.or.space.connect }
if$
}
if$
}
FUNCTION {format.cnumberinseries} %wk
{ number empty$
{ "" }
{ number multi.page.check
{ ", 第" number n.dashify tie.or.space.connect * "期"} %wk
{ ", 第" number tie.or.space.connect * "期"} %wk
if$
}
if$
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
FUNCTION {booklike.series.volume.number} % Chicago, pages
{ series empty$ % 450-451.
{ volume empty$
{ " " }
{ " Vol. " volume * }
if$
}
{
volume empty$
{ number empty$
{ series }
{ series format.numberinseries * }
if$
}
{ number empty$
{ series ", vol. " volume * * }
{ series ", vol. " * volume * format.numberinseries * }
if$
}
if$
}
if$
}
FUNCTION {cbooklike.series.volume.number.pages} %wk加入页码 % Chicago, pages %wk
{ series empty$ % 450-451.
{ volume empty$
{ pages empty$
'skip$
{ duplicate$ empty$
{ pop$ format.pages }
{ ":" * pages n.dashify * "" *} %wk 改为第页
if$
}
if$}
{ "卷" volume * }
if$
}
{
volume empty$
{ number empty$
{ series }
{ series format.numberinseries * }
if$
}
{ number empty$
{ series ",第" volume * "卷" * * }
{ series "卷" * volume * format.cnumberinseries * }
if$
}
if$
}
if$
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
FUNCTION {incollectionlike.series.volume.number.pages}
{
series empty$
{ volume empty$
{ pages empty$
{ "" }
{ duplicate$ empty$
{ pop$ format.pages }
{ ". " * pages n.dashify * ""}
if$
}
if$}
{ ". " volume * "" * *
pages empty$
{ "" }
{ duplicate$ empty$
{ pop$ format.pages }
{ ":" * pages n.dashify * ""}
if$
}
if$}
if$
}
{
new.block
volume empty$
{ number empty$
{ ". " * series * }
{ series format.numberinseries * }
if$
""
}
{ number empty$
{ ". " * series ", " * volume * * }
{ ". " * series ", " * volume * format.numberinseries * }
if$
pages empty$
{ "" }
{ duplicate$ empty$
{ pop$ format.pages }
{ ": " * pages n.dashify * "" }
if$
}
if$
}
if$
}
if$
}
FUNCTION {cincollectionlike.series.volume.number.pages} %wk
{ series empty$
{ volume empty$
{ pages empty$
'skip$
{ duplicate$ empty$
{ pop$ format.pages }
{ ":" * pages n.dashify * "" } %wk 改为第页
if$
}
if$}
{ ",第" volume * "卷" * *
pages empty$
'skip$
{ duplicate$ empty$
{ pop$ format.pages }
{ ":" * pages n.dashify * "" } %wk 改为第页
if$
}
if$}
if$
}
{ new.block
volume empty$
{ number empty$
{ series }
{ series format.numberinseries * }
if$
}
{ number empty$
{ series ", vol. " volume * * }
{ series ", vol. " * volume * format.numberinseries * }
if$
}
if$
}
if$
}
FUNCTION {format.TypeofLit} %wk 完全改写
{ TypeofLit empty$
{ "" }
{"[" TypeofLit * "]" *}
if$
}
FUNCTION {format.edition}
{ edition empty$
{
translator empty$
{ "" }
{"" translator * "translation" * }
if$
}
{
translator empty$
{edition}
{translator output
"translation." edition * "" * *}
if$
}
if$
}
FUNCTION {format.cedition} %wk 完全改写
{ edition empty$
{
translator empty$
{ "" }
{"" translator format.cnames * "译" *}
if$
}
{
translator empty$
{edition}
{translator format.cnames output
"译." edition * "" * }
if$
}
if$
}
FUNCTION {format.ctranslator} %wk 完全改写
{ translator empty$
{ "" }
{format.cnames "译" * "translator" output.check}
if$
}
FUNCTION {format.pagesinbook} % By the time the
{ pages empty$ % reader has read
{ "" } % address, pub'r,
{ pages multi.page.check % note (where the
{ ":" pages n.dashify tie.or.space.connect } % note may end with
{ ":" pages tie.or.space.connect } % numbers), s/he
if$ % may not recognise
} % a number-range as
if$ % meaning pages.
} % Avoid ambiguity
% (Butcher, p.181).
FUNCTION {format.cpagesinbook} % By the time the %wk
{ pages empty$ % reader has read
{ "" } % address, pub'r,
{ pages multi.page.check % note (where the
{ ":" * pages n.dashify tie.or.space.connect * "" } % note may end with
{ ":" * "Page " pages tie.or.space.connect * ""} % numbers), s/he
if$ % may not recognise
} % a number-range as
if$ % meaning pages.
} % Avoid ambiguity
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
FUNCTION {format.vol.num.date.pages} %wk
{volume empty$ %wk 被重新改过
'skip$ %wk 被重新改过
{volume %wk 被重新改过
} %wk 被重新改过
if$ %wk 被重新改过
number empty$ %wk 被重新改过
'skip$ %wk 被重新改过
{ "(" number * ")" * * %wk 被重新改过
volume empty$ %wk 被重新改过
{ "there's a number but no volume in " cite$ * warning$ } %wk 被重新改过
'skip$ %wk 被重新改过
if$ %wk 被重新改过
} %wk 被重新改过
if$ %wk 被重新改过
pages empty$
'skip$
{ duplicate$ empty$
{ pop$ format.pages }
{ ":" * pages n.dashify * "" } %wk 改为第页
if$
}
if$
}
FUNCTION {format.cvol.num.date.pages} %wk
{volume empty$ %wk 被重新改过
'skip$ %wk 被重新改过
{volume %wk 被重新改过
} %wk 被重新改过
if$ %wk 被重新改过
number empty$ %wk 被重新改过
'skip$ %wk 被重新改过
{ "(" number * ")" * * %wk 被重新改过
volume empty$ %wk 被重新改过
{ "there's a number but no volume in " cite$ * warning$ } %wk 被重新改过
'skip$ %wk 被重新改过
if$ %wk 被重新改过
} %wk 被重新改过
if$ %wk 被重新改过
pages empty$
'skip$
{ duplicate$ empty$
{ pop$ format.pages }
{ ":" * pages n.dashify * "" } %wk 改为第页
if$
}
if$
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
FUNCTION {format.article.vol.num.date.pages} %wk
{
volume empty$ %wk 被重新改过
'skip$ %wk 被重新改过
{volume %wk 被重新改过
} %wk 被重新改过
if$ %wk 被重新改过
number empty$ %wk 被重新改过
'skip$ %wk 被重新改过
{ "(" number * ")" * * %wk 被重新改过
volume empty$ %wk 被重新改过
{ "there's a number but no volume in " cite$ * warning$ } %wk 被重新改过
'skip$ %wk 被重新改过
if$ %wk 被重新改过
} %wk 被重新改过
if$ %wk 被重新改过
pages empty$
'skip$
{ duplicate$ empty$
{ pop$ format.pages }
{ ":" * pages n.dashify * "" } %wk 改为第页
if$
}
if$
}
FUNCTION {format.carticle.vol.num.date.pages} %wk
{
volume empty$ %wk 被重新改过
'skip$ %wk 被重新改过
{volume %wk 被重新改过
} %wk 被重新改过
if$ %wk 被重新改过
number empty$ %wk 被重新改过
'skip$ %wk 被重新改过
{ "(" number * ")" * * %wk 被重新改过
volume empty$ %wk 被重新改过
{ "there's a number but no volume in " cite$ * warning$ } %wk 被重新改过
'skip$ %wk 被重新改过
if$ %wk 被重新改过
} %wk 被重新改过
if$ %wk 被重新改过
pages empty$
'skip$
{ duplicate$ empty$
{ pop$ format.pages }
{ ":" * pages n.dashify * "" } %wk 改为第页
if$
}
if$
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
FUNCTION {format.book.continue.vol.num} %wk
{
startyear empty$
'skip$
{"." startyear * "" * *
startvolume empty$ %wk 被重新改过
'skip$ %wk 被重新改过
{"," startvolume * "" * *} %wk 被重新改过
if$
%wk 被重新改过
startnumber empty$ %wk 被重新改过
'skip$ %wk 被重新改过
{ "(" startnumber * ")-" * * } %wk 被重新改过
if$ %wk 被重新改过
} %wk 被重新改过
if$
%wk 被重新改过
endyear empty$
'skip$
{"" endyear * "" * *
endvolume empty$ %wk 被重新改过
'skip$ %wk 被重新改过
{"," endvolume * "" * *} %wk 被重新改过
if$
%wk 被重新改过
endnumber empty$ %wk 被重新改过
'skip$ %wk 被重新改过
{ "(" endnumber * ")" * * } %wk 被重新改过
if$ %wk 被重新改过
} %wk 被重新改过
if$
}
FUNCTION {format.cbook.continue.vol.num} %wk
{
startyear empty$
'skip$
{"." startyear * "" * *
startvolume empty$ %wk 被重新改过
'skip$ %wk 被重新改过
{"," startvolume * "" * *} %wk 被重新改过
if$
%wk 被重新改过
startnumber empty$ %wk 被重新改过
'skip$ %wk 被重新改过
{ "(" startnumber * ")-" * * } %wk 被重新改过
if$ %wk 被重新改过
} %wk 被重新改过
if$
%wk 被重新改过
endyear empty$
'skip$
{"" endyear * "" * *
endvolume empty$ %wk 被重新改过
'skip$ %wk 被重新改过
{"," endvolume * "" * *} %wk 被重新改过
if$
%wk 被重新改过
endnumber empty$ %wk 被重新改过
'skip$ %wk 被重新改过
{ "(" endnumber * ")" * * } %wk 被重新改过
if$ %wk 被重新改过
} %wk 被重新改过
if$
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
FUNCTION {format.date.modifydate.citedate} %wk
{
date empty$ %wk 被重新改过
'skip$ %wk 被重新改过
{date %wk 被重新改过
} %wk 被重新改过
if$ %wk 被重新改过
modifydate empty$ %wk 被重新改过
'skip$ %wk 被重新改过
{ "(" modifydate * ")" * * %wk 被重新改过
date empty$ %wk 被重新改过
{ "" cite$ * warning$ } %wk 被重新改过
'skip$ %wk 被重新改过
if$ %wk 被重新改过
} %wk 被重新改过
if$
citedate empty$ %wk 被重新改过
'skip$ %wk 被重新改过
{ "[" citedate * "]" * * %wk 被重新改过
date empty$ %wk 被重新改过
{ "" cite$ * warning$ } %wk 被重新改过
'skip$ %wk 被重新改过
if$ %wk 被重新改过
} %wk 被重新改过
if$
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
FUNCTION {format.chapter.pages.inbook}
{ chapter empty$
'format.pagesinbook
{ type empty$
{ "Chap." }
{ type }
if$
chapter tie.or.space.connect
pages empty$
'skip$
{ ", " * format.pagesinbook "l" change.case$ * }
if$
}
if$
}
FUNCTION {format.cchapter.pages.inbook}
{chapter empty$ %wk 被重新改过
'skip$ %wk 被重新改过
{ ",第" chapter * "章" * * %wk 被重新改过
} %wk 被重新改过
if$ %wk 被重新改过
pages empty$
'skip$
{ duplicate$ empty$
{ pop$ format.pages }
{ ":" * pages n.dashify * "" } %wk 改为第页
if$
}
if$
}
FUNCTION {format.chapter.pages.incoll}
{ chapter empty$
{ pages empty$
{ "In " }
{ "{\em " format.pagesinbook " of:} " * * }
if$
}
{ type empty$
{ "{\em Chap. " chapter * }
{ "{\em " type * " " * chapter * }
if$
pages empty$
{ " of:} " * }
{ ", " * format.pagesinbook "l" change.case$ " of:} " * * }
if$
}
if$
}
FUNCTION {format.cchapter.pages.incoll} %wk
{ chapter empty$
{ pages empty$
{ "" }
{ "第" format.pagesinbook "章" * * }
if$
}
{ type empty$
{ "第" chapter * "章" * * }
{ "" type * "" * chapter * }
if$
pages empty$
{ "" * }
{ ":" * format.pagesinbook "l" change.case$ "" * * }
if$
}
if$
}
FUNCTION {format.in.ed.booktitle}
{ booktitle empty$
{ "[No booktitle]" }
{ editor empty$
new.block
{ "In: " format.editors * booktitle "[C]" * * }
{ "In: " format.editors * ", eds. " * booktitle "[C]" * * }
if$
}
if$
}
FUNCTION {format.in.ced.booktitle}
{ booktitle empty$
{ "" }
{ editor empty$
new.block
{ "见: " format.ceditors * booktitle "[C]" * * }
{ "见: " format.ceditors * " 主编. " * booktitle "[C]" * * }
if$
}
if$
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%55
FUNCTION {format.in.proceedings.booktitle}
{ booktitle empty$
{ "" }
{format.btitle "booktitle" output.check }
if$
}
FUNCTION {format.in.cproceedings.booktitle} % Achieves effect %wk
{ booktitle empty$ % shown in 16.51
{ "" } % of Chicago, at
{ format.cbtitle "booktitle" output.check }
if$ % 4.4 of BS 1629.
% Don't change
}
FUNCTION {format.thesis.type}
{ type empty$
'skip$
{ pop$
type % Don't change
} % case.
if$
}
FUNCTION {format.tr.number}
{ type empty$
{ "Tech. rept." } % ODWE abbrevs.
'type
if$
number empty$
{ } % Whatever was
{ number tie.or.space.connect } % having its case
if$ % changed, leave
} % it alone.
FUNCTION {format.addr.pub}
{ publisher empty$
{address empty$
{ ".[S.l.]: [s.n.] " *}
{ address ": [s.n.] " * }
if$
}
{ address empty$
{ ".[S.l.]: " * }
{ address ": " * }
if$
publisher *
}
if$
}
FUNCTION {format.caddr.pub}
{publisher empty$
{address empty$
{ ".[出版地不详][出版者不详]" *}
{ address ":[出版者不详]" * }
if$
}
{ address empty$
{ ".[出版地不详]" * }
{ address ": " * }
if$
publisher *
}
if$
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
FUNCTION {format.addr.institution}
{ institution empty$
{address empty$
{ ".[S.l.]: [s.n.] " *}
{ address ": [s.n.] " * }
if$
}
{ address empty$
{ ".[S.l.]: " * }
{ address ": " * }
if$
institution *
}
if$
}
FUNCTION {format.caddr.institution}
{institution empty$
{address empty$
{ ".[地址不详][机构不详]" *}
{ address ":[机构不详]" * }
if$
}
{ address empty$
{ ".[地址不详]" * }
{ address ": " * }
if$
institution *
}
if$
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
FUNCTION {format.school.pub}
{ school empty$
{address empty$
{ "[S.l.]: [s.n.] " }
{ address ": [s.n.] " * }
if$
}
{ address empty$
{ ".[S.l.]: " * }
{ address ": " * }
if$
school *
}
if$
}
FUNCTION {format.cschool.pub}
{school empty$
{address empty$
{ "[地址不详][学校不详]" }
{ address ":[学校不详]" * }
if$
}
{ address empty$
{ ".[学校不详]" * }
{ address ": " * }
if$
school *
}
if$
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
FUNCTION {format.inproceedings.addr.pub}
{
TypeofLit empty$
{publisher empty$
{address empty$
{ ".[S.l.]: [s.n.] " }
{ address ": [s.n.] " * }
if$
}
{ address empty$
{ ".[S.l.]: " * }
{ address ": " * }
if$
publisher *
}
if$}
{ "" }
if$
}
FUNCTION {format.inproceedings.addr}
{
TypeofLit empty$
{publisher empty$
{address empty$
{ "" * } %{ ".[S.l.]: [s.n.] " }
{ "" address * }
if$
}
{ address empty$
{ "" }%{ ".[S.l.]: " * }
{ address ": " * }
if$
publisher *
}
if$}
{ "" }
if$
}
FUNCTION {format.cinproceedings.addr.pub}
{
TypeofLit empty$
{publisher empty$
{address empty$
{ ".[出版地不详][出版者不详]" }
{ address ":[出版者不详]" * }
if$
}
{ address empty$
{ ".[出版地不详]" * }
{ address ": " * }
if$
publisher *
}
if$}
{ ""}
if$
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
FUNCTION {format.misc.addr.pub}
{ publisher empty$
{address empty$
{ "" }
{ address ": [s.n.] " * }
if$
}
{ address empty$
{ "[S.l.]: " * }
{ address ": " * }
if$
publisher *
}
if$
}
FUNCTION {format.cmisc.addr.pub}
{publisher empty$
{address empty$
{ "" }
{ address ":[出版者不详]" * }
if$
}
{ address empty$
{ "[出版地不详]" * }
{ address ": " * }
if$
publisher *
}
if$
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
FUNCTION {format.addr.pub.org} % If there's an
{ address empty$ % an organization
{ "[S.l.]:" * publisher * ", for " * organization * } % and a publisher
{ address ": " * publisher * ", for " * organization * } % too.
if$
}
FUNCTION {format.addr.inst}
{ address empty$
{ institution empty$
{ "[S.l.]" }
{ "[S.l.]" * institution }
if$
}
{ institution empty$
{ "" }
{ institution ", " * }
if$
address *
}
if$
}
FUNCTION {format.addr.org}
{ address empty$
{ organization empty$
{ "" }
{ organization }
if$
}
{ organization empty$
{ "" }
{ organization ", " * }
if$
address *
}
if$
}
FUNCTION {format.article.crossref}
{ "In "
" \cite{" * crossref * "}" *
}
FUNCTION {format.book.crossref}
{ volume empty$
{ "empty volume in " cite$ * "'s crossref of " * crossref * warning$
"In "
}
{ " Vol." volume tie.or.space.connect
" of " *
}
if$
"\cite{" * crossref * "}" *
}
FUNCTION {format.incoll.inproc.crossref}
{ "In "
" \cite{" * crossref * "}" *
}
FUNCTION {article}
{language empty$
{ output.bibitem
format.authors "author" output.check
author format.key output
new.block
format.article.title output
new.block
crossref missing$
{ journal % Don't change
"journal" output.check % case.
output.article.year.check output
format.article.vol.num.date.pages output
format.date.modifydate.citedate output
}
{ format.article.crossref output.nonnull
format.pages output
}
if$
%new.block
%format.url output
new.block
note output
fin.entry
}
%FUNCTION {carticle} %wk 本函数
{ output.bibitem
format.cauthors "author" output.check
author format.key output
new.block
format.carticle.title output
new.block
crossref missing$
{journal % Don't change %wk
"journal" output.check % case.
output.carticle.year.check output %wk
format.carticle.vol.num.date.pages output %wk
format.date.modifydate.citedate output
new.block
}
{ format.article.crossref output.nonnull
format.pages output
}
if$
new.block
format.url output
new.block
note output
fin.entry
}
if$
}
FUNCTION {book}
{language empty$
{
output.bibitem
author empty$
{
format.editors "author and editor" output.check
editor format.key output
}
{
format.authors output.nonnull
crossref missing$
{ "author and editor" editor either.or.check }
'skip$
if$
}
if$
new.block
format.book.title output
new.block
crossref missing$
{
format.edition output
new.block
format.book.continue.vol.num %ouput
booklike.series.volume.number output
new.block
format.addr.pub "publisher" output.check
output.continue.year.check %ouput
format.date.modifydate.citedate output
format.pages output
}
{ format.book.crossref output.nonnull
}
if$
new.block
format.url output
new.block
note output
fin.entry
}
%FUNCTION {cbook} %wk
{ output.bibitem
author empty$
{
format.ceditors "author and editor" output.check
editor format.key output
}
{ format.cauthors output.nonnull
crossref missing$
{"author and editor" editor either.or.check }
'skip$
if$
}
if$
new.block
format.cbook.title output %wk
new.block
crossref missing$
{
format.cedition output
new.block
format.cbook.continue.vol.num
new.block
format.caddr.pub "publisher" output.check
output.continue.cyear.check
cbooklike.series.volume.number.pages output
format.date.modifydate.citedate %output
}
{
format.book.crossref output.nonnull
}
if$
new.block
format.url output
new.block
note output
fin.entry
}
if$
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%未处理
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
FUNCTION {booklet}
{language empty$
{ output.bibitem
format.authors output
author format.key output
output.year.month.check
new.block
format.btitle "title" output.check
new.block
howpublished output
address output
output.year.check
new.block
format.url output
new.block
note output
fin.entry
}
%FUNCTION {cbooklet} %wk
{ output.bibitem
format.cauthors output %wk
author format.key output
format.btitle "title" output.check %wk
new.block
howpublished output
address output
output.cyear.month.check %wk
new.block
format.url output
new.block
note output
fin.entry
}
if$
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
FUNCTION {inbook}
{language empty$
{ output.bibitem
author empty$
{ format.editors "author and editor" output.check
editor format.key output
}
{ format.authors output.nonnull
crossref missing$
{ "author and editor" editor either.or.check }
'skip$
if$
}
if$
new.block
format.book.title output
new.block
crossref missing$
{ format.edition output
booklike.series.volume.number output
new.block
format.addr.pub "publisher" output.check
output.year.check output
format.date.modifydate.citedate output
format.pages output
}
{ format.book.crossref output.nonnull
}
if$
new.block
format.url output
new.block
note output
fin.entry
}
%FUNCTION {cinbook} %wk
{ output.bibitem
author empty$
{ format.ceditors "author and editor" output.check %wk format.editors->format.ceditors
editor format.key output
}
{ format.cauthors output.nonnull
crossref missing$
{"author and editor" editor either.or.check }
'skip$
if$
}
if$
new.block
format.cbook.title output %wk
new.block
crossref missing$
{
format.cedition output %wk edition->cedition
new.block
format.caddr.pub "publisher" output.check
output.cyear.check %wk
cbooklike.series.volume.number.pages output
format.date.modifydate.citedate output
}
{ format.book.crossref output.nonnull
}
if$
new.block
format.url output
new.block
note output
fin.entry
}
if$
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
FUNCTION {incollection} %wk
{language empty$
{ output.bibitem
author empty$
{ format.editors "editor" output.check %wk format.editors->format.ceditors
editor format.key output }
{ format.authors "author" output.check %wk
author format.key output }
if$
new.block
format.incollection.title output
crossref missing$ % Chapter and/or
{
format.in.ed.booktitle output % page numbers can
format.edition output % come out via this %wk edition->cedition
new.block
format.addr.pub "publisher" output.check
output.year.check
incollectionlike.series.volume.number.pages output % route, too.
format.date.modifydate.citedate output
}
{ format.incoll.inproc.crossref output.nonnull
new.block
}
if$
format.url output
new.block
note output
fin.entry
}
%FUNCTION {cincollection} %wk
{ output.bibitem
author empty$
{ format.ceditors "editor" output.check %wk format.editors->format.ceditors
editor format.key output }
{ format.cauthors "author" output.check %wk
author format.key output }
if$
new.block
format.cincollection.title output
crossref missing$ % Chapter and/or
{ format.in.ced.booktitle output % page numbers can
format.cedition output % come out via this %wk edition->cedition
new.block
format.caddr.pub "publisher" output.check
output.cyear.check output
cincollectionlike.series.volume.number.pages output % route, too.
format.date.modifydate.citedate output
}
{ format.incoll.inproc.crossref output.nonnull
new.block
}
if$
new.block
format.url output
new.block
note output
fin.entry
}
if$
}
FUNCTION {seu.publisher}
{
publisher empty$
{
school empty$
'skip$
{ format.school.pub "publisher" output.check }
if$
}
{ format.misc.addr.pub "publisher" output.check }
if$
""
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%图书book和
%会议录inproceedings(会议conference与inproceedings一样)
%文献类型代码[C]
%硕士学位论文mastersthesis
%文献类型代码[D]
%博士学位论文phdthesis
%文献类型代码[D]
%技术报告techreport的类型是一样的
%文献类型代码[R]
%
%因此我们直接拷贝book的相关内容即可。
%原始部分可以参考authordate1.bst。
%
%利用misc作为电子文献EB/OL所使用的类型
%存在的问题无法正常调用url只能利用note来生成。
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
FUNCTION {inproceedings} %wk 改自incollection类型
{language empty$
{ output.bibitem
author empty$
{ format.editors "editor" output.check
editor format.key output }
{ format.authors "author" output.check %wk
author format.key output }
if$
new.block
format.inproceedings.title output
crossref missing$
{
format.in.ed.booktitle output
format.edition output
new.block
%seu.publisher
format.inproceedings.addr output % added by Quansheng Guan
output.year.check
incollectionlike.series.volume.number.pages output
format.date.modifydate.citedate output
}
{
format.incoll.inproc.crossref output.nonnull
new.block
}
if$
format.url output
new.block
note output
fin.entry
}
%FUNCTION {cinproceedings} %wk 改自incollection类型
{ output.bibitem
author empty$
{ format.ceditors "editor" output.check %wk format.editors->format.ceditors
editor format.key output }
{ format.cauthors "author" output.check %wk
author format.key output }
if$
new.block
format.cinproceedings.title output
crossref missing$ % Chapter and/or
{ format.in.ced.booktitle output % page numbers can
format.cedition output % come out via this %wk edition->cedition
new.block
format.cinproceedings.addr.pub "publisher" output.check
output.cyear.check
cincollectionlike.series.volume.number.pages output % route, too.
format.date.modifydate.citedate output
}
{ format.incoll.inproc.crossref output.nonnull
new.block
}
if$
new.block
format.url output
new.block
note output
fin.entry
}
if$
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
FUNCTION {conference} { inproceedings }
%FUNCTION {cconference} { cinproceedings }
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
FUNCTION {TECHREPORT} %wk 改自book类型
{language empty$
{ output.bibitem
author empty$
{ format.editors "author and editor" output.check
editor format.key output
}
{ format.authors output.nonnull
crossref missing$
{ "author and editor" editor either.or.check }
'skip$
if$
}
if$
new.block
format.title "[R]" * "title" output.check
new.block
crossref missing$
{ format.edition output
booklike.series.volume.number output
new.block
format.addr.institution "publisher" output.check
output.year.check output
format.pages output
}
{ format.book.crossref output.nonnull
}
if$
new.block
format.url output
new.block
note output
fin.entry
}
%FUNCTION {cTECHREPORT} %wk 改自book类型
{ output.bibitem
author empty$
{ format.ceditors "author and editor" output.check %wk format.editors->format.ceditors
editor format.key output
}
{ format.cauthors output.nonnull
crossref missing$
{"author and editor" editor either.or.check }
'skip$
if$
}
if$
new.block
format.ctitle "[R]" * "title" output.check %wk
new.block
crossref missing$
{
format.cedition output %wk edition->cedition
new.block
format.caddr.institution "publisher" output.check
output.cyear.check %wk
cbooklike.series.volume.number.pages output
}
{ format.book.crossref output.nonnull
}
if$
new.block
format.url output
new.block
note output
fin.entry
}
if$
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
FUNCTION {mastersthesis} %wk 改自book类型
{language empty$
{ output.bibitem
author empty$
{ format.editors "author and editor" output.check
editor format.key output
}
{ format.authors output.nonnull
crossref missing$
{ "author and editor" editor either.or.check }
'skip$
if$
}
if$
new.block
format.title "[D]:[Master's Thesis]" * "title" output.check
new.block
crossref missing$
{ format.edition output
booklike.series.volume.number output
new.block
% format.addr.pub "publisher" output.check
format.school.pub "publisher" output.check
output.year.check output
format.pages output
}
{ format.book.crossref output.nonnull
}
if$
new.block
format.url output
new.block
note output
fin.entry
}
%FUNCTION {cmastersthesis} %wk 改自book类型
{ output.bibitem
author empty$
{ format.ceditors "author and editor" output.check %wk format.editors->format.ceditors
editor format.key output
}
{ format.cauthors output.nonnull
crossref missing$
{"author and editor" editor either.or.check }
'skip$
if$
}
if$
new.block
format.ctitle "[D]:[硕士学位论文]" * "title" output.check %wk
new.block
crossref missing$
{
format.cedition output %wk edition->cedition
new.block
% format.caddr.pub "publisher" output.check
format.cschool.pub "publisher" output.check
output.cyear.check %wk
cbooklike.series.volume.number.pages output
}
{ format.book.crossref output.nonnull
}
if$
new.block
format.url output
new.block
note output
fin.entry
}
if$
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
FUNCTION {phdthesis} %wk 改自book类型
{language empty$
{ output.bibitem
author empty$
{ format.editors "author and editor" output.check
editor format.key output
}
{ format.authors output.nonnull
crossref missing$
{ "author and editor" editor either.or.check }
'skip$
if$
}
if$
new.block
format.title "[D]:[PhD Thesis]" * "title" output.check
new.block
crossref missing$
{ format.edition output
booklike.series.volume.number output
new.block
% format.addr.pub "publisher" output.check
format.school.pub "publisher" output.check
output.year.check output
format.pages output
}
{ format.book.crossref output.nonnull
}
if$
new.block
format.url output
new.block
note output
fin.entry
}
%FUNCTION {cphdthesis} %wk 改自book类型
{ output.bibitem
author empty$
{ format.ceditors "author and editor" output.check %wk format.editors->format.ceditors
editor format.key output
}
{ format.cauthors output.nonnull
crossref missing$
{"author and editor" editor either.or.check }
'skip$
if$
}
if$
new.block
format.ctitle "[D]:[博士学位论文]" * "title" output.check %wk
new.block
crossref missing$
{
format.cedition output %wk edition->cedition
new.block
% format.caddr.pub "publisher" output.check
format.cschool.pub "publisher" output.check
output.cyear.check %wk
cbooklike.series.volume.number.pages output
}
{ format.book.crossref output.nonnull
}
if$
new.block
format.url output
new.block
note output
fin.entry
}
if$
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
FUNCTION {format.conference.title}
{
}
FUNCTION {proceedings} %改自book类型
{language empty$
{ output.bibitem
author empty$
{ format.editors "author and editor" output.check
editor format.key output
}
{ format.authors output.nonnull
crossref missing$
{ "author and editor" editor either.or.check }
'skip$
if$
}
if$
new.block
format.conference.title output
new.block
crossref missing$
{ format.edition output
booklike.series.volume.number output
new.block
format.addr.pub "publisher" output.check
output.year.check output
format.date.modifydate.citedate output
format.pages output
}
{ format.book.crossref output.nonnull
}
if$
new.block
format.url output
new.block
note output
fin.entry
}
%FUNCTION {cproceedings} %改自book类型
{ output.bibitem
author empty$
{ format.ceditors "author and editor" output.check %wk format.editors->format.ceditors
editor format.key output
}
{ format.cauthors output.nonnull
crossref missing$
{"author and editor" editor either.or.check }
'skip$
if$
}
if$
new.block
%format.cconference.title output %wk
output
new.block
crossref missing$
{
format.cedition output %wk edition->cedition
new.block
format.caddr.pub "publisher" output.check
output.cyear.check %wk
cbooklike.series.volume.number.pages output
format.date.modifydate.citedate output
}
{ format.book.crossref output.nonnull
}
if$
new.block
format.url output
new.block
note output
fin.entry
}
if$
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
FUNCTION {manual} %改自book类型
{language empty$
{ output.bibitem
author empty$
{ format.editors "author and editor" output.check
editor format.key output
}
{ format.authors output.nonnull
crossref missing$
{ "author and editor" editor either.or.check }
'skip$
if$
}
if$
new.block
format.title "[G]" * "title" output.check % 资料汇编
new.block
crossref missing$
{ format.edition output
booklike.series.volume.number output
new.block
seu.publisher output
format.url output
output.year.check output
format.pages output
}
{ format.book.crossref output.nonnull
}
if$
new.block
note output
fin.entry
}
%FUNCTION {cmanual} %wk
{ output.bibitem
author empty$
{ format.ceditors "author and editor" output.check %wk format.editors->format.ceditors
editor format.key output
}
{ format.cauthors output.nonnull
crossref missing$
{"author and editor" editor either.or.check }
'skip$
if$
}
if$
new.block
format.ctitle "[G]" * "title" output.check %wk
new.block
crossref missing$
{ format.cedition output %wk edition->cedition
new.block
format.caddr.pub "publisher" output.check
output.cyear.check %wk
cbooklike.series.volume.number.pages output
}
{ format.book.crossref output.nonnull
}
if$
new.block
note output
fin.entry
}
if$
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
FUNCTION {misc} %作为非常规文献的格式可靠性低应该仔细检查改自book类型
{language empty$
{ output.bibitem
author empty$
{ format.editors "author and editor" output.check
editor format.key output
}
{
format.authors output.nonnull
crossref missing$
{ "author and editor" editor either.or.check }
'skip$
if$
}
if$
new.block
format.misc.title output
new.block
crossref missing$
{
format.edition output
booklike.series.volume.number output
new.block
seu.publisher output
format.url output
output.year.check output
%format.date.modifydate.citedate output
% format.pages output
}
{ format.book.crossref output.nonnull
}
if$
new.block
note output
fin.entry
}
%FUNCTION {cmisc} %作为非常规文献的格式可靠性低应该仔细检查改自book类型
{ output.bibitem
author empty$
{ format.ceditors "author and editor" output.check %wk format.editors->format.ceditors
editor format.key output
}
{ format.cauthors output.nonnull
crossref missing$
{"author and editor" editor either.or.check }
'skip$
if$
}
if$
new.block
format.cmisc.title output
new.block
crossref missing$
{
format.cedition output
new.block
seu.publisher output
output.cyear.check
%cbooklike.series.volume.number.pages output
format.date.modifydate.citedate output
}
{ format.book.crossref output.nonnull
}
if$
new.block
format.url output
new.block
note output
fin.entry
}
if$
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
FUNCTION {unpublished}
{language empty$
{ output.bibitem
format.authors "author" output.check
author format.key output
output.year.month.check
new.block
format.btitle "title" output.check
new.block
note "note" output.check
fin.entry
}
%FUNCTION {cunpublished} %wk
{ output.bibitem
format.cauthors "author" output.check %wk
author format.key output
output.cyear.month.check %wk
new.block
format.ctitle "title" output.check %wk
new.block
note "note" output.check
fin.entry
}
if$
}
FUNCTION {default.type} { book } %wk 因为主要是基于book类型,因此将缺省类型由misc改为book
MACRO {jan} {"Jan."} % ODWE, "months", &
% Chicago, p. 383.
MACRO {feb} {"Feb."}
MACRO {mar} {"Mar."}
MACRO {apr} {"Apr."}
MACRO {may} {"May"}
MACRO {jun} {"June"}
MACRO {jul} {"July"}
MACRO {aug} {"Aug."}
MACRO {sep} {"Sept."}
MACRO {oct} {"Oct."}
MACRO {nov} {"Nov."}
MACRO {dec} {"Dec."}
MACRO {acmcs} {"ACM Computing Surveys"}
MACRO {acta} {"Acta Informatica"}
MACRO {cacm} {"Communications of the ACM"}
MACRO {ibmjrd} {"IBM Journal of Research and Development"}
MACRO {ibmsj} {"IBM Systems Journal"}
MACRO {ieeese} {"IEEE Transactions on Software Engineering"}
MACRO {ieeetc} {"IEEE Transactions on Computers"}
MACRO {ieeetcad}
{"IEEE Transactions on Computer-Aided Design of Integrated Circuits"}
MACRO {ipl} {"Information Processing Letters"}
MACRO {jacm} {"Journal of the ACM"}
MACRO {jcss} {"Journal of Computer and System Sciences"}
MACRO {scp} {"Science of Computer Programming"}
MACRO {sicomp} {"SIAM Journal on Computing"}
MACRO {tocs} {"ACM Transactions on Computer Systems"}
MACRO {tods} {"ACM Transactions on Database Systems"}
MACRO {tog} {"ACM Transactions on Graphics"}
MACRO {toms} {"ACM Transactions on Mathematical Software"}
MACRO {toois} {"ACM Transactions on Office Information Systems"}
MACRO {toplas} {"ACM Transactions on Programming Languages and Systems"}
MACRO {tcs} {"Theoretical Computer Science"}
READ
%FUNCTION {sortify}
%{ purify$
% "l" change.case$
%}
%
%INTEGERS { len }
%
%FUNCTION {chop.word}
%{ 's :=
% 'len :=
% s #1 len substring$ =
% { s len #1 + global.max$ substring$ }
% 's
% if$
%}
%
%FUNCTION {format.lab.names} %wk
%{ 's :=
% s #1 "{vv~}{ll}" format.name$
% s num.names$ duplicate$
% #2 >
% { pop$ " {\em et~al.}" * }
% { #2 <
% 'skip$
% { s #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =
% { " {\em et~al.}" * }
% { " and " * s #2 "{vv~}{ll}" format.name$ * } %wk
% if$
% }
% if$
% }
% if$
%}
%
%FUNCTION {author.key.label}
%{ author empty$
% { key empty$
% { cite$ #1 #3 substring$ }
% 'key
% if$
% }
% { author format.lab.names }
% if$
%}
%
%FUNCTION {author.editor.key.label}
%{ author empty$
% { editor empty$
% { key empty$
% { cite$ #1 #3 substring$ }
% 'key
% if$
% }
% { editor format.lab.names }
% if$
% }
% { author format.lab.names }
% if$
%}
%
%FUNCTION {editor.key.label}
%{ editor empty$
% { key empty$
% { cite$ #1 #3 substring$ }
% 'key
% if$
% }
% { editor format.lab.names }
% if$
%}
%
%FUNCTION {calc.label} %wk修改
% { type$ "book" =
% type$ "cbook" =
% type$ "inbook" =
% type$ "cinbook" =
% type$ "incollection" = % For sensible
% type$ "cincollection" =
% or or or or or % treatment of
% 'author.editor.key.label % Singer in
% { type$ "proceedings" = % BS 1629.
% 'editor.key.label
% 'author.key.label
% if$
% type$ "cproceedings" = % BS 1629.
% 'editor.key.label
% 'author.key.label
% if$
%
% }
% if$
% duplicate$
% year empty$
% {
% "\protect\citename{" swap$ * ", }" *
% "n.d." * 'label := % Chicago,
% } % page 457.
% {
% "\protect\citename{" swap$ * ", }" *
% year
% *
% 'label :=
% }
% if$
% year field.or.null purify$ *
% sortify 'sort.label :=
%}
%
%
%FUNCTION {sort.format.names} % To produce the
%{ 's := % order of entries
% #1 'nameptr := % specified in item
% "" % (3) on page 187
% s num.names$ 'numnames := % of Butcher.
% numnames 'namesleft :=
% { namesleft #0 > nameptr #3 < and } % Only 1st 2 names
% { nameptr #1 > % matter for
% {
% " " * } % sorting.
% 'skip$
% if$ % Anything that's
% nameptr #2 = numnames #2 > and % "et al" goes
% { "zzzzz" * } % after works by 2
% { % authors.
% s nameptr "{vv{ } }{ll{ }}{ f{ }}{ jj{ }}" format.name$ 't :=
% nameptr numnames = t "others" = and
% { "zzzzz" * }
% { t sortify * }
% if$
% }
% if$
% nameptr #1 + 'nameptr :=
% namesleft #1 - 'namesleft :=
% }
% while$
%}
%
%FUNCTION {sort.format.title}
%{ 't :=
% "A " #2
% "An " #3
% "The " #4 t chop.word
% chop.word
% chop.word
% sortify
% #1 global.max$ substring$
%}
%
%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 {author.editor.sort}
%{ author empty$
% { editor empty$
% { key empty$
% { "to sort, need author, editor, or key in " cite$ * warning$
% ""
% }
% { key sortify }
% if$
% }
% { editor sort.format.names }
% if$
% }
% { author sort.format.names }
% if$
%}
%
%FUNCTION {editor.sort}
%{ editor empty$
% { key empty$
% { "to sort, need editor or key in " cite$ * warning$
% ""
% }
% { key sortify }
% if$
% }
% { editor sort.format.names }
% if$
%}
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%->
%INTEGERS { seq.num }
%
%FUNCTION {init.seq}
%{ #0 'seq.num :=}
%
%EXECUTE {init.seq}
%
%FUNCTION {int.to.fix}
%{ "000000000" swap$ int.to.str$ *
% #-1 #10 substring$
%}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%<-
%
%FUNCTION {presort}
%{ calc.label
% label sortify
% " "
% *
% seq.num #1 + 'seq.num :=
% seq.num int.to.fix
% 'sort.label :=
% sort.label *
% #1 entry.max$ substring$
% 'sort.key$ :=
%}
%
%
%%FUNCTION {presort} % Two sorting
%%{ calc.label % passes, from
%% label sortify % apalike.bst.
%% " "
%% *
%% type$ "book" =
%% type$ "inbook" =
%% type$ "incollection" = % For Singer
%% or or % in BS 1629.
%% '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$ :=
%%}
%
%ITERATE {presort}
%
%SORT
%
%STRINGS { last.label next.extra }
%
%INTEGERS { last.extra.num }
%
%FUNCTION {initialize.extra.label.stuff}
%{ #0 int.to.chr$ 'last.label :=
% "" 'next.extra :=
% #0 'last.extra.num :=
%}
%
%FUNCTION {forward.pass}
%{ last.label label =
% { last.extra.num #1 + 'last.extra.num :=
% last.extra.num int.to.chr$ 'extra.label :=
% }
% { "a" chr.to.int$ 'last.extra.num :=
% "" 'extra.label :=
% label 'last.label :=
% }
% if$
%}
%
%FUNCTION {reverse.pass}
%{ next.extra "b" =
% { "a" 'extra.label := }
% 'skip$
% if$ % Code needed here
% % if \citeauthor
% % and \citeyear
% label extra.label * 'label := % were supported.
% extra.label 'next.extra :=
%}
%
%EXECUTE {initialize.extra.label.stuff}
%
%ITERATE {forward.pass}
%
%REVERSE {reverse.pass}
%
%FUNCTION {bib.sort.order}
%{ sort.label
% " "
% *
% year field.or.null sortify
% *
% " "
% *
% title field.or.null
% sort.format.title
% *
% #1 entry.max$ substring$
% 'sort.key$ :=
%}
%
%ITERATE {bib.sort.order}
%
%SORT
%
%FUNCTION {begin.bib}
%{ preamble$ empty$
% 'skip$
% { preamble$ write$ newline$ }
% if$
% "\begin{thebibliography}{}" write$ newline$
%
%%开始
% "\providecommand{\url}[1]{\texttt{#1}}"
% write$ newline$
% "\expandafter\ifx\csname urlstyle\endcsname\relax"
% write$ newline$
% " \providecommand{\doi}[1]{doi: #1}\else"
% write$ newline$
% " \providecommand{\doi}{doi: \begingroup \urlstyle{rm}\Url}\fi"
% write$ newline$
%%结束
%
%}
%
%EXECUTE {begin.bib}
%
%EXECUTE {init.state.consts}
%
%ITERATE {call.type$}
%
%FUNCTION {end.bib}
%{ newline$
% "\end{thebibliography}" write$ newline$
%}
%
%EXECUTE {end.bib}
FUNCTION {sortify}
{ purify$
"l" change.case$
}
INTEGERS { len }
FUNCTION {chop.word}
{ 's :=
'len :=
s #1 len substring$ =
{ s len #1 + global.max$ substring$ }
's
if$
}
FUNCTION {format.lab.names} %wk
{ 's :=
s #1 "{vv~}{ll}" format.name$
s num.names$ duplicate$
#2 >
{ pop$ " et al." * }
{ #2 <
'skip$
{ s #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =
{ " {\em et~al.}" * }
{ " and " * s #2 "{vv~}{ll}" format.name$ * } %wk
if$
}
if$
}
if$
}
FUNCTION {format.lab.cnames} %wk
{ 's :=
s #1 "{vv~}{ll}" format.name$
s num.names$ duplicate$
#2 >
{ pop$ "~等" * }
{ #2 <
'skip$
{ s #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =
{ " {\em et~al.}" * }
{ "和" * s #2 "{vv~}{ll}" format.name$ * } %wk
if$
}
if$
}
if$
}
FUNCTION {author.key.label}
{ author empty$
{ key empty$
{ cite$ #1 #3 substring$ }
'key
if$
}
% {author format.lab.names }
{language empty$
{author format.lab.names}
{author format.lab.cnames}
if$}
if$
}
FUNCTION {author.editor.key.label}
{ author empty$
{ editor empty$
{ key empty$
{ cite$ #1 #3 substring$ }
'key
if$
}
% { editor format.lab.names }
{language empty$
{editor format.lab.names}
{editor format.lab.cnames}
if$}
if$
}
% { author format.lab.names }
{language empty$
{author format.lab.names}
{author format.lab.cnames}
if$}
if$
}
FUNCTION {editor.key.label}
{ editor empty$
{ key empty$
{ cite$ #1 #3 substring$ }
'key
if$
}
% { editor format.lab.names }
{language empty$
{editor format.lab.names}
{editor format.lab.cnames}
if$}
if$
}
FUNCTION {author.key.organization.label}
{ author empty$
{ key empty$
{ organization empty$
{ cite$ #1 #3 substring$ }
{ "The " #4 organization chop.word #3 text.prefix$ }
if$
}
'key
if$
}
{ author format.lab.names }
if$
}
FUNCTION {editor.key.organization.label}
{ editor empty$
{ key empty$
{ organization empty$
{ cite$ #1 #3 substring$ }
{ "The " #4 organization chop.word #3 text.prefix$ }
if$
}
'key
if$
}
{ editor format.lab.names }
if$
}
FUNCTION {calc.short.authors}
{ type$ "book" =
type$ "inbook" =
or
'author.editor.key.label
{ type$ "proceedings" =
'editor.key.organization.label
{ type$ "manual" =
'author.key.organization.label
'author.key.label
if$
}
if$
}
if$
'short.list :=
}
FUNCTION {calc.label}
{ calc.short.authors
short.list
"("
*
year duplicate$ empty$
short.list key field.or.null = or
{ pop$ ""}
'skip$
if$
* ")" *
'label :=
}
INTEGERS { seq.num }
FUNCTION {init.seq}
{ #0 'seq.num :=}
EXECUTE {init.seq}
FUNCTION {int.to.fix}
{ "000000000" swap$ int.to.str$ *
#-1 #10 substring$
}
FUNCTION {presort}
{ calc.label
label sortify
" "
*
seq.num #1 + 'seq.num :=
seq.num int.to.fix
'sort.label :=
sort.label *
#1 entry.max$ substring$
'sort.key$ :=
}
ITERATE {presort}
SORT
STRINGS { longest.label last.label next.extra }
INTEGERS { longest.label.width last.extra.num number.label }
FUNCTION {initialize.longest.label}
{ "" 'longest.label :=
#0 int.to.chr$ 'last.label :=
"" 'next.extra :=
#0 'longest.label.width :=
#0 'last.extra.num :=
#0 'number.label :=
}
FUNCTION {forward.pass}
{ last.label label =
{ last.extra.num #1 + 'last.extra.num :=
last.extra.num int.to.chr$ 'extra.label :=
}
{ "a" chr.to.int$ 'last.extra.num :=
"" 'extra.label :=
label 'last.label :=
}
if$
number.label #1 + 'number.label :=
}
FUNCTION {reverse.pass}
{ next.extra "b" =
{ "a" 'extra.label := }
'skip$
if$
extra.label 'next.extra :=
extra.label
duplicate$ empty$
'skip$
{ "{\natexlab{" swap$ * "}}" * }
if$
'extra.label :=
label extra.label * 'label :=
}
EXECUTE {initialize.longest.label}
ITERATE {forward.pass}
REVERSE {reverse.pass}
FUNCTION {bib.sort.order}
{ sort.label 'sort.key$ :=
}
ITERATE {bib.sort.order}
SORT
FUNCTION {begin.bib}
{ preamble$ empty$
'skip$
{ preamble$ write$ newline$ }
if$
"\begin{thebibliography}{" number.label int.to.str$ * "}" *
write$ newline$
"\setlength{\itemsep}{1ex}"
write$ newline$
"\providecommand{\natexlab}[1]{#1}"
write$ newline$
"\providecommand{\url}[1]{\texttt{#1}}"
write$ newline$
"\expandafter\ifx\csname urlstyle\endcsname\relax"
write$ newline$
" \providecommand{\doi}[1]{doi: #1}\else"
write$ newline$
" \providecommand{\doi}{doi: \begingroup \urlstyle{rm}\Url}\fi"
write$ newline$
}
EXECUTE {begin.bib}
EXECUTE {init.state.consts}
ITERATE {call.type$}
FUNCTION {end.bib}
{ newline$
"\end{thebibliography}" write$ newline$
}
EXECUTE {end.bib}