1409 lines
26 KiB
Plaintext
1409 lines
26 KiB
Plaintext
%%
|
|
%% This is file `gost780uv.bst',
|
|
%% generated with the docstrip utility.
|
|
%%
|
|
%% The original source files were:
|
|
%%
|
|
%% plainv.dtx (with options: `gost780uv')
|
|
%%
|
|
%% Copyright 1996-2003 Maksym Polyakov.
|
|
%% Version 2003.05.10
|
|
%%
|
|
%% This file may be distributed and/or modified under the
|
|
%% conditions of the LaTeX Project Public License, either version 1.2
|
|
%% of this license or (at your option) any later version.
|
|
%% The latest version of this license is in
|
|
%% http://www.latex-project.org/lppl.txt
|
|
%% and version 1.2 or later is part of all distributions of LaTeX
|
|
%% version 1999/12/01 or later.
|
|
%%
|
|
%% Please, send bug reports via e-mail:
|
|
%% polyama at auburn dot edu
|
|
%%
|
|
%% Modified by Konstantin Vorontsov, 2003, voron at ccas dot ru.
|
|
%%
|
|
%%
|
|
%% This bibliography style attempts
|
|
%% to format bibliography according to
|
|
%% GOST 7.1-84 and GOST 7.80-00
|
|
%%
|
|
%% For the Ukrainian|Russian bibliographic entries
|
|
%% you need to create field
|
|
%% language = {ukrainian|russian}.
|
|
%% Default language is English.
|
|
%% Field numpages for books must contain number of pages.
|
|
%% Optional field url will format url (using hyperref, if loaded).
|
|
%%
|
|
%% See examples in examples.[pdf|zip]
|
|
%%
|
|
%% Requires 8-bit bibtex with switch -B and csf file supporting cyrillic.
|
|
%% bibtex8 -B -c <encoding>.csf <your_document>
|
|
%%
|
|
%% 06.06.2003 by Konstantin Vorontsov:
|
|
%% New ENTRY "annote" added for output annotations.
|
|
%% New ENTRY "abstract" is equivalent to "annote" for compatibility with JabRef.
|
|
%% New commands \BibUrl, \BibAnnote added
|
|
%% for customize urls and annotations.
|
|
%% New commands \BibAuthor, \BibTitle added
|
|
%% for customize authors and titles.
|
|
%% New command \BibSection{cite}{title}{text} added
|
|
%% for support sections in unsorted bibliography.
|
|
%%
|
|
|
|
ENTRY
|
|
{ address
|
|
annote
|
|
abstract
|
|
author
|
|
booktitle
|
|
bookauthor
|
|
chapter
|
|
edition
|
|
editor
|
|
compiler
|
|
howpublished
|
|
institution
|
|
journal
|
|
key
|
|
language
|
|
month
|
|
note
|
|
number
|
|
organization
|
|
pages
|
|
numpages
|
|
publisher
|
|
school
|
|
series
|
|
text
|
|
title
|
|
type
|
|
url
|
|
volume
|
|
year
|
|
}
|
|
{}
|
|
{ label }
|
|
|
|
INTEGERS { output.state before.all mid.sentence after.sentence after.block
|
|
after.dblslash after.slash after.column after.semicolumn after.url}
|
|
|
|
FUNCTION {init.state.consts}
|
|
{ #0 'before.all :=
|
|
#1 'mid.sentence :=
|
|
#2 'after.sentence :=
|
|
#3 'after.block :=
|
|
#4 'after.dblslash :=
|
|
#5 'after.slash :=
|
|
#6 'after.column :=
|
|
#7 'after.semicolumn :=
|
|
}
|
|
|
|
STRINGS { s t }
|
|
|
|
FUNCTION {output.nonnull}
|
|
{ 's :=
|
|
output.state mid.sentence =
|
|
{ ", " * write$ }
|
|
{ output.state after.block =
|
|
{ add.period$ write$
|
|
" " quote$ "--- " * * write$
|
|
newline$
|
|
"\newblock " write$
|
|
}
|
|
{ output.state before.all =
|
|
'write$
|
|
{ output.state after.dblslash =
|
|
{ "~// " * write$ }
|
|
{ output.state after.slash =
|
|
{ "~/ " * write$ }
|
|
{ output.state after.column =
|
|
{ ": " * write$ }
|
|
{ output.state after.semicolumn =
|
|
{ "; " * write$ }
|
|
{ add.period$ " " * write$ }
|
|
if$
|
|
}
|
|
if$
|
|
}
|
|
if$
|
|
}
|
|
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 {fin.entry}
|
|
{ add.period$
|
|
write$
|
|
newline$
|
|
}
|
|
|
|
FUNCTION {new.block}
|
|
{ output.state before.all =
|
|
'skip$
|
|
{ after.block 'output.state := }
|
|
if$
|
|
}
|
|
|
|
FUNCTION {new.dblslash}
|
|
{ output.state before.all =
|
|
'skip$
|
|
{ after.dblslash 'output.state := }
|
|
if$
|
|
}
|
|
|
|
FUNCTION {new.slash}
|
|
{ output.state before.all =
|
|
'skip$
|
|
{ after.slash 'output.state := }
|
|
if$
|
|
}
|
|
|
|
FUNCTION {new.column}
|
|
{ output.state before.all =
|
|
'skip$
|
|
{ after.column 'output.state := }
|
|
if$
|
|
}
|
|
|
|
FUNCTION {new.semicolumn}
|
|
{ output.state before.all =
|
|
'skip$
|
|
{ after.semicolumn 'output.state := }
|
|
if$
|
|
}
|
|
|
|
FUNCTION {new.sentence}
|
|
{ output.state after.block =
|
|
'skip$
|
|
{ output.state before.all =
|
|
'skip$
|
|
{ after.sentence 'output.state := }
|
|
if$
|
|
}
|
|
if$
|
|
}
|
|
|
|
FUNCTION {new.par}
|
|
{ output.state before.all =
|
|
'skip$
|
|
{ after.sentence 'output.state := }
|
|
if$
|
|
}
|
|
|
|
FUNCTION {add.blank}
|
|
{ " " * before.all 'output.state :=
|
|
}
|
|
|
|
FUNCTION {not}
|
|
{ { #0 }
|
|
{ #1 }
|
|
if$
|
|
}
|
|
|
|
FUNCTION {and}
|
|
{ 'skip$
|
|
{ pop$ #0 }
|
|
if$
|
|
}
|
|
|
|
FUNCTION {or}
|
|
{ { pop$ #1 }
|
|
'skip$
|
|
if$
|
|
}
|
|
|
|
FUNCTION {non.stop}
|
|
{ duplicate$
|
|
"}" * add.period$
|
|
#-1 #1 substring$ "." =
|
|
}
|
|
|
|
FUNCTION {new.block.checka}
|
|
{ empty$
|
|
'skip$
|
|
'new.block
|
|
if$
|
|
}
|
|
|
|
FUNCTION {new.block.checkb}
|
|
{ empty$
|
|
swap$ empty$
|
|
and
|
|
'skip$
|
|
'new.block
|
|
if$
|
|
}
|
|
|
|
FUNCTION {new.sentence.checka}
|
|
{ empty$
|
|
'skip$
|
|
'new.sentence
|
|
if$
|
|
}
|
|
|
|
FUNCTION {new.sentence.checkb}
|
|
{ empty$
|
|
swap$ empty$
|
|
and
|
|
'skip$
|
|
'new.sentence
|
|
if$
|
|
}
|
|
|
|
FUNCTION {field.or.null}
|
|
{ duplicate$ empty$
|
|
{ pop$ "" }
|
|
'skip$
|
|
if$
|
|
}
|
|
|
|
FUNCTION {emphasize}
|
|
{ duplicate$ empty$
|
|
{ pop$ "" }
|
|
{ "\emph{" swap$ * "}" * }
|
|
if$
|
|
}
|
|
|
|
FUNCTION {BibAuthor}
|
|
{ duplicate$ empty$
|
|
{ pop$ "" }
|
|
{ "\BibAuthor{" swap$ * "}" * }
|
|
if$
|
|
}
|
|
|
|
FUNCTION {BibTitle}
|
|
{ duplicate$ empty$
|
|
{ pop$ "" }
|
|
{ "\BibTitle{" swap$ * "}" * }
|
|
if$
|
|
}
|
|
|
|
FUNCTION {space.word}
|
|
{ " " swap$ * " " * }
|
|
|
|
FUNCTION {bbl.edby} % { "\bbledby{}" }
|
|
{ language empty$
|
|
{"Ed. by "}
|
|
{ language "ukrainian" =
|
|
{"{\cyr\CYRP\cyrii\cyrd\ \cyrr\cyre\cyrd.\ }"}
|
|
{ language "russian" =
|
|
{"{\cyr\CYRP\cyro\cyrd\ \cyrr\cyre\cyrd.\ }"}
|
|
{"language is not defined: " language "edited by" * * warning$ "edited by"}
|
|
if$}
|
|
if$}
|
|
if$
|
|
}
|
|
|
|
FUNCTION {bbl.cmplr}
|
|
{ language empty$
|
|
{"Compiler "}
|
|
{ language "ukrainian" =
|
|
{"{\cyr\CYRU\cyrk\cyrl\.\ }"}
|
|
{ language "russian" =
|
|
{"{\cyr\CYRS\cyro\cyrs\cyrt.\ }"}
|
|
{"language is not defined: " language "compiler" * * warning$ "compiler"}
|
|
if$}
|
|
if$}
|
|
if$
|
|
}
|
|
|
|
FUNCTION {bbl.edition} % { "\bbledition{}" }
|
|
{ language empty$
|
|
{"edition"}
|
|
{ language "ukrainian" =
|
|
{"{\cyr\cyrv\cyri\cyrd.}"}
|
|
{ language "russian" =
|
|
{"{\cyr\cyri\cyrz\cyrd.}"}
|
|
{"language is not defined: " language "edition" * * warning$ "edition"}
|
|
if$}
|
|
if$}
|
|
if$
|
|
}
|
|
|
|
FUNCTION {bbl.vvolume} % { "\bblVolume{}" }
|
|
{ language empty$
|
|
{"Volume"}
|
|
{ language "ukrainian" = language "russian" = or
|
|
{"\CYRT\cyro\cyrm"}
|
|
{"language is not defined: " language "Volume" * * warning$ "Volume"}
|
|
if$}
|
|
if$
|
|
}
|
|
|
|
FUNCTION {bbl.vvol} % { "\bblVol{}" }
|
|
{ language empty$
|
|
{"Vol."}
|
|
{ language "ukrainian" = language "russian" = or
|
|
{"\CYRT."}
|
|
{"language is not defined: " language "Vol." * * warning$ "Vol."}
|
|
if$}
|
|
if$
|
|
}
|
|
|
|
FUNCTION {bbl.iissue} % { "\bblIssue{}" }
|
|
{ language empty$
|
|
{"Issue"}
|
|
{ language "ukrainian" =
|
|
{"\CYRV\cyri\cyrp\cyru\cyrs\cyrk"}
|
|
{ language "russian" =
|
|
{"\CYRV\cyrery\cyrp\cyru\cyrs\cyrk"}
|
|
{"language is not defined: " language * warning$ "Issue"}
|
|
if$}
|
|
if$}
|
|
if$
|
|
}
|
|
|
|
FUNCTION {bbl.iiss} % { "\bblIss{}" }
|
|
{ language empty$
|
|
{"Iss."}
|
|
{ language "ukrainian" =
|
|
{"\CYRV\cyri\cyrp."}
|
|
{ language "russian" =
|
|
{"\CYRV\cyrery\cyrp."}
|
|
{"language is not defined: " language * warning$ "Issue"}
|
|
if$}
|
|
if$}
|
|
if$
|
|
}
|
|
|
|
FUNCTION {bbl.of} % { "\bblof{}" }
|
|
{ language empty$
|
|
{"of"}
|
|
{ language "ukrainian" =
|
|
{"{\cyr\cyrii\cyrz}"}
|
|
{ language "russian" =
|
|
{"{\cyr\cyri\cyrz}"}
|
|
{"language is not defined: " language "of" * * warning$ "of"}
|
|
if$}
|
|
if$}
|
|
if$
|
|
}
|
|
|
|
FUNCTION {bbl.etal} % { "\bblof{}" }
|
|
{ language empty$
|
|
{"et~al."}
|
|
{ language "ukrainian" =
|
|
{"{\cyr\cyrt\cyra~\cyrii\cyrn.}"}
|
|
{ language "russian" =
|
|
{"{\cyr\cyri~\cyrd\cyrr.}"}
|
|
{"language is not defined: " language "at al" * * warning$ "at al."}
|
|
if$}
|
|
if$}
|
|
if$
|
|
}
|
|
|
|
FUNCTION {bbl.nnumber} % { "\bblNumber{}" }
|
|
{ language empty$
|
|
{"Number"}
|
|
{ language "ukrainian" = language "russian" = or
|
|
{"\CYRN\cyro\cyrm\cyre\cyrr"}
|
|
{"language is not defined: " language "Number" * * warning$ "Number"}
|
|
if$}
|
|
if$
|
|
}
|
|
|
|
FUNCTION {bbl.number} % { "\bblnumber{}" }
|
|
{ language empty$
|
|
{"number"}
|
|
{ language "ukrainian" = language "russian" = or
|
|
{"{\cyr\cyrn\cyro\cyrm\cyre\cyrr}"}
|
|
{"language is not defined: " language "number" * * warning$ "number"}
|
|
if$}
|
|
if$
|
|
}
|
|
|
|
FUNCTION {bbl.nr} % { "\bblno{}" }
|
|
{ language empty$
|
|
{"no."}
|
|
{ language "ukrainian" = language "russian" = or
|
|
{"{\cyr\textnumero}"}
|
|
{"language is not defined: " language "no." * * warning$ "no."}
|
|
if$}
|
|
if$
|
|
}
|
|
|
|
FUNCTION {bbl.nnr} % { "\bblno{}" }
|
|
{ language empty$
|
|
{"No."}
|
|
{ language "ukrainian" = language "russian" = or
|
|
{"{\cyr\textnumero}"}
|
|
{"language is not defined: " language "No." * * warning$ "No."}
|
|
if$}
|
|
if$
|
|
}
|
|
|
|
FUNCTION {bbl.in} % { "\bblin{}" }
|
|
{ language empty$
|
|
{"in"}
|
|
{ language "ukrainian" = language "russian" = or
|
|
{"{\cyr\cyrv}"}
|
|
{"language is not defined: " language "in" * * warning$ "in"}
|
|
if$}
|
|
if$
|
|
}
|
|
|
|
FUNCTION {bbl.iin} % { "\bblIn{}" }
|
|
{ language empty$
|
|
{"In"}
|
|
{ language "ukrainian" = language "russian" = or
|
|
{"\CYRV"}
|
|
{"language is not defined: " language "In" * * warning$ "In"}
|
|
if$}
|
|
if$
|
|
}
|
|
|
|
FUNCTION {bbl.pages} % { "\bblpp." }
|
|
{ language empty$
|
|
{"pp."}
|
|
{ language "ukrainian" = language "russian" = or
|
|
{"{\cyr\cyrs.}"}
|
|
{"language is not defined: " language "pp." * * warning$ "pp."}
|
|
if$}
|
|
if$
|
|
}
|
|
|
|
FUNCTION {bbl.page} % { "\bblp."
|
|
{ language empty$
|
|
{"p."}
|
|
{ language "ukrainian" = language "russian" = or
|
|
{"{\cyr\cyrs.}"}
|
|
{"language is not defined: " language "p." * * warning$ "p."}
|
|
if$}
|
|
if$
|
|
}
|
|
|
|
FUNCTION {bbl.ppages}% { "\bblPp." }
|
|
{ language empty$
|
|
{"Pp."}
|
|
{ language "ukrainian" = language "russian" = or
|
|
{"{\cyr\CYRS.}"}
|
|
{"language is not defined: " language "Pp." * * warning$ "Pp."}
|
|
if$}
|
|
if$
|
|
}
|
|
|
|
FUNCTION {bbl.ppage} % { "\bblP." }
|
|
{ language empty$
|
|
{"P."}
|
|
{ language "ukrainian" = language "russian" = or
|
|
{"{\cyr\CYRS.}"}
|
|
{"language is not defined: " language "P." * * warning$ "P."}
|
|
if$}
|
|
if$
|
|
}
|
|
|
|
|
|
FUNCTION {bbl.techrep} { "Tech. Rep." }
|
|
FUNCTION {bbl.mthesis} { "Master's thesis" }
|
|
FUNCTION {bbl.phdthesis} { "Ph.D. thesis" }
|
|
|
|
INTEGERS { nameptr namesleft numnames }
|
|
|
|
|
|
FUNCTION {format.names}
|
|
{
|
|
#1 "{vv~}{ll}{~jj}{,~ff}" format.name$
|
|
}
|
|
|
|
|
|
FUNCTION {format.names.rev}
|
|
{ 's :=
|
|
#1 'nameptr :=
|
|
s num.names$ 'numnames :=
|
|
numnames 'namesleft :=
|
|
{ namesleft #0 > }
|
|
{ s nameptr
|
|
"{ff}{~vv}{~ll}{, jj}"
|
|
format.name$ 't :=
|
|
nameptr #1 >
|
|
{
|
|
nameptr #8 =
|
|
numnames #8 > and
|
|
{ "others" 't :=
|
|
#1 'namesleft := }
|
|
'skip$
|
|
if$
|
|
namesleft #1 >
|
|
{ ", " * t * }
|
|
{
|
|
t "others" =
|
|
{ " " * bbl.etal * }
|
|
{ ", " * t * }
|
|
if$
|
|
}
|
|
if$
|
|
}
|
|
't
|
|
if$
|
|
nameptr #1 + 'nameptr :=
|
|
namesleft #1 - 'namesleft :=
|
|
}
|
|
while$
|
|
}
|
|
|
|
FUNCTION {format.authors}
|
|
{ author empty$
|
|
{ "" }
|
|
{ author format.names BibAuthor}
|
|
if$
|
|
}
|
|
|
|
FUNCTION {format.bookauthors}
|
|
{ bookauthor empty$
|
|
{ "" }
|
|
{ bookauthor format.names}
|
|
if$
|
|
}
|
|
|
|
FUNCTION {format.authors.after}
|
|
{ author empty$
|
|
{ "" }
|
|
{ author format.names.rev}
|
|
if$
|
|
}
|
|
|
|
FUNCTION {format.bookauthors.after}
|
|
{ bookauthor empty$
|
|
{ "" }
|
|
{ bookauthor format.names.rev}
|
|
if$
|
|
}
|
|
|
|
FUNCTION {format.editors.after}
|
|
{ editor empty$
|
|
{ "" }
|
|
{ bbl.edby editor format.names.rev *
|
|
}
|
|
if$
|
|
}
|
|
|
|
FUNCTION {format.compiler.after}
|
|
{ compiler empty$
|
|
{ "" }
|
|
{ bbl.cmplr compiler format.names.rev *
|
|
}
|
|
if$
|
|
}
|
|
|
|
FUNCTION {format.title}
|
|
{ title empty$
|
|
{ "" }
|
|
{ title "t" change.case$ BibTitle
|
|
}
|
|
if$
|
|
}
|
|
|
|
FUNCTION {output.address.publisher.date}
|
|
{
|
|
address empty$
|
|
'skip$
|
|
{ address output
|
|
publisher empty$
|
|
'skip$
|
|
{ new.column
|
|
}
|
|
if$
|
|
}
|
|
if$
|
|
publisher output
|
|
year "year" output.check
|
|
}
|
|
|
|
FUNCTION {output.bibitem}
|
|
{ newline$
|
|
"\bibitem{" write$
|
|
cite$ write$
|
|
"}" write$
|
|
newline$
|
|
"\selectlanguageifdefined{" write$
|
|
language empty$
|
|
{"english" write$}
|
|
{language write$}
|
|
if$
|
|
"}" 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 {word.in}
|
|
{ bbl.iin
|
|
" " * }
|
|
|
|
FUNCTION {format.date}
|
|
{ year empty$
|
|
{ month empty$
|
|
{ "" }
|
|
{ "there's a month but no year in " cite$ * warning$
|
|
month
|
|
}
|
|
if$
|
|
}
|
|
{ month empty$
|
|
'year
|
|
{ month " " * year * }
|
|
if$
|
|
}
|
|
if$
|
|
}
|
|
|
|
FUNCTION {format.btitle}
|
|
{ title BibTitle
|
|
}
|
|
|
|
FUNCTION {tie.or.space.connect}
|
|
{ duplicate$ text.length$ #3 <
|
|
{ "~" }
|
|
{ " " }
|
|
if$
|
|
swap$ * *
|
|
}
|
|
|
|
FUNCTION {tie.connect}
|
|
{"~"
|
|
swap$ * *
|
|
}
|
|
|
|
FUNCTION {either.or.check}
|
|
{ empty$
|
|
'pop$
|
|
{ "can't use both " swap$ * " fields in " * cite$ * warning$ }
|
|
if$
|
|
}
|
|
|
|
FUNCTION {format.bvolume}
|
|
{ volume empty$
|
|
{ "" }
|
|
{ bbl.vvol volume tie.connect
|
|
series empty$
|
|
'skip$
|
|
{ bbl.of space.word * series emphasize * }
|
|
if$
|
|
"volume and number" number either.or.check
|
|
}
|
|
if$
|
|
}
|
|
|
|
FUNCTION {format.number.series}
|
|
{ volume empty$
|
|
{ number empty$
|
|
{ series field.or.null }
|
|
{ series empty$
|
|
{ "there's a number but no series in " cite$ * warning$
|
|
bbl.nnr }
|
|
{
|
|
%new.dblslash
|
|
new.sentence
|
|
series
|
|
bbl.nr
|
|
tie.or.space.connect}
|
|
if$
|
|
number tie.or.space.connect
|
|
}
|
|
if$
|
|
}
|
|
{ "" }
|
|
if$
|
|
}
|
|
|
|
FUNCTION {is.num}
|
|
{ chr.to.int$
|
|
duplicate$ "0" chr.to.int$ < not
|
|
swap$ "9" chr.to.int$ > not and
|
|
}
|
|
|
|
FUNCTION {extract.num}
|
|
{ duplicate$ 't :=
|
|
"" 's :=
|
|
{ t empty$ not }
|
|
{ t #1 #1 substring$
|
|
t #2 global.max$ substring$ 't :=
|
|
duplicate$ is.num
|
|
{ s swap$ * 's := }
|
|
{ pop$ "" 't := }
|
|
if$
|
|
}
|
|
while$
|
|
s empty$
|
|
'skip$
|
|
{ pop$ s }
|
|
if$
|
|
}
|
|
|
|
|
|
FUNCTION {convert.edition}
|
|
{ edition
|
|
}
|
|
|
|
FUNCTION {format.edition}
|
|
{ edition empty$
|
|
{ "" }
|
|
{ output.state mid.sentence =
|
|
{ convert.edition "l" change.case$ " " * bbl.edition * }
|
|
{ convert.edition "t" change.case$ " " * bbl.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
|
|
{ bbl.ppages pages n.dashify tie.connect }
|
|
{ bbl.ppage pages tie.connect }
|
|
if$
|
|
}
|
|
if$
|
|
}
|
|
|
|
FUNCTION {format.pages.page}
|
|
{ pages empty$
|
|
{ numpages empty$
|
|
{ "" }
|
|
{ numpages bbl.pages tie.connect }
|
|
if$}
|
|
{ format.pages}
|
|
if$
|
|
}
|
|
|
|
FUNCTION {format.vol.num.pages}
|
|
{ volume field.or.null
|
|
number empty$
|
|
'skip$
|
|
{
|
|
", no." number tie.or.space.connect *
|
|
volume empty$
|
|
{ "there's a number but no volume in " cite$ * warning$ }
|
|
'skip$
|
|
if$
|
|
}
|
|
if$
|
|
pages empty$
|
|
'skip$
|
|
{ duplicate$ empty$
|
|
{ pop$ format.pages }
|
|
{ ": " * pages n.dashify * }
|
|
if$
|
|
}
|
|
if$
|
|
}
|
|
|
|
FUNCTION {format.volume}
|
|
{ volume empty$
|
|
{ "" }
|
|
{ bbl.vvol volume tie.connect }
|
|
if$
|
|
}
|
|
|
|
FUNCTION {format.number}
|
|
{ number empty$
|
|
{ "" }
|
|
{ bbl.nr number tie.connect }
|
|
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$
|
|
{ bbl.techrep }
|
|
'type
|
|
if$
|
|
number empty$
|
|
{ "t" change.case$ }
|
|
{ number tie.or.space.connect }
|
|
if$
|
|
}
|
|
|
|
FUNCTION {author.before}
|
|
{
|
|
author empty$
|
|
'skip$
|
|
{author num.names$ #8 <
|
|
{format.authors output
|
|
new.sentence}
|
|
'skip$
|
|
if$}
|
|
if$
|
|
}
|
|
|
|
FUNCTION {bookauthor.before}
|
|
{
|
|
bookauthor empty$
|
|
'skip$
|
|
{bookauthor num.names$ #8 <
|
|
{format.bookauthors output
|
|
new.sentence}
|
|
'skip$
|
|
if$}
|
|
if$
|
|
}
|
|
|
|
|
|
FUNCTION {author.after}
|
|
{
|
|
author empty$
|
|
'skip$
|
|
{format.authors.after output
|
|
new.semicolumn }
|
|
if$
|
|
}
|
|
FUNCTION {bookauthor.after}
|
|
{
|
|
bookauthor empty$
|
|
'skip$
|
|
{format.bookauthors.after output
|
|
new.semicolumn }
|
|
if$
|
|
}
|
|
|
|
FUNCTION {editor.organization.after}
|
|
{
|
|
compiler empty$
|
|
{}
|
|
{ format.compiler.after output
|
|
new.semicolumn
|
|
}
|
|
if$
|
|
editor empty$
|
|
{}
|
|
{ format.editors.after output
|
|
new.semicolumn
|
|
}
|
|
if$
|
|
organization empty$
|
|
{}
|
|
{ organization output
|
|
new.semicolumn
|
|
}
|
|
if$
|
|
}
|
|
|
|
FUNCTION {format.url}
|
|
{ url empty$
|
|
{ "" }
|
|
{
|
|
"\BibUrl{" url * "}" *
|
|
}
|
|
if$
|
|
}
|
|
|
|
FUNCTION {fin.entry.std}
|
|
{ new.block
|
|
note output
|
|
new.par
|
|
format.url output
|
|
new.par
|
|
annote empty$
|
|
{
|
|
abstract empty$
|
|
{ fin.entry }
|
|
{
|
|
"\BibAnnote{"
|
|
output before.all 'output.state :=
|
|
abstract add.period$
|
|
output before.all 'output.state :=
|
|
"}" output
|
|
write$
|
|
newline$
|
|
}
|
|
if$
|
|
}
|
|
{
|
|
"\BibAnnote{"
|
|
output before.all 'output.state :=
|
|
annote add.period$
|
|
output before.all 'output.state :=
|
|
"}" output
|
|
write$
|
|
newline$
|
|
}
|
|
if$
|
|
}
|
|
|
|
FUNCTION {bibsection}
|
|
{
|
|
newline$
|
|
"\BibSection{" write$
|
|
cite$ write$
|
|
"}{" write$
|
|
title write$
|
|
"}{" write$
|
|
text empty$
|
|
'skip$
|
|
{ newline$ text write$ }
|
|
if$
|
|
"}" write$
|
|
newline$
|
|
before.all 'output.state :=
|
|
}
|
|
|
|
FUNCTION {article}
|
|
{ output.bibitem
|
|
author.before
|
|
format.title "title" output.check
|
|
new.slash
|
|
author.after
|
|
new.dblslash
|
|
journal emphasize "journal" output.check
|
|
new.block
|
|
format.date output
|
|
new.block
|
|
format.volume output
|
|
format.number output
|
|
new.block
|
|
format.pages.page output
|
|
fin.entry.std
|
|
}
|
|
|
|
FUNCTION {book}
|
|
{ output.bibitem
|
|
author.before
|
|
format.btitle "title" output.check
|
|
new.slash
|
|
author.after
|
|
editor.organization.after
|
|
new.sentence
|
|
format.number.series output
|
|
new.block
|
|
format.edition output
|
|
new.block
|
|
output.address.publisher.date
|
|
new.block
|
|
format.bvolume output
|
|
new.block
|
|
format.pages.page output
|
|
fin.entry.std
|
|
}
|
|
|
|
FUNCTION {booklet}
|
|
{ output.bibitem
|
|
author.before
|
|
format.title "title" output.check
|
|
new.slash
|
|
author.after
|
|
editor.organization.after
|
|
new.block
|
|
howpublished output
|
|
address output
|
|
format.date output
|
|
fin.entry.std
|
|
}
|
|
|
|
FUNCTION {inbook}
|
|
{ output.bibitem
|
|
author.before
|
|
format.btitle "title" output.check
|
|
new.slash
|
|
author.after
|
|
new.dblslash
|
|
bookauthor.before
|
|
booktitle "booktitle" output.check
|
|
new.slash
|
|
bookauthor.after
|
|
editor.organization.after
|
|
new.block
|
|
format.edition output
|
|
new.block
|
|
format.number.series output
|
|
new.sentence
|
|
output.address.publisher.date
|
|
new.block
|
|
format.bvolume output
|
|
new.block
|
|
format.pages.page output
|
|
fin.entry.std
|
|
}
|
|
|
|
FUNCTION {incollection}
|
|
{ output.bibitem
|
|
author.before
|
|
new.sentence
|
|
format.title "title" output.check
|
|
new.slash
|
|
author.after
|
|
new.dblslash
|
|
booktitle "booktitle" output.check
|
|
new.slash
|
|
editor.organization.after
|
|
new.block
|
|
output.address.publisher.date
|
|
new.block
|
|
format.bvolume output
|
|
format.number.series output
|
|
new.block
|
|
format.pages.page output
|
|
fin.entry.std
|
|
}
|
|
|
|
FUNCTION {inproceedings}
|
|
{ output.bibitem
|
|
author.before
|
|
new.sentence
|
|
format.title "title" output.check
|
|
new.dblslash
|
|
booktitle "booktitle" output.check
|
|
new.slash
|
|
editor.organization.after
|
|
new.block
|
|
format.bvolume output
|
|
format.number.series output
|
|
new.block
|
|
address empty$
|
|
{ publisher output
|
|
format.date "year" output.check
|
|
}
|
|
{ address output.nonnull
|
|
new.column
|
|
publisher output
|
|
format.date "year" output.check
|
|
}
|
|
if$
|
|
new.block
|
|
format.pages.page output
|
|
fin.entry.std
|
|
}
|
|
|
|
FUNCTION {conference} { inproceedings }
|
|
|
|
FUNCTION {manual}
|
|
{ output.bibitem
|
|
author empty$
|
|
{ organization empty$
|
|
'skip$
|
|
{ organization output.nonnull
|
|
address output
|
|
}
|
|
if$
|
|
}
|
|
{ format.authors output.nonnull }
|
|
if$
|
|
new.block
|
|
format.btitle "title" output.check
|
|
author empty$
|
|
{ organization empty$
|
|
{
|
|
address new.block.checka
|
|
address output
|
|
}
|
|
'skip$
|
|
if$
|
|
}
|
|
{
|
|
organization address new.block.checkb
|
|
organization output
|
|
address output
|
|
}
|
|
if$
|
|
format.edition output
|
|
format.date output
|
|
fin.entry.std
|
|
}
|
|
|
|
FUNCTION {mastersthesis}
|
|
{ output.bibitem
|
|
format.authors "author" output.check
|
|
new.block
|
|
format.btitle "title" output.check
|
|
new.block
|
|
bbl.mthesis format.thesis.type output.nonnull
|
|
school "school" output.check
|
|
address output
|
|
format.date "year" output.check
|
|
fin.entry.std
|
|
}
|
|
|
|
FUNCTION {misc}
|
|
{ output.bibitem
|
|
format.authors output
|
|
title howpublished new.sentence.checkb
|
|
format.title output
|
|
howpublished new.block.checka
|
|
howpublished output
|
|
new.block
|
|
format.date output
|
|
fin.entry.std
|
|
}
|
|
|
|
FUNCTION {phdthesis}
|
|
{ output.bibitem
|
|
format.authors "author" output.check
|
|
new.sentence
|
|
format.btitle "title" output.check
|
|
new.column
|
|
bbl.phdthesis format.thesis.type output.nonnull
|
|
new.slash
|
|
school "school" output.check
|
|
new.block
|
|
output.address.publisher.date
|
|
new.block
|
|
format.pages.page output
|
|
fin.entry.std
|
|
}
|
|
|
|
FUNCTION {proceedings}
|
|
{ output.bibitem
|
|
format.btitle "title" output.check
|
|
new.slash
|
|
editor.organization.after
|
|
new.block
|
|
format.bvolume output
|
|
format.number.series output
|
|
address empty$
|
|
{ publisher output
|
|
format.date "year" output.check
|
|
}
|
|
{ address output.nonnull
|
|
format.date "year" output.check
|
|
new.sentence
|
|
publisher output
|
|
}
|
|
if$
|
|
fin.entry.std
|
|
}
|
|
|
|
FUNCTION {techreport}
|
|
{ output.bibitem
|
|
author.before
|
|
new.sentence
|
|
format.title "title" output.check
|
|
new.column
|
|
format.tr.number output.nonnull
|
|
new.slash
|
|
author.after
|
|
editor.organization.after
|
|
new.block
|
|
address output
|
|
new.column
|
|
%% institution "institution" output.check
|
|
institution output
|
|
format.date "year" output.check
|
|
fin.entry.std
|
|
}
|
|
|
|
FUNCTION {unpublished}
|
|
{ output.bibitem
|
|
author.before
|
|
format.btitle "title" output.check
|
|
new.slash
|
|
author.after
|
|
editor.organization.after
|
|
fin.entry.std
|
|
}
|
|
|
|
FUNCTION {default.type} { misc }
|
|
|
|
MACRO {jan} {"\bbljan{}"}
|
|
|
|
MACRO {feb} {"\bblfeb{}"}
|
|
|
|
MACRO {mar} {"\bblmar{}"}
|
|
|
|
MACRO {apr} {"\bblapr{}"}
|
|
|
|
MACRO {may} {"\bblmay{}"}
|
|
|
|
MACRO {jun} {"\bbljun{}"}
|
|
|
|
MACRO {jul} {"\bbljul{}"}
|
|
|
|
MACRO {aug} {"\bblaug{}"}
|
|
|
|
MACRO {sep} {"\bblsep{}"}
|
|
|
|
MACRO {oct} {"\bbloct{}"}
|
|
|
|
MACRO {nov} {"\bblnov{}"}
|
|
|
|
MACRO {dec} {"\bbldec{}"}
|
|
|
|
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
|
|
|
|
|
|
STRINGS { longest.label }
|
|
|
|
INTEGERS { number.label longest.label.width }
|
|
|
|
FUNCTION {initialize.longest.label}
|
|
{ "" 'longest.label :=
|
|
#1 'number.label :=
|
|
#0 'longest.label.width :=
|
|
}
|
|
|
|
FUNCTION {longest.label.pass}
|
|
{ number.label int.to.str$ 'label :=
|
|
number.label #1 + 'number.label :=
|
|
label width$ longest.label.width >
|
|
{ label 'longest.label :=
|
|
label width$ 'longest.label.width :=
|
|
}
|
|
'skip$
|
|
if$
|
|
}
|
|
|
|
EXECUTE {initialize.longest.label}
|
|
|
|
ITERATE {longest.label.pass}
|
|
|
|
FUNCTION {begin.bib}
|
|
{ "\begin{thebibliography}{" longest.label * "}" * write$ newline$
|
|
"\def\selectlanguageifdefined#1{" write$ newline$
|
|
"\expandafter\ifx\csname date#1\endcsname\relax" write$ newline$
|
|
"\else\language\csname l@#1\endcsname\fi}" write$ newline$
|
|
"\ifx\undefined\url\def\url#1{{\small #1}}\else\fi" write$ newline$
|
|
"\ifx\undefined\BibAuthor\def\BibAuthor#1{\emph{#1}}\else\fi" write$ newline$
|
|
"\ifx\undefined\BibTitle\def\BibTitle#1{#1}\else\fi" write$ newline$
|
|
"\ifx\undefined\BibUrl\def\BibUrl#1{\url{#1}}\else\fi" write$ newline$
|
|
"\ifx\undefined\BibAnnote\def\BibAnnote#1{}\else\fi" write$ newline$
|
|
"\ifx\undefined\BibSection\def\BibSection#1#2#3{}\else\fi" write$ newline$
|
|
preamble$ empty$
|
|
'skip$
|
|
{ preamble$ write$ newline$ }
|
|
if$
|
|
}
|
|
|
|
EXECUTE {begin.bib}
|
|
|
|
EXECUTE {init.state.consts}
|
|
|
|
ITERATE {call.type$}
|
|
|
|
FUNCTION {end.bib}
|
|
{ newline$
|
|
"\end{thebibliography}" write$ newline$
|
|
}
|
|
|
|
EXECUTE {end.bib}
|
|
|
|
%%
|
|
%% End of file `gost780uv.bst'.
|