代码拉取完成,页面将自动刷新
%%
%% This is file `gbt7714-author-year.bst',
%% generated with the docstrip utility.
%%
%% The original source files were:
%%
%% gbt7714.dtx (with options: `2015,author-year')
%% -------------------------------------------------------------------
%% GB/T 7714 BibTeX Style
%% https://github.com/zepinglee/gbt7714-bibtex-style
%% Version: 2022/03/21 v2.1.4
%% -------------------------------------------------------------------
%% Copyright (C) 2016--2022 by Zeping Lee <zepinglee AT gmail.com>
%% -------------------------------------------------------------------
%% This file may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3c
%% of this license or (at your option) any later version.
%% The latest version of this license is in
%% https://www.latex-project.org/lppl.txt
%% and version 1.3c or later is part of all distributions of LaTeX
%% version 2008 or later.
%% -------------------------------------------------------------------
INTEGERS {
citation.et.al.min
citation.et.al.use.first
bibliography.et.al.min
bibliography.et.al.use.first
uppercase.name
terms.in.macro
year.after.author
period.after.author
italic.book.title
sentence.case.title
link.title
title.in.journal
show.patent.country
show.mark
space.before.mark
show.medium.type
short.journal
italic.journal
bold.journal.volume
show.missing.address.publisher
space.before.pages
only.start.page
wave.dash.in.pages
show.urldate
show.url
show.doi
show.preprint
show.note
show.english.translation
end.with.period
lang.zh.order
lang.ja.order
lang.en.order
lang.ru.order
lang.other.order
}
STRINGS {
component.part.label
}
FUNCTION {load.config}
{
#2 'citation.et.al.min :=
#1 'citation.et.al.use.first :=
#4 'bibliography.et.al.min :=
#3 'bibliography.et.al.use.first :=
#1 'uppercase.name :=
#0 'terms.in.macro :=
#1 'year.after.author :=
#0 'period.after.author :=
#0 'italic.book.title :=
#1 'sentence.case.title :=
#0 'link.title :=
#1 'title.in.journal :=
#0 'show.patent.country :=
#1 'show.mark :=
#0 'space.before.mark :=
#1 'show.medium.type :=
"slash" 'component.part.label :=
#0 'short.journal :=
#0 'italic.journal :=
#0 'bold.journal.volume :=
#0 'show.missing.address.publisher :=
#1 'space.before.pages :=
#0 'only.start.page :=
#0 'wave.dash.in.pages :=
#1 'show.urldate :=
#1 'show.url :=
#1 'show.doi :=
#1 'show.preprint :=
#0 'show.note :=
#0 'show.english.translation :=
#1 'end.with.period :=
#1 'lang.zh.order :=
#2 'lang.ja.order :=
#3 'lang.en.order :=
#4 'lang.ru.order :=
#5 'lang.other.order :=
}
ENTRY
{ address
archivePrefix
author
booktitle
date
doi
edition
editor
eprint
eprinttype
entrysubtype
howpublished
institution
journal
journaltitle
key
langid
language
location
mark
medium
note
number
organization
pages
publisher
school
series
shortjournal
title
translation
translator
url
urldate
volume
year
}
{ entry.lang entry.is.electronic is.pure.electronic entry.numbered }
{ label extra.label sort.label short.label short.list entry.mark entry.url }
INTEGERS { output.state before.all mid.sentence after.sentence after.block after.slash }
INTEGERS { lang.zh lang.ja lang.en lang.ru lang.other }
INTEGERS { charptr len }
FUNCTION {init.state.consts}
{ #0 'before.all :=
#1 'mid.sentence :=
#2 'after.sentence :=
#3 'after.block :=
#4 'after.slash :=
#3 'lang.zh :=
#4 'lang.ja :=
#1 'lang.en :=
#2 'lang.ru :=
#0 'lang.other :=
}
FUNCTION {bbl.anonymous}
{ entry.lang lang.zh =
{ "佚名" }
{ "Anon" }
if$
}
FUNCTION {bbl.space}
{ entry.lang lang.zh =
{ "\ " }
{ " " }
if$
}
FUNCTION {bbl.and}
{ "" }
FUNCTION {bbl.et.al}
{ entry.lang lang.zh =
{ "等" }
{ entry.lang lang.ja =
{ "他" }
{ entry.lang lang.ru =
{ "идр" }
{ "et~al." }
if$
}
if$
}
if$
}
FUNCTION {citation.and}
{ terms.in.macro
{ "{\biband}" }
'bbl.and
if$
}
FUNCTION {citation.et.al}
{ terms.in.macro
{ "{\bibetal}" }
'bbl.et.al
if$
}
FUNCTION {bbl.colon} { ": " }
FUNCTION {bbl.pages.colon}
{ space.before.pages
{ ": " }
{ ":\allowbreak " }
if$
}
FUNCTION {bbl.wide.space} { "\quad " }
FUNCTION {bbl.slash} { "//\allowbreak " }
FUNCTION {bbl.sine.loco}
{ entry.lang lang.zh =
{ "[出版地不详]" }
{ "[S.l.]" }
if$
}
FUNCTION {bbl.sine.nomine}
{ entry.lang lang.zh =
{ "[出版者不详]" }
{ "[s.n.]" }
if$
}
FUNCTION {bbl.sine.loco.sine.nomine}
{ entry.lang lang.zh =
{ "[出版地不详: 出版者不详]" }
{ "[S.l.: s.n.]" }
if$
}
FUNCTION {not}
{ { #0 }
{ #1 }
if$
}
FUNCTION {and}
{ 'skip$
{ pop$ #0 }
if$
}
FUNCTION {or}
{ { pop$ #1 }
'skip$
if$
}
STRINGS { x y }
FUNCTION {contains}
{ 'y :=
'x :=
y text.length$ 'len :=
x text.length$ len - #1 + 'charptr :=
{ charptr #0 >
x charptr len substring$ y = not
and
}
{ charptr #1 - 'charptr := }
while$
charptr #0 >
}
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$
{ output.state after.slash =
{ bbl.slash * write$
newline$
}
{ add.period$ " " * write$ }
if$
}
if$
}
if$
mid.sentence 'output.state :=
}
if$
s
}
FUNCTION {output}
{ duplicate$ empty$
'pop$
'output.nonnull
if$
}
FUNCTION {output.after}
{ 't :=
duplicate$ empty$
'pop$
{ 's :=
output.state mid.sentence =
{ t * write$ }
{ output.state after.block =
{ add.period$ write$
newline$
"\newblock " write$
}
{ output.state before.all =
'write$
{ output.state after.slash =
{ bbl.slash * write$ }
{ add.period$ " " * write$ }
if$
}
if$
}
if$
mid.sentence 'output.state :=
}
if$
s
}
if$
}
FUNCTION {output.check}
{ 't :=
duplicate$ empty$
{ pop$ "empty " t * " in " * cite$ * warning$ }
'output.nonnull
if$
}
FUNCTION {fin.entry}
{ end.with.period
'add.period$
'skip$
if$
write$
show.english.translation entry.lang lang.zh = and
{ ")"
write$
}
'skip$
if$
newline$
}
FUNCTION {new.block}
{ output.state before.all =
'skip$
{ output.state after.slash =
'skip$
{ after.block 'output.state := }
if$
}
if$
}
FUNCTION {new.sentence}
{ output.state after.block =
'skip$
{ output.state before.all =
'skip$
{ output.state after.slash =
'skip$
{ after.sentence 'output.state := }
if$
}
if$
}
if$
}
FUNCTION {new.slash}
{ output.state before.all =
'skip$
{ component.part.label "slash" =
{ after.slash 'output.state := }
{ new.block
component.part.label "in" =
{ entry.lang lang.en =
{ "In: " output
write$
""
before.all 'output.state :=
}
'skip$
if$
}
'skip$
if$
}
if$
}
if$
}
FUNCTION {new.block.checka}
{ empty$
'skip$
'new.block
if$
}
FUNCTION {new.block.checkb}
{ empty$
swap$ empty$
and
'skip$
'new.block
if$
}
FUNCTION {new.sentence.checka}
{ empty$
'skip$
'new.sentence
if$
}
FUNCTION {new.sentence.checkb}
{ empty$
swap$ empty$
and
'skip$
'new.sentence
if$
}
FUNCTION {field.or.null}
{ duplicate$ empty$
{ pop$ "" }
'skip$
if$
}
FUNCTION {emphasize}
{ duplicate$ empty$
{ pop$ "" }
{ "\emph{" swap$ * "}" * }
if$
}
FUNCTION {format.btitle}
{ italic.book.title
entry.lang lang.en = and
'emphasize
'skip$
if$
}
INTEGERS { byte second.byte }
INTEGERS { char.lang tmp.lang }
STRINGS { tmp.str }
FUNCTION {get.str.lang}
{ 'tmp.str :=
lang.other 'tmp.lang :=
#1 'charptr :=
tmp.str text.length$ #1 + 'len :=
{ charptr len < }
{ tmp.str charptr #1 substring$ chr.to.int$ 'byte :=
byte #128 <
{ charptr #1 + 'charptr :=
byte #64 > byte #91 < and byte #96 > byte #123 < and or
{ lang.en 'char.lang := }
{ lang.other 'char.lang := }
if$
}
{ tmp.str charptr #1 + #1 substring$ chr.to.int$ 'second.byte :=
byte #224 <
{ charptr #2 + 'charptr :=
byte #207 > byte #212 < and
byte #212 = second.byte #176 < and or
{ lang.ru 'char.lang := }
{ lang.other 'char.lang := }
if$
}
{ byte #240 <
{ charptr #3 + 'charptr :=
byte #227 > byte #234 < and
{ lang.zh 'char.lang := }
{ byte #227 =
{ second.byte #143 >
{ lang.zh 'char.lang := }
{ second.byte #128 > second.byte #132 < and
{ lang.ja 'char.lang := }
{ lang.other 'char.lang := }
if$
}
if$
}
{ byte #239 =
second.byte #163 > second.byte #172 < and and
{ lang.zh 'char.lang := }
{ lang.other 'char.lang := }
if$
}
if$
}
if$
}
{ charptr #4 + 'charptr :=
byte #240 = second.byte #159 > and
{ lang.zh 'char.lang := }
{ lang.other 'char.lang := }
if$
}
if$
}
if$
}
if$
char.lang tmp.lang >
{ char.lang 'tmp.lang := }
'skip$
if$
}
while$
tmp.lang
}
FUNCTION {check.entry.lang}
{ author field.or.null
title field.or.null *
get.str.lang
}
STRINGS { entry.langid }
FUNCTION {set.entry.lang}
{ "" 'entry.langid :=
language empty$ not
{ language 'entry.langid := }
'skip$
if$
langid empty$ not
{ langid 'entry.langid := }
'skip$
if$
entry.langid empty$
{ check.entry.lang }
{ entry.langid "english" = entry.langid "american" = or entry.langid "british" = or
{ lang.en }
{ entry.langid "chinese" =
{ lang.zh }
{ entry.langid "japanese" =
{ lang.ja }
{ entry.langid "russian" =
{ lang.ru }
{ check.entry.lang }
if$
}
if$
}
if$
}
if$
}
if$
'entry.lang :=
}
FUNCTION {set.entry.numbered}
{ type$ "patent" =
type$ "standard" = or
type$ "techreport" = or
{ #1 'entry.numbered := }
{ #0 'entry.numbered := }
if$
}
INTEGERS { nameptr namesleft numnames name.lang }
FUNCTION {format.name}
{ "{vv~}{ll}{, jj}{, ff}" format.name$ 't :=
t "others" =
{ bbl.et.al }
{ t get.str.lang 'name.lang :=
name.lang lang.en =
{ t #1 "{vv~}{ll}{ f{~}}" format.name$
uppercase.name
{ "u" change.case$ }
'skip$
if$
t #1 "{, jj}" format.name$ *
}
{ t #1 "{ll}{ff}" format.name$ }
if$
}
if$
}
FUNCTION {format.names}
{ 's :=
#1 'nameptr :=
s num.names$ 'numnames :=
""
numnames 'namesleft :=
{ namesleft #0 > }
{ s nameptr format.name bbl.et.al =
numnames bibliography.et.al.min #1 - > nameptr bibliography.et.al.use.first > and or
{ ", " *
bbl.et.al *
#1 'namesleft :=
}
{ nameptr #1 >
{ namesleft #1 = bbl.and "" = not and
{ bbl.and * }
{ ", " * }
if$
}
'skip$
if$
s nameptr format.name *
}
if$
nameptr #1 + 'nameptr :=
namesleft #1 - 'namesleft :=
}
while$
}
FUNCTION {format.key}
{ empty$
{ key field.or.null }
{ "" }
if$
}
FUNCTION {format.authors}
{ author empty$ not
{ author format.names }
{ "empty author in " cite$ * warning$
bbl.anonymous
}
if$
}
FUNCTION {format.editors}
{ editor empty$
{ "" }
{ editor format.names }
if$
}
FUNCTION {format.translators}
{ translator empty$
{ "" }
{ translator format.names
entry.lang lang.zh =
{ translator num.names$ #3 >
{ "译" * }
{ ", 译" * }
if$
}
'skip$
if$
}
if$
}
FUNCTION {format.full.names}
{'s :=
#1 'nameptr :=
s num.names$ 'numnames :=
numnames 'namesleft :=
{ namesleft #0 > }
{ s nameptr "{vv~}{ll}{, jj}{, ff}" format.name$ 't :=
t get.str.lang 'name.lang :=
name.lang lang.en =
{ t #1 "{vv~}{ll}" format.name$ 't := }
{ t #1 "{ll}{ff}" format.name$ 't := }
if$
nameptr #1 >
{
namesleft #1 >
{ ", " * t * }
{
numnames #2 >
{ "," * }
'skip$
if$
t "others" =
{ " et~al." * }
{ " and " * t * }
if$
}
if$
}
't
if$
nameptr #1 + 'nameptr :=
namesleft #1 - 'namesleft :=
}
while$
}
FUNCTION {author.editor.full}
{ author empty$
{ editor empty$
{ "" }
{ editor format.full.names }
if$
}
{ author format.full.names }
if$
}
FUNCTION {author.full}
{ author empty$
{ "" }
{ author format.full.names }
if$
}
FUNCTION {editor.full}
{ editor empty$
{ "" }
{ editor format.full.names }
if$
}
FUNCTION {make.full.names}
{ type$ "book" =
type$ "inbook" =
or
'author.editor.full
{ type$ "collection" =
type$ "proceedings" =
or
'editor.full
'author.full
if$
}
if$
}
FUNCTION {output.bibitem}
{ newline$
"\bibitem[" write$
label ")" *
make.full.names duplicate$ short.list =
{ pop$ }
{ duplicate$ "]" contains
{ "{" swap$ * "}" * }
'skip$
if$
*
}
if$
"]{" * write$
cite$ write$
"}" write$
newline$
""
before.all 'output.state :=
}
FUNCTION {change.sentence.case}
{ entry.lang lang.en =
{ "t" change.case$ }
'skip$
if$
}
FUNCTION {add.link}
{ url empty$ not
{ "\href{" url * "}{" * swap$ * "}" * }
{ doi empty$ not
{ "\href{https://doi.org/" doi * "}{" * swap$ * "}" * }
'skip$
if$
}
if$
}
FUNCTION {format.title}
{ title empty$
{ "" }
{ title
sentence.case.title
'change.sentence.case
'skip$
if$
entry.numbered number empty$ not and
{ bbl.colon *
type$ "patent" = show.patent.country and
{ address empty$ not
{ address * ", " * }
{ location empty$ not
{ location * ", " * }
{ entry.lang lang.zh =
{ "中国" * ", " * }
'skip$
if$
}
if$
}
if$
}
'skip$
if$
number *
}
'skip$
if$
link.title
'add.link
'skip$
if$
}
if$
}
FUNCTION {tie.or.space.connect}
{ duplicate$ text.length$ #3 <
{ "~" }
{ " " }
if$
swap$ * *
}
FUNCTION {either.or.check}
{ empty$
'pop$
{ "can't use both " swap$ * " fields in " * cite$ * warning$ }
if$
}
FUNCTION {is.digit}
{ duplicate$ empty$
{ pop$ #0 }
{ chr.to.int$
duplicate$ "0" chr.to.int$ <
{ pop$ #0 }
{ "9" chr.to.int$ >
{ #0 }
{ #1 }
if$
}
if$
}
if$
}
FUNCTION {is.number}
{ 's :=
s empty$
{ #0 }
{ s text.length$ 'charptr :=
{ charptr #0 >
s charptr #1 substring$ is.digit
and
}
{ charptr #1 - 'charptr := }
while$
charptr not
}
if$
}
FUNCTION {format.volume}
{ volume empty$ not
{ volume is.number
{ entry.lang lang.zh =
{ "第 " volume * " 卷" * }
{ "volume" volume tie.or.space.connect }
if$
}
{ volume }
if$
}
{ "" }
if$
}
FUNCTION {format.number}
{ number empty$ not
{ number is.number
{ entry.lang lang.zh =
{ "第 " number * " 册" * }
{ "number" number tie.or.space.connect }
if$
}
{ number }
if$
}
{ "" }
if$
}
FUNCTION {format.volume.number}
{ volume empty$ not
{ format.volume }
{ format.number }
if$
}
FUNCTION {format.title.vol.num}
{ title
sentence.case.title
'change.sentence.case
'skip$
if$
entry.numbered
{ number empty$ not
{ bbl.colon * number * }
'skip$
if$
}
{ format.volume.number 's :=
s empty$ not
{ bbl.colon * s * }
'skip$
if$
}
if$
}
FUNCTION {format.series.vol.num.title}
{ format.volume.number 's :=
series empty$ not
{ series
sentence.case.title
'change.sentence.case
'skip$
if$
entry.numbered
{ bbl.wide.space * }
{ bbl.colon *
s empty$ not
{ s * bbl.wide.space * }
'skip$
if$
}
if$
title *
sentence.case.title
'change.sentence.case
'skip$
if$
entry.numbered number empty$ not and
{ bbl.colon * number * }
'skip$
if$
}
{ format.title.vol.num }
if$
format.btitle
link.title
'add.link
'skip$
if$
}
FUNCTION {format.booktitle.vol.num}
{ booktitle
entry.numbered
'skip$
{ format.volume.number 's :=
s empty$ not
{ bbl.colon * s * }
'skip$
if$
}
if$
}
FUNCTION {format.series.vol.num.booktitle}
{ format.volume.number 's :=
series empty$ not
{ series bbl.colon *
entry.numbered not s empty$ not and
{ s * bbl.wide.space * }
'skip$
if$
booktitle *
}
{ format.booktitle.vol.num }
if$
format.btitle
}
FUNCTION {remove.period}
{ 't :=
"" 's :=
{ t empty$ not }
{ t #1 #1 substring$ 'tmp.str :=
tmp.str "." = not
{ s tmp.str * 's := }
'skip$
if$
t #2 global.max$ substring$ 't :=
}
while$
s
}
FUNCTION {abbreviate}
{ remove.period
't :=
t "l" change.case$ 's :=
""
s "physical review letters" =
{ "Phys Rev Lett" }
'skip$
if$
's :=
s empty$
{ t }
{ pop$ s }
if$
}
FUNCTION {get.journal.title}
{ short.journal
{ shortjournal empty$ not
{ shortjournal }
{ journal empty$ not
{ journal abbreviate }
{ journaltitle empty$ not
{ journaltitle abbreviate }
{ "" }
if$
}
if$
}
if$
}
{ journal empty$ not
{ journal }
{ journaltitle empty$ not
{ journaltitle }
{ shortjournal empty$ not
{ shortjournal }
{ "" }
if$
}
if$
}
if$
}
if$
}
FUNCTION {check.arxiv.preprint}
{ #1 #5 substring$ "l" change.case$ "arxiv" =
{ #1 }
{ #0 }
if$
}
FUNCTION {format.journal}
{ get.journal.title
duplicate$ empty$ not
{ italic.journal entry.lang lang.en = and
'emphasize
'skip$
if$
}
'skip$
if$
}
FUNCTION {set.entry.mark}
{ entry.mark empty$ not
'pop$
{ mark empty$ not
{ pop$ mark 'entry.mark := }
{ 'entry.mark := }
if$
}
if$
}
FUNCTION {format.mark}
{ show.mark
{ entry.mark
show.medium.type
{ medium empty$ not
{ "/" * medium * }
{ entry.is.electronic
{ "/OL" * }
'skip$
if$
}
if$
}
'skip$
if$
'entry.mark :=
space.before.mark
{ " " }
{ "\allowbreak" }
if$
"[" * entry.mark * "]" *
}
{ "" }
if$
}
FUNCTION {num.to.ordinal}
{ duplicate$ text.length$ 'charptr :=
duplicate$ charptr #1 substring$ 's :=
s "1" =
{ "st" * }
{ s "2" =
{ "nd" * }
{ s "3" =
{ "rd" * }
{ "th" * }
if$
}
if$
}
if$
}
FUNCTION {format.edition}
{ edition empty$
{ "" }
{ edition is.number
{ edition "1" = not
{ entry.lang lang.zh =
{ edition " 版" * }
{ edition num.to.ordinal " ed." * }
if$
}
'skip$
if$
}
{ entry.lang lang.en =
{ edition change.sentence.case 's :=
s "Revised" = s "Revised edition" = or
{ "Rev. ed." }
{ s " ed." * }
if$
}
{ edition }
if$
}
if$
}
if$
}
FUNCTION {format.publisher}
{ publisher empty$ not
{ publisher }
{ school empty$ not
{ school }
{ organization empty$ not
{ organization }
{ institution empty$ not
{ institution }
{ "" }
if$
}
if$
}
if$
}
if$
}
FUNCTION {format.address.publisher}
{ address empty$ not
{ address }
{ location empty$ not
{ location }
{ "" }
if$
}
if$
duplicate$ empty$ not
{ format.publisher empty$ not
{ bbl.colon * format.publisher * }
{ entry.is.electronic not show.missing.address.publisher and
{ bbl.colon * bbl.sine.nomine * }
'skip$
if$
}
if$
}
{ pop$
entry.is.electronic not show.missing.address.publisher and
{ format.publisher empty$ not
{ bbl.sine.loco bbl.colon * format.publisher * }
{ bbl.sine.loco.sine.nomine }
if$
}
{ format.publisher empty$ not
{ format.publisher }
{ "" }
if$
}
if$
}
if$
}
FUNCTION {extract.before.dash}
{ duplicate$ empty$
{ pop$ "" }
{ 's :=
#1 'charptr :=
s text.length$ #1 + 'len :=
{ charptr len <
s charptr #1 substring$ "-" = not
and
}
{ charptr #1 + 'charptr := }
while$
s #1 charptr #1 - substring$
}
if$
}
FUNCTION {extract.after.dash}
{ duplicate$ empty$
{ pop$ "" }
{ 's :=
#1 'charptr :=
s text.length$ #1 + 'len :=
{ charptr len <
s charptr #1 substring$ "-" = not
and
}
{ charptr #1 + 'charptr := }
while$
{ charptr len <
s charptr #1 substring$ "-" =
and
}
{ charptr #1 + 'charptr := }
while$
s charptr global.max$ substring$
}
if$
}
FUNCTION {extract.before.slash}
{ duplicate$ empty$
{ pop$ "" }
{ 's :=
#1 'charptr :=
s text.length$ #1 + 'len :=
{ charptr len <
s charptr #1 substring$ "/" = not
and
}
{ charptr #1 + 'charptr := }
while$
s #1 charptr #1 - substring$
}
if$
}
FUNCTION {extract.after.slash}
{ duplicate$ empty$
{ pop$ "" }
{ 's :=
#1 'charptr :=
s text.length$ #1 + 'len :=
{ charptr len <
s charptr #1 substring$ "-" = not
and
s charptr #1 substring$ "/" = not
and
}
{ charptr #1 + 'charptr := }
while$
{ charptr len <
s charptr #1 substring$ "-" =
s charptr #1 substring$ "/" =
or
and
}
{ charptr #1 + 'charptr := }
while$
s charptr global.max$ substring$
}
if$
}
FUNCTION {format.year}
{ year empty$ not
{ year extract.before.slash extra.label * }
{ date empty$ not
{ date extract.before.dash extra.label * }
{ "empty year in " cite$ * warning$
urldate empty$ not
{ "[" urldate extract.before.dash * extra.label * "]" * }
{ "" }
if$
}
if$
}
if$
}
FUNCTION {format.periodical.year}
{ year empty$ not
{ year extract.before.slash
"--" *
year extract.after.slash
duplicate$ empty$
'pop$
{ * }
if$
}
{ date empty$ not
{ date extract.before.dash }
{ "empty year in " cite$ * warning$
urldate empty$ not
{ "[" urldate extract.before.dash * "]" * }
{ "" }
if$
}
if$
}
if$
}
FUNCTION {format.date}
{ date empty$ not
{ type$ "patent" = type$ "newspaper" = or
{ date }
{ entrysubtype empty$ not
{ type$ "article" = entrysubtype "newspaper" = and
{ date }
{ format.year }
if$
}
{ format.year }
if$
}
if$
}
{ year empty$ not
{ format.year }
{ "" }
if$
}
if$
}
FUNCTION {format.editdate}
{ date empty$ not
{ "\allowbreak(" date * ")" * }
{ "" }
if$
}
FUNCTION {format.urldate}
{ show.urldate show.url and entry.url empty$ not and
is.pure.electronic or
urldate empty$ not and
{ "\allowbreak[" urldate * "]" * }
{ "" }
if$
}
FUNCTION {hyphenate}
{ 't :=
""
{ t empty$ not }
{ t #1 #1 substring$ "-" =
{ wave.dash.in.pages
{ "~" * }
{ "-" * }
if$
{ t #1 #1 substring$ "-" = }
{ t #2 global.max$ substring$ 't := }
while$
}
{ t #1 #1 substring$ *
t #2 global.max$ substring$ 't :=
}
if$
}
while$
}
FUNCTION {format.pages}
{ pages empty$
{ "" }
{ pages hyphenate }
if$
}
FUNCTION {format.extracted.pages}
{ pages empty$
{ "" }
{ pages
only.start.page
'extract.before.dash
'hyphenate
if$
}
if$
}
FUNCTION {format.journal.volume}
{ volume empty$ not
{ bold.journal.volume
{ "\textbf{" volume * "}" * }
{ volume }
if$
}
{ "" }
if$
}
FUNCTION {format.journal.number}
{ number empty$ not
{ "\allowbreak (" number * ")" * }
{ "" }
if$
}
FUNCTION {format.journal.pages}
{ pages empty$
{ "" }
{ format.extracted.pages }
if$
}
FUNCTION {format.periodical.year.volume.number}
{ year empty$ not
{ year extract.before.slash }
{ "empty year in periodical " cite$ * warning$ }
if$
volume empty$ not
{ ", " * volume extract.before.dash * }
'skip$
if$
number empty$ not
{ "\allowbreak (" * number extract.before.dash * ")" * }
'skip$
if$
"--" *
year extract.after.slash empty$
volume extract.after.dash empty$ and
number extract.after.dash empty$ and not
{ year extract.after.slash empty$ not
{ year extract.after.slash * }
{ year extract.before.slash * }
if$
volume empty$ not
{ ", " * volume extract.after.dash * }
'skip$
if$
number empty$ not
{ "\allowbreak (" * number extract.after.dash * ")" * }
'skip$
if$
}
'skip$
if$
}
FUNCTION {check.url}
{ url empty$ not
{ "\url{" url * "}" * 'entry.url :=
#1 'entry.is.electronic :=
}
{ howpublished empty$ not
{ howpublished #1 #5 substring$ "\url{" =
{ howpublished 'entry.url :=
#1 'entry.is.electronic :=
}
'skip$
if$
}
{ note empty$ not
{ note #1 #5 substring$ "\url{" =
{ note 'entry.url :=
#1 'entry.is.electronic :=
}
'skip$
if$
}
'skip$
if$
}
if$
}
if$
}
FUNCTION {output.url}
{ show.url is.pure.electronic or
entry.url empty$ not and
{ new.block
entry.url output
}
'skip$
if$
}
FUNCTION {check.doi}
{ doi empty$ not
{ #1 'entry.is.electronic := }
'skip$
if$
}
FUNCTION {is.in.url}
{ 's :=
s empty$
{ #1 }
{ entry.url empty$
{ #0 }
{ s text.length$ 'len :=
entry.url text.length$ 'charptr :=
{ entry.url charptr len substring$ s = not
charptr #0 >
and
}
{ charptr #1 - 'charptr := }
while$
charptr
}
if$
}
if$
}
FUNCTION {format.doi}
{ ""
doi empty$ not
{ "" 's :=
doi 't :=
#0 'numnames :=
{ t empty$ not}
{ t #1 #1 substring$ 'tmp.str :=
tmp.str "," = tmp.str " " = or t #2 #1 substring$ empty$ or
{ t #2 #1 substring$ empty$
{ s tmp.str * 's := }
'skip$
if$
s empty$ s is.in.url or
'skip$
{ numnames #1 + 'numnames :=
numnames #1 >
{ ", " * }
{ "DOI: " * }
if$
"\doi{" s * "}" * *
}
if$
"" 's :=
}
{ s tmp.str * 's := }
if$
t #2 global.max$ substring$ 't :=
}
while$
}
'skip$
if$
}
FUNCTION {output.doi}
{ doi empty$ not show.doi and
show.english.translation entry.lang lang.zh = and not and
{ new.block
format.doi output
}
'skip$
if$
}
FUNCTION {check.electronic}
{ "" 'entry.url :=
#0 'entry.is.electronic :=
'check.doi
'skip$
if$
'check.url
'skip$
if$
medium empty$ not
{ medium "MT" = medium "DK" = or medium "CD" = or medium "OL" = or
{ #1 'entry.is.electronic := }
'skip$
if$
}
'skip$
if$
}
FUNCTION {format.eprint}
{ archivePrefix empty$ not
{ archivePrefix }
{ eprinttype empty$ not
{ archivePrefix }
{ "" }
if$
}
if$
's :=
s empty$ not
{ s ": \eprint{" *
url empty$ not
{ url }
{ "https://" s "l" change.case$ * ".org/abs/" * eprint * }
if$
* "}{" *
eprint * "}" *
}
{ eprint }
if$
}
FUNCTION {output.eprint}
{ show.preprint eprint empty$ not and
{ new.block
format.eprint output
}
'skip$
if$
}
FUNCTION {format.note}
{ note empty$ not show.note and
{ note }
{ "" }
if$
}
FUNCTION {output.translation}
{ show.english.translation entry.lang lang.zh = and
{ translation empty$ not
{ translation }
{ "[English translation missing!]" }
if$
" (in Chinese)" * output
write$
format.doi duplicate$ empty$ not
{ newline$
write$
}
'pop$
if$
" \\" write$
newline$
"(" write$
""
before.all 'output.state :=
}
'skip$
if$
}
FUNCTION {empty.misc.check}
{ author empty$ title empty$
year empty$
and and
key empty$ not and
{ "all relevant fields are empty in " cite$ * warning$ }
'skip$
if$
}
FUNCTION {monograph}
{ output.bibitem
output.translation
author empty$ not
{ format.authors }
{ editor empty$ not
{ format.editors }
{ "empty author and editor in " cite$ * warning$
bbl.anonymous
}
if$
}
if$
output
year.after.author
{ period.after.author
'new.sentence
'skip$
if$
format.year "year" output.check
}
'skip$
if$
new.block
format.series.vol.num.title "title" output.check
"M" set.entry.mark
format.mark "" output.after
new.block
format.translators output
new.sentence
format.edition output
new.block
format.address.publisher output
year.after.author not
{ format.year "year" output.check }
'skip$
if$
format.pages bbl.pages.colon output.after
format.urldate "" output.after
output.url
output.doi
new.block
format.note output
fin.entry
}
FUNCTION {incollection}
{ output.bibitem
output.translation
format.authors output
author format.key output
year.after.author
{ period.after.author
'new.sentence
'skip$
if$
format.year "year" output.check
}
'skip$
if$
new.block
format.title "title" output.check
"M" set.entry.mark
format.mark "" output.after
new.block
format.translators output
new.slash
format.editors output
new.block
format.series.vol.num.booktitle "booktitle" output.check
new.block
format.edition output
new.block
format.address.publisher output
year.after.author not
{ format.year "year" output.check }
'skip$
if$
format.extracted.pages bbl.pages.colon output.after
format.urldate "" output.after
output.url
output.doi
new.block
format.note output
fin.entry
}
FUNCTION {periodical}
{ output.bibitem
output.translation
format.authors output
author format.key output
year.after.author
{ period.after.author
'new.sentence
'skip$
if$
format.year "year" output.check
}
'skip$
if$
new.block
format.title "title" output.check
"J" set.entry.mark
format.mark "" output.after
new.block
format.periodical.year.volume.number output
new.block
format.address.publisher output
year.after.author not
{ format.periodical.year "year" output.check }
'skip$
if$
format.urldate "" output.after
output.url
output.doi
new.block
format.note output
fin.entry
}
FUNCTION {journal.article}
{ output.bibitem
output.translation
format.authors output
author format.key output
year.after.author
{ period.after.author
'new.sentence
'skip$
if$
format.year "year" output.check
}
'skip$
if$
new.block
title.in.journal
{ format.title "title" output.check
entrysubtype empty$ not
{
entrysubtype "newspaper" =
{ "N" set.entry.mark }
{ "J" set.entry.mark }
if$
}
{ "J" set.entry.mark }
if$
format.mark "" output.after
new.block
}
'skip$
if$
format.journal "journal" output.check
year.after.author not
{ format.date "year" output.check }
'skip$
if$
format.journal.volume output
format.journal.number "" output.after
format.journal.pages bbl.pages.colon output.after
format.urldate "" output.after
output.url
output.doi
new.block
format.note output
fin.entry
}
FUNCTION {patent}
{ output.bibitem
output.translation
format.authors output
author format.key output
year.after.author
{ period.after.author
'new.sentence
'skip$
if$
format.year "year" output.check
}
'skip$
if$
new.block
format.title "title" output.check
"P" set.entry.mark
format.mark "" output.after
new.block
format.date "year" output.check
format.urldate "" output.after
output.url
output.doi
new.block
format.note output
fin.entry
}
FUNCTION {electronic}
{ #1 #1 check.electronic
#1 'entry.is.electronic :=
#1 'is.pure.electronic :=
output.bibitem
output.translation
format.authors output
author format.key output
year.after.author
{ period.after.author
'new.sentence
'skip$
if$
format.year "year" output.check
}
'skip$
if$
new.block
format.series.vol.num.title "title" output.check
"EB" set.entry.mark
format.mark "" output.after
new.block
format.address.publisher output
year.after.author not
{ date empty$
{ format.date output }
'skip$
if$
}
'skip$
if$
format.pages bbl.pages.colon output.after
format.editdate "" output.after
format.urldate "" output.after
output.url
output.doi
new.block
format.note output
fin.entry
}
FUNCTION {preprint}
{ output.bibitem
output.translation
author empty$ not
{ format.authors }
{ editor empty$ not
{ format.editors }
{ "empty author and editor in " cite$ * warning$
bbl.anonymous
}
if$
}
if$
output
year.after.author
{ period.after.author
'new.sentence
'skip$
if$
format.year "year" output.check
}
'skip$
if$
new.block
title.in.journal
{ format.series.vol.num.title "title" output.check
"A" set.entry.mark
format.mark "" output.after
new.block
}
'skip$
if$
format.translators output
new.sentence
format.edition output
new.block
year.after.author not
{ date empty$
{ format.date output }
'skip$
if$
}
'skip$
if$
format.pages bbl.pages.colon output.after
format.editdate "" output.after
format.urldate "" output.after
output.eprint
output.url
new.block
format.note output
fin.entry
}
FUNCTION {misc}
{ get.journal.title
duplicate$ empty$ not
{ check.arxiv.preprint
'preprint
'journal.article
if$
}
{ pop$
booktitle empty$ not
'incollection
{ publisher empty$ not
'monograph
{ eprint empty$ not archivePrefix empty$ not or
'preprint
{ entry.is.electronic
'electronic
{
"Z" set.entry.mark
monograph
}
if$
}
if$
}
if$
}
if$
}
if$
empty.misc.check
}
FUNCTION {archive}
{ "A" set.entry.mark
misc
}
FUNCTION {article} { misc }
FUNCTION {book} { monograph }
FUNCTION {booklet} { book }
FUNCTION {collection}
{ "G" set.entry.mark
monograph
}
FUNCTION {database}
{ "DB" set.entry.mark
electronic
}
FUNCTION {dataset}
{ "DS" set.entry.mark
electronic
}
FUNCTION {inbook} { book }
FUNCTION {inproceedings}
{ "C" set.entry.mark
incollection
}
FUNCTION {conference} { inproceedings }
FUNCTION {legislation} { archive }
FUNCTION {map}
{ "CM" set.entry.mark
misc
}
FUNCTION {manual} { monograph }
FUNCTION {mastersthesis}
{ "D" set.entry.mark
monograph
}
FUNCTION {newspaper}
{ "N" set.entry.mark
article
}
FUNCTION {online}
{ "EB" set.entry.mark
electronic
}
FUNCTION {phdthesis} { mastersthesis }
FUNCTION {proceedings}
{ "C" set.entry.mark
monograph
}
FUNCTION {software}
{ "CP" set.entry.mark
electronic
}
FUNCTION {standard}
{ "S" set.entry.mark
misc
}
FUNCTION {techreport}
{ "R" set.entry.mark
misc
}
FUNCTION {unpublished} { misc }
FUNCTION {default.type} { misc }
MACRO {jan} {"January"}
MACRO {feb} {"February"}
MACRO {mar} {"March"}
MACRO {apr} {"April"}
MACRO {may} {"May"}
MACRO {jun} {"June"}
MACRO {jul} {"July"}
MACRO {aug} {"August"}
MACRO {sep} {"September"}
MACRO {oct} {"October"}
MACRO {nov} {"November"}
MACRO {dec} {"December"}
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"}
FUNCTION {sortify}
{ purify$
"l" change.case$
}
FUNCTION {chop.word}
{ 's :=
'len :=
s #1 len substring$ =
{ s len #1 + global.max$ substring$ }
's
if$
}
FUNCTION {format.lab.name}
{ "{vv~}{ll}{, jj}{, ff}" format.name$ 't :=
t "others" =
{ citation.et.al }
{ t get.str.lang 'name.lang :=
name.lang lang.zh = name.lang lang.ja = or
{ t #1 "{ll}{ff}" format.name$ }
{ t #1 "{vv~}{ll}" format.name$ }
if$
}
if$
}
FUNCTION {format.lab.names}
{ 's :=
s #1 format.lab.name 'short.label :=
#1 'nameptr :=
s num.names$ 'numnames :=
""
numnames 'namesleft :=
{ namesleft #0 > }
{ s nameptr format.lab.name citation.et.al =
numnames citation.et.al.min #1 - > nameptr citation.et.al.use.first > and or
{ bbl.space *
citation.et.al *
#1 'namesleft :=
}
{ nameptr #1 >
{ namesleft #1 = citation.and "" = not and
{ citation.and * }
{ ", " * }
if$
}
'skip$
if$
s nameptr format.lab.name *
}
if$
nameptr #1 + 'nameptr :=
namesleft #1 - 'namesleft :=
}
while$
}
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 {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}
{ "" 'short.label :=
type$ "book" =
type$ "inbook" =
or
'author.editor.key.label
{ type$ "collection" =
type$ "proceedings" =
or
{ editor empty$ not
'editor.key.organization.label
'author.key.organization.label
if$
}
'author.key.label
if$
}
if$
'short.list :=
short.label empty$
{ short.list 'short.label := }
'skip$
if$
}
FUNCTION {calc.label}
{ calc.short.authors
short.list "]" contains
{ "{" short.list * "}" * }
{ short.list }
if$
"("
*
format.year duplicate$ empty$
short.list key field.or.null = or
{ pop$ "" }
'skip$
if$
duplicate$ "]" contains
{ "{" swap$ * "}" * }
'skip$
if$
*
'label :=
short.label
"("
*
format.year duplicate$ empty$
short.list key field.or.null = or
{ pop$ "" }
'skip$
if$
*
'short.label :=
}
FUNCTION {sort.language.label}
{ entry.lang lang.zh =
{ lang.zh.order }
{ entry.lang lang.ja =
{ lang.ja.order }
{ entry.lang lang.en =
{ lang.en.order }
{ entry.lang lang.ru =
{ lang.ru.order }
{ lang.other.order }
if$
}
if$
}
if$
}
if$
#64 +
int.to.chr$
}
FUNCTION {sort.format.names}
{ 's :=
#1 'nameptr :=
""
s num.names$ 'numnames :=
numnames 'namesleft :=
{ namesleft #0 > }
{
s nameptr "{vv{ } }{ll{ }}{ ff{ }}{ jj{ }}" format.name$ 't :=
nameptr #1 >
{
" " *
namesleft #1 = t "others" = and
{ "zzzzz" * }
{ numnames #2 > nameptr #2 = and
{ "zz" * year field.or.null * " " * }
'skip$
if$
t sortify *
}
if$
}
{ t sortify * }
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 {anonymous.sort}
{ entry.lang lang.zh =
{ "yi4 ming2" }
{ "anon" }
if$
}
FUNCTION {warn.empty.key}
{ entry.lang lang.zh =
{ "empty key in " cite$ * warning$ }
'skip$
if$
}
FUNCTION {author.sort}
{ key empty$
{ warn.empty.key
author empty$
{ anonymous.sort }
{ author sort.format.names }
if$
}
{ key }
if$
}
FUNCTION {author.editor.sort}
{ key empty$
{ warn.empty.key
author empty$
{ editor empty$
{ anonymous.sort }
{ editor sort.format.names }
if$
}
{ author sort.format.names }
if$
}
{ key }
if$
}
FUNCTION {author.organization.sort}
{ key empty$
{ warn.empty.key
author empty$
{ organization empty$
{ anonymous.sort }
{ "The " #4 organization chop.word sortify }
if$
}
{ author sort.format.names }
if$
}
{ key }
if$
}
FUNCTION {editor.organization.sort}
{ key empty$
{ warn.empty.key
editor empty$
{ organization empty$
{ anonymous.sort }
{ "The " #4 organization chop.word sortify }
if$
}
{ editor sort.format.names }
if$
}
{ key }
if$
}
FUNCTION {presort}
{ set.entry.lang
set.entry.numbered
show.url show.doi check.electronic
#0 'is.pure.electronic :=
calc.label
label sortify
" "
*
sort.language.label
" "
*
type$ "book" =
type$ "inbook" =
or
'author.editor.sort
{ type$ "collection" =
type$ "proceedings" =
or
'editor.organization.sort
'author.sort
if$
}
if$
*
" "
*
year field.or.null sortify
*
" "
*
cite$
*
#1 entry.max$ substring$
'sort.label :=
sort.label *
#1 entry.max$ substring$
'sort.key$ :=
}
STRINGS { longest.label last.label next.extra last.extra.label }
INTEGERS { longest.label.width number.label }
FUNCTION {initialize.longest.label}
{ "" 'longest.label :=
#0 int.to.chr$ 'last.label :=
"" 'next.extra :=
#0 'longest.label.width :=
#0 'number.label :=
"" 'last.extra.label :=
}
FUNCTION {forward.pass}
{
last.label short.label =
{ "" 'extra.label :=
last.extra.label text.length$ 'charptr :=
{ last.extra.label charptr #1 substring$ "z" =
charptr #0 > and
}
{ "a" extra.label * 'extra.label :=
charptr #1 - 'charptr :=
}
while$
charptr #0 >
{ last.extra.label charptr #1 substring$ chr.to.int$ #1 + int.to.chr$
extra.label * 'extra.label :=
last.extra.label #1 charptr #1 - substring$
extra.label * 'extra.label :=
}
{ "a" extra.label * 'extra.label := }
if$
extra.label 'last.extra.label :=
}
{ "a" 'last.extra.label :=
"" 'extra.label :=
short.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 :=
}
FUNCTION {bib.sort.order}
{ sort.label 'sort.key$ :=
}
FUNCTION {begin.bib}
{ preamble$ empty$
'skip$
{ preamble$ write$ newline$ }
if$
"\begin{thebibliography}{" number.label int.to.str$ * "}" *
write$ newline$
terms.in.macro
{ "\providecommand{\biband}{和}"
write$ newline$
"\providecommand{\bibetal}{等}"
write$ newline$
}
'skip$
if$
"\providecommand{\natexlab}[1]{#1}"
write$ newline$
"\providecommand{\url}[1]{#1}"
write$ newline$
"\expandafter\ifx\csname urlstyle\endcsname\relax\else"
write$ newline$
" \urlstyle{same}\fi"
write$ newline$
"\expandafter\ifx\csname href\endcsname\relax"
write$ newline$
" \DeclareUrlCommand\doi{\urlstyle{rm}}"
write$ newline$
" \def\eprint#1#2{#2}"
write$ newline$
"\else"
write$ newline$
" \def\doi#1{\href{https://doi.org/#1}{\nolinkurl{#1}}}"
write$ newline$
" \let\eprint\href"
write$ newline$
"\fi"
write$ newline$
}
FUNCTION {end.bib}
{ newline$
"\end{thebibliography}" write$ newline$
}
READ
EXECUTE {init.state.consts}
EXECUTE {load.config}
ITERATE {presort}
SORT
EXECUTE {initialize.longest.label}
ITERATE {forward.pass}
REVERSE {reverse.pass}
ITERATE {bib.sort.order}
SORT
EXECUTE {begin.bib}
ITERATE {call.type$}
EXECUTE {end.bib}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。