Diff
checker
Text
Text
Images
Documents
Excel
Folders
Legal
Enterprise
Desktop
Pricing
Sign in
Download Diffchecker Desktop
Compare text
Find the difference between two text files
Tools
History
Real-time editor
Hide unchanged lines
Disable line wrap
Layout
Split
Unified
Diff precision
Smart
Word
Char
Syntax highlighting
Choose syntax
Ignore
Transform text
Go to first change
Edit input
Diffchecker Desktop
The most secure way to run Diffchecker. Get the Diffchecker Desktop app: your diffs never leave your computer!
Get Desktop
Untitled diff
Created
7 years ago
Diff never expires
Clear
Export
Share
Explain
136 removals
Lines
Total
Removed
Characters
Total
Removed
To continue using this feature, upgrade to
Diff
checker
Pro
View Pricing
1344 lines
Copy
121 additions
Lines
Total
Added
Characters
Total
Added
To continue using this feature, upgrade to
Diff
checker
Pro
View Pricing
1340 lines
Copy
Copy
Copied
Copy
Copied
%% ----------------------------------------------------------------
%% File: `
plainnat
.bst'
%% uos.bst
%% A modification of `plain
.bst' for use with natbib package
%% ----------------------------------------------------------------
%% File: `
uos
.bst'
%% A modification of `plain
nat
.bst' for use with natbib package
%%
%%
Copy
Copied
Copy
Copied
%% Copyright 1993-
1999
Patrick W Daly
%% Copyright 1993-
2007
Patrick W Daly
%% Max-Planck-Institut f\"ur
Aeronomie
%% Max-Planck-Institut f\"ur
Sonnensystemforschung
%% Max-Planck-Str. 2
%% Max-Planck-Str. 2
%% D-37191 Katlenburg-Lindau
%% D-37191 Katlenburg-Lindau
%% Germany
%% Germany
Copy
Copied
Copy
Copied
%% E-mail: daly@
linmpi
.mpg.de
%% E-mail: daly@
mps
.mpg.de
%%
%%
%% This program can be redistributed and/or modified under the terms
%% This program can be redistributed and/or modified under the terms
%% of the LaTeX Project Public License Distributed from CTAN
%% of the LaTeX Project Public License Distributed from CTAN
%% archives in directory macros/latex/base/lppl.txt; either
%% archives in directory macros/latex/base/lppl.txt; either
%% version 1 of the License, or any later version.
%% version 1 of the License, or any later version.
%%
%%
Copy
Copied
Copy
Copied
%
% Includes field URL for Internet addresses
% Version and source file information:
%%
% \ProvidesFile{natbst.mbs}[2007/11/26 1.93 (PWD)]
%
% BibTeX `plainnat' family
% version 0.99b for BibTeX versions 0.99a or later,
% for LaTeX versions 2.09 and 2e.
%
% For use with the `natbib.sty' package; emulates the corresponding
% member of the `plain' family, but with author-year citations.
%
% With version 6.0 of `natbib.sty', it may also be used for numerical
% citations, while retaining the commands \citeauthor, \citefullauthor,
% and \citeyear to print the corresponding information.
%
% For version 7.0 of `natbib.sty', the KEY field replaces missing
% authors/editors, and the date is left blank in \bibitem.
%
% Includes field EID for the sequence/citation number of electronic journals
% which is used instead of page numbers.
%
% Includes fields ISBN and ISSN.
%
% Includes field URL for Internet addresses
.
%
% Includes field DOI for Digital Object Idenfifiers.
%
% Works best with the url.sty package of Donald Arseneau.
%
% Works with identical authors and year are further sorted by
% citation key, to preserve any natural sequence.
%
ENTRY
ENTRY
{ address
{ address
author
author
booktitle
booktitle
chapter
chapter
Copy
Copied
Copy
Copied
doi
eid
edition
edition
editor
editor
howpublished
howpublished
institution
institution
isbn
isbn
issn
issn
journal
journal
key
key
month
month
note
note
number
number
organization
organization
pages
pages
publisher
publisher
school
school
series
series
title
title
type
type
url
url
volume
volume
year
year
}
}
{}
{}
{ label extra.label sort.label short.list }
{ label extra.label sort.label short.list }
INTEGERS { output.state before.all mid.sentence after.sentence after.block }
INTEGERS { output.state before.all mid.sentence after.sentence after.block }
FUNCTION {init.state.consts}
FUNCTION {init.state.consts}
{ #0 'before.all :=
{ #0 'before.all :=
#1 'mid.sentence :=
#1 'mid.sentence :=
#2 'after.sentence :=
#2 'after.sentence :=
#3 'after.block :=
#3 'after.block :=
}
}
STRINGS { s t }
STRINGS { s t }
FUNCTION {output.nonnull}
FUNCTION {output.nonnull}
{ 's :=
{ 's :=
output.state mid.sentence =
output.state mid.sentence =
{ ", " * write$ }
{ ", " * write$ }
{ output.state after.block =
{ output.state after.block =
{ add.period$ write$
{ add.period$ write$
newline$
newline$
"\newblock " write$
"\newblock " write$
}
}
{ output.state before.all =
{ output.state before.all =
'write$
'write$
{ add.period$ " " * write$ }
{ add.period$ " " * write$ }
if$
if$
}
}
if$
if$
mid.sentence 'output.state :=
mid.sentence 'output.state :=
}
}
if$
if$
s
s
}
}
FUNCTION {output}
FUNCTION {output}
{ duplicate$ empty$
{ duplicate$ empty$
'pop$
'pop$
'output.nonnull
'output.nonnull
if$
if$
}
}
FUNCTION {output.check}
FUNCTION {output.check}
{ 't :=
{ 't :=
duplicate$ empty$
duplicate$ empty$
{ pop$ "empty " t * " in " * cite$ * warning$ }
{ pop$ "empty " t * " in " * cite$ * warning$ }
'output.nonnull
'output.nonnull
if$
if$
}
}
FUNCTION {fin.entry}
FUNCTION {fin.entry}
{ add.period$
{ add.period$
write$
write$
newline$
newline$
}
}
FUNCTION {new.block}
FUNCTION {new.block}
{ output.state before.all =
{ output.state before.all =
'skip$
'skip$
{ after.block 'output.state := }
{ after.block 'output.state := }
if$
if$
}
}
FUNCTION {new.sentence}
FUNCTION {new.sentence}
{ output.state after.block =
{ output.state after.block =
'skip$
'skip$
{ output.state before.all =
{ output.state before.all =
'skip$
'skip$
{ after.sentence 'output.state := }
{ after.sentence 'output.state := }
if$
if$
}
}
if$
if$
}
}
FUNCTION {not}
FUNCTION {not}
{ { #0 }
{ { #0 }
{ #1 }
{ #1 }
if$
if$
}
}
FUNCTION {and}
FUNCTION {and}
{ 'skip$
{ 'skip$
{ pop$ #0 }
{ pop$ #0 }
if$
if$
}
}
FUNCTION {or}
FUNCTION {or}
{ { pop$ #1 }
{ { pop$ #1 }
'skip$
'skip$
if$
if$
}
}
FUNCTION {new.block.checka}
FUNCTION {new.block.checka}
{ empty$
{ empty$
'skip$
'skip$
'new.block
'new.block
if$
if$
}
}
FUNCTION {new.block.checkb}
FUNCTION {new.block.checkb}
{ empty$
{ empty$
swap$ empty$
swap$ empty$
and
and
'skip$
'skip$
'new.block
'new.block
if$
if$
}
}
FUNCTION {new.sentence.checka}
FUNCTION {new.sentence.checka}
{ empty$
{ empty$
'skip$
'skip$
'new.sentence
'new.sentence
if$
if$
}
}
FUNCTION {new.sentence.checkb}
FUNCTION {new.sentence.checkb}
{ empty$
{ empty$
swap$ empty$
swap$ empty$
and
and
'skip$
'skip$
'new.sentence
'new.sentence
if$
if$
}
}
FUNCTION {field.or.null}
FUNCTION {field.or.null}
{ duplicate$ empty$
{ duplicate$ empty$
{ pop$ "" }
{ pop$ "" }
'skip$
'skip$
if$
if$
}
}
FUNCTION {emphasize}
FUNCTION {emphasize}
{ duplicate$ empty$
{ duplicate$ empty$
{ pop$ "" }
{ pop$ "" }
Copy
Copied
Copy
Copied
{ "
{
\em
" swap$ * "}" * }
{ "
\em
ph{
" swap$ * "}" * }
if$
if$
}
}
INTEGERS { nameptr namesleft numnames }
INTEGERS { nameptr namesleft numnames }
FUNCTION {format.names}
FUNCTION {format.names}
{ 's :=
{ 's :=
#1 'nameptr :=
#1 'nameptr :=
s num.names$ 'numnames :=
s num.names$ 'numnames :=
numnames 'namesleft :=
numnames 'namesleft :=
{ namesleft #0 > }
{ namesleft #0 > }
{ s nameptr "{ff~}{vv~}{ll}{, jj}" format.name$ 't :=
{ s nameptr "{ff~}{vv~}{ll}{, jj}" format.name$ 't :=
nameptr #1 >
nameptr #1 >
{ namesleft #1 >
{ namesleft #1 >
{ ", " * t * }
{ ", " * t * }
{ numnames #2 >
{ numnames #2 >
{ "," * }
{ "," * }
'skip$
'skip$
if$
if$
t "others" =
t "others" =
{ " et~al." * }
{ " et~al." * }
{ " and " * t * }
{ " and " * t * }
if$
if$
}
}
if$
if$
}
}
't
't
if$
if$
nameptr #1 + 'nameptr :=
nameptr #1 + 'nameptr :=
namesleft #1 - 'namesleft :=
namesleft #1 - 'namesleft :=
}
}
while$
while$
}
}
FUNCTION {format.key}
FUNCTION {format.key}
{ empty$
{ empty$
{ key field.or.null }
{ key field.or.null }
{ "" }
{ "" }
if$
if$
}
}
FUNCTION {format.authors}
FUNCTION {format.authors}
{ author empty$
{ author empty$
{ "" }
{ "" }
{ author format.names }
{ author format.names }
if$
if$
}
}
FUNCTION {format.editors}
FUNCTION {format.editors}
{ editor empty$
{ editor empty$
{ "" }
{ "" }
{ editor format.names
{ editor format.names
editor num.names$ #1 >
editor num.names$ #1 >
{ ", editors" * }
{ ", editors" * }
{ ", editor" * }
{ ", editor" * }
if$
if$
}
}
if$
if$
}
}
FUNCTION {format.isbn}
FUNCTION {format.isbn}
{ isbn empty$
{ isbn empty$
{ "" }
{ "" }
{ new.block "ISBN " isbn * }
{ new.block "ISBN " isbn * }
if$
if$
}
}
FUNCTION {format.issn}
FUNCTION {format.issn}
{ issn empty$
{ issn empty$
{ "" }
{ "" }
{ new.block "ISSN " issn * }
{ new.block "ISSN " issn * }
if$
if$
}
}
FUNCTION {format.url}
FUNCTION {format.url}
Copy
Copied
Copy
Copied
{ ""
{ url empty$
{ "" }
{ new.block "URL \url{" url * "}" * }
if$
}
FUNCTION {format.doi}
{ doi empty$
{ "" }
{ new.block "\doi{" doi * "}" * }
if$
}
}
FUNCTION {format.title}
FUNCTION {format.title}
{ title empty$
{ title empty$
{ "" }
{ "" }
Copy
Copied
Copy
Copied
{ url empty$
{ title "t" change.case$ }
{ title "t" change.case$ }
if$
{ "\href{" url * "}{" * title "t" change.case$ * "}" * }
if$
}
if$
}
}
FUNCTION {format.full.names}
FUNCTION {format.full.names}
{'s :=
{'s :=
#1 'nameptr :=
#1 'nameptr :=
s num.names$ 'numnames :=
s num.names$ 'numnames :=
numnames 'namesleft :=
numnames 'namesleft :=
{ namesleft #0 > }
{ namesleft #0 > }
{ s nameptr
{ s nameptr
"{vv~}{ll}" format.name$ 't :=
"{vv~}{ll}" format.name$ 't :=
nameptr #1 >
nameptr #1 >
{
{
namesleft #1 >
namesleft #1 >
{ ", " * t * }
{ ", " * t * }
{
{
numnames #2 >
numnames #2 >
{ "," * }
{ "," * }
'skip$
'skip$
if$
if$
t "others" =
t "others" =
{ " et~al." * }
{ " et~al." * }
{ " and " * t * }
{ " and " * t * }
if$
if$
}
}
if$
if$
}
}
't
't
if$
if$
nameptr #1 + 'nameptr :=
nameptr #1 + 'nameptr :=
namesleft #1 - 'namesleft :=
namesleft #1 - 'namesleft :=
}
}
while$
while$
}
}
FUNCTION {author.editor.full}
FUNCTION {author.editor.full}
{ author empty$
{ author empty$
{ editor empty$
{ editor empty$
{ "" }
{ "" }
{ editor format.full.names }
{ editor format.full.names }
if$
if$
}
}
{ author format.full.names }
{ author format.full.names }
if$
if$
}
}
FUNCTION {author.full}
FUNCTION {author.full}
{ author empty$
{ author empty$
{ "" }
{ "" }
{ author format.full.names }
{ author format.full.names }
if$
if$
}
}
FUNCTION {editor.full}
FUNCTION {editor.full}
{ editor empty$
{ editor empty$
{ "" }
{ "" }
{ editor format.full.names }
{ editor format.full.names }
if$
if$
}
}
FUNCTION {make.full.names}
FUNCTION {make.full.names}
{ type$ "book" =
{ type$ "book" =
type$ "inbook" =
type$ "inbook" =
or
or
'author.editor.full
'author.editor.full
{ type$ "proceedings" =
{ type$ "proceedings" =
'editor.full
'editor.full
'author.full
'author.full
if$
if$
}
}
if$
if$
}
}
FUNCTION {output.bibitem}
FUNCTION {output.bibitem}
{ newline$
{ newline$
"\bibitem[" write$
"\bibitem[" write$
label write$
label write$
")" make.full.names duplicate$ short.list =
")" make.full.names duplicate$ short.list =
{ pop$ }
{ pop$ }
{ * }
{ * }
if$
if$
"]{" * write$
"]{" * write$
cite$ write$
cite$ write$
"}" write$
"}" write$
newline$
newline$
""
""
before.all 'output.state :=
before.all 'output.state :=
}
}
FUNCTION {n.dashify}
FUNCTION {n.dashify}
{ 't :=
{ 't :=
""
""
{ t empty$ not }
{ t empty$ not }
{ t #1 #1 substring$ "-" =
{ t #1 #1 substring$ "-" =
{ t #1 #2 substring$ "--" = not
{ t #1 #2 substring$ "--" = not
{ "--" *
{ "--" *
t #2 global.max$ substring$ 't :=
t #2 global.max$ substring$ 't :=
}
}
{ { t #1 #1 substring$ "-" = }
{ { t #1 #1 substring$ "-" = }
{ "-" *
{ "-" *
t #2 global.max$ substring$ 't :=
t #2 global.max$ substring$ 't :=
}
}
while$
while$
}
}
if$
if$
}
}
{ t #1 #1 substring$ *
{ t #1 #1 substring$ *
t #2 global.max$ substring$ 't :=
t #2 global.max$ substring$ 't :=
}
}
if$
if$
}
}
while$
while$
}
}
FUNCTION {format.date}
FUNCTION {format.date}
{ year duplicate$ empty$
{ year duplicate$ empty$
{ "empty year in " cite$ * warning$
{ "empty year in " cite$ * warning$
pop$ "" }
pop$ "" }
'skip$
'skip$
if$
if$
month empty$
month empty$
'skip$
'skip$
{ month
{ month
" " * swap$ *
" " * swap$ *
}
}
if$
if$
extra.label *
extra.label *
}
}
FUNCTION {format.btitle}
FUNCTION {format.btitle}
{ title emphasize
{ title emphasize
}
}
FUNCTION {tie.or.space.connect}
FUNCTION {tie.or.space.connect}
{ duplicate$ text.length$ #3 <
{ duplicate$ text.length$ #3 <
{ "~" }
{ "~" }
{ " " }
{ " " }
if$
if$
swap$ * *
swap$ * *
}
}
FUNCTION {either.or.check}
FUNCTION {either.or.check}
{ empty$
{ empty$
'pop$
'pop$
{ "can't use both " swap$ * " fields in " * cite$ * warning$ }
{ "can't use both " swap$ * " fields in " * cite$ * warning$ }
if$
if$
}
}
FUNCTION {format.bvolume}
FUNCTION {format.bvolume}
{ volume empty$
{ volume empty$
{ "" }
{ "" }
{ "volume" volume tie.or.space.connect
{ "volume" volume tie.or.space.connect
series empty$
series empty$
'skip$
'skip$
{ " of " * series emphasize * }
{ " of " * series emphasize * }
if$
if$
"volume and number" number either.or.check
"volume and number" number either.or.check
}
}
if$
if$
}
}
FUNCTION {format.number.series}
FUNCTION {format.number.series}
{ volume empty$
{ volume empty$
{ number empty$
{ number empty$
{ series field.or.null }
{ series field.or.null }
{ output.state mid.sentence =
{ output.state mid.sentence =
{ "number" }
{ "number" }
{ "Number" }
{ "Number" }
if$
if$
number tie.or.space.connect
number tie.or.space.connect
series empty$
series empty$
{ "there's a number but no series in " cite$ * warning$ }
{ "there's a number but no series in " cite$ * warning$ }
{ " in " * series * }
{ " in " * series * }
if$
if$
}
}
if$
if$
}
}
{ "" }
{ "" }
if$
if$
}
}
FUNCTION {format.edition}
FUNCTION {format.edition}
{ edition empty$
{ edition empty$
{ "" }
{ "" }
{ output.state mid.sentence =
{ output.state mid.sentence =
{ edition "l" change.case$ " edition" * }
{ edition "l" change.case$ " edition" * }
{ edition "t" change.case$ " edition" * }
{ edition "t" change.case$ " edition" * }
if$
if$
}
}
if$
if$
}
}
INTEGERS { multiresult }
INTEGERS { multiresult }
FUNCTION {multi.page.check}
FUNCTION {multi.page.check}
{ 't :=
{ 't :=
#0 'multiresult :=
#0 'multiresult :=
{ multiresult not
{ multiresult not
t empty$ not
t empty$ not
and
and
}
}
{ t #1 #1 substring$
{ t #1 #1 substring$
duplicate$ "-" =
duplicate$ "-" =
swap$ duplicate$ "," =
swap$ duplicate$ "," =
swap$ "+" =
swap$ "+" =
or or
or or
{ #1 'multiresult := }
{ #1 'multiresult := }
{ t #2 global.max$ substring$ 't := }
{ t #2 global.max$ substring$ 't := }
if$
if$
}
}
while$
while$
multiresult
multiresult
}
}
FUNCTION {format.pages}
FUNCTION {format.pages}
{ pages empty$
{ pages empty$
{ "" }
{ "" }
{ pages multi.page.check
{ pages multi.page.check
{ "pages" pages n.dashify tie.or.space.connect }
{ "pages" pages n.dashify tie.or.space.connect }
{ "page" pages tie.or.space.connect }
{ "page" pages tie.or.space.connect }
if$
if$
}
}
if$
if$
}
}
Copy
Copied
Copy
Copied
FUNCTION {format.eid}
{ eid empty$
{ "" }
{ "art." eid tie.or.space.connect }
if$
}
FUNCTION {format.vol.num.pages}
FUNCTION {format.vol.num.pages}
{ volume field.or.null
{ volume field.or.null
number empty$
number empty$
'skip$
'skip$
{ "\penalty0 (" number * ")" * *
{ "\penalty0 (" number * ")" * *
volume empty$
volume empty$
{ "there's a number but no volume in " cite$ * warning$ }
{ "there's a number but no volume in " cite$ * warning$ }
'skip$
'skip$
if$
if$
}
}
if$
if$
pages empty$
pages empty$
'skip$
'skip$
{ duplicate$ empty$
{ duplicate$ empty$
{ pop$ format.pages }
{ pop$ format.pages }
{ ":\penalty0 " * pages n.dashify * }
{ ":\penalty0 " * pages n.dashify * }
if$
if$
}
}
if$
if$
}
}
Copy
Copied
Copy
Copied
FUNCTION {format.vol.num.eid}
{ volume field.or.null
number empty$
'skip$
{ "\penalty0 (" number * ")" * *
volume empty$
{ "there's a number but no volume in " cite$ * warning$ }
'skip$
if$
}
if$
eid empty$
'skip$
{ duplicate$ empty$
{ pop$ format.eid }
{ ":\penalty0 " * eid * }
if$
}
if$
}
FUNCTION {format.chapter.pages}
FUNCTION {format.chapter.pages}
{ chapter empty$
{ chapter empty$
'format.pages
'format.pages
{ type empty$
{ type empty$
{ "chapter" }
{ "chapter" }
{ type "l" change.case$ }
{ type "l" change.case$ }
if$
if$
chapter tie.or.space.connect
chapter tie.or.space.connect
pages empty$
pages empty$
'skip$
'skip$
{ ", " * format.pages * }
{ ", " * format.pages * }
if$
if$
}
}
if$
if$
}
}
FUNCTION {format.in.ed.booktitle}
FUNCTION {format.in.ed.booktitle}
{ booktitle empty$
{ booktitle empty$
{ "" }
{ "" }
{ editor empty$
{ editor empty$
{ "In " booktitle emphasize * }
{ "In " booktitle emphasize * }
{ "In " format.editors * ", " * booktitle emphasize * }
{ "In " format.editors * ", " * booktitle emphasize * }
if$
if$
}
}
if$
if$
}
}
FUNCTION {empty.misc.check}
FUNCTION {empty.misc.check}
{ author empty$ title empty$ howpublished empty$
{ author empty$ title empty$ howpublished empty$
month empty$ year empty$ note empty$
month empty$ year empty$ note empty$
and and and and and
and and and and and
key empty$ not and
key empty$ not and
{ "all relevant fields are empty in " cite$ * warning$ }
{ "all relevant fields are empty in " cite$ * warning$ }
'skip$
'skip$
if$
if$
}
}
FUNCTION {format.thesis.type}
FUNCTION {format.thesis.type}
{ type empty$
{ type empty$
'skip$
'skip$
{ pop$
{ pop$
type "t" change.case$
type "t" change.case$
}
}
if$
if$
}
}
FUNCTION {format.tr.number}
FUNCTION {format.tr.number}
{ type empty$
{ type empty$
{ "Technical Report" }
{ "Technical Report" }
'type
'type
if$
if$
number empty$
number empty$
{ "t" change.case$ }
{ "t" change.case$ }
{ number tie.or.space.connect }
{ number tie.or.space.connect }
if$
if$
}
}
FUNCTION {format.article.crossref}
FUNCTION {format.article.crossref}
{ key empty$
{ key empty$
{ journal empty$
{ journal empty$
{ "need key or journal for " cite$ * " to crossref " * crossref *
{ "need key or journal for " cite$ * " to crossref " * crossref *
warning$
warning$
""
""
}
}
Copy
Copied
Copy
Copied
{ "In
{
\em
" journal * "
\/
}" * }
{ "In
\em
ph{
" journal * "
}" * }
if$
if$
}
}
Copy
Copied
Copy
Copied
{ "In "
key *
}
{ "In "
}
if$
if$
Copy
Copied
Copy
Copied
" \cite
p
{" * crossref * "}" *
" \cite
t
{" * crossref * "}" *
}
}
FUNCTION {format.book.crossref}
FUNCTION {format.book.crossref}
{ volume empty$
{ volume empty$
{ "empty volume in " cite$ * "'s crossref of " * crossref * warning$
{ "empty volume in " cite$ * "'s crossref of " * crossref * warning$
"In "
"In "
}
}
{ "Volume" volume tie.or.space.connect
{ "Volume" volume tie.or.space.connect
" of " *
" of " *
}
}
if$
if$
editor empty$
editor empty$
editor field.or.null author field.or.null =
editor field.or.null author field.or.null =
or
or
{ key empty$
{ key empty$
{ series empty$
{ series empty$
{ "need editor, key, or series for " cite$ * " to crossref " *
{ "need editor, key, or series for " cite$ * " to crossref " *
crossref * warning$
crossref * warning$
"" *
"" *
}
}
Copy
Copied
Copy
Copied
{ "
{
\em
" * series * "
\/
}" * }
{ "
\em
ph{
" * series * "
}" * }
if$
if$
}
}
Copy
Copied
Copy
Copied
{ key * }
'skip$
if$
if$
}
}
'skip$
'skip$
if$
if$
Copy
Copied
Copy
Copied
"
,
\citet{" * crossref * "}" *
"
\citet{" * crossref * "}" *
}
}
FUNCTION {format.incoll.inproc.crossref}
FUNCTION {format.incoll.inproc.crossref}
{ editor empty$
{ editor empty$
editor field.or.null author field.or.null =
editor field.or.null author field.or.null =
or
or
{ key empty$
{ key empty$
{ booktitle empty$
{ booktitle empty$
{ "need editor, key, or booktitle for " cite$ * " to crossref " *
{ "need editor, key, or booktitle for " cite$ * " to crossref " *
crossref * warning$
crossref * warning$
""
""
}
}
Copy
Copied
Copy
Copied
{ "In
{
\em
" booktitle * "
\/
}" * }
{ "In
\em
ph{
" booktitle * "
}" * }
if$
if$
}
}
Copy
Copied
Copy
Copied
{ "In "
key *
}
{ "In "
}
if$
if$
}
}
{ "In " }
{ "In " }
if$
if$
" \citet{" * crossref * "}" *
" \citet{" * crossref * "}" *
}
}
FUNCTION {article}
FUNCTION {article}
{ output.bibitem
{ output.bibitem
format.authors "author" output.check
format.authors "author" output.check
author format.key output
author format.key output
new.block
new.block
format.title "title" output.check
format.title "title" output.check
new.block
new.block
crossref missing$
crossref missing$
{ journal emphasize "journal" output.check
{ journal emphasize "journal" output.check
Copy
Copied
Copy
Copied
format.vol.num.pages output
eid empty$
{
format.vol.num.pages output
}
{ format.vol.num.eid output }
if$
format.date "year" output.check
format.date "year" output.check
}
}
{ format.article.crossref output.nonnull
{ format.article.crossref output.nonnull
Copy
Copied
Copy
Copied
format.pages output
eid empty$
{
format.pages output
}
{ format.eid output }
if$
}
}
if$
if$
format.issn output
format.issn output
Copy
Copied
Copy
Copied
format.doi output
format.url output
format.url output
new.block
new.block
note output
note output
fin.entry
fin.entry
}
}
FUNCTION {book}
FUNCTION {book}
{ output.bibitem
{ output.bibitem
author empty$
author empty$
{ format.editors "author and editor" output.check
{ format.editors "author and editor" output.check
editor format.key output
editor format.key output
}
}
{ format.authors output.nonnull
{ format.authors output.nonnull
crossref missing$
crossref missing$
{ "author and editor" editor either.or.check }
{ "author and editor" editor either.or.check }
'skip$
'skip$
if$
if$
}
}
if$
if$
new.block
new.block
format.btitle "title" output.check
format.btitle "title" output.check
crossref missing$
crossref missing$
{ format.bvolume output
{ format.bvolume output
new.block
new.block
format.number.series output
format.number.series output
new.sentence
new.sentence
publisher "publisher" output.check
publisher "publisher" output.check
address output
address output
}
}
{ new.block
{ new.block
format.book.crossref output.nonnull
format.book.crossref output.nonnull
}
}
if$
if$
format.edition output
format.edition output
format.date "year" output.check
format.date "year" output.check
format.isbn output
format.isbn output
Copy
Copied
Copy
Copied
format.doi output
format.url output
format.url output
new.block
new.block
note output
note output
fin.entry
fin.entry
}
}
FUNCTION {booklet}
FUNCTION {booklet}
{ output.bibitem
{ output.bibitem
format.authors output
format.authors output
author format.key output
author format.key output
new.block
new.block
format.title "title" output.check
format.title "title" output.check
howpublished address new.block.checkb
howpublished address new.block.checkb
howpublished output
howpublished output
address output
address output
format.date output
format.date output
format.isbn output
format.isbn output
Copy
Copied
Copy
Copied
format.doi output
format.url output
format.url output
new.block
new.block
note output
note output
fin.entry
fin.entry
}
}
FUNCTION {inbook}
FUNCTION {inbook}
{ output.bibitem
{ output.bibitem
author empty$
author empty$
{ format.editors "author and editor" output.check
{ format.editors "author and editor" output.check
editor format.key output
editor format.key output
}
}
{ format.authors output.nonnull
{ format.authors output.nonnull
crossref missing$
crossref missing$
{ "author and editor" editor either.or.check }
{ "author and editor" editor either.or.check }
'skip$
'skip$
if$
if$
}
}
if$
if$
new.block
new.block
format.btitle "title" output.check
format.btitle "title" output.check
crossref missing$
crossref missing$
{ format.bvolume output
{ format.bvolume output
format.chapter.pages "chapter and pages" output.check
format.chapter.pages "chapter and pages" output.check
new.block
new.block
format.number.series output
format.number.series output
new.sentence
new.sentence
publisher "publisher" output.check
publisher "publisher" output.check
address output
address output
}
}
{ format.chapter.pages "chapter and pages" output.check
{ format.chapter.pages "chapter and pages" output.check
new.block
new.block
format.book.crossref output.nonnull
format.book.crossref output.nonnull
}
}
if$
if$
format.edition output
format.edition output
format.date "year" output.check
format.date "year" output.check
format.isbn output
format.isbn output
Copy
Copied
Copy
Copied
format.doi output
format.url output
format.url output
new.block
new.block
note output
note output
fin.entry
fin.entry
}
}
FUNCTION {incollection}
FUNCTION {incollection}
{ output.bibitem
{ output.bibitem
format.authors "author" output.check
format.authors "author" output.check
author format.key output
author format.key output
new.block
new.block
format.title "title" output.check
format.title "title" output.check
new.block
new.block
crossref missing$
crossref missing$
{ format.in.ed.booktitle "booktitle" output.check
{ format.in.ed.booktitle "booktitle" output.check
format.bvolume output
format.bvolume output
format.number.series output
format.number.series output
format.chapter.pages output
format.chapter.pages output
new.sentence
new.sentence
publisher "publisher" output.check
publisher "publisher" output.check
address output
address output
format.edition output
format.edition output
format.date "year" output.check
format.date "year" output.check
}
}
{ format.incoll.inproc.crossref output.nonnull
{ format.incoll.inproc.crossref output.nonnull
format.chapter.pages output
format.chapter.pages output
}
}
if$
if$
format.isbn output
format.isbn output
Copy
Copied
Copy
Copied
format.doi output
format.url output
format.url output
new.block
new.block
note output
note output
fin.entry
fin.entry
}
}
FUNCTION {inproceedings}
FUNCTION {inproceedings}
{ output.bibitem
{ output.bibitem
format.authors "author" output.check
format.authors "author" output.check
author format.key output
author format.key output
new.block
new.block
format.title "title" output.check
format.title "title" output.check
new.block
new.block
crossref missing$
crossref missing$
{ format.in.ed.booktitle "booktitle" output.check
{ format.in.ed.booktitle "booktitle" output.check
format.bvolume output
format.bvolume output
format.number.series output
format.number.series output
format.pages output
format.pages output
address empty$
address empty$
{ organization publisher new.sentence.checkb
{ organization publisher new.sentence.checkb
organization output
organization output
publisher output
publisher output
format.date "year" output.check
format.date "year" output.check
}
}
{ address output.nonnull
{ address output.nonnull
format.date "year" output.check
format.date "year" output.check
new.sentence
new.sentence
organization output
organization output
publisher output
publisher output
}
}
if$
if$
}
}
{ format.incoll.inproc.crossref output.nonnull
{ format.incoll.inproc.crossref output.nonnull
format.pages output
format.pages output
}
}
if$
if$
format.isbn output
format.isbn output
Copy
Copied
Copy
Copied
format.doi output
format.url output
format.url output
new.block
new.block
note output
note output
fin.entry
fin.entry
}
}
FUNCTION {conference} { inproceedings }
FUNCTION {conference} { inproceedings }
FUNCTION {manual}
FUNCTION {manual}
{ output.bibitem
{ output.bibitem
format.authors output
format.authors output
author format.key output
author format.key output
new.block
new.block
format.btitle "title" output.check
format.btitle "title" output.check
organization address new.block.checkb
organization address new.block.checkb
organization output
organization output
address output
address output
format.edition output
format.edition output
format.date output
format.date output
format.url output
format.url output
new.block
new.block
note output
note output
fin.entry
fin.entry
}
}
FUNCTION {mastersthesis}
FUNCTION {mastersthesis}
{ output.bibitem
{ output.bibitem
format.authors "author" output.check
format.authors "author" output.check
author format.key output
author format.key output
new.block
new.block
format.title "title" output.check
format.title "title" output.check
new.block
new.block
"Master's thesis" format.thesis.type output.nonnull
"Master's thesis" format.thesis.type output.nonnull
school "school" output.check
school "school" output.check
address output
address output
format.date "year" output.check
format.date "year" output.check
format.url output
format.url output
new.block
new.block
note output
note output
fin.entry
fin.entry
}
}
FUNCTION {misc}
FUNCTION {misc}
{ output.bibitem
{ output.bibitem
format.authors output
format.authors output
author format.key output
author format.key output
title howpublished new.block.checkb
title howpublished new.block.checkb
format.title output
format.title output
howpublished new.block.checka
howpublished new.block.checka
howpublished output
howpublished output
format.date output
format.date output
format.issn output
format.issn output
format.url output
format.url output
new.block
new.block
note output
note output
fin.entry
fin.entry
empty.misc.check
empty.misc.check
}
}
FUNCTION {phdthesis}
FUNCTION {phdthesis}
{ output.bibitem
{ output.bibitem
format.authors "author" output.check
format.authors "author" output.check
author format.key output
author format.key output
new.block
new.block
format.btitle "title" output.check
format.btitle "title" output.check
new.block
new.block
"PhD thesis" format.thesis.type output.nonnull
"PhD thesis" format.thesis.type output.nonnull
school "school" output.check
school "school" output.check
address output
address output
format.date "year" output.check
format.date "year" output.check
format.url output
format.url output
new.block
new.block
note output
note output
fin.entry
fin.entry
}
}
FUNCTION {proceedings}
FUNCTION {proceedings}
{ output.bibitem
{ output.bibitem
format.editors output
format.editors output
editor format.key output
editor format.key output
new.block
new.block
format.btitle "title" output.check
format.btitle "title" output.check
format.bvolume output
format.bvolume output
format.number.series output
format.number.series output
address output
address output
format.date "year" output.check
format.date "year" output.check
new.sentence
new.sentence
organization output
organization output
publisher output
publisher output
format.isbn output
format.isbn output
Copy
Copied
Copy
Copied
format.doi output
format.url output
format.url output
new.block
new.block
note output
note output
fin.entry
fin.entry
}
}
FUNCTION {techreport}
FUNCTION {techreport}
{ output.bibitem
{ output.bibitem
format.authors "author" output.check
format.authors "author" output.check
author format.key output
author format.key output
new.block
new.block
format.title "title" output.check
format.title "title" output.check
new.block
new.block
format.tr.number output.nonnull
format.tr.number output.nonnull
institution "institution" output.check
institution "institution" output.check
address output
address output
format.date "year" output.check
format.date "year" output.check
format.url output
format.url output
new.block
new.block
note output
note output
fin.entry
fin.entry
}
}
FUNCTION {unpublished}
FUNCTION {unpublished}
{ output.bibitem
{ output.bibitem
format.authors "author" output.check
format.authors "author" output.check
author format.key output
author format.key output
new.block
new.block
format.title "title" output.check
format.title "title" output.check
Copy
Copied
Copy
Copied
format.url output
new.block
new.block
note "note" output.check
note "note" output.check
format.date output
format.date output
Copy
Copied
Copy
Copied
format.url output
fin.entry
fin.entry
}
}
FUNCTION {default.type} { misc }
FUNCTION {default.type} { misc }
Copy
Copied
Copy
Copied
MACRO {jan} {"January"}
MACRO {jan} {"January"}
MACRO {feb} {"February"}
MACRO {feb} {"February"}
MACRO {mar} {"March"}
MACRO {mar} {"March"}
MACRO {apr} {"April"}
MACRO {apr} {"April"}
MACRO {may} {"May"}
MACRO {may} {"May"}
MACRO {jun} {"June"}
MACRO {jun} {"June"}
MACRO {jul} {"July"}
MACRO {jul} {"July"}
MACRO {aug} {"August"}
MACRO {aug} {"August"}
MACRO {sep} {"September"}
MACRO {sep} {"September"}
MACRO {oct} {"October"}
MACRO {oct} {"October"}
MACRO {nov} {"November"}
MACRO {nov} {"November"}
MACRO {dec} {"December"}
MACRO {dec} {"December"}
Copy
Copied
Copy
Copied
MACRO {acmcs} {"ACM Computing Surveys"}
MACRO {acmcs} {"ACM Computing Surveys"}
MACRO {acta} {"Acta Informatica"}
MACRO {acta} {"Acta Informatica"}
MACRO {cacm} {"Communications of the ACM"}
MACRO {cacm} {"Communications of the ACM"}
MACRO {ibmjrd} {"IBM Journal of Research and Development"}
MACRO {ibmjrd} {"IBM Journal of Research and Development"}
MACRO {ibmsj} {"IBM Systems Journal"}
MACRO {ibmsj} {"IBM Systems Journal"}
MACRO {ieeese} {"IEEE Transactions on Software Engineering"}
MACRO {ieeese} {"IEEE Transactions on Software Engineering"}
MACRO {ieeetc} {"IEEE Transactions on Computers"}
MACRO {ieeetc} {"IEEE Transactions on Computers"}
MACRO {ieeetcad}
MACRO {ieeetcad}
{"IEEE Transactions on Computer-Aided Design of Integrated Circuits"}
{"IEEE Transactions on Computer-Aided Design of Integrated Circuits"}
MACRO {ipl} {"Information Processing Letters"}
MACRO {ipl} {"Information Processing Letters"}
MACRO {jacm} {"Journal of the ACM"}
MACRO {jacm} {"Journal of the ACM"}
MACRO {jcss} {"Journal of Computer and System Sciences"}
MACRO {jcss} {"Journal of Computer and System Sciences"}
MACRO {scp} {"Science of Computer Programming"}
MACRO {scp} {"Science of Computer Programming"}
MACRO {sicomp} {"SIAM Journal on Computing"}
MACRO {sicomp} {"SIAM Journal on Computing"}
MACRO {tocs} {"ACM Transactions on Computer Systems"}
MACRO {tocs} {"ACM Transactions on Computer Systems"}
MACRO {tods} {"ACM Transactions on Database Systems"}
MACRO {tods} {"ACM Transactions on Database Systems"}
MACRO {tog} {"ACM Transactions on Graphics"}
MACRO {tog} {"ACM Transactions on Graphics"}
MACRO {toms} {"ACM Transactions on Mathematical Software"}
MACRO {toms} {"ACM Transactions on Mathematical Software"}
MACRO {toois} {"ACM Transactions on Office Information Systems"}
MACRO {toois} {"ACM Transactions on Office Information Systems"}
Saved diffs
Original text
Open file
%% ---------------------------------------------------------------- %% uos.bst %% ---------------------------------------------------------------- %% File: `uos.bst' %% A modification of `plainnat.bst' for use with natbib package %% %% Copyright 1993-1999 Patrick W Daly %% Max-Planck-Institut f\"ur Aeronomie %% Max-Planck-Str. 2 %% D-37191 Katlenburg-Lindau %% Germany %% E-mail: daly@linmpi.mpg.de %% %% This program can be redistributed and/or modified under the terms %% of the LaTeX Project Public License Distributed from CTAN %% archives in directory macros/latex/base/lppl.txt; either %% version 1 of the License, or any later version. %% %% Includes field URL for Internet addresses %% ENTRY { address author booktitle chapter edition editor howpublished institution isbn issn journal key month note number organization pages publisher school series title type url volume year } {} { label extra.label sort.label short.list } INTEGERS { output.state before.all mid.sentence after.sentence after.block } FUNCTION {init.state.consts} { #0 'before.all := #1 'mid.sentence := #2 'after.sentence := #3 'after.block := } STRINGS { s t } FUNCTION {output.nonnull} { 's := output.state mid.sentence = { ", " * write$ } { output.state after.block = { add.period$ write$ newline$ "\newblock " write$ } { output.state before.all = 'write$ { add.period$ " " * write$ } if$ } if$ mid.sentence 'output.state := } if$ s } FUNCTION {output} { duplicate$ empty$ 'pop$ 'output.nonnull if$ } FUNCTION {output.check} { 't := duplicate$ empty$ { pop$ "empty " t * " in " * cite$ * warning$ } 'output.nonnull if$ } FUNCTION {fin.entry} { add.period$ write$ newline$ } FUNCTION {new.block} { output.state before.all = 'skip$ { after.block 'output.state := } if$ } FUNCTION {new.sentence} { output.state after.block = 'skip$ { output.state before.all = 'skip$ { after.sentence 'output.state := } if$ } if$ } FUNCTION {not} { { #0 } { #1 } if$ } FUNCTION {and} { 'skip$ { pop$ #0 } if$ } FUNCTION {or} { { pop$ #1 } 'skip$ if$ } FUNCTION {new.block.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$ "" } { "{\em " swap$ * "}" * } if$ } INTEGERS { nameptr namesleft numnames } FUNCTION {format.names} { 's := #1 'nameptr := s num.names$ 'numnames := numnames 'namesleft := { namesleft #0 > } { s nameptr "{ff~}{vv~}{ll}{, jj}" format.name$ 't := 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 {format.key} { empty$ { key field.or.null } { "" } if$ } FUNCTION {format.authors} { author empty$ { "" } { author format.names } if$ } FUNCTION {format.editors} { editor empty$ { "" } { editor format.names editor num.names$ #1 > { ", editors" * } { ", editor" * } if$ } if$ } FUNCTION {format.isbn} { isbn empty$ { "" } { new.block "ISBN " isbn * } if$ } FUNCTION {format.issn} { issn empty$ { "" } { new.block "ISSN " issn * } if$ } FUNCTION {format.url} { "" } FUNCTION {format.title} { title empty$ { "" } { url empty$ { title "t" change.case$ } { "\href{" url * "}{" * title "t" change.case$ * "}" * } if$ } if$ } FUNCTION {format.full.names} {'s := #1 'nameptr := s num.names$ 'numnames := numnames 'namesleft := { namesleft #0 > } { s nameptr "{vv~}{ll}" format.name$ 't := 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$ "proceedings" = 'editor.full 'author.full if$ } if$ } FUNCTION {output.bibitem} { newline$ "\bibitem[" write$ label write$ ")" make.full.names duplicate$ short.list = { pop$ } { * } if$ "]{" * write$ cite$ write$ "}" write$ newline$ "" before.all 'output.state := } FUNCTION {n.dashify} { 't := "" { t empty$ not } { t #1 #1 substring$ "-" = { t #1 #2 substring$ "--" = not { "--" * t #2 global.max$ substring$ 't := } { { t #1 #1 substring$ "-" = } { "-" * t #2 global.max$ substring$ 't := } while$ } if$ } { t #1 #1 substring$ * t #2 global.max$ substring$ 't := } if$ } while$ } FUNCTION {format.date} { year duplicate$ empty$ { "empty year in " cite$ * warning$ pop$ "" } 'skip$ if$ month empty$ 'skip$ { month " " * swap$ * } if$ extra.label * } FUNCTION {format.btitle} { title emphasize } 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 {format.bvolume} { volume empty$ { "" } { "volume" volume tie.or.space.connect series empty$ 'skip$ { " of " * series emphasize * } if$ "volume and number" number either.or.check } if$ } FUNCTION {format.number.series} { volume empty$ { number empty$ { series field.or.null } { output.state mid.sentence = { "number" } { "Number" } if$ number tie.or.space.connect series empty$ { "there's a number but no series in " cite$ * warning$ } { " in " * series * } if$ } if$ } { "" } if$ } FUNCTION {format.edition} { edition empty$ { "" } { output.state mid.sentence = { edition "l" change.case$ " edition" * } { edition "t" change.case$ " edition" * } if$ } if$ } INTEGERS { multiresult } FUNCTION {multi.page.check} { 't := #0 'multiresult := { multiresult not t empty$ not and } { t #1 #1 substring$ duplicate$ "-" = swap$ duplicate$ "," = swap$ "+" = or or { #1 'multiresult := } { t #2 global.max$ substring$ 't := } if$ } while$ multiresult } FUNCTION {format.pages} { pages empty$ { "" } { pages multi.page.check { "pages" pages n.dashify tie.or.space.connect } { "page" pages tie.or.space.connect } if$ } if$ } FUNCTION {format.vol.num.pages} { volume field.or.null number empty$ 'skip$ { "\penalty0 (" number * ")" * * volume empty$ { "there's a number but no volume in " cite$ * warning$ } 'skip$ if$ } if$ pages empty$ 'skip$ { duplicate$ empty$ { pop$ format.pages } { ":\penalty0 " * pages n.dashify * } if$ } if$ } FUNCTION {format.chapter.pages} { chapter empty$ 'format.pages { type empty$ { "chapter" } { type "l" change.case$ } if$ chapter tie.or.space.connect pages empty$ 'skip$ { ", " * format.pages * } if$ } if$ } FUNCTION {format.in.ed.booktitle} { booktitle empty$ { "" } { editor empty$ { "In " booktitle emphasize * } { "In " format.editors * ", " * booktitle emphasize * } if$ } if$ } FUNCTION {empty.misc.check} { author empty$ title empty$ howpublished empty$ month empty$ year empty$ note empty$ and and and and and key empty$ not and { "all relevant fields are empty in " cite$ * warning$ } 'skip$ if$ } FUNCTION {format.thesis.type} { type empty$ 'skip$ { pop$ type "t" change.case$ } if$ } FUNCTION {format.tr.number} { type empty$ { "Technical Report" } 'type if$ number empty$ { "t" change.case$ } { number tie.or.space.connect } if$ } FUNCTION {format.article.crossref} { key empty$ { journal empty$ { "need key or journal for " cite$ * " to crossref " * crossref * warning$ "" } { "In {\em " journal * "\/}" * } if$ } { "In " key * } if$ " \citep{" * crossref * "}" * } FUNCTION {format.book.crossref} { volume empty$ { "empty volume in " cite$ * "'s crossref of " * crossref * warning$ "In " } { "Volume" volume tie.or.space.connect " of " * } if$ editor empty$ editor field.or.null author field.or.null = or { key empty$ { series empty$ { "need editor, key, or series for " cite$ * " to crossref " * crossref * warning$ "" * } { "{\em " * series * "\/}" * } if$ } { key * } if$ } 'skip$ if$ ", \citet{" * crossref * "}" * } FUNCTION {format.incoll.inproc.crossref} { editor empty$ editor field.or.null author field.or.null = or { key empty$ { booktitle empty$ { "need editor, key, or booktitle for " cite$ * " to crossref " * crossref * warning$ "" } { "In {\em " booktitle * "\/}" * } if$ } { "In " key * } if$ } { "In " } if$ " \citet{" * crossref * "}" * } FUNCTION {article} { output.bibitem format.authors "author" output.check author format.key output new.block format.title "title" output.check new.block crossref missing$ { journal emphasize "journal" output.check format.vol.num.pages output format.date "year" output.check } { format.article.crossref output.nonnull format.pages output } if$ format.issn output format.url output new.block note output fin.entry } FUNCTION {book} { output.bibitem author empty$ { format.editors "author and editor" output.check editor format.key output } { format.authors output.nonnull crossref missing$ { "author and editor" editor either.or.check } 'skip$ if$ } if$ new.block format.btitle "title" output.check crossref missing$ { format.bvolume output new.block format.number.series output new.sentence publisher "publisher" output.check address output } { new.block format.book.crossref output.nonnull } if$ format.edition output format.date "year" output.check format.isbn output format.url output new.block note output fin.entry } FUNCTION {booklet} { output.bibitem format.authors output author format.key output new.block format.title "title" output.check howpublished address new.block.checkb howpublished output address output format.date output format.isbn output format.url output new.block note output fin.entry } FUNCTION {inbook} { output.bibitem author empty$ { format.editors "author and editor" output.check editor format.key output } { format.authors output.nonnull crossref missing$ { "author and editor" editor either.or.check } 'skip$ if$ } if$ new.block format.btitle "title" output.check crossref missing$ { format.bvolume output format.chapter.pages "chapter and pages" output.check new.block format.number.series output new.sentence publisher "publisher" output.check address output } { format.chapter.pages "chapter and pages" output.check new.block format.book.crossref output.nonnull } if$ format.edition output format.date "year" output.check format.isbn output format.url output new.block note output fin.entry } FUNCTION {incollection} { output.bibitem format.authors "author" output.check author format.key output new.block format.title "title" output.check new.block crossref missing$ { format.in.ed.booktitle "booktitle" output.check format.bvolume output format.number.series output format.chapter.pages output new.sentence publisher "publisher" output.check address output format.edition output format.date "year" output.check } { format.incoll.inproc.crossref output.nonnull format.chapter.pages output } if$ format.isbn output format.url output new.block note output fin.entry } FUNCTION {inproceedings} { output.bibitem format.authors "author" output.check author format.key output new.block format.title "title" output.check new.block crossref missing$ { format.in.ed.booktitle "booktitle" output.check format.bvolume output format.number.series output format.pages output address empty$ { organization publisher new.sentence.checkb organization output publisher output format.date "year" output.check } { address output.nonnull format.date "year" output.check new.sentence organization output publisher output } if$ } { format.incoll.inproc.crossref output.nonnull format.pages output } if$ format.isbn output format.url output new.block note output fin.entry } FUNCTION {conference} { inproceedings } FUNCTION {manual} { output.bibitem format.authors output author format.key output new.block format.btitle "title" output.check organization address new.block.checkb organization output address output format.edition output format.date output format.url output new.block note output fin.entry } FUNCTION {mastersthesis} { output.bibitem format.authors "author" output.check author format.key output new.block format.title "title" output.check new.block "Master's thesis" format.thesis.type output.nonnull school "school" output.check address output format.date "year" output.check format.url output new.block note output fin.entry } FUNCTION {misc} { output.bibitem format.authors output author format.key output title howpublished new.block.checkb format.title output howpublished new.block.checka howpublished output format.date output format.issn output format.url output new.block note output fin.entry empty.misc.check } FUNCTION {phdthesis} { output.bibitem format.authors "author" output.check author format.key output new.block format.btitle "title" output.check new.block "PhD thesis" format.thesis.type output.nonnull school "school" output.check address output format.date "year" output.check format.url output new.block note output fin.entry } FUNCTION {proceedings} { output.bibitem format.editors output editor format.key output new.block format.btitle "title" output.check format.bvolume output format.number.series output address output format.date "year" output.check new.sentence organization output publisher output format.isbn output format.url output new.block note output fin.entry } FUNCTION {techreport} { output.bibitem format.authors "author" output.check author format.key output new.block format.title "title" output.check new.block format.tr.number output.nonnull institution "institution" output.check address output format.date "year" output.check format.url output new.block note output fin.entry } FUNCTION {unpublished} { output.bibitem format.authors "author" output.check author format.key output new.block format.title "title" output.check format.url output new.block note "note" output.check format.date output fin.entry } 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"} READ FUNCTION {sortify} { purify$ "l" change.case$ } INTEGERS { len } FUNCTION {chop.word} { 's := 'len := s #1 len substring$ = { s len #1 + global.max$ substring$ } 's if$ } FUNCTION {format.lab.names} { 's := s #1 "{vv~}{ll}" format.name$ s num.names$ duplicate$ #2 > { pop$ " et~al." * } { #2 < 'skip$ { s #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" = { " et~al." * } { " and " * s #2 "{vv~}{ll}" format.name$ * } if$ } if$ } if$ } FUNCTION {author.key.label} { author empty$ { key empty$ { cite$ #1 #3 substring$ } 'key if$ } { author format.lab.names } if$ } FUNCTION {author.editor.key.label} { author empty$ { editor empty$ { key empty$ { cite$ #1 #3 substring$ } 'key if$ } { editor format.lab.names } if$ } { author format.lab.names } if$ } FUNCTION {author.key.organization.label} { author empty$ { key empty$ { organization empty$ { cite$ #1 #3 substring$ } { "The " #4 organization chop.word #3 text.prefix$ } if$ } 'key if$ } { author format.lab.names } if$ } FUNCTION {editor.key.organization.label} { editor empty$ { key empty$ { organization empty$ { cite$ #1 #3 substring$ } { "The " #4 organization chop.word #3 text.prefix$ } if$ } 'key if$ } { editor format.lab.names } if$ } FUNCTION {calc.short.authors} { type$ "book" = type$ "inbook" = or 'author.editor.key.label { type$ "proceedings" = 'editor.key.organization.label { type$ "manual" = 'author.key.organization.label 'author.key.label if$ } if$ } if$ 'short.list := } FUNCTION {calc.label} { calc.short.authors short.list "(" * year duplicate$ empty$ short.list key field.or.null = or { pop$ "" } 'skip$ if$ * 'label := } FUNCTION {sort.format.names} { '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.title} { 't := "A " #2 "An " #3 "The " #4 t chop.word chop.word chop.word sortify #1 global.max$ substring$ } FUNCTION {author.sort} { author empty$ { key empty$ { "to sort, need author or key in " cite$ * warning$ "" } { key sortify } if$ } { author sort.format.names } if$ } FUNCTION {author.editor.sort} { author empty$ { editor empty$ { key empty$ { "to sort, need author, editor, or key in " cite$ * warning$ "" } { key sortify } if$ } { editor sort.format.names } if$ } { author sort.format.names } if$ } FUNCTION {author.organization.sort} { author empty$ { organization empty$ { key empty$ { "to sort, need author, organization, or key in " cite$ * warning$ "" } { 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$ "" } { key sortify } if$ } { "The " #4 organization chop.word sortify } if$ } { editor sort.format.names } if$ } FUNCTION {presort} { calc.label label sortify " " * type$ "book" = type$ "inbook" = or 'author.editor.sort { type$ "proceedings" = 'editor.organization.sort { type$ "manual" = 'author.organization.sort 'author.sort if$ } if$ } if$ " " * year field.or.null sortify * " " * title field.or.null sort.format.title * #1 entry.max$ substring$ 'sort.label := sort.label * #1 entry.max$ substring$ 'sort.key$ := } ITERATE {presort} SORT STRINGS { longest.label last.label next.extra } INTEGERS { longest.label.width last.extra.num number.label } FUNCTION {initialize.longest.label} { "" 'longest.label := #0 int.to.chr$ 'last.label := "" 'next.extra := #0 'longest.label.width := #0 'last.extra.num := #0 'number.label := } FUNCTION {forward.pass} { last.label label = { last.extra.num #1 + 'last.extra.num := last.extra.num int.to.chr$ 'extra.label := } { "a" chr.to.int$ 'last.extra.num := "" 'extra.label := label 'last.label := } if$ number.label #1 + 'number.label := } FUNCTION {reverse.pass} { next.extra "b" = { "a" 'extra.label := } 'skip$ if$ extra.label 'next.extra := extra.label duplicate$ empty$ 'skip$ { "{\natexlab{" swap$ * "}}" * } if$ 'extra.label := label extra.label * 'label := } EXECUTE {initialize.longest.label} ITERATE {forward.pass} REVERSE {reverse.pass} FUNCTION {bib.sort.order} { sort.label 'sort.key$ := } ITERATE {bib.sort.order} SORT FUNCTION {begin.bib} { preamble$ empty$ 'skip$ { preamble$ write$ newline$ } if$ "\begin{thebibliography}{" number.label int.to.str$ * "}" * write$ newline$ "\expandafter\ifx\csname natexlab\endcsname\relax\def\natexlab#1{#1}\fi" write$ newline$ "\expandafter\ifx\csname url\endcsname\relax" write$ newline$ " \def\url#1{{\tt #1}}\fi" write$ newline$ } EXECUTE {begin.bib} EXECUTE {init.state.consts} ITERATE {call.type$} FUNCTION {end.bib} { newline$ "\end{thebibliography}" write$ newline$ } EXECUTE {end.bib}
Changed text
Open file
%% File: `plainnat.bst' %% A modification of `plain.bst' for use with natbib package %% %% Copyright 1993-2007 Patrick W Daly %% Max-Planck-Institut f\"ur Sonnensystemforschung %% Max-Planck-Str. 2 %% D-37191 Katlenburg-Lindau %% Germany %% E-mail: daly@mps.mpg.de %% %% This program can be redistributed and/or modified under the terms %% of the LaTeX Project Public License Distributed from CTAN %% archives in directory macros/latex/base/lppl.txt; either %% version 1 of the License, or any later version. %% % Version and source file information: % \ProvidesFile{natbst.mbs}[2007/11/26 1.93 (PWD)] % % BibTeX `plainnat' family % version 0.99b for BibTeX versions 0.99a or later, % for LaTeX versions 2.09 and 2e. % % For use with the `natbib.sty' package; emulates the corresponding % member of the `plain' family, but with author-year citations. % % With version 6.0 of `natbib.sty', it may also be used for numerical % citations, while retaining the commands \citeauthor, \citefullauthor, % and \citeyear to print the corresponding information. % % For version 7.0 of `natbib.sty', the KEY field replaces missing % authors/editors, and the date is left blank in \bibitem. % % Includes field EID for the sequence/citation number of electronic journals % which is used instead of page numbers. % % Includes fields ISBN and ISSN. % % Includes field URL for Internet addresses. % % Includes field DOI for Digital Object Idenfifiers. % % Works best with the url.sty package of Donald Arseneau. % % Works with identical authors and year are further sorted by % citation key, to preserve any natural sequence. % ENTRY { address author booktitle chapter doi eid edition editor howpublished institution isbn issn journal key month note number organization pages publisher school series title type url volume year } {} { label extra.label sort.label short.list } INTEGERS { output.state before.all mid.sentence after.sentence after.block } FUNCTION {init.state.consts} { #0 'before.all := #1 'mid.sentence := #2 'after.sentence := #3 'after.block := } STRINGS { s t } FUNCTION {output.nonnull} { 's := output.state mid.sentence = { ", " * write$ } { output.state after.block = { add.period$ write$ newline$ "\newblock " write$ } { output.state before.all = 'write$ { add.period$ " " * write$ } if$ } if$ mid.sentence 'output.state := } if$ s } FUNCTION {output} { duplicate$ empty$ 'pop$ 'output.nonnull if$ } FUNCTION {output.check} { 't := duplicate$ empty$ { pop$ "empty " t * " in " * cite$ * warning$ } 'output.nonnull if$ } FUNCTION {fin.entry} { add.period$ write$ newline$ } FUNCTION {new.block} { output.state before.all = 'skip$ { after.block 'output.state := } if$ } FUNCTION {new.sentence} { output.state after.block = 'skip$ { output.state before.all = 'skip$ { after.sentence 'output.state := } if$ } if$ } FUNCTION {not} { { #0 } { #1 } if$ } FUNCTION {and} { 'skip$ { pop$ #0 } if$ } FUNCTION {or} { { pop$ #1 } 'skip$ if$ } FUNCTION {new.block.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$ } INTEGERS { nameptr namesleft numnames } FUNCTION {format.names} { 's := #1 'nameptr := s num.names$ 'numnames := numnames 'namesleft := { namesleft #0 > } { s nameptr "{ff~}{vv~}{ll}{, jj}" format.name$ 't := 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 {format.key} { empty$ { key field.or.null } { "" } if$ } FUNCTION {format.authors} { author empty$ { "" } { author format.names } if$ } FUNCTION {format.editors} { editor empty$ { "" } { editor format.names editor num.names$ #1 > { ", editors" * } { ", editor" * } if$ } if$ } FUNCTION {format.isbn} { isbn empty$ { "" } { new.block "ISBN " isbn * } if$ } FUNCTION {format.issn} { issn empty$ { "" } { new.block "ISSN " issn * } if$ } FUNCTION {format.url} { url empty$ { "" } { new.block "URL \url{" url * "}" * } if$ } FUNCTION {format.doi} { doi empty$ { "" } { new.block "\doi{" doi * "}" * } if$ } FUNCTION {format.title} { title empty$ { "" } { title "t" change.case$ } if$ } FUNCTION {format.full.names} {'s := #1 'nameptr := s num.names$ 'numnames := numnames 'namesleft := { namesleft #0 > } { s nameptr "{vv~}{ll}" format.name$ 't := 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$ "proceedings" = 'editor.full 'author.full if$ } if$ } FUNCTION {output.bibitem} { newline$ "\bibitem[" write$ label write$ ")" make.full.names duplicate$ short.list = { pop$ } { * } if$ "]{" * write$ cite$ write$ "}" write$ newline$ "" before.all 'output.state := } FUNCTION {n.dashify} { 't := "" { t empty$ not } { t #1 #1 substring$ "-" = { t #1 #2 substring$ "--" = not { "--" * t #2 global.max$ substring$ 't := } { { t #1 #1 substring$ "-" = } { "-" * t #2 global.max$ substring$ 't := } while$ } if$ } { t #1 #1 substring$ * t #2 global.max$ substring$ 't := } if$ } while$ } FUNCTION {format.date} { year duplicate$ empty$ { "empty year in " cite$ * warning$ pop$ "" } 'skip$ if$ month empty$ 'skip$ { month " " * swap$ * } if$ extra.label * } FUNCTION {format.btitle} { title emphasize } 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 {format.bvolume} { volume empty$ { "" } { "volume" volume tie.or.space.connect series empty$ 'skip$ { " of " * series emphasize * } if$ "volume and number" number either.or.check } if$ } FUNCTION {format.number.series} { volume empty$ { number empty$ { series field.or.null } { output.state mid.sentence = { "number" } { "Number" } if$ number tie.or.space.connect series empty$ { "there's a number but no series in " cite$ * warning$ } { " in " * series * } if$ } if$ } { "" } if$ } FUNCTION {format.edition} { edition empty$ { "" } { output.state mid.sentence = { edition "l" change.case$ " edition" * } { edition "t" change.case$ " edition" * } if$ } if$ } INTEGERS { multiresult } FUNCTION {multi.page.check} { 't := #0 'multiresult := { multiresult not t empty$ not and } { t #1 #1 substring$ duplicate$ "-" = swap$ duplicate$ "," = swap$ "+" = or or { #1 'multiresult := } { t #2 global.max$ substring$ 't := } if$ } while$ multiresult } FUNCTION {format.pages} { pages empty$ { "" } { pages multi.page.check { "pages" pages n.dashify tie.or.space.connect } { "page" pages tie.or.space.connect } if$ } if$ } FUNCTION {format.eid} { eid empty$ { "" } { "art." eid tie.or.space.connect } if$ } FUNCTION {format.vol.num.pages} { volume field.or.null number empty$ 'skip$ { "\penalty0 (" number * ")" * * volume empty$ { "there's a number but no volume in " cite$ * warning$ } 'skip$ if$ } if$ pages empty$ 'skip$ { duplicate$ empty$ { pop$ format.pages } { ":\penalty0 " * pages n.dashify * } if$ } if$ } FUNCTION {format.vol.num.eid} { volume field.or.null number empty$ 'skip$ { "\penalty0 (" number * ")" * * volume empty$ { "there's a number but no volume in " cite$ * warning$ } 'skip$ if$ } if$ eid empty$ 'skip$ { duplicate$ empty$ { pop$ format.eid } { ":\penalty0 " * eid * } if$ } if$ } FUNCTION {format.chapter.pages} { chapter empty$ 'format.pages { type empty$ { "chapter" } { type "l" change.case$ } if$ chapter tie.or.space.connect pages empty$ 'skip$ { ", " * format.pages * } if$ } if$ } FUNCTION {format.in.ed.booktitle} { booktitle empty$ { "" } { editor empty$ { "In " booktitle emphasize * } { "In " format.editors * ", " * booktitle emphasize * } if$ } if$ } FUNCTION {empty.misc.check} { author empty$ title empty$ howpublished empty$ month empty$ year empty$ note empty$ and and and and and key empty$ not and { "all relevant fields are empty in " cite$ * warning$ } 'skip$ if$ } FUNCTION {format.thesis.type} { type empty$ 'skip$ { pop$ type "t" change.case$ } if$ } FUNCTION {format.tr.number} { type empty$ { "Technical Report" } 'type if$ number empty$ { "t" change.case$ } { number tie.or.space.connect } if$ } FUNCTION {format.article.crossref} { key empty$ { journal empty$ { "need key or journal for " cite$ * " to crossref " * crossref * warning$ "" } { "In \emph{" journal * "}" * } if$ } { "In " } if$ " \citet{" * crossref * "}" * } FUNCTION {format.book.crossref} { volume empty$ { "empty volume in " cite$ * "'s crossref of " * crossref * warning$ "In " } { "Volume" volume tie.or.space.connect " of " * } if$ editor empty$ editor field.or.null author field.or.null = or { key empty$ { series empty$ { "need editor, key, or series for " cite$ * " to crossref " * crossref * warning$ "" * } { "\emph{" * series * "}" * } if$ } 'skip$ if$ } 'skip$ if$ " \citet{" * crossref * "}" * } FUNCTION {format.incoll.inproc.crossref} { editor empty$ editor field.or.null author field.or.null = or { key empty$ { booktitle empty$ { "need editor, key, or booktitle for " cite$ * " to crossref " * crossref * warning$ "" } { "In \emph{" booktitle * "}" * } if$ } { "In " } if$ } { "In " } if$ " \citet{" * crossref * "}" * } FUNCTION {article} { output.bibitem format.authors "author" output.check author format.key output new.block format.title "title" output.check new.block crossref missing$ { journal emphasize "journal" output.check eid empty$ { format.vol.num.pages output } { format.vol.num.eid output } if$ format.date "year" output.check } { format.article.crossref output.nonnull eid empty$ { format.pages output } { format.eid output } if$ } if$ format.issn output format.doi output format.url output new.block note output fin.entry } FUNCTION {book} { output.bibitem author empty$ { format.editors "author and editor" output.check editor format.key output } { format.authors output.nonnull crossref missing$ { "author and editor" editor either.or.check } 'skip$ if$ } if$ new.block format.btitle "title" output.check crossref missing$ { format.bvolume output new.block format.number.series output new.sentence publisher "publisher" output.check address output } { new.block format.book.crossref output.nonnull } if$ format.edition output format.date "year" output.check format.isbn output format.doi output format.url output new.block note output fin.entry } FUNCTION {booklet} { output.bibitem format.authors output author format.key output new.block format.title "title" output.check howpublished address new.block.checkb howpublished output address output format.date output format.isbn output format.doi output format.url output new.block note output fin.entry } FUNCTION {inbook} { output.bibitem author empty$ { format.editors "author and editor" output.check editor format.key output } { format.authors output.nonnull crossref missing$ { "author and editor" editor either.or.check } 'skip$ if$ } if$ new.block format.btitle "title" output.check crossref missing$ { format.bvolume output format.chapter.pages "chapter and pages" output.check new.block format.number.series output new.sentence publisher "publisher" output.check address output } { format.chapter.pages "chapter and pages" output.check new.block format.book.crossref output.nonnull } if$ format.edition output format.date "year" output.check format.isbn output format.doi output format.url output new.block note output fin.entry } FUNCTION {incollection} { output.bibitem format.authors "author" output.check author format.key output new.block format.title "title" output.check new.block crossref missing$ { format.in.ed.booktitle "booktitle" output.check format.bvolume output format.number.series output format.chapter.pages output new.sentence publisher "publisher" output.check address output format.edition output format.date "year" output.check } { format.incoll.inproc.crossref output.nonnull format.chapter.pages output } if$ format.isbn output format.doi output format.url output new.block note output fin.entry } FUNCTION {inproceedings} { output.bibitem format.authors "author" output.check author format.key output new.block format.title "title" output.check new.block crossref missing$ { format.in.ed.booktitle "booktitle" output.check format.bvolume output format.number.series output format.pages output address empty$ { organization publisher new.sentence.checkb organization output publisher output format.date "year" output.check } { address output.nonnull format.date "year" output.check new.sentence organization output publisher output } if$ } { format.incoll.inproc.crossref output.nonnull format.pages output } if$ format.isbn output format.doi output format.url output new.block note output fin.entry } FUNCTION {conference} { inproceedings } FUNCTION {manual} { output.bibitem format.authors output author format.key output new.block format.btitle "title" output.check organization address new.block.checkb organization output address output format.edition output format.date output format.url output new.block note output fin.entry } FUNCTION {mastersthesis} { output.bibitem format.authors "author" output.check author format.key output new.block format.title "title" output.check new.block "Master's thesis" format.thesis.type output.nonnull school "school" output.check address output format.date "year" output.check format.url output new.block note output fin.entry } FUNCTION {misc} { output.bibitem format.authors output author format.key output title howpublished new.block.checkb format.title output howpublished new.block.checka howpublished output format.date output format.issn output format.url output new.block note output fin.entry empty.misc.check } FUNCTION {phdthesis} { output.bibitem format.authors "author" output.check author format.key output new.block format.btitle "title" output.check new.block "PhD thesis" format.thesis.type output.nonnull school "school" output.check address output format.date "year" output.check format.url output new.block note output fin.entry } FUNCTION {proceedings} { output.bibitem format.editors output editor format.key output new.block format.btitle "title" output.check format.bvolume output format.number.series output address output format.date "year" output.check new.sentence organization output publisher output format.isbn output format.doi output format.url output new.block note output fin.entry } FUNCTION {techreport} { output.bibitem format.authors "author" output.check author format.key output new.block format.title "title" output.check new.block format.tr.number output.nonnull institution "institution" output.check address output format.date "year" output.check format.url output new.block note output fin.entry } FUNCTION {unpublished} { output.bibitem format.authors "author" output.check author format.key output new.block format.title "title" output.check new.block note "note" output.check format.date output format.url output fin.entry } 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"} READ FUNCTION {sortify} { purify$ "l" change.case$ } INTEGERS { len } FUNCTION {chop.word} { 's := 'len := s #1 len substring$ = { s len #1 + global.max$ substring$ } 's if$ } FUNCTION {format.lab.names} { 's := s #1 "{vv~}{ll}" format.name$ s num.names$ duplicate$ #2 > { pop$ " et~al." * } { #2 < 'skip$ { s #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" = { " et~al." * } { " and " * s #2 "{vv~}{ll}" format.name$ * } if$ } if$ } if$ } FUNCTION {author.key.label} { author empty$ { key empty$ { cite$ #1 #3 substring$ } 'key if$ } { author format.lab.names } if$ } FUNCTION {author.editor.key.label} { author empty$ { editor empty$ { key empty$ { cite$ #1 #3 substring$ } 'key if$ } { editor format.lab.names } if$ } { author format.lab.names } if$ } FUNCTION {author.key.organization.label} { author empty$ { key empty$ { organization empty$ { cite$ #1 #3 substring$ } { "The " #4 organization chop.word #3 text.prefix$ } if$ } 'key if$ } { author format.lab.names } if$ } FUNCTION {editor.key.organization.label} { editor empty$ { key empty$ { organization empty$ { cite$ #1 #3 substring$ } { "The " #4 organization chop.word #3 text.prefix$ } if$ } 'key if$ } { editor format.lab.names } if$ } FUNCTION {calc.short.authors} { type$ "book" = type$ "inbook" = or 'author.editor.key.label { type$ "proceedings" = 'editor.key.organization.label { type$ "manual" = 'author.key.organization.label 'author.key.label if$ } if$ } if$ 'short.list := } FUNCTION {calc.label} { calc.short.authors short.list "(" * year duplicate$ empty$ short.list key field.or.null = or { pop$ "" } 'skip$ if$ * 'label := } 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 {author.sort} { author empty$ { key empty$ { "to sort, need author or key in " cite$ * warning$ "" } { key sortify } if$ } { author sort.format.names } if$ } FUNCTION {author.editor.sort} { author empty$ { editor empty$ { key empty$ { "to sort, need author, editor, or key in " cite$ * warning$ "" } { key sortify } if$ } { editor sort.format.names } if$ } { author sort.format.names } if$ } FUNCTION {author.organization.sort} { author empty$ { organization empty$ { key empty$ { "to sort, need author, organization, or key in " cite$ * warning$ "" } { 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$ "" } { key sortify } if$ } { "The " #4 organization chop.word sortify } if$ } { editor sort.format.names } if$ } FUNCTION {presort} { calc.label label sortify " " * type$ "book" = type$ "inbook" = or 'author.editor.sort { type$ "proceedings" = 'editor.organization.sort { type$ "manual" = 'author.organization.sort 'author.sort if$ } if$ } if$ " " * year field.or.null sortify * " " * cite$ * #1 entry.max$ substring$ 'sort.label := sort.label * #1 entry.max$ substring$ 'sort.key$ := } ITERATE {presort} SORT STRINGS { longest.label last.label next.extra } INTEGERS { longest.label.width last.extra.num number.label } FUNCTION {initialize.longest.label} { "" 'longest.label := #0 int.to.chr$ 'last.label := "" 'next.extra := #0 'longest.label.width := #0 'last.extra.num := #0 'number.label := } FUNCTION {forward.pass} { last.label label = { last.extra.num #1 + 'last.extra.num := last.extra.num int.to.chr$ 'extra.label := } { "a" chr.to.int$ 'last.extra.num := "" 'extra.label := label 'last.label := } if$ number.label #1 + 'number.label := } FUNCTION {reverse.pass} { next.extra "b" = { "a" 'extra.label := } 'skip$ if$ extra.label 'next.extra := extra.label duplicate$ empty$ 'skip$ { "{\natexlab{" swap$ * "}}" * } if$ 'extra.label := label extra.label * 'label := } EXECUTE {initialize.longest.label} ITERATE {forward.pass} REVERSE {reverse.pass} FUNCTION {bib.sort.order} { sort.label 'sort.key$ := } ITERATE {bib.sort.order} SORT FUNCTION {begin.bib} { preamble$ empty$ 'skip$ { preamble$ write$ newline$ } if$ "\begin{thebibliography}{" number.label int.to.str$ * "}" * write$ newline$ "\providecommand{\natexlab}[1]{#1}" write$ newline$ "\providecommand{\url}[1]{\texttt{#1}}" write$ newline$ "\expandafter\ifx\csname urlstyle\endcsname\relax" write$ newline$ " \providecommand{\doi}[1]{doi: #1}\else" write$ newline$ " \providecommand{\doi}{doi: \begingroup \urlstyle{rm}\Url}\fi" write$ newline$ } EXECUTE {begin.bib} EXECUTE {init.state.consts} ITERATE {call.type$} FUNCTION {end.bib} { newline$ "\end{thebibliography}" write$ newline$ } EXECUTE {end.bib}
Find difference