diff options
author | Karl Berry <karl@freefriends.org> | 2010-04-07 22:49:27 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2010-04-07 22:49:27 +0000 |
commit | 389a14839d88ee774793a1eb4921c43933869738 (patch) | |
tree | e1a58aafe1d76dcddd475f36ab0cf87dee496722 /Master/texmf-dist/doc/latex/seuthesis/zharticle/zharticle.bst | |
parent | 3f1971c9b7717818766692c9aa497e20e7472f2c (diff) |
new latex package seuthesis 1.3.0 (6apr10)
git-svn-id: svn://tug.org/texlive/trunk@17743 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/doc/latex/seuthesis/zharticle/zharticle.bst')
-rw-r--r-- | Master/texmf-dist/doc/latex/seuthesis/zharticle/zharticle.bst | 3551 |
1 files changed, 3551 insertions, 0 deletions
diff --git a/Master/texmf-dist/doc/latex/seuthesis/zharticle/zharticle.bst b/Master/texmf-dist/doc/latex/seuthesis/zharticle/zharticle.bst new file mode 100644 index 00000000000..00a51144cf1 --- /dev/null +++ b/Master/texmf-dist/doc/latex/seuthesis/zharticle/zharticle.bst @@ -0,0 +1,3551 @@ +% Copyright (C) 2008 by Nobel Huang <nobel1984@gmail.com> +% $Id$ +% +% This file is part of the zharticle package project. +% --------------------------------------------------- +% 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. +% The latest version of this license is in: +% +% http://www.gnu.org/licenses/gpl.html +% +% modified from seuthesis.bst by Xu Yuan + +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$ * "}" * } + 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 "[C]" * 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 "[C]" * 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 * } + { "In: " format.editors * ", eds. " * booktitle * } + if$ + } + if$ +} + +FUNCTION {format.in.ced.booktitle} +{ booktitle empty$ + { "" } + { editor empty$ + new.block + { "见: " format.ceditors * booktitle * } + { "见: " format.ceditors * ", 主编. " * booktitle * } + 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.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 + 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$ + "\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} + + + + + |