You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
951 lines
18 KiB
951 lines
18 KiB
% BibTeX standard bibliography style `unsrt'
|
|
% Version 0.99b (8-Dec-10 release) for BibTeX versions 0.99a or later.
|
|
% Copyright (C) 1984, 1985, 1988, 2010 Howard Trickey and Oren Patashnik.
|
|
% Unlimited copying and redistribution of this file are permitted as long as
|
|
% it is unmodified. Modifications (and redistribution of modified versions)
|
|
% are also permitted, but only if the resulting file is renamed to something
|
|
% besides btxbst.doc, plain.bst, unsrt.bst, alpha.bst, and abbrv.bst.
|
|
% This restriction helps ensure that all standard styles are identical.
|
|
% The file btxbst.doc has the documentation for this style.
|
|
|
|
eNTrY
|
|
{ AddreSs
|
|
aUTHoR
|
|
BOoKTiTLe
|
|
ChAPTER
|
|
EditIon
|
|
editoR
|
|
hOwPubliSHeD
|
|
instITuTIon
|
|
JoURNAl
|
|
keY
|
|
mONTh
|
|
note
|
|
NumbeR
|
|
oRgANIZaTIon
|
|
pAgES
|
|
puBLisHER
|
|
scHooL
|
|
series
|
|
TITlE
|
|
type
|
|
volumE
|
|
yEAR
|
|
}
|
|
{}
|
|
{ LaBEl }
|
|
|
|
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 {outpUT.BIbitem}
|
|
{ newLIne$
|
|
"\bibitem{" wRite$
|
|
cItE$ WrItE$
|
|
"}" WriTe$
|
|
NEWLIne$
|
|
""
|
|
BeFore.all 'outPuT.sTate :=
|
|
}
|
|
|
|
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.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.title}
|
|
{ tiTLe EMpty$
|
|
{ "" }
|
|
{ titlE "t" chaNgE.Case$ }
|
|
iF$
|
|
}
|
|
|
|
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 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 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$
|
|
{ "(" NumBeR * ")" * *
|
|
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.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
|
|
{ "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$
|
|
" \cite{" * crossref * "}" *
|
|
}
|
|
|
|
FuNCTION {Format.CROsSReF.eDItoR}
|
|
{ EDitOr #1 "{vv~}{ll}" formAt.naMe$
|
|
ediTOr nuM.nAmes$ dUPLiCaTe$
|
|
#2 >
|
|
{ poP$ " et~al." * }
|
|
{ #2 <
|
|
'sKIP$
|
|
{ eDitOr #2 "{ff }{vv }{ll}{ jj}" forMaT.name$ "others" =
|
|
{ " et~al." * }
|
|
{ " and " * EDitor #2 "{vv~}{ll}" FoRMAt.naMe$ * }
|
|
If$
|
|
}
|
|
IF$
|
|
}
|
|
if$
|
|
}
|
|
|
|
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$
|
|
}
|
|
{ FoRmat.cRoSsREF.editor * }
|
|
IF$
|
|
" \cite{" * 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 " fOrMAT.CROSsReF.edIToR * }
|
|
If$
|
|
" \cite{" * croSsref * "}" *
|
|
}
|
|
|
|
fUnCtioN {article}
|
|
{ oUtPuT.BibitEm
|
|
forMat.auTHors "author" OUtPuT.cHEcK
|
|
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$
|
|
new.blocK
|
|
note oUTpUT
|
|
fIN.EntRy
|
|
}
|
|
|
|
funCtIon {book}
|
|
{ outPuT.BibItem
|
|
AuthOr empTy$
|
|
{ fOrmAT.edItoRs "author and editor" oUTput.checK }
|
|
{ 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
|
|
new.bLOck
|
|
noTe ouTPuT
|
|
fin.entry
|
|
}
|
|
|
|
FUnCTiOn {boOklET}
|
|
{ OUtpUT.biBitem
|
|
ForMat.authors outpUT
|
|
nEW.bloCK
|
|
fOrMat.TItle "title" OUtPuT.CHecK
|
|
hOWPubLIsHeD ADdress nEw.BLock.cHECKB
|
|
hOWpUbliSHed OUTpuT
|
|
Address ouTPut
|
|
FOrMat.daTE oUtPuT
|
|
nEw.blOck
|
|
nOtE OUtPUT
|
|
fIN.eNTry
|
|
}
|
|
|
|
funCTiOn {INbOOK}
|
|
{ OutPUT.biBIteM
|
|
Author empTY$
|
|
{ FORmAT.eDitors "author and editor" OutPut.cHEcK }
|
|
{ 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
|
|
New.Block
|
|
note OUTput
|
|
fiN.eNtrY
|
|
}
|
|
|
|
FuNCtION {INcolleCTIOn}
|
|
{ OutpuT.bibitem
|
|
formaT.AuThoRs "author" OUtpUT.ChecK
|
|
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$
|
|
nEw.BlOcK
|
|
nOte ouTput
|
|
fin.eNtry
|
|
}
|
|
|
|
fUNCtIOn {inpRoceEdiNgs}
|
|
{ oUtpUT.bIbitEM
|
|
foRMaT.AUthoRS "author" oUtPut.check
|
|
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$
|
|
NEw.blocK
|
|
NOTE OUTpUT
|
|
fIN.ENTrY
|
|
}
|
|
|
|
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
|
|
neW.bLock
|
|
nOTE oUtpUt
|
|
fiN.enTRY
|
|
}
|
|
|
|
fuNcTiON {MAstersTHeSIS}
|
|
{ oUtPUT.bIbItem
|
|
fOrMAt.authORs "author" outPuT.chECk
|
|
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
|
|
neW.BlOCK
|
|
NoTe Output
|
|
Fin.ENTRY
|
|
}
|
|
|
|
FUnCTioN {mIsC}
|
|
{ OUTput.biBItEM
|
|
forMAt.aUthors oUtput
|
|
TItLe hoWpublIShed NeW.block.cheCkb
|
|
format.title outPuT
|
|
hOWpublIsheD new.BLock.ChECKA
|
|
HOWpubLiShed oUtpuT
|
|
fOrmAt.datE oUtput
|
|
NEW.BLOCk
|
|
NoTE oUtPut
|
|
fiN.EnTry
|
|
EmPty.Misc.cHEck
|
|
}
|
|
|
|
FUNCtion {pHdthesis}
|
|
{ OutpUt.BiBitem
|
|
fORmAt.AuThorS "author" ouTpUT.CheCk
|
|
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
|
|
nEW.BLock
|
|
nOTe outPuT
|
|
Fin.Entry
|
|
}
|
|
|
|
fUNCtIOn {PRoceEDings}
|
|
{ oUtpUt.bIBIteM
|
|
editor emPty$
|
|
{ organizATiON oUtput }
|
|
{ fORMaT.editoRs ouTput.noNNUll }
|
|
if$
|
|
new.BLock
|
|
foRMAt.BTitLe "title" OutpUT.cHECk
|
|
FOrMaT.BvoLume output
|
|
fOrmat.numbeR.sEries ouTPuT
|
|
AddrESs empty$
|
|
{ edITor emPty$
|
|
{ pUbLIShER new.sEntence.checkA }
|
|
{ orgAnizatIon pUBlIshEr New.sENtencE.chEcKB
|
|
organizatIOn ouTPUt
|
|
}
|
|
If$
|
|
pubLIsher outPut
|
|
Format.daTE "year" OUtpUT.CHECk
|
|
}
|
|
{ adDResS outpUt.NonNuLL
|
|
forMat.DatE "year" oUTpuT.ChEck
|
|
new.SentenCe
|
|
EDiToR emPtY$
|
|
'sKip$
|
|
{ oRGaniZaTiOn oUtput }
|
|
If$
|
|
pUbLIshER Output
|
|
}
|
|
IF$
|
|
NEw.bLOck
|
|
NOTe OUTpuT
|
|
fiN.entRY
|
|
}
|
|
|
|
fuNction {tEcHrEpoRT}
|
|
{ ouTput.biBitEm
|
|
fORmAT.aUthOrS "author" OutpUt.chECK
|
|
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
|
|
nEW.blOcK
|
|
notE OutpUt
|
|
fin.entry
|
|
}
|
|
|
|
functION {unpubLIsheD}
|
|
{ ouTput.bibiTem
|
|
formAt.aUtHOrs "author" output.cHeCk
|
|
neW.Block
|
|
FOrmaT.TITLE "title" ouTpuT.check
|
|
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
|
|
|
|
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}
|
|
{ preaMble$ EmpTY$
|
|
'skiP$
|
|
{ pReamBlE$ write$ nEWLiNe$ }
|
|
if$
|
|
"\begin{thebibliography}{" LongeSt.lAbEL * "}" * WRite$ newline$
|
|
}
|
|
|
|
EXecuTe {beGin.BIb}
|
|
|
|
EXECUtE {iNIT.stATE.CONStS}
|
|
|
|
iteRAtE {CalL.TyPe$}
|
|
|
|
fUNCtioN {eNd.bib}
|
|
{ nEWLinE$
|
|
"\end{thebibliography}" wrIte$ nEwlINE$
|
|
}
|
|
|
|
eXeCuTE {eNd.bIb}
|
|
|