2333 lines
38 KiB
Plaintext
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}
|