tensor_predictors/LaTeX/Annals/imsart-nameyear.bst

2333 lines
38 KiB
Plaintext

%% This is file `imsart-nameyear.bst'
%%
%%
%% You are free to use this style file as you see fit, provided
%% that you do not make changes to the file.
%% If you DO make changes, you are required to rename this file.
%%
%% It may be distributed under the terms of the LaTeX Project Public
%% License, as described in lppl.txt in the base LaTeX distribution.
%% Either version 1.0 or, at your option, any later version.
%%
%% TeX programming: Linas Stonys, VTeX, Lithuania, lstonys@vtex.lt
%%
%% This bibtex style produces structured bibliography (.bbl) file which could be
%% converted back into the database (.bib) format.
%% bibtex program must be invoked with the maximum allocation of memory (-w switch)
%%
%% This bibtex style could be used only with the imsart package
%% starting with version from 2009/08/13
%% 2010-02-01 - splited inits "A.D." -> "A. D." and "A.{\,}D." -> "A. D."
%% 2010-03-19 - fixed sorting.
%% 2011-01-07 - inserted options: sort, nameyear, alpha, number.
%% 2013-01-28 - added: arxiv, mrnumber. Changed tags.
ENTRY
{ address
author
arxiv
booktitle
bpt_note
bpt_ok
chapter
doi
edition
editor
howpublished
institution
isbn
journal
key
month
mrnumber
note
number
organization
pages
publisher
school
series
src
sortkey
title
type
volume
year
url
id
options
}
{}
{ label extra.label sort.label short.list }
INTEGERS { output.state before.all mid.sentence after.sentence
after.block between.elements }
FUNCTION {init.state.consts}
{ #0 'before.all :=
#1 'mid.sentence :=
#2 'after.sentence :=
#3 'after.block :=
#5 'between.elements :=
}
STRINGS { s t tmp1 tmp2 tmp3 tmp4 tmp5}
STRINGS { longest.label last.label list.string temp.str default.list}
FUNCTION {not}
{ { #0 }
{ #1 }
if$
}
FUNCTION {and}
{ 'skip$
{ pop$ #0 }
if$
}
FUNCTION {or}
{ { pop$ #1 }
'skip$
if$
}
FUNCTION {output.nonnull}
{ 's :=
output.state mid.sentence =
{ " " * write$ newline$}
{ output.state after.block =
{ add.period$ write$
newline$
% "\newblock " write$
}
{ output.state between.elements =
{ ", " * write$ newline$ }
{ output.state before.all =
'write$
{ add.period$ " " * write$ newline$}
if$
}
if$
}
if$
mid.sentence 'output.state :=
}
if$
s
}
FUNCTION {output}
{ duplicate$ empty$
'pop$
{output.nonnull}
if$
}
FUNCTION {output.check}
{ 't :=
duplicate$ empty$
{ pop$ "empty " t * " in " * cite$ * warning$ }
{output.nonnull}
if$
}
FUNCTION {insert.comma}
{ output.state before.all =
'skip$
{ between.elements 'output.state := }
if$
}
FUNCTION {new.sentence}
{ output.state after.block =
'skip$
{ output.state before.all =
'skip$
{ after.sentence 'output.state :=}
if$
}
if$
}
FUNCTION {field.or.null}
{ duplicate$ empty$
{ pop$ "" }
'skip$
if$
}
STRINGS { v l f j b ff}
INTEGERS { nameptr namesleft numnames bother}
INTEGERS {str.length count return save.num1 save.num2 save.num3 save.num4 int done}
FUNCTION {is.in.list}{
'f :=
%%%% issisaugoju originalius "s" ir "t"
s 'j :=
f 's :=
t 'f :=
list.string text.length$ 'str.length :=
list.string 't :=
% s text.length$ 'slen :=
int 'save.num1 :=
count 'save.num2 :=
#1 'int :=
#1 'count :=
#0 'return :=
{ count str.length = not
#0 str.length = not
and
}
{
count #1 + 'count :=
t int #1 substring$ "," =
{
t #1 int substring$ s "," * =
{
#1 'return :=
str.length 'count :=
}
'skip$
if$
int #1 + 'int :=
t int global.max$ substring$ 't :=
#0 'int :=
}
'skip$
if$
int #1 + 'int :=
% "count=" count int.to.str$ * " slen=" * str.length int.to.str$ * top$
}
while$
save.num1 'int :=
save.num2 'count :=
#0 return =
{ s t =
{#1 'return :=}
'skip$
if$
}
'skip$
if$
%%%% grazinu originalius "s" ir "t"
j 's :=
f 't :=
return
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%% formating bbl
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
FUNCTION {make.tag}
{ 't :=
duplicate$ empty$
{ pop$ "" }
{ bother #0 =
{ t "volume" =
{"\textbf{" swap$ * "}" * }
'skip$
if$
}
{ "\b" t * "{" * swap$ * "}" * }
if$
}
if$
}
INTEGERS {sk}
FUNCTION {is.num}
{ chr.to.int$
duplicate$ "0" chr.to.int$ < not
swap$ "9" chr.to.int$ > not and
}
FUNCTION {byear}
{ duplicate$ empty$
{ pop$ "" }
{'t :=
t text.length$ 'sk :=
#5 sk =
{t #1 #4 substring$ 's :=
t #5 #1 substring$ 'longest.label :=
longest.label is.num not
{"\byear{" s * "}" * longest.label * }
{"\byear{" t * "}" * }
if$
}
{t "year" make.tag
"type=nameyear" is.in.list
{extra.label *}
'skip$
if$
}
if$
}
if$
}
FUNCTION {format.address}
{address empty$
{ "" }
{address "address" make.tag }
if$
}
FUNCTION {format.organization}
{organization empty$
{ "" }
{organization "publisher" make.tag}
if$
}
FUNCTION {format.org}
{organization empty$
{ "" }
{organization "organization" make.tag add.period$}
if$
}
FUNCTION {format.pub.address}
{ publisher empty$
{ "" }
{ publisher "publisher" make.tag
address empty$
'skip$
{", " * format.address * add.period$}
if$
}
if$
}
FUNCTION {mk.tag}
{ 'temp.str :=
duplicate$ empty$
{ pop$ "" }
{
b "nothing" =
'skip$
{"\b" temp.str * "{" * swap$ * "}" * }
if$
}
if$
}
FUNCTION {space.after.dot}
{'t :=
"" 'l :=
"" 's :=
{ t empty$ not }
{ t #1 #1 substring$ 's :=
l s * 'l :=
s "." =
{ t #2 #1 substring$ " " =
'skip$
{
l " " * 'l :=
t #2 #4 substring$ "{\,}" =
{
t #5 global.max$ substring$ 't :=
}
'skip$
if$
}
if$
}
'skip$
if$
t #2 global.max$ substring$ 't :=
}
while$
l
}
FUNCTION {format.author.editor}
{ 'b :=
b "editor" =
b "beditor" =
b "editor2" =
or or
{editor space.after.dot 's :=}
{author space.after.dot 's :=}
if$
#1 'nameptr :=
s num.names$ 'numnames :=
numnames 'namesleft :=
{ namesleft #0 > }
{
s nameptr "{vv}" format.name$ "particle" mk.tag 'v :=
s nameptr "{ll}" format.name$ "snm" mk.tag 'l :=
s nameptr "{f.}" format.name$ "inits" mk.tag 'f :=
s nameptr "{ff}" format.name$ "fnm" mk.tag 'ff :=
s nameptr "{jj}" format.name$ "suffix" mk.tag 'j :=
j empty$
{"" 'j :=}
{" " j * 'j :=}
if$
v empty$
{"" 'v :=}
{v " " * 'v :=}
if$
l "\bsnm{others}" =
{ "et~al." "etal" make.tag * }
{
b "editor2" =
{"\beditor{" * ff * f *
ff "" = f "" = and
'skip$
{"~" * }
if$
v * l * j * "}" * "" 't :=
}
'skip$
if$
b "author" =
b "editor" =
or
{"\b" * b * "{" * v * l *
ff "" = f "" = and
'skip$
{",~" * }
if$
ff * f * j * "}" * "" 't :=}
'skip$
if$
}
if$
namesleft #0 >
{ namesleft #1 >
{ namesleft #2 =
{ s numnames "{ll}" format.name$ "others" =
{" " * t * }
{" \AND " * t * }
if$
}
{", " * t * }
if$
}
{""}
if$
}
't
if$
nameptr #1 + 'nameptr :=
namesleft #1 - 'namesleft :=
}
while$
}
FUNCTION {format.editors}
{ editor empty$
{""}
{
bother #0 =
{author empty$
{"editor"}
{"nothing"}
if$
}
{"editor"}
if$
format.author.editor
editor num.names$ #1 >
{ ", eds." * }
{ ", ed." * }
if$
}
if$
}
FUNCTION {format.authors}
{ author empty$
{""}
{"author" format.author.editor}
if$
}
FUNCTION {make.editors}
{ editor empty$
{ "" }
{ "("
bother #0 =
{author empty$
{"editor"}
{"nothing"}
if$
}
{"editor2"}
if$
format.author.editor
*
editor num.names$ #1 >
{ ", eds.)" * }
{ ", ed.)" * }
if$
}
if$
}
FUNCTION {cite.author.editor}
{ 's :=
s #1 "{vv~}{ll}" format.name$
s num.names$ duplicate$
#3 >
{ pop$ " et~al." * }
{ #3 =
{ s #3 "{vv~}{ll}{ jj}{ f}" format.name$ "others" =
{ " et~al." * }
{ ", " * s #2 "{vv~}{ll}" format.name$ *
" and " * s #3 "{vv~}{ll}" format.name$ *
}
if$
}
{s num.names$ #2 =
{s #2 "{vv~}{ll}{ jj}{ f}" format.name$ "others" =
{ " et~al." * }
{ " and " * s #2 "{vv~}{ll}" format.name$ * }
if$
}
'skip$
if$
}
if$
}
if$
}
FUNCTION {check.auth.edit.org}
{author empty$
{
editor empty$
{
organization empty$
{""}
{organization}
if$
}
{editor cite.author.editor}
if$
}
{author cite.author.editor}
if$
}
FUNCTION {check.year}
{year empty$
{""}
{year extra.label *
}
if$
}
FUNCTION {output.bibitem}
{ newline$
"\bibitem"
"type=nameyear" is.in.list
{
"[\protect\citeauthoryear{" * write$
check.auth.edit.org write$
"}{" write$
check.year write$
"}]"
}
'skip$
if$
"type=alpha" is.in.list
{
"[" * write$
label write$
"]"
}
'skip$
if$
"{" * write$
cite$ write$
"}" write$
newline$
"" before.all 'output.state :=
}
INTEGERS { multiresult char.num k }
FUNCTION {string.to.integer}
{ 't :=
t text.length$ 'k :=
#1 'char.num :=
{ t char.num #1 substring$ 's :=
s is.num
s "." =
or
char.num k = not
and
}
{char.num #1 + 'char.num :=}
while$
char.num #1 - 'char.num :=
t #1 char.num substring$
}
FUNCTION {check.mrnumber}
{mrnumber 't :=
""
{ t empty$ not }
{ t #1 #2 substring$ "\#" =
{ t #1 #2 substring$ *
t #2 global.max$ substring$ 't :=
}
{
t #1 #1 substring$ "#" =
{ "\#" *
t #2 global.max$ substring$ 't :=
}
{ t #1 #1 substring$ *
t #2 global.max$ substring$ 't :=
}
if$
}
if$
}
while$
}
FUNCTION {remove.braces}
{'t :=
""
{ t empty$ not }
{ t #1 #1 substring$ "{" =
t #1 #1 substring$ "}" =
or
{
t #2 global.max$ substring$ 't :=
}
{ t #1 #1 substring$ *
t #2 global.max$ substring$ 't :=
}
if$
}
while$
}
FUNCTION {format.mrnumber}
{ mrnumber empty$
{ "" }
{ bother #0 =
{check.mrnumber}
{"\bmrnumber{" check.mrnumber * "}" * }
if$
}
if$
}
INTEGERS { found }
FUNCTION {cut.info}
{ 't :=
#0 'found :=
"" 's :=
"" 'v :=
{ t empty$ not }
{
t #1 #5 substring$ "info:" =
{
t #6 global.max$ substring$ 't :=
#1 'found :=
"}" 'v :=
}
'skip$
if$
t #1 #1 substring$ "/" =
#1 found =
and
{
t #2 global.max$ substring$ 't :=
s "={" * 's :=
#0 'found :=
}
'skip$
if$
t #1 #2 substring$ ", " =
v "}" =
and
{
t #2 global.max$ substring$ 't :=
s "}," * 's :=
}
'skip$
if$
s t #1 #1 substring$ * 's :=
t #2 global.max$ substring$ 't :=
}
while$
s v *
}
FUNCTION {format.id}
{ id empty$
{ "" }
{ bother #0 =
{ "" }
{"\bid{" id cut.info * "}" * }
if$
}
if$
}
FUNCTION {format.journal}
{ journal empty$
{ "" }
{ bother #0 =
{journal "t" change.case$}
{"\bjournal{" journal * "}" * }
if$
}
if$
}
FUNCTION {title.sep}
{ type$ "article" =
type$ "incollection" =
type$ "inproceedings" =
type$ "booklet" =
type$ "unpublished" =
or or or or
'add.period$
'skip$
if$
type$ "inbook" =
type$ "manual" =
or
edition empty$ not
and
{"," *}
{
edition empty$
series empty$ not
and
'add.period$
'skip$
if$
}
if$
type$ "book" =
{
edition empty$ not
series empty$ not
and
{"," *}
{
edition empty$
series empty$ not
and
'add.period$
'skip$
if$
}
if$
}
'skip$
if$
}
FUNCTION {format.title}
{ title empty$
{ "" }
{
title "title" make.tag
title.sep
}
if$
}
FUNCTION {format.year}
{ year empty$
{""}
{ bother #0 =
{"(" year extra.label * * ")." *}
{"(" year byear * ")." *}
if$
}
if$
}
FUNCTION {format.month}
{ month empty$
{""}
{ "\bmonth{" month * "}" *}
if$
}
FUNCTION {format.type}
{ type empty$
{""}
{ "\btype{" type * "}" *}
if$
}
FUNCTION {formatpatent.date}
{ year empty$
{ month empty$
{ "" }
{ "there's a month but no year in " cite$ * warning$}
if$
}
{ month empty$
{ year byear}
{format.month " " * year byear *}
if$
}
if$
}
FUNCTION {format.btitle}
{ title "btitle" make.tag
}
FUNCTION {format.note}
{ note empty$
{""}
{ note "note" make.tag}
if$
}
FUNCTION {format.bptnote}
{bpt_note empty$
{""}
{"\bptnote{" bpt_note * "}%" * }
if$
}
FUNCTION {format.bptok}
{bpt_ok empty$
{""}
{"\bptok{" bpt_ok * "}%" * }
if$
}
FUNCTION {add.note}
{ note empty$
{""}
{ note }
if$
}
FUNCTION {format.chapter}
{chapter empty$
{""}
{"\bchapter{" chapter * "}" * }
if$
}
FUNCTION {chap.type}
{chapter empty$
{""}
{ type empty$
{ "Chapter "}
{ type "Section" =
{ "Section "}
{ "Chapter "}
if$
}
if$
"\bchapter{" chapter * "}" * *
}
if$
}
FUNCTION {chap.note}
{ format.note output
new.sentence
}
FUNCTION {tie.or.space.connect}
{ duplicate$ text.length$ #3 <
{ "~" }
{ " " }
if$
swap$ * *
}
FUNCTION {no.space.connect}
{ duplicate$ text.length$ #3 <
{ "" }
{ "" }
if$
swap$ * *
}
%%%%%%%%%%%%%%%%%%%%%%%%%% patent names
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
FUNCTION {either.or.check}
{ empty$
'pop$
{ "can't use both " swap$ * " fields in " * cite$ * warning$ }
if$
}
FUNCTION {format.series}
{ series empty$
{ "" }
{ bother #0 =
{series}
{"\bseries{" series * "}" * }
if$
}
if$
}
FUNCTION {format.edition}
{ edition empty$
{ "" }
{ output.state mid.sentence =
{ edition "l" change.case$ }
{ edition "t" change.case$ }
if$
"edition" make.tag
" ed." *
}
if$
}
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.isbn}
{ isbn empty$
{ "" }
{"\bisbn{" isbn * "}" *}
if$
}
FUNCTION {format.school}
{ school empty$
{""}
{"\bpublisher{" school * "}" * }
if$
}
FUNCTION {format.institution}
{ institution empty$
{""}
{ bother #0 =
{institution}
{ "techreport" type$ =
{"\bpublisher{" }
{"\binstitute{" }
if$
institution * "}" *
}
if$
}
if$
}
FUNCTION {format.howpublished}
{ howpublished empty$
{""}
{ howpublished "howpublished" make.tag }
if$
}
FUNCTION {format.vol}
{ volume empty$
number empty$
and
{""}
{ volume empty$
{number}
{volume}
if$
"volume" make.tag
}
if$
}
FUNCTION {note.presented}
{note #1 #9 substring$ "presented" =
note #1 #9 substring$ "Presented" =
or}
FUNCTION {format.url}
{ url empty$
{ "" }
{"\url{" url * "}" * }
if$
}
FUNCTION {format.arxiv}
{ arxiv empty$
{ "" }
{"\arxiv{" arxiv * "}" * }
if$
}
FUNCTION {format.doi}
{ doi empty$
{""}
{"\bdoi{" doi * "}" * }
if$
}
FUNCTION {format.ppages}
{ pages empty$
{""}
{pages "pages" make.tag
add.period$
}
if$
}
FUNCTION {format.booktitle}
{ booktitle empty$
{ "" }
{ bother #0 =
{"In " booktitle *}
{"In \bbooktitle{" booktitle * "}" *}
if$
type$ "incollection" =
{ series empty$
volume empty$
and
'skip$
{ editor empty$ series empty$ not and
{"." *}
{"," *}
if$
}
if$
}
'skip$
if$
type$ "inproceedings" =
{ series empty$
editor empty$
% volume empty$ not
and
'skip$
{editor empty$
{"." *}
'skip$
if$
}
if$
}
'skip$
if$
}
if$
}
FUNCTION {format.tr.number}
{ type empty$
{ "\btype{Technical Report}" }
{ "\btype{" type * "}" * }
if$
number empty$
'skip$
{ " No. \bnumber{" number * "}" * * }
if$
% type empty$ not
% number empty$
institution empty$ not
{"," *}
'skip$
if$
}
FUNCTION {format.number}
{number empty$
{""}
{"\bnumber{" number * "}" * }
if$
}
INTEGERS { len }
FUNCTION {chop.word}
{ 's :=
'len :=
s #1 len substring$ =
{ s len #1 + global.max$ substring$ }
's
if$
}
FUNCTION {bcomment.note}
{note empty$
'skip$
{note "note" make.tag output add.period$}
if$
}
FUNCTION {empty.misc.check}
{ author empty$ title empty$ howpublished empty$
month empty$ year empty$ note empty$
and and and and and
{ "all relevant fields are empty in " cite$ * warning$ }
'skip$
if$
}
FUNCTION {format.thesis.type}
{ type empty$
'skip$
{ pop$
"\btype" type * "}" *
}
if$
}
FUNCTION {element.type}
{ bother #0 =
{"\begin{botherref}" write$ newline$}
{"\begin{" write$
"b"
"conference" type$ =
{"inproceedings"}
{
"proceedings" type$ =
{"book"}
'type$
if$
}
if$
* write$
"}[" write$
src empty$
{"author" write$}
{src write$ }
if$
"]" write$ newline$
}
if$
}
FUNCTION {end.element.type}
{write$ newline$
bother #0 =
{"\end{botherref}" write$ newline$}
{"\end{" write$
"b"
"conference" type$ =
{"inproceedings"}
{
"proceedings" type$ =
{"book"}
'type$
if$
}
if$
* write$
"}" write$ newline$
}
if$
"\endbibitem" write$ newline$
}
FUNCTION {same.end}
{ add.period$
format.doi output
%new.sentence
format.mrnumber output
%new.sentence
%format.url output
new.sentence
format.arxiv output
new.sentence
format.id output
format.bptnote output
format.bptok output
}
FUNCTION {settings}{}
FUNCTION {article}
{ output.bibitem
#1 'bother :=
element.type
format.authors output.nonnull
format.year output
format.title "title" output.check
format.journal output
format.vol output
format.ppages output
new.sentence
bcomment.note
same.end
end.element.type
}
FUNCTION {manual}
{ output.bibitem
#1 'bother :=
element.type
author empty$
{ organization empty$
'skip$
{ format.organization output.nonnull}
if$
}
{ format.authors output.nonnull}
if$
format.year output
new.sentence
format.title "title" output.check
format.edition output
author empty$
{ organization empty$
'skip$
{ format.address output}
if$
}
{ format.organization output
address empty$
'skip$
{ insert.comma }
if$
format.address output
}
if$
% new.sentence
bcomment.note
same.end
end.element.type
}
FUNCTION {patent}
{ #1 'bother :=
output.bibitem
element.type
format.authors output.nonnull
format.year output
format.title "title" output.check
format.number output
new.sentence
bcomment.note
same.end
end.element.type
}
FUNCTION { other } { patent }
FUNCTION {book}
{ output.bibitem
#1 'bother :=
element.type
author empty$
{ format.editors output}
{ format.authors output.nonnull}
if$
format.year output
format.title output
series empty$
{
format.vol output
edition empty$
'new.sentence
'insert.comma
if$
format.edition output
new.sentence
}
{
format.edition output
new.sentence
format.series output
format.vol output
new.sentence
}
if$
format.pub.address output
bcomment.note
same.end
end.element.type
}
FUNCTION {booklet}
{ #1 'bother :=
output.bibitem
element.type
format.authors output.nonnull
format.year output
format.title "title" output.check
format.howpublished output
address empty$
'new.sentence
'insert.comma
if$
format.address output
bcomment.note
same.end
end.element.type
}
FUNCTION {inbook}
{ output.bibitem
#1 'bother :=
element.type
author empty$
{ format.editors output}
{ format.authors output.nonnull}
if$
format.year output
format.title output
format.booktitle output
format.edition output
series empty$
'skip$
{new.sentence}
if$
format.series output
format.vol output
format.chapter output
chapter empty$ not
pages empty$ not
and
'insert.comma
'skip$
if$
format.ppages output
new.sentence
format.pub.address output
chap.note %output
new.sentence
same.end
end.element.type
}
FUNCTION {incollection}
{ output.bibitem
#1 'bother :=
element.type
format.authors output.nonnull
format.year output
format.title "title" output.check
format.booktitle "booktitle" output.check
format.edition output
make.editors output
series empty$ editor empty$
or
'skip$
'new.sentence
if$
format.series output
format.vol output
format.chapter output
chapter empty$ not
pages empty$ not
and
'insert.comma
'skip$
if$
format.ppages output
format.pub.address output
bcomment.note
same.end
end.element.type
}
FUNCTION {inproceedings}
{ output.bibitem
#1 'bother :=
element.type
format.authors output.nonnull
format.year output
format.title "title" output.check
format.booktitle "booktitle" output.check
make.editors output
editor empty$ series empty$
or
'skip$
'new.sentence
if$
format.series output
format.vol output
format.ppages output
new.sentence
publisher empty$
{format.organization output}
{format.org output}
if$
format.pub.address output
bcomment.note
same.end
end.element.type
}
FUNCTION {conference} { inproceedings }
FUNCTION {mastersthesis}
{ #1 'bother :=
output.bibitem
element.type
format.authors output.nonnull
format.year output
format.title "title" output.check
insert.comma
type empty$
{"\btype{Master's thesis}" output.nonnull}
{format.type output}
if$
school empty$
'skip$
{ insert.comma }
if$
format.school output
address empty$
'skip$
{ insert.comma }
if$
format.address output
bcomment.note
same.end
end.element.type
}
FUNCTION {misc}
{ #1 'bother :=
output.bibitem
element.type
author empty$
{ organization empty$
'skip$
{ format.org output.nonnull}
if$
}
{ format.authors output.nonnull}
if$
format.year output
format.title "title" output.check
new.sentence
format.howpublished output
new.sentence
author empty$
{ organization empty$
'skip$
{ format.address output}
if$
}
{ format.organization output
address empty$
'skip$
{ insert.comma }
if$
format.address output
}
if$
new.sentence
bcomment.note
same.end
empty.misc.check
end.element.type
}
FUNCTION {phdthesis}
{ #1 'bother :=
output.bibitem
element.type
format.authors output.nonnull
format.year output
format.title "title" output.check
insert.comma
type empty$
{"\btype{PhD thesis}" output.nonnull}
{format.type output}
if$
school empty$
'skip$
{ insert.comma }
if$
format.school output
address empty$
'skip$
{ insert.comma }
if$
format.address output
bcomment.note
same.end
end.element.type
}
FUNCTION {proceedings}{book}
FUNCTION {techreport}
{ #1 'bother :=
output.bibitem
element.type
format.authors output.nonnull
format.year output
format.title "title" output.check
format.tr.number output
format.institution output
new.sentence
address empty$
'skip$
{ insert.comma }
if$
format.address output
bcomment.note
same.end
end.element.type
}
FUNCTION {unpublished}
{ #1 'bother :=
output.bibitem
element.type
format.authors output.nonnull
format.year output
format.title "title" output.check
bcomment.note
same.end
end.element.type
}
FUNCTION {default.type} { unpublished }
READ
FUNCTION {sortify}
{ purify$
"l" change.case$
}
%%%%% setting default options
FUNCTION {default.option.string}
{"sort=1,type=nameyear"}
FUNCTION {set.default.opt}
{default.option.string 'list.string :=}
EXECUTE {set.default.opt}
INTEGERS {length2}
FUNCTION {in.string}{
l 'tmp1 :=
v 'tmp2 :=
'l := % chars
'v := % string
l text.length$ 'length2 :=
v text.length$ 'str.length :=
int 'save.num1 :=
count 'save.num2 :=
#1 'int :=
#0 'count :=
#0 'found :=
length2 str.length =
'skip$
{
l v =
{#1 'found :=}
{
{
count str.length = not
#0 str.length = not
and
}
{
count #1 + 'count :=
v int length2 substring$ l =
{
#1 'found :=
str.length 'count := % to finish while$ loop
}
'skip$
if$
int #1 + 'int :=
}
while$
}
if$
}
if$
save.num1 'int :=
save.num2 'count :=
tmp1 'l :=
tmp2 'v :=
found
}
FUNCTION {split}{
l 'tmp1 :=
v 'tmp2 :=
'l := % split by
'v := % string to split
l text.length$ 'length2 :=
v text.length$ 'str.length :=
int 'save.num1 :=
count 'save.num2 :=
found 'save.num4 :=
#1 'int :=
#0 'count :=
#0 'found :=
{
count str.length = not
#0 str.length = not
and
}
{
count #1 + 'count :=
v int length2 substring$ l =
{
v #1 int #1 - substring$ 'l := % surasta dalis
v int #1 + #100 substring$ 'v := % likusi dalis
#1 'found :=
str.length 'count := % kad nutruktu ciklas
}
'skip$
if$
int #1 + 'int :=
}
while$
save.num1 'int :=
save.num2 'count :=
found #0 =
{
%l 'l :=
"" 'l :=
}
'skip$
if$
save.num4 'found :=
v l
tmp1 'l :=
tmp2 'v :=
}
FUNCTION {add.option}{
l 'tmp3 :=
v 'tmp4 :=
'l := % option
'v := % list
v
v "" =
{""}
{","}
if$
l * *
tmp3 'l :=
tmp4 'v :=
}
FUNCTION {remove.option}{
%%%% issisaugoju originalius "s" ir "t"
l 'j :=
v 'f :=
'l := % option name
'v := % list
"" 'temp.str := % temporary list
l text.length$ 'length2 :=
v text.length$ 'str.length :=
int 'save.num1 :=
count 'save.num2 :=
done 'save.num3 :=
#1 'int :=
#0 'count :=
#0 'found :=
length2 str.length >
'skip$
{
#0 'done :=
v 'f :=
{done #0 = }
{
v "," in.string
{
v "," split
'f := % rasta
'v := % kas liko
}
{
#1 'done :=
v 'f :=
}
if$
f l in.string
'skip$
{
temp.str f add.option 'temp.str :=
}
if$
}
while$
}
if$
save.num1 'int :=
save.num2 'count :=
save.num3 'done :=
temp.str
j 'l :=
f 'v :=
}
FUNCTION {assign.opt}{
% priskiriu options lauka, kad galeciau i(is)jungti "unsort"
"settings" type$ =
{options empty$
'skip$
{
"" 'b :=
"" 'tmp5 :=
#0 'done :=
options "=" in.string % if options has '='
{
options 'b :=
b 'tmp5 :=
{done #0 = }
{
b "," in.string
{
b "," split
'tmp5 := % rasta
'b := % kas liko
}
{
#1 'done :=
b 'tmp5 :=
}
if$
tmp5 "=" in.string
{
tmp5 "=" split
's := % before
't := % after
list.string s remove.option 'list.string :=
}
'skip$
if$
list.string tmp5 add.option 'list.string :=
}
while$
}
'skip$
if$
}
if$
}
'skip$
if$
}
ITERATE {assign.opt}
INTEGERS { et.al.char.used }
FUNCTION {initialize.et.al.char.used}
{ #0 'et.al.char.used :=
}
EXECUTE {initialize.et.al.char.used}
FUNCTION {format.lab.names.nameyear}
{ remove.braces 's :=
s num.names$ 'numnames :=
numnames #3 >% nuo kada daryti et~al.
{ s #1 "{vv~}{ll}" format.name$ " et~al." * }
{
numnames #1 - 'namesleft :=
#2 'nameptr :=
s #1 "{vv~}{ll}" format.name$
{ namesleft #0 > }
{ nameptr numnames =
{ s nameptr "{ff }{vv }{ll}{ jj}" format.name$ "others" =
{ " et~al." * }
{ " and " * s nameptr "{vv~}{ll}" format.name$ * }
if$
}
{ ", " * s nameptr "{vv~}{ll}" format.name$ * }
if$
nameptr #1 + 'nameptr :=
namesleft #1 - 'namesleft :=
}
while$
}
if$
}
FUNCTION {format.lab.names.number}
{ remove.braces 's :=
#1 'nameptr :=
""
s num.names$ 'numnames :=
numnames 'namesleft :=
{ namesleft #0 > }
{ s nameptr "{ vv }{ ll }{ f }{ jj }" format.name$ 't :=
t sortify * " " *
nameptr #1 + 'nameptr :=
namesleft #1 - 'namesleft :=
}
while$}
FUNCTION {format.lab.names.alpha}
{ 's :=
s num.names$ 'numnames :=
numnames #1 >
{ numnames #4 >
{ #3 'namesleft := }
{ numnames 'namesleft := }
if$
#1 'nameptr :=
""
{ namesleft #0 > }
{ nameptr numnames =
{ s nameptr "{ff }{vv }{ll}{ jj}" format.name$ "others" =
{ "+" *
#1 'et.al.char.used :=
}
{ s nameptr "{v{}}{l{}}" format.name$ * }
if$
}
{ s nameptr "{v{}}{l{}}" format.name$ * }
if$
nameptr #1 + 'nameptr :=
namesleft #1 - 'namesleft :=
}
while$
numnames #4 >
{ "+" *
#1 'et.al.char.used :=
}
'skip$
if$
}
{ s #1 "{v{}}{l{}}" format.name$
duplicate$ text.length$ #2 <
{ pop$ s #1 "{ll}" format.name$ #3 text.prefix$ }
'skip$
if$
}
if$
}
FUNCTION {format.lab.names}{
"type=nameyear" is.in.list
'format.lab.names.nameyear
{
"type=alpha" is.in.list
'format.lab.names.alpha
'format.lab.names.number
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 {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
"type=alpha" is.in.list
{
duplicate$
year field.or.null purify$ #-1 #2 substring$
*
'label :=
year field.or.null purify$ #-1 #4 substring$
*
sortify 'sort.label :=
}
{
"("
*
year duplicate$ empty$
short.list key field.or.null = or
{ pop$ "" }
'skip$
if$
*
'label :=
label 'sort.label :=
}
if$
}
FUNCTION {sort.format.names.nameyear}
{ remove.braces 's :=
#1 'nameptr :=
""
s num.names$ 'numnames :=
numnames 'namesleft :=
{ namesleft #0 > }
{% nameptr #1 >
% { " " * numnames int.to.str$ * " " *}
% 'skip$
% if$
s nameptr "{vv }{ll}" format.name$ 't :=
nameptr numnames =
t "others" =
and
{ "et al" * }
{ t sortify * " " *
#3 numnames =
#2 numnames =
or
#2 nameptr =
and
{year empty$
'skip$
{year * " " *}
if$
}
'skip$
if$
}
if$
#3 numnames <
{#0 'namesleft :=
"zzz " *
}
{
nameptr #1 + 'nameptr :=
namesleft #1 - 'namesleft :=
}
if$
}
while$
}
FUNCTION {sort.format.names.number}
{ remove.braces 's :=
#1 'nameptr :=
""
s num.names$ 'numnames :=
numnames 'namesleft :=
{ namesleft #0 > }
{ s nameptr "{vv }{ll }{f }{jj}" format.name$ 't :=
nameptr numnames =
t "others" =
and
{ "et al" * }
{ t sortify * " " *}
if$
nameptr #1 + 'nameptr :=
namesleft #1 - 'namesleft :=
}
while$
}
FUNCTION {sort.format.names.alpha}
{ 's :=
#1 'nameptr :=
""
s num.names$ 'numnames :=
numnames 'namesleft :=
{ namesleft #0 > }
{ nameptr #1 >
{ " " * }
'skip$
if$
s nameptr "{vv{ } }{ll{ }}{ ff{ }}{ jj{ }}" format.name$ 't :=
nameptr numnames =
t "others" =
and
{ "et al" * }
{ t sortify * }
if$
nameptr #1 + 'nameptr :=
namesleft #1 - 'namesleft :=
}
while$
}
FUNCTION {sort.format.names}{
"type=nameyear" is.in.list
'sort.format.names.nameyear
{
"type=alpha" is.in.list
'sort.format.names.alpha
'sort.format.names.number
if$
}
if$
}
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$
"zzz"
}
{ 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$
"z"
}
{ key sortify }
if$
}
{ editor sort.format.names }
if$
}
{ author sort.format.names }
if$
}
FUNCTION {author.organization.sort}
{ author empty$
{ organization empty$
{ key empty$
{ "to sort, need author, organization, or key in " cite$ * warning$
"z"
}
{ key sortify }
if$
}
{ "The " #4 organization chop.word sortify }
if$
}
{ author sort.format.names }
if$
}
FUNCTION {editor.organization.sort}
{ editor empty$
{ organization empty$
{ key empty$
{ "to sort, need editor, organization, or key in " cite$ * warning$
"z"
}
{ key sortify }
if$
}
{ "The " #4 organization chop.word sortify }
if$
}
{ editor sort.format.names }
if$
}
FUNCTION {presort}
{ calc.label
sort.label sortify
" "
*
type$ "book" =
type$ "inbook" =
or
{author empty$
'editor.organization.sort
'author.organization.sort
if$
}
{ type$ "proceedings" =
type$ "incollection" =
or
{author empty$
'editor.organization.sort
'author.organization.sort
if$
}
{ type$ "manual" =
type$ "misc" =
or
'author.organization.sort
'author.sort
if$
}
if$
}
if$
" "
*
year field.or.null sortify
*
" "
*
%%%% removing title from the sorting line
%title field.or.null sort.format.title
%*
#1 entry.max$ substring$ 'sort.label :=
% sort.label top$
sort.label *
#1 entry.max$ substring$ 'sort.key$ :=
%sort.key$ top$
}
ITERATE {presort}
FUNCTION {bib.sort.order}
{
"settings" type$ =
{"aaa"}
{"sort=0" is.in.list
{"bb"}
{"type=alpha" is.in.list
{sort.key$}
{sort.label}
if$
}
if$
}
if$
'sort.key$ :=
%sort.key$ top$
}
ITERATE {bib.sort.order}
SORT
INTEGERS { longest.label.width last.extra.num number.label }
FUNCTION {initialize.longest.label}
{ "" 'longest.label :=
#0 int.to.chr$ 'last.label :=
"" 'j :=
#0 'longest.label.width :=
#0 'last.extra.num :=
#0 'number.label :=
}
FUNCTION {forward.pass}
{ last.label "l" change.case$ label "l" change.case$ =
{ 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}
{ j "b" =
{ "a" 'extra.label := }
'skip$
if$
extra.label 'j :=
label extra.label * 'label :=
%label top$
}
EXECUTE {initialize.longest.label}
ITERATE {forward.pass}
REVERSE {reverse.pass}
FUNCTION {begin.bib}
{ preamble$ empty$
'skip$
{ preamble$ write$ newline$ }
if$
"\begin{thebibliography}{" number.label int.to.str$ * "}" * write$ newline$
"% BibTex style file: imsart-nameyear.bst, 2017-11-03" write$ newline$
default.option.string "" =
'skip$
{
"% Default style options (" default.option.string * ")." * write$ newline$
"% Used options (" list.string * ")." * write$ newline$
}
if$
}
EXECUTE {begin.bib}
EXECUTE {init.state.consts}
ITERATE {call.type$}
FUNCTION {end.bib}
{ newline$
"\end{thebibliography}" write$ newline$
}
EXECUTE {end.bib}