summaryrefslogtreecommitdiff
path: root/biblio/bibtex/contrib/abstyles-babel
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
committerNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
commite0c6872cf40896c7be36b11dcc744620f10adf1d (patch)
tree60335e10d2f4354b0674ec22d7b53f0f8abee672 /biblio/bibtex/contrib/abstyles-babel
Initial commit
Diffstat (limited to 'biblio/bibtex/contrib/abstyles-babel')
-rw-r--r--biblio/bibtex/contrib/abstyles-babel/README.217
-rw-r--r--biblio/bibtex/contrib/abstyles-babel/aabbrv.bst1062
-rw-r--r--biblio/bibtex/contrib/abstyles-babel/aalpha.bst1211
-rw-r--r--biblio/bibtex/contrib/abstyles-babel/acompat.bib45
-rw-r--r--biblio/bibtex/contrib/abstyles-babel/anotit.bst1075
-rw-r--r--biblio/bibtex/contrib/abstyles-babel/aplain.bst1062
-rw-r--r--biblio/bibtex/contrib/abstyles-babel/apreambl.tex200
-rw-r--r--biblio/bibtex/contrib/abstyles-babel/aunsnot.bst941
-rw-r--r--biblio/bibtex/contrib/abstyles-babel/aunsrt.bst928
9 files changed, 6541 insertions, 0 deletions
diff --git a/biblio/bibtex/contrib/abstyles-babel/README.2 b/biblio/bibtex/contrib/abstyles-babel/README.2
new file mode 100644
index 0000000000..122819ba5e
--- /dev/null
+++ b/biblio/bibtex/contrib/abstyles-babel/README.2
@@ -0,0 +1,17 @@
+
+ March 26, 1996.
+
+These files have been touched for working with Johannes L. Braams'
+babel system.
+
+The original distribution of these files are in
+
+ CTAN:/tex-archive/biblio/bibtex/contrib/abstyles
+
+where CTAN means ftp://ftp.dante.de, ftp://ftp.tex.ac.uk or
+ftp://ftp.shsu.edu
+
+Greetings,
+
+ Tom'as Bautista <bautista@cma.ulpgc.es>
+
diff --git a/biblio/bibtex/contrib/abstyles-babel/aabbrv.bst b/biblio/bibtex/contrib/abstyles-babel/aabbrv.bst
new file mode 100644
index 0000000000..802ec8ba5f
--- /dev/null
+++ b/biblio/bibtex/contrib/abstyles-babel/aabbrv.bst
@@ -0,0 +1,1062 @@
+% BibTeX bibliography style `AABBRV'
+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
+continue.sentence }
+FUNCTION {init.state.consts}
+{ #0 'before.all :=
+#1 'mid.sentence :=
+#2 'after.sentence :=
+#3 'after.block :=
+#4 'continue.sentence :=
+}
+STRINGS { s t }
+FUNCTION {output.nonnull}
+{ 's :=
+output.state continue.sentence =
+{ " " * write$ }
+{ 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$
+}
+if$
+continue.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 {new.clause}
+{ output.state after.sentence =
+'skip$
+{ output.state after.block =
+'skip$
+{ output.state before.all =
+'skip$
+{ mid.sentence 'output.state := }
+if$
+}
+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 {new.clause.checka}
+{ empty$
+'skip$
+'new.clause
+if$
+}
+FUNCTION {new.clause.checkb}
+{ empty$
+swap$ empty$
+and
+'skip$
+'new.clause
+if$
+}
+FUNCTION {field.or.null}
+{ duplicate$ empty$
+{ pop$ "" }
+'skip$
+if$
+}
+FUNCTION {emphasize}
+{ duplicate$ empty$
+{ pop$ "" }
+{ "\abtype{2}{" swap$ * "}" * }
+if$
+}
+FUNCTION {capitalize}
+{ duplicate$ empty$
+{ pop$ "" }
+{ "\abtype{0}{" swap$ * "}" * }
+if$
+}
+FUNCTION {boldface}
+{ duplicate$ empty$
+{ pop$ "" }
+{ "\abtype{3}{" swap$ * "}" * }
+if$
+}
+FUNCTION {quote}
+{ duplicate$ empty$
+{ pop$ "" }
+{ "\abtype{1}{" swap$ * "}" * }
+if$
+}
+FUNCTION {parentheses}
+{ duplicate$ empty$
+{ pop$ "" }
+{ "\abtype{5}{" swap$ * "}" * }
+if$
+}
+INTEGERS { nameptr namesleft numnames }
+FUNCTION {format.names}
+{ 's :=
+#1 'nameptr :=
+s num.names$ 'numnames :=
+numnames 'namesleft :=
+{ namesleft #0 > }
+{ s nameptr "{f.~}{vv~}{ll}{, jj}" format.name$ 't :=
+nameptr #1 >
+{ namesleft #1 >
+{ ", " * t * }
+{ numnames #2 >
+{ "\abphrase{1}" * }
+'skip$
+if$
+t "others" =
+{ "\abphrase{2}" * }
+{ "\abphrase{0}" * t * }
+if$
+}
+if$
+}
+'t
+if$
+nameptr #1 + 'nameptr :=
+namesleft #1 - 'namesleft :=
+}
+while$
+}
+FUNCTION {format.authors}
+{ author empty$
+{ "" }
+{ author format.names capitalize }
+if$
+}
+FUNCTION {format.editors}
+{ editor empty$
+{ "" }
+{ editor format.names capitalize
+editor num.names$ #1 >
+{ "\abphrase{3}" * }
+{ "\abphrase{4}" * }
+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 parentheses
+}
+if$
+}
+{ month empty$
+{ year parentheses }
+{ month " " * year * parentheses }
+if$
+}
+if$
+}
+FUNCTION {format.btitle}
+{ title quote
+}
+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$
+{ "" }
+{ "\abphrase{8}" volume tie.or.space.connect
+series empty$
+'skip$
+{ "\abphrase{5}" * series quote * }
+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 = output.state continue.sentence = or
+{ "\abphrase{10}" }
+{ "\abphrase{11}" }
+if$
+number tie.or.space.connect
+series empty$
+{ "there's a number but no series in " cite$ * warning$ }
+{ "\abphrase{6}" * series * }
+if$
+}
+if$
+}
+{ "" }
+if$
+}
+FUNCTION {format.edition}
+{ edition empty$
+{ "" }
+{ output.state mid.sentence = output.state continue.sentence = or
+{ edition "l" change.case$ "\abphrase{12}" * }
+{ edition "t" change.case$ "\abphrase{12}" * }
+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
+{ "\abphrase{13}" pages n.dashify tie.or.space.connect }
+{ "\abphrase{14}" pages tie.or.space.connect }
+if$
+}
+if$
+}
+FUNCTION {format.vol.num.pages}
+{ volume field.or.null boldface
+number empty$
+'skip$
+{ "\abtype{4}{" 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$
+{ "\abphrase{15}" }
+{ 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$
+{ "\abphrase{7}" booktitle quote * }
+{ "\abphrase{7}" format.editors * ", " * booktitle quote * }
+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$
+{ "\abphrase{16}" }
+'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$
+""
+}
+{ "\abphrase{7}" journal emphasize * }
+if$
+}
+{ "\abphrase{7}" key * }
+if$
+" \cite{" * crossref * "}" *
+}
+FUNCTION {format.crossref.editor}
+{ editor #1 "{vv~}{ll}" format.name$
+editor num.names$ duplicate$
+#2 >
+{ pop$ "\abphrase{2}" * }
+{ #2 <
+'skip$
+{ editor #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =
+{ "\abphrase{2}" * }
+{ "\abphrase{0}" * editor #2 "{vv~}{ll}" format.name$ * }
+if$
+}
+if$
+}
+if$
+}
+FUNCTION {format.book.crossref}
+{ volume empty$
+{ "empty volume in " cite$ * "'s crossref of " * crossref * warning$
+"\abphrase{7}"
+}
+{ "\abphrase{9}" volume tie.or.space.connect
+"\abphrase{5}" *
+}
+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$
+"" *
+}
+{ series quote * }
+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$
+""
+}
+{ "\abphrase{7}" booktitle quote * }
+if$
+}
+{ "\abphrase{7}" key * }
+if$
+}
+{ "\abphrase{7}" 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
+new.clause
+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$
+{ new.clause
+format.bvolume output
+new.block
+format.number.series output
+new.sentence
+publisher "publisher" output.check
+address new.clause.checka
+address output
+}
+{ new.block
+format.book.crossref output.nonnull
+}
+if$
+edition new.clause.checka
+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 new.clause.checka
+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
+new.clause
+crossref missing$
+{ format.bvolume output
+new.clause
+format.chapter.pages "chapter and pages" output.check
+new.block
+format.number.series output
+new.sentence
+publisher "publisher" output.check
+address new.clause.checka
+address output
+}
+{ format.chapter.pages "chapter and pages" output.check
+new.block
+format.book.crossref output.nonnull
+}
+if$
+edition new.clause.checka
+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
+new.clause
+format.bvolume output
+new.clause
+format.number.series output
+new.clause
+format.chapter.pages output
+new.sentence
+publisher "publisher" output.check
+address new.clause.checka
+address output
+edition new.clause.checka
+format.edition output
+format.date "year" output.check
+}
+{ format.incoll.inproc.crossref output.nonnull
+new.clause
+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
+volume new.clause.checka
+format.bvolume output
+number series new.clause.checkb
+format.number.series output
+pages new.clause.checka
+format.pages output
+address empty$
+{ organization publisher new.sentence.checkb
+organization output
+publisher new.clause.checka
+publisher output
+format.date "year" output.check
+}
+{ new.clause
+address output.nonnull
+format.date "year" output.check
+new.sentence
+organization output
+new.clause
+publisher output
+}
+if$
+}
+{ format.incoll.inproc.crossref output.nonnull
+new.clause
+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
+new.clause
+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 new.clause.checka
+address output
+}
+if$
+edition new.clause.checka
+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
+"\abphrase{17}" format.thesis.type output.nonnull
+new.clause
+school "school" output.check
+address new.clause.checka
+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
+"\abphrase{18}" format.thesis.type output.nonnull
+new.clause
+school "school" output.check
+address new.clause.checka
+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
+volume new.clause.checka
+format.bvolume output
+number series new.clause.checkb
+format.number.series output
+address empty$
+{ editor empty$
+{ publisher new.sentence.checka }
+{ organization publisher new.sentence.checkb
+organization output
+publisher new.clause.checka
+}
+if$
+publisher output
+format.date "year" output.check
+}
+{ new.clause
+address output.nonnull
+format.date "year" output.check
+new.sentence
+editor empty$
+'skip$
+{ organization output
+new.clause
+}
+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
+new.clause
+institution "institution" output.check
+address new.clause.checka
+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} {"\abmonth{1}"}
+MACRO {feb} {"\abmonth{2}"}
+MACRO {mar} {"\abmonth{3}"}
+MACRO {apr} {"\abmonth{4}"}
+MACRO {may} {"\abmonth{5}"}
+MACRO {jun} {"\abmonth{6}"}
+MACRO {jul} {"\abmonth{7}"}
+MACRO {aug} {"\abmonth{8}"}
+MACRO {sep} {"\abmonth{9}"}
+MACRO {oct} {"\abmonth{10}"}
+MACRO {nov} {"\abmonth{11}"}
+MACRO {dec} {"\abmonth{12}"}
+MACRO {first} {"\abedition{1}"}
+MACRO {second} {"\abedition{2}"}
+MACRO {third} {"\abedition{3}"}
+MACRO {fourth} {"\abedition{4}"}
+MACRO {fifth} {"\abedition{5}"}
+MACRO {sixth} {"\abedition{6}"}
+MACRO {seventh} {"\abedition{7}"}
+MACRO {eighth} {"\abedition{8}"}
+MACRO {ninth} {"\abedition{9}"}
+MACRO {tenth} {"\abedition{10}"}
+MACRO {section} {"\abchapter{0}"}
+MACRO {paragraph} {"\abchapter{1}"}
+MACRO {appendix} {"\abchapter{2}"}
+MACRO {part} {"\abchapter{3}"}
+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 {sort.format.names}
+{ 's :=
+#1 'nameptr :=
+""
+s num.names$ 'numnames :=
+numnames 'namesleft :=
+{ namesleft #0 > }
+{ nameptr #1 >
+{ " " * }
+'skip$
+if$
+s nameptr "{vv{ } }{ll{ }}{ f{ }}{ jj{ }}" format.name$ 't :=
+nameptr numnames = t "others" = and
+{ "et al" * }
+{ t sortify * }
+if$
+nameptr #1 + 'nameptr :=
+namesleft #1 - 'namesleft :=
+}
+while$
+}
+FUNCTION {sort.format.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}
+{ 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.key$ :=
+}
+ITERATE {presort}
+SORT
+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}
+{
+"\newif\ifabfull\abfullfalse" write$ newline$
+"\input apreambl" write$ newline$
+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}
diff --git a/biblio/bibtex/contrib/abstyles-babel/aalpha.bst b/biblio/bibtex/contrib/abstyles-babel/aalpha.bst
new file mode 100644
index 0000000000..c5442664c6
--- /dev/null
+++ b/biblio/bibtex/contrib/abstyles-babel/aalpha.bst
@@ -0,0 +1,1211 @@
+% BibTeX bibliography style `AALPHA'
+ENTRY
+{ address
+author
+booktitle
+chapter
+edition
+editor
+howpublished
+institution
+journal
+key
+month
+note
+number
+organization
+pages
+publisher
+school
+series
+title
+type
+volume
+year
+}
+{}
+{ label extra.label sort.label }
+INTEGERS { output.state before.all mid.sentence after.sentence after.block
+continue.sentence }
+FUNCTION {init.state.consts}
+{ #0 'before.all :=
+#1 'mid.sentence :=
+#2 'after.sentence :=
+#3 'after.block :=
+#4 'continue.sentence :=
+}
+STRINGS { s t }
+FUNCTION {output.nonnull}
+{ 's :=
+output.state continue.sentence =
+{ " " * write$ }
+{ 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$
+}
+if$
+continue.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$
+label write$
+"]{" 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 {new.clause}
+{ output.state after.sentence =
+'skip$
+{ output.state after.block =
+'skip$
+{ output.state before.all =
+'skip$
+{ mid.sentence 'output.state := }
+if$
+}
+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 {new.clause.checka}
+{ empty$
+'skip$
+'new.clause
+if$
+}
+FUNCTION {new.clause.checkb}
+{ empty$
+swap$ empty$
+and
+'skip$
+'new.clause
+if$
+}
+FUNCTION {field.or.null}
+{ duplicate$ empty$
+{ pop$ "" }
+'skip$
+if$
+}
+FUNCTION {emphasize}
+{ duplicate$ empty$
+{ pop$ "" }
+{ "\abtype{2}{" swap$ * "}" * }
+if$
+}
+FUNCTION {capitalize}
+{ duplicate$ empty$
+{ pop$ "" }
+{ "\abtype{0}{" swap$ * "}" * }
+if$
+}
+FUNCTION {boldface}
+{ duplicate$ empty$
+{ pop$ "" }
+{ "\abtype{3}{" swap$ * "}" * }
+if$
+}
+FUNCTION {quote}
+{ duplicate$ empty$
+{ pop$ "" }
+{ "\abtype{1}{" swap$ * "}" * }
+if$
+}
+FUNCTION {parentheses}
+{ duplicate$ empty$
+{ pop$ "" }
+{ "\abtype{5}{" 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 >
+{ "\abphrase{1}" * }
+'skip$
+if$
+t "others" =
+{ "\abphrase{2}" * }
+{ "\abphrase{0}" * t * }
+if$
+}
+if$
+}
+'t
+if$
+nameptr #1 + 'nameptr :=
+namesleft #1 - 'namesleft :=
+}
+while$
+}
+FUNCTION {format.authors}
+{ author empty$
+{ "" }
+{ author format.names capitalize }
+if$
+}
+FUNCTION {format.editors}
+{ editor empty$
+{ "" }
+{ editor format.names capitalize
+editor num.names$ #1 >
+{ "\abphrase{3}" * }
+{ "\abphrase{4}" * }
+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 parentheses
+}
+if$
+}
+{ month empty$
+{ year parentheses }
+{ month " " * year * parentheses }
+if$
+}
+if$
+}
+FUNCTION {format.btitle}
+{ title quote
+}
+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$
+{ "" }
+{ "\abphrase{8}" volume tie.or.space.connect
+series empty$
+'skip$
+{ "\abphrase{5}" * series quote * }
+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 = output.state continue.sentence = or
+{ "\abphrase{10}" }
+{ "\abphrase{11}" }
+if$
+number tie.or.space.connect
+series empty$
+{ "there's a number but no series in " cite$ * warning$ }
+{ "\abphrase{6}" * series * }
+if$
+}
+if$
+}
+{ "" }
+if$
+}
+FUNCTION {format.edition}
+{ edition empty$
+{ "" }
+{ output.state mid.sentence = output.state continue.sentence = or
+{ edition "l" change.case$ "\abphrase{12}" * }
+{ edition "t" change.case$ "\abphrase{12}" * }
+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
+{ "\abphrase{13}" pages n.dashify tie.or.space.connect }
+{ "\abphrase{14}" pages tie.or.space.connect }
+if$
+}
+if$
+}
+FUNCTION {format.vol.num.pages}
+{ volume field.or.null boldface
+number empty$
+'skip$
+{ "\abtype{4}{" 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$
+{ "\abphrase{15}" }
+{ 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$
+{ "\abphrase{7}" booktitle quote * }
+{ "\abphrase{7}" format.editors * ", " * booktitle quote * }
+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$
+{ "\abphrase{16}" }
+'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$
+""
+}
+{ "\abphrase{7}" journal emphasize * }
+if$
+}
+{ "\abphrase{7}" key * }
+if$
+" \cite{" * crossref * "}" *
+}
+FUNCTION {format.crossref.editor}
+{ editor #1 "{vv~}{ll}" format.name$
+editor num.names$ duplicate$
+#2 >
+{ pop$ "\abphrase{2}" * }
+{ #2 <
+'skip$
+{ editor #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =
+{ "\abphrase{2}" * }
+{ "\abphrase{0}" * editor #2 "{vv~}{ll}" format.name$ * }
+if$
+}
+if$
+}
+if$
+}
+FUNCTION {format.book.crossref}
+{ volume empty$
+{ "empty volume in " cite$ * "'s crossref of " * crossref * warning$
+"\abphrase{7}"
+}
+{ "\abphrase{9}" volume tie.or.space.connect
+"\abphrase{5}" *
+}
+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$
+"" *
+}
+{ series quote * }
+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$
+""
+}
+{ "\abphrase{7}" booktitle quote * }
+if$
+}
+{ "\abphrase{7}" key * }
+if$
+}
+{ "\abphrase{7}" 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
+new.clause
+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$
+{ new.clause
+format.bvolume output
+new.block
+format.number.series output
+new.sentence
+publisher "publisher" output.check
+address new.clause.checka
+address output
+}
+{ new.block
+format.book.crossref output.nonnull
+}
+if$
+edition new.clause.checka
+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 new.clause.checka
+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
+new.clause
+crossref missing$
+{ format.bvolume output
+new.clause
+format.chapter.pages "chapter and pages" output.check
+new.block
+format.number.series output
+new.sentence
+publisher "publisher" output.check
+address new.clause.checka
+address output
+}
+{ format.chapter.pages "chapter and pages" output.check
+new.block
+format.book.crossref output.nonnull
+}
+if$
+edition new.clause.checka
+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
+new.clause
+format.bvolume output
+new.clause
+format.number.series output
+new.clause
+format.chapter.pages output
+new.sentence
+publisher "publisher" output.check
+address new.clause.checka
+address output
+edition new.clause.checka
+format.edition output
+format.date "year" output.check
+}
+{ format.incoll.inproc.crossref output.nonnull
+new.clause
+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
+volume new.clause.checka
+format.bvolume output
+number series new.clause.checkb
+format.number.series output
+pages new.clause.checka
+format.pages output
+address empty$
+{ organization publisher new.sentence.checkb
+organization output
+publisher new.clause.checka
+publisher output
+format.date "year" output.check
+}
+{ new.clause
+address output.nonnull
+format.date "year" output.check
+new.sentence
+organization output
+new.clause
+publisher output
+}
+if$
+}
+{ format.incoll.inproc.crossref output.nonnull
+new.clause
+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
+new.clause
+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 new.clause.checka
+address output
+}
+if$
+edition new.clause.checka
+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
+"\abphrase{17}" format.thesis.type output.nonnull
+new.clause
+school "school" output.check
+address new.clause.checka
+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
+"\abphrase{18}" format.thesis.type output.nonnull
+new.clause
+school "school" output.check
+address new.clause.checka
+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
+volume new.clause.checka
+format.bvolume output
+number series new.clause.checkb
+format.number.series output
+address empty$
+{ editor empty$
+{ publisher new.sentence.checka }
+{ organization publisher new.sentence.checkb
+organization output
+publisher new.clause.checka
+}
+if$
+publisher output
+format.date "year" output.check
+}
+{ new.clause
+address output.nonnull
+format.date "year" output.check
+new.sentence
+editor empty$
+'skip$
+{ organization output
+new.clause
+}
+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
+new.clause
+institution "institution" output.check
+address new.clause.checka
+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} {"\abmonth{1}"}
+MACRO {feb} {"\abmonth{2}"}
+MACRO {mar} {"\abmonth{3}"}
+MACRO {apr} {"\abmonth{4}"}
+MACRO {may} {"\abmonth{5}"}
+MACRO {jun} {"\abmonth{6}"}
+MACRO {jul} {"\abmonth{7}"}
+MACRO {aug} {"\abmonth{8}"}
+MACRO {sep} {"\abmonth{9}"}
+MACRO {oct} {"\abmonth{10}"}
+MACRO {nov} {"\abmonth{11}"}
+MACRO {dec} {"\abmonth{12}"}
+MACRO {first} {"\abedition{1}"}
+MACRO {second} {"\abedition{2}"}
+MACRO {third} {"\abedition{3}"}
+MACRO {fourth} {"\abedition{4}"}
+MACRO {fifth} {"\abedition{5}"}
+MACRO {sixth} {"\abedition{6}"}
+MACRO {seventh} {"\abedition{7}"}
+MACRO {eighth} {"\abedition{8}"}
+MACRO {ninth} {"\abedition{9}"}
+MACRO {tenth} {"\abedition{10}"}
+MACRO {section} {"\abchapter{0}"}
+MACRO {paragraph} {"\abchapter{1}"}
+MACRO {appendix} {"\abchapter{2}"}
+MACRO {part} {"\abchapter{3}"}
+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$
+}
+INTEGERS { et.al.char.used }
+FUNCTION {initialize.et.al.char.used}
+{ #0 'et.al.char.used :=
+}
+EXECUTE {initialize.et.al.char.used}
+FUNCTION {format.lab.names}
+{ 's :=
+s num.names$ 'numnames :=
+numnames #1 >
+{ numnames #4 >
+{ #3 'namesleft := }
+{ numnames 'namesleft := }
+if$
+#1 'nameptr :=
+""
+{ namesleft #0 > }
+{ nameptr numnames =
+{ s nameptr "{ff }{vv }{ll}{ jj}" format.name$ "others" =
+{ "{\etalchar{+}}" *
+#1 'et.al.char.used :=
+}
+{ s nameptr "{v{}}{l{}}" format.name$ * }
+if$
+}
+{ s nameptr "{v{}}{l{}}" format.name$ * }
+if$
+nameptr #1 + 'nameptr :=
+namesleft #1 - 'namesleft :=
+}
+while$
+numnames #4 >
+{ "{\etalchar{+}}" *
+#1 'et.al.char.used :=
+}
+'skip$
+if$
+}
+{ s #1 "{v{}}{l{}}" format.name$
+duplicate$ text.length$ #2 <
+{ pop$ s #1 "{ll}" format.name$ #3 text.prefix$ }
+'skip$
+if$
+}
+if$
+}
+FUNCTION {author.key.label}
+{ author empty$
+{ key empty$
+{ cite$ #1 #3 substring$ }
+{ key #3 text.prefix$ }
+if$
+}
+{ author format.lab.names }
+if$
+}
+FUNCTION {author.editor.key.label}
+{ author empty$
+{ editor empty$
+{ key empty$
+{ cite$ #1 #3 substring$ }
+{ key #3 text.prefix$ }
+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 #3 text.prefix$ }
+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 #3 text.prefix$ }
+if$
+}
+{ editor format.lab.names }
+if$
+}
+FUNCTION {calc.label}
+{ 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$
+duplicate$
+year field.or.null purify$ #-1 #2 substring$
+*
+'label :=
+year field.or.null purify$ #-1 #4 substring$
+*
+sortify 'sort.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
+sort.label
+" "
+*
+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.key$ :=
+}
+ITERATE {presort}
+SORT
+STRINGS { longest.label last.sort.label next.extra }
+INTEGERS { longest.label.width last.extra.num }
+FUNCTION {initialize.longest.label}
+{ "" 'longest.label :=
+#0 int.to.chr$ 'last.sort.label :=
+"" 'next.extra :=
+#0 'longest.label.width :=
+#0 'last.extra.num :=
+}
+FUNCTION {forward.pass}
+{ last.sort.label sort.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 :=
+sort.label 'last.sort.label :=
+}
+if$
+}
+FUNCTION {reverse.pass}
+{ next.extra "b" =
+{ "a" 'extra.label := }
+'skip$
+if$
+label extra.label * 'label :=
+label width$ longest.label.width >
+{ label 'longest.label :=
+label width$ 'longest.label.width :=
+}
+'skip$
+if$
+extra.label 'next.extra :=
+}
+EXECUTE {initialize.longest.label}
+ITERATE {forward.pass}
+REVERSE {reverse.pass}
+FUNCTION {begin.bib}
+{
+"\newif\ifabfull\abfulltrue" write$ newline$
+"\input apreambl" write$ newline$
+et.al.char.used
+{ "\newcommand{\etalchar}[1]{$^{#1}$}" write$ newline$ }
+'skip$
+if$
+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}
diff --git a/biblio/bibtex/contrib/abstyles-babel/acompat.bib b/biblio/bibtex/contrib/abstyles-babel/acompat.bib
new file mode 100644
index 0000000000..fb94505e64
--- /dev/null
+++ b/biblio/bibtex/contrib/abstyles-babel/acompat.bib
@@ -0,0 +1,45 @@
+This is ACOMPAT.BIB, a BibTeX database file for the `adaptable' style
+family, written by Hans-Hermann Bode (HHBODE at DOSUNI1.BITNET), that contains
+compatibility definitions for use with standard styles. Use acompat as the
+very first item---even before jourfull or jourabbr---in your \bibliography
+command when you have to typeset your new databases---relying on the
+adaptable styles---with the standard styles.
+
+------------------------------------------------------------------------------
+
+First, we declare the \abfull switch that is defined by the adaptable
+styles. Here, it is unconditionally set to true which might not fit your
+needs (in this case, say \abfullfalse instead of \abfulltrue).
+
+@PREAMBLE{"\newif\ifabfull\abfulltrue"}
+
+------------------------------------------------------------------------------
+
+Next, the strings for edition numbers are defined.
+
+@STRING{first="First"}
+@STRING{second="Second"}
+@STRING{third="Third"}
+@STRING{fourth="Fourth"}
+@STRING{fifth="Fifth"}
+@STRING{sixth="Sixth"}
+@STRING{seventh="Seventh"}
+@STRING{eighth="Eighth"}
+@STRING{ninth="Ninth"}
+@STRING{tenth="Tenth"}
+
+------------------------------------------------------------------------------
+
+Finally, we have to set up strings for certain ``chapter'' names.
+
+@STRING{section="Section"}
+@STRING{paragraph="Paragraph"}
+@STRING{appendix="Appendix"}
+@STRING{part="Part"}
+
+------------------------------------------------------------------------------
+
+That's all there is to it. Now you can use your new databases with the old
+styles as well.
+
+------------------------------------------------------------------------------
diff --git a/biblio/bibtex/contrib/abstyles-babel/anotit.bst b/biblio/bibtex/contrib/abstyles-babel/anotit.bst
new file mode 100644
index 0000000000..6e8ec41b53
--- /dev/null
+++ b/biblio/bibtex/contrib/abstyles-babel/anotit.bst
@@ -0,0 +1,1075 @@
+% BibTeX bibliography style `ANOTIT'
+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
+continue.sentence }
+FUNCTION {init.state.consts}
+{ #0 'before.all :=
+#1 'mid.sentence :=
+#2 'after.sentence :=
+#3 'after.block :=
+#4 'continue.sentence :=
+}
+STRINGS { s t }
+FUNCTION {output.nonnull}
+{ 's :=
+output.state continue.sentence =
+{ " " * write$ }
+{ 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$
+}
+if$
+continue.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 {new.clause}
+{ output.state after.sentence =
+'skip$
+{ output.state after.block =
+'skip$
+{ output.state before.all =
+'skip$
+{ mid.sentence 'output.state := }
+if$
+}
+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 {new.clause.checka}
+{ empty$
+'skip$
+'new.clause
+if$
+}
+FUNCTION {new.clause.checkb}
+{ empty$
+swap$ empty$
+and
+'skip$
+'new.clause
+if$
+}
+FUNCTION {field.or.null}
+{ duplicate$ empty$
+{ pop$ "" }
+'skip$
+if$
+}
+FUNCTION {emphasize}
+{ duplicate$ empty$
+{ pop$ "" }
+{ "\abtype{2}{" swap$ * "}" * }
+if$
+}
+FUNCTION {capitalize}
+{ duplicate$ empty$
+{ pop$ "" }
+{ "\abtype{0}{" swap$ * "}" * }
+if$
+}
+FUNCTION {boldface}
+{ duplicate$ empty$
+{ pop$ "" }
+{ "\abtype{3}{" swap$ * "}" * }
+if$
+}
+FUNCTION {quote}
+{ duplicate$ empty$
+{ pop$ "" }
+{ "\abtype{1}{" swap$ * "}" * }
+if$
+}
+FUNCTION {parentheses}
+{ duplicate$ empty$
+{ pop$ "" }
+{ "\abtype{5}{" swap$ * "}" * }
+if$
+}
+INTEGERS { nameptr namesleft numnames }
+FUNCTION {format.names}
+{ 's :=
+#1 'nameptr :=
+s num.names$ 'numnames :=
+numnames 'namesleft :=
+{ namesleft #0 > }
+{ s nameptr "{f.~}{vv~}{ll}{, jj}" format.name$ 't :=
+nameptr #1 >
+{ namesleft #1 >
+{ ", " * t * }
+{ numnames #2 >
+{ "\abphrase{1}" * }
+'skip$
+if$
+t "others" =
+{ "\abphrase{2}" * }
+{ "\abphrase{0}" * t * }
+if$
+}
+if$
+}
+'t
+if$
+nameptr #1 + 'nameptr :=
+namesleft #1 - 'namesleft :=
+}
+while$
+}
+FUNCTION {format.authors}
+{ author empty$
+{ "" }
+{ author format.names capitalize }
+if$
+}
+FUNCTION {format.editors}
+{ editor empty$
+{ "" }
+{ editor format.names capitalize
+editor num.names$ #1 >
+{ "\abphrase{3}" * }
+{ "\abphrase{4}" * }
+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 parentheses
+}
+if$
+}
+{ month empty$
+{ year parentheses }
+{ month " " * year * parentheses }
+if$
+}
+if$
+}
+FUNCTION {format.btitle}
+{ title quote
+}
+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$
+{ "" }
+{ "\abphrase{8}" volume tie.or.space.connect
+series empty$
+'skip$
+{ "\abphrase{5}" * series quote * }
+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 = output.state continue.sentence = or
+{ "\abphrase{10}" }
+{ "\abphrase{11}" }
+if$
+number tie.or.space.connect
+series empty$
+{ "there's a number but no series in " cite$ * warning$ }
+{ "\abphrase{6}" * series * }
+if$
+}
+if$
+}
+{ "" }
+if$
+}
+FUNCTION {format.edition}
+{ edition empty$
+{ "" }
+{ output.state mid.sentence = output.state continue.sentence = or
+{ edition "l" change.case$ "\abphrase{12}" * }
+{ edition "t" change.case$ "\abphrase{12}" * }
+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
+{ "\abphrase{13}" pages n.dashify tie.or.space.connect }
+{ "\abphrase{14}" pages tie.or.space.connect }
+if$
+}
+if$
+}
+FUNCTION {format.vol.num.pages}
+{ volume field.or.null boldface
+number empty$
+'skip$
+{ "\abtype{4}{" 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$
+{ "\abphrase{15}" }
+{ 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$
+{ "\abphrase{7}" booktitle quote * }
+{ "\abphrase{7}" format.editors * ", " * booktitle quote * }
+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$
+{ "\abphrase{16}" }
+'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$
+""
+}
+{ "\abphrase{7}" journal emphasize * }
+if$
+}
+{ "\abphrase{7}" key * }
+if$
+" \cite{" * crossref * "}" *
+}
+FUNCTION {format.crossref.editor}
+{ editor #1 "{vv~}{ll}" format.name$
+editor num.names$ duplicate$
+#2 >
+{ pop$ "\abphrase{2}" * }
+{ #2 <
+'skip$
+{ editor #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =
+{ "\abphrase{2}" * }
+{ "\abphrase{0}" * editor #2 "{vv~}{ll}" format.name$ * }
+if$
+}
+if$
+}
+if$
+}
+FUNCTION {format.book.crossref}
+{ volume empty$
+{ "empty volume in " cite$ * "'s crossref of " * crossref * warning$
+"\abphrase{7}"
+}
+{ "\abphrase{9}" volume tie.or.space.connect
+"\abphrase{5}" *
+}
+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$
+"" *
+}
+{ series quote * }
+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$
+""
+}
+{ "\abphrase{7}" booktitle quote * }
+if$
+}
+{ "\abphrase{7}" key * }
+if$
+}
+{ "\abphrase{7}" format.crossref.editor * }
+if$
+" \cite{" * crossref * "}" *
+}
+FUNCTION {article}
+{ output.bibitem
+format.authors "author" 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
+new.clause
+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$
+{ new.clause
+format.bvolume output
+new.block
+format.number.series output
+new.sentence
+publisher "publisher" output.check
+address new.clause.checka
+address output
+}
+{ new.block
+format.book.crossref output.nonnull
+}
+if$
+edition new.clause.checka
+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 new.clause.checka
+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
+new.clause
+crossref missing$
+{ format.bvolume output
+new.clause
+format.chapter.pages "chapter and pages" output.check
+new.block
+format.number.series output
+new.sentence
+publisher "publisher" output.check
+address new.clause.checka
+address output
+}
+{ format.chapter.pages "chapter and pages" output.check
+new.block
+format.book.crossref output.nonnull
+}
+if$
+edition new.clause.checka
+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
+chapter empty$ pages empty$ and
+{
+format.title "title" output.check
+new.block
+}
+'skip$
+if$
+crossref missing$
+{ format.in.ed.booktitle "booktitle" output.check
+new.clause
+format.bvolume output
+new.clause
+format.number.series output
+new.clause
+format.chapter.pages output
+new.sentence
+publisher "publisher" output.check
+address new.clause.checka
+address output
+edition new.clause.checka
+format.edition output
+format.date "year" output.check
+}
+{ format.incoll.inproc.crossref output.nonnull
+new.clause
+format.chapter.pages output
+}
+if$
+new.block
+note output
+fin.entry
+}
+FUNCTION {inproceedings}
+{ output.bibitem
+format.authors "author" output.check
+new.block
+pages empty$
+{
+format.title "title" output.check
+new.block
+}
+'skip$
+if$
+crossref missing$
+{ format.in.ed.booktitle "booktitle" output.check
+volume new.clause.checka
+format.bvolume output
+number series new.clause.checkb
+format.number.series output
+pages new.clause.checka
+format.pages output
+address empty$
+{ organization publisher new.sentence.checkb
+organization output
+publisher new.clause.checka
+publisher output
+format.date "year" output.check
+}
+{ new.clause
+address output.nonnull
+format.date "year" output.check
+new.sentence
+organization output
+new.clause
+publisher output
+}
+if$
+}
+{ format.incoll.inproc.crossref output.nonnull
+new.clause
+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
+new.clause
+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 new.clause.checka
+address output
+}
+if$
+edition new.clause.checka
+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
+"\abphrase{17}" format.thesis.type output.nonnull
+new.clause
+school "school" output.check
+address new.clause.checka
+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
+"\abphrase{18}" format.thesis.type output.nonnull
+new.clause
+school "school" output.check
+address new.clause.checka
+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
+volume new.clause.checka
+format.bvolume output
+number series new.clause.checkb
+format.number.series output
+address empty$
+{ editor empty$
+{ publisher new.sentence.checka }
+{ organization publisher new.sentence.checkb
+organization output
+publisher new.clause.checka
+}
+if$
+publisher output
+format.date "year" output.check
+}
+{ new.clause
+address output.nonnull
+format.date "year" output.check
+new.sentence
+editor empty$
+'skip$
+{ organization output
+new.clause
+}
+if$
+publisher output
+}
+if$
+new.block
+note output
+fin.entry
+}
+FUNCTION {techreport}
+{ output.bibitem
+format.authors "author" output.check
+new.block
+number empty$
+{
+format.title "title" output.check
+new.block
+}
+'skip$
+if$
+format.tr.number output.nonnull
+new.clause
+institution "institution" output.check
+address new.clause.checka
+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} {"\abmonth{1}"}
+MACRO {feb} {"\abmonth{2}"}
+MACRO {mar} {"\abmonth{3}"}
+MACRO {apr} {"\abmonth{4}"}
+MACRO {may} {"\abmonth{5}"}
+MACRO {jun} {"\abmonth{6}"}
+MACRO {jul} {"\abmonth{7}"}
+MACRO {aug} {"\abmonth{8}"}
+MACRO {sep} {"\abmonth{9}"}
+MACRO {oct} {"\abmonth{10}"}
+MACRO {nov} {"\abmonth{11}"}
+MACRO {dec} {"\abmonth{12}"}
+MACRO {first} {"\abedition{1}"}
+MACRO {second} {"\abedition{2}"}
+MACRO {third} {"\abedition{3}"}
+MACRO {fourth} {"\abedition{4}"}
+MACRO {fifth} {"\abedition{5}"}
+MACRO {sixth} {"\abedition{6}"}
+MACRO {seventh} {"\abedition{7}"}
+MACRO {eighth} {"\abedition{8}"}
+MACRO {ninth} {"\abedition{9}"}
+MACRO {tenth} {"\abedition{10}"}
+MACRO {section} {"\abchapter{0}"}
+MACRO {paragraph} {"\abchapter{1}"}
+MACRO {appendix} {"\abchapter{2}"}
+MACRO {part} {"\abchapter{3}"}
+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 {sort.format.names}
+{ 's :=
+#1 'nameptr :=
+""
+s num.names$ 'numnames :=
+numnames 'namesleft :=
+{ namesleft #0 > }
+{ nameptr #1 >
+{ " " * }
+'skip$
+if$
+s nameptr "{vv{ } }{ll{ }}{ f{ }}{ jj{ }}" format.name$ 't :=
+nameptr numnames = t "others" = and
+{ "et al" * }
+{ t sortify * }
+if$
+nameptr #1 + 'nameptr :=
+namesleft #1 - 'namesleft :=
+}
+while$
+}
+FUNCTION {sort.format.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}
+{ 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.key$ :=
+}
+ITERATE {presort}
+SORT
+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}
+{
+"\newif\ifabfull\abfullfalse" write$ newline$
+"\input apreambl" write$ newline$
+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}
diff --git a/biblio/bibtex/contrib/abstyles-babel/aplain.bst b/biblio/bibtex/contrib/abstyles-babel/aplain.bst
new file mode 100644
index 0000000000..f9ac9f4a0a
--- /dev/null
+++ b/biblio/bibtex/contrib/abstyles-babel/aplain.bst
@@ -0,0 +1,1062 @@
+% BibTeX bibliography style `APLAIN'
+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
+continue.sentence }
+FUNCTION {init.state.consts}
+{ #0 'before.all :=
+#1 'mid.sentence :=
+#2 'after.sentence :=
+#3 'after.block :=
+#4 'continue.sentence :=
+}
+STRINGS { s t }
+FUNCTION {output.nonnull}
+{ 's :=
+output.state continue.sentence =
+{ " " * write$ }
+{ 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$
+}
+if$
+continue.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 {new.clause}
+{ output.state after.sentence =
+'skip$
+{ output.state after.block =
+'skip$
+{ output.state before.all =
+'skip$
+{ mid.sentence 'output.state := }
+if$
+}
+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 {new.clause.checka}
+{ empty$
+'skip$
+'new.clause
+if$
+}
+FUNCTION {new.clause.checkb}
+{ empty$
+swap$ empty$
+and
+'skip$
+'new.clause
+if$
+}
+FUNCTION {field.or.null}
+{ duplicate$ empty$
+{ pop$ "" }
+'skip$
+if$
+}
+FUNCTION {emphasize}
+{ duplicate$ empty$
+{ pop$ "" }
+{ "\abtype{2}{" swap$ * "}" * }
+if$
+}
+FUNCTION {capitalize}
+{ duplicate$ empty$
+{ pop$ "" }
+{ "\abtype{0}{" swap$ * "}" * }
+if$
+}
+FUNCTION {boldface}
+{ duplicate$ empty$
+{ pop$ "" }
+{ "\abtype{3}{" swap$ * "}" * }
+if$
+}
+FUNCTION {quote}
+{ duplicate$ empty$
+{ pop$ "" }
+{ "\abtype{1}{" swap$ * "}" * }
+if$
+}
+FUNCTION {parentheses}
+{ duplicate$ empty$
+{ pop$ "" }
+{ "\abtype{5}{" 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 >
+{ "\abphrase{1}" * }
+'skip$
+if$
+t "others" =
+{ "\abphrase{2}" * }
+{ "\abphrase{0}" * t * }
+if$
+}
+if$
+}
+'t
+if$
+nameptr #1 + 'nameptr :=
+namesleft #1 - 'namesleft :=
+}
+while$
+}
+FUNCTION {format.authors}
+{ author empty$
+{ "" }
+{ author format.names capitalize }
+if$
+}
+FUNCTION {format.editors}
+{ editor empty$
+{ "" }
+{ editor format.names capitalize
+editor num.names$ #1 >
+{ "\abphrase{3}" * }
+{ "\abphrase{4}" * }
+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 parentheses
+}
+if$
+}
+{ month empty$
+{ year parentheses }
+{ month " " * year * parentheses }
+if$
+}
+if$
+}
+FUNCTION {format.btitle}
+{ title quote
+}
+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$
+{ "" }
+{ "\abphrase{8}" volume tie.or.space.connect
+series empty$
+'skip$
+{ "\abphrase{5}" * series quote * }
+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 = output.state continue.sentence = or
+{ "\abphrase{10}" }
+{ "\abphrase{11}" }
+if$
+number tie.or.space.connect
+series empty$
+{ "there's a number but no series in " cite$ * warning$ }
+{ "\abphrase{6}" * series * }
+if$
+}
+if$
+}
+{ "" }
+if$
+}
+FUNCTION {format.edition}
+{ edition empty$
+{ "" }
+{ output.state mid.sentence = output.state continue.sentence = or
+{ edition "l" change.case$ "\abphrase{12}" * }
+{ edition "t" change.case$ "\abphrase{12}" * }
+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
+{ "\abphrase{13}" pages n.dashify tie.or.space.connect }
+{ "\abphrase{14}" pages tie.or.space.connect }
+if$
+}
+if$
+}
+FUNCTION {format.vol.num.pages}
+{ volume field.or.null boldface
+number empty$
+'skip$
+{ "\abtype{4}{" 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$
+{ "\abphrase{15}" }
+{ 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$
+{ "\abphrase{7}" booktitle quote * }
+{ "\abphrase{7}" format.editors * ", " * booktitle quote * }
+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$
+{ "\abphrase{16}" }
+'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$
+""
+}
+{ "\abphrase{7}" journal emphasize * }
+if$
+}
+{ "\abphrase{7}" key * }
+if$
+" \cite{" * crossref * "}" *
+}
+FUNCTION {format.crossref.editor}
+{ editor #1 "{vv~}{ll}" format.name$
+editor num.names$ duplicate$
+#2 >
+{ pop$ "\abphrase{2}" * }
+{ #2 <
+'skip$
+{ editor #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =
+{ "\abphrase{2}" * }
+{ "\abphrase{0}" * editor #2 "{vv~}{ll}" format.name$ * }
+if$
+}
+if$
+}
+if$
+}
+FUNCTION {format.book.crossref}
+{ volume empty$
+{ "empty volume in " cite$ * "'s crossref of " * crossref * warning$
+"\abphrase{7}"
+}
+{ "\abphrase{9}" volume tie.or.space.connect
+"\abphrase{5}" *
+}
+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$
+"" *
+}
+{ series quote * }
+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$
+""
+}
+{ "\abphrase{7}" booktitle quote * }
+if$
+}
+{ "\abphrase{7}" key * }
+if$
+}
+{ "\abphrase{7}" 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
+new.clause
+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$
+{ new.clause
+format.bvolume output
+new.block
+format.number.series output
+new.sentence
+publisher "publisher" output.check
+address new.clause.checka
+address output
+}
+{ new.block
+format.book.crossref output.nonnull
+}
+if$
+edition new.clause.checka
+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 new.clause.checka
+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
+new.clause
+crossref missing$
+{ format.bvolume output
+new.clause
+format.chapter.pages "chapter and pages" output.check
+new.block
+format.number.series output
+new.sentence
+publisher "publisher" output.check
+address new.clause.checka
+address output
+}
+{ format.chapter.pages "chapter and pages" output.check
+new.block
+format.book.crossref output.nonnull
+}
+if$
+edition new.clause.checka
+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
+new.clause
+format.bvolume output
+new.clause
+format.number.series output
+new.clause
+format.chapter.pages output
+new.sentence
+publisher "publisher" output.check
+address new.clause.checka
+address output
+edition new.clause.checka
+format.edition output
+format.date "year" output.check
+}
+{ format.incoll.inproc.crossref output.nonnull
+new.clause
+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
+volume new.clause.checka
+format.bvolume output
+number series new.clause.checkb
+format.number.series output
+pages new.clause.checka
+format.pages output
+address empty$
+{ organization publisher new.sentence.checkb
+organization output
+publisher new.clause.checka
+publisher output
+format.date "year" output.check
+}
+{ new.clause
+address output.nonnull
+format.date "year" output.check
+new.sentence
+organization output
+new.clause
+publisher output
+}
+if$
+}
+{ format.incoll.inproc.crossref output.nonnull
+new.clause
+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
+new.clause
+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 new.clause.checka
+address output
+}
+if$
+edition new.clause.checka
+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
+"\abphrase{17}" format.thesis.type output.nonnull
+new.clause
+school "school" output.check
+address new.clause.checka
+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
+"\abphrase{18}" format.thesis.type output.nonnull
+new.clause
+school "school" output.check
+address new.clause.checka
+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
+volume new.clause.checka
+format.bvolume output
+number series new.clause.checkb
+format.number.series output
+address empty$
+{ editor empty$
+{ publisher new.sentence.checka }
+{ organization publisher new.sentence.checkb
+organization output
+publisher new.clause.checka
+}
+if$
+publisher output
+format.date "year" output.check
+}
+{ new.clause
+address output.nonnull
+format.date "year" output.check
+new.sentence
+editor empty$
+'skip$
+{ organization output
+new.clause
+}
+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
+new.clause
+institution "institution" output.check
+address new.clause.checka
+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} {"\abmonth{1}"}
+MACRO {feb} {"\abmonth{2}"}
+MACRO {mar} {"\abmonth{3}"}
+MACRO {apr} {"\abmonth{4}"}
+MACRO {may} {"\abmonth{5}"}
+MACRO {jun} {"\abmonth{6}"}
+MACRO {jul} {"\abmonth{7}"}
+MACRO {aug} {"\abmonth{8}"}
+MACRO {sep} {"\abmonth{9}"}
+MACRO {oct} {"\abmonth{10}"}
+MACRO {nov} {"\abmonth{11}"}
+MACRO {dec} {"\abmonth{12}"}
+MACRO {first} {"\abedition{1}"}
+MACRO {second} {"\abedition{2}"}
+MACRO {third} {"\abedition{3}"}
+MACRO {fourth} {"\abedition{4}"}
+MACRO {fifth} {"\abedition{5}"}
+MACRO {sixth} {"\abedition{6}"}
+MACRO {seventh} {"\abedition{7}"}
+MACRO {eighth} {"\abedition{8}"}
+MACRO {ninth} {"\abedition{9}"}
+MACRO {tenth} {"\abedition{10}"}
+MACRO {section} {"\abchapter{0}"}
+MACRO {paragraph} {"\abchapter{1}"}
+MACRO {appendix} {"\abchapter{2}"}
+MACRO {part} {"\abchapter{3}"}
+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 {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}
+{ 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.key$ :=
+}
+ITERATE {presort}
+SORT
+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}
+{
+"\newif\ifabfull\abfulltrue" write$ newline$
+"\input apreambl" write$ newline$
+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}
diff --git a/biblio/bibtex/contrib/abstyles-babel/apreambl.tex b/biblio/bibtex/contrib/abstyles-babel/apreambl.tex
new file mode 100644
index 0000000000..51b1022d29
--- /dev/null
+++ b/biblio/bibtex/contrib/abstyles-babel/apreambl.tex
@@ -0,0 +1,200 @@
+% This is APREAMBL.TEX, version 1.10e, written by Hans-Hermann Bode
+% (HHBODE@DOSUNI1.BITNET), for the BibTeX `adaptable' family, version 1.10.
+% See the file APREAMBL.DOC for a detailed documentation.
+
+% This program is distributed WITHOUT ANY WARRANTY, express or implied.
+
+% Copyright (C) 1991, 1992 Hans-Hermann Bode
+
+% Permission is granted to make and distribute verbatim copies of this
+% document provided that the copyright notice and this permission notice
+% are preserved on all copies.
+
+% Permission is granted to copy and distribute modified versions of this
+% document under the conditions for verbatim copying, provided that the
+% entire resulting derived work is distributed under the terms of a
+% permission notice identical to this one.
+
+% This file has been extended for the Spanish language
+% and modified to work with the J.L. Braams' Babel system
+% Tom'as Bautista
+% CAD Division of
+% the Center for Applied Microlectronics,
+% Univ. of Las Palmas de Gran Canaria, Canary Is.
+% June 2nd, 1995.
+
+\ifx\undefined\ifabfull
+ \typeout{*** Please, do not load this file directly ***}
+ \typeout{ It will be loaded when using the adaptable}
+ \typeout{ family BibTeX styles.}
+ \expandafter\endinput
+\fi
+
+\expandafter\ifx\csname__APREAMBLE_TEX\endcsname\relax \else\endinput\fi
+\expandafter\chardef\csname__APREAMBLE_TEX\endcsname=\the\catcode`\@
+\catcode`\@=11
+\gdef\abtype@english{%
+\def\abtype##1##2{%
+\ifcase##1{\sc##2}\or``##2''\or{\em##2\/}\or{\bf##2}\or(##2)\or(##2)\else##2\fi}}
+
+\gdef\abtype@german{%
+\def\abtype##1##2{%
+\ifcase##1{\sc##2}\or\glqq##2\grqq\or{\em##2\/}\or{\bf##2}\or(##2)\or(##2)\else##2\fi}}
+
+\gdef\abtype@spanish{%
+\def\abtype##1##2{%
+\ifcase##1{\sc##2}\or``##2''\or{\em##2\/}\or{\bf##2}\or(##2)\or(##2)\else##2\fi}}
+
+\ifabfull
+
+\gdef\abetc@english{
+
+\def\abphrase##1{%
+\ifcase##1{ and }\or{,}\or{ et~al.}\or{, editors}\or{, editor}\or%
+{ of }\or{ in }\or{In }\or{volume}\or{Volume}\or{number}\or{Number}\or%
+{ edition}\or{pages}\or{page}\or{chapter}\or%
+{Technical Report}\or{Master's thesis}\or{PhD thesis}\fi}
+
+\def\abmonth##1{\ifcase##1\or January\or February\or March\or April\or May\or
+ June\or July\or August\or September\or October\or November\or December\fi}
+
+\def\abedition##1{\ifcase##1\or First\or Second\or Third\or Fourth\or Fifth\or
+ Sixth\or Seventh\or Eighth\or Ninth\or Tenth\else?\fi}
+
+\def\abchapter##1{\ifcase##1Section\or Paragraph\or Appendix\or Part\fi}
+
+}
+
+\else
+
+\gdef\abetc@english{
+
+\def\abphrase##1{%
+\ifcase##1{ and }\or{,}\or{ et~al.}\or{, editors}\or{, editor}\or%
+{ of }\or{ in }\or{In }\or{vol.}\or{Vol.}\or{no.}\or{No.}\or%
+{ ed.}\or{pp.}\or{p.}\or{ch.}\or%
+{Technical Report}\or{Master's thesis}\or{PhD thesis}\fi}
+
+\def\abmonth##1{\ifcase##1\or Jan.\or Feb.\or Mar.\or Apr.\or May\or June\or
+ July\or Aug.\or Sept.\or Oct.\or Nov.\or Dec.\fi}
+
+\def\abedition##1{\ifcase##1\or 1st\or 2nd\or 3rd\or 4th\or 5th\or
+ 6th\or 7th\or 8th\or 9th\or 10th\else?\fi}
+
+\def\abchapter##1{\ifcase##1Sec.\or Par.\or App.\or Part\fi}
+
+}
+
+\fi
+
+\ifabfull
+
+\gdef\abetc@german{
+
+\def\abphrase##1{%
+\ifcase##1{ und }\or{}\or{ und andere}\or%
+{ (Herausgeber)}\or{ (Herausgeber)}\or%
+{ aus }\or{ in }\or{In }\or{Band}\or{Band}\or{Nummer}\or{Nummer}\or%
+{ Auf{\kern0pt}lage}\or{Seiten}\or{Seite}\or{Kapitel}\or%
+{Bericht}\or{Diplomarbeit}\or{Dissertation}\fi}
+
+\def\abmonth##1{\ifcase##1\or Januar\or Februar\or M\"arz\or April\or Mai\or
+ Juni\or Juli\or August\or September\or Oktober\or November\or Dezember\fi}
+
+\def\abedition##1{\ifcase##1\or Erste\or Zweite\or Dritte\or
+ Vierte\or F\"unf\-te\or Sechste\or Siebte\or Achte\or Neunte\or
+ Zehnte\else?\fi}
+
+\def\abchapter##1{\ifcase##1Abschnitt\or Absatz\or Anhang\or Teil\fi}
+
+}
+
+\else
+
+\gdef\abetc@german{
+
+\def\abphrase##1{%
+\ifcase##1{ und }\or{}\or{ u.\thinspace a.}\or{ (Hrsg.)}\or{ (Hrsg.)}\or%
+{ aus }\or{ in }\or{In }\or{Bd.}\or{Bd.}\or{Nr.}\or{Nr.}\or%
+{ Aufl.}\or{S.}\or{S.}\or{Kap.}\or%
+{Bericht}\or{Diplomarbeit}\or{Dissertation}\fi}
+
+\def\abmonth##1{\ifcase##1\or Jan.\or Feb.\or M\"arz\or Apr.\or Mai\or
+ Juni\or Juli\or Aug.\or Sep.\or Okt.\or Nov.\or Dez.\fi}
+
+\def\abedition##1{\ifcase##1\or 1.\or 2.\or 3.\or 4.\or 5.\or
+ 6.\or 7.\or 8.\or 9.\or 10.\else?\fi}
+
+\def\abchapter##1{\ifcase##1Abschn.\or Abs.\or Anh.\or Teil\fi}
+
+}
+
+\fi
+
+\ifabfull
+
+\gdef\abetc@spanish{
+
+\def\abphrase##1{%
+\ifcase##1{ y }\or{}\or{ et~al.}\or{, editores}\or{, editor}\or%
+{ de }\or{ en }\or{En }\or{tomo}\or{Tomo}\or{n\'umero}\or{N\'umero}\or%
+{ edici\'on}\or{p\'aginas}\or{p\'agina}\or{cap\'{\i}tulo}\or%
+{Informe t'ecnico}\or{Proyecto Fin de Carrera}\or{Tesis Doctoral}\fi}
+
+\def\abmonth##1{\ifcase##1\or enero\or febrero\or marzo\or abril\or mayo\or
+ junio\or julio\or agosto\or septiembre\or octubre\or noviembre\or
+ diciembre\fi}
+
+\def\abedition##1{\ifcase##1\or Primera\or Segunda\or Tercera\or
+ Cuarta\or Quinta\or Sexta\or S\'eptima\or Octava\or Novena\or
+ D\'ecima\else?\fi}
+
+\def\abchapter##1{\ifcase##1Apartado\or P\'arrafo\or Ap\'endice\or Parte\fi}
+
+}
+
+\else
+
+\gdef\abetc@spanish{
+
+\def\abphrase##1{%
+\ifcase##1{ y }\or{}\or{ et~al.}\or{, editores}\or{, editor}\or%
+{ de }\or{ en }\or{En }\or{vol.}\or{Vol.}\or%
+{n\raise1ex\hbox{\underbar{\scriptsize o}}}\or%
+{N\raise1ex\hbox{\underbar{\scriptsize o}}}\or%
+{ ed.}\or{p\'ags.}\or{p\'ag.}\or{cap.}\or%
+{Informe t'ecnico}\or{Proyecto Fin de Carrera}\or{Tesis Doctoral}\fi}
+
+\def\abmonth##1{\ifcase##1\or ene.\or feb.\or mar.\or abr.\or mayo\or jun.\or
+ jul.\or ago.\or sept.\or oct.\or nov.\or dic.\fi}
+
+\def\abedition##1{\ifcase##1\or 1\raise1ex\hbox{\underbar{\scriptsize a}}\or
+ 2\raise1ex\hbox{\underbar{\scriptsize a}}\or
+ 3\raise1ex\hbox{\underbar{\scriptsize a}}\or
+ 4\raise1ex\hbox{\underbar{\scriptsize a}}\or
+ 5\raise1ex\hbox{\underbar{\scriptsize a}}\or
+ 6\raise1ex\hbox{\underbar{\scriptsize a}}\or
+ 7\raise1ex\hbox{\underbar{\scriptsize a}}\or
+ 8\raise1ex\hbox{\underbar{\scriptsize a}}\or
+ 9\raise1ex\hbox{\underbar{\scriptsize a}}\or
+ 10\raise1ex\hbox{\underbar{\scriptsize a}}\else?\fi}
+
+\def\abchapter##1{\ifcase##1Apartado\or P\'ar.\or Ap\'endice\or Parte\fi}
+
+}
+
+\fi
+
+\ifx\undefined\iflanguage
+ \abtype@english \abetc@english
+\else
+ \abtype@english \abetc@english % This is the deafult option, in case
+ % your language is not supported.
+% \iflanguage{english}{\abtype@english \abetc@english}{}
+ \iflanguage{german}{\abtype@german \abetc@german}{}
+ \iflanguage{spanish}{\abtype@spanish \abetc@spanish}{}
+\fi
+
+\catcode`\@=\csname__APREAMBLE_TEX\endcsname
+
+\endinput
diff --git a/biblio/bibtex/contrib/abstyles-babel/aunsnot.bst b/biblio/bibtex/contrib/abstyles-babel/aunsnot.bst
new file mode 100644
index 0000000000..6a918d201e
--- /dev/null
+++ b/biblio/bibtex/contrib/abstyles-babel/aunsnot.bst
@@ -0,0 +1,941 @@
+% BibTeX bibliography style `AUNSNOT'
+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
+continue.sentence }
+FUNCTION {init.state.consts}
+{ #0 'before.all :=
+#1 'mid.sentence :=
+#2 'after.sentence :=
+#3 'after.block :=
+#4 'continue.sentence :=
+}
+STRINGS { s t }
+FUNCTION {output.nonnull}
+{ 's :=
+output.state continue.sentence =
+{ " " * write$ }
+{ 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$
+}
+if$
+continue.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 {new.clause}
+{ output.state after.sentence =
+'skip$
+{ output.state after.block =
+'skip$
+{ output.state before.all =
+'skip$
+{ mid.sentence 'output.state := }
+if$
+}
+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 {new.clause.checka}
+{ empty$
+'skip$
+'new.clause
+if$
+}
+FUNCTION {new.clause.checkb}
+{ empty$
+swap$ empty$
+and
+'skip$
+'new.clause
+if$
+}
+FUNCTION {field.or.null}
+{ duplicate$ empty$
+{ pop$ "" }
+'skip$
+if$
+}
+FUNCTION {emphasize}
+{ duplicate$ empty$
+{ pop$ "" }
+{ "\abtype{2}{" swap$ * "}" * }
+if$
+}
+FUNCTION {capitalize}
+{ duplicate$ empty$
+{ pop$ "" }
+{ "\abtype{0}{" swap$ * "}" * }
+if$
+}
+FUNCTION {boldface}
+{ duplicate$ empty$
+{ pop$ "" }
+{ "\abtype{3}{" swap$ * "}" * }
+if$
+}
+FUNCTION {quote}
+{ duplicate$ empty$
+{ pop$ "" }
+{ "\abtype{1}{" swap$ * "}" * }
+if$
+}
+FUNCTION {parentheses}
+{ duplicate$ empty$
+{ pop$ "" }
+{ "\abtype{5}{" swap$ * "}" * }
+if$
+}
+INTEGERS { nameptr namesleft numnames }
+FUNCTION {format.names}
+{ 's :=
+#1 'nameptr :=
+s num.names$ 'numnames :=
+numnames 'namesleft :=
+{ namesleft #0 > }
+{ s nameptr "{f.~}{vv~}{ll}{, jj}" format.name$ 't :=
+nameptr #1 >
+{ namesleft #1 >
+{ ", " * t * }
+{ numnames #2 >
+{ "\abphrase{1}" * }
+'skip$
+if$
+t "others" =
+{ "\abphrase{2}" * }
+{ "\abphrase{0}" * t * }
+if$
+}
+if$
+}
+'t
+if$
+nameptr #1 + 'nameptr :=
+namesleft #1 - 'namesleft :=
+}
+while$
+}
+FUNCTION {format.authors}
+{ author empty$
+{ "" }
+{ author format.names capitalize }
+if$
+}
+FUNCTION {format.editors}
+{ editor empty$
+{ "" }
+{ editor format.names capitalize
+editor num.names$ #1 >
+{ "\abphrase{3}" * }
+{ "\abphrase{4}" * }
+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 parentheses
+}
+if$
+}
+{ month empty$
+{ year parentheses }
+{ month " " * year * parentheses }
+if$
+}
+if$
+}
+FUNCTION {format.btitle}
+{ title quote
+}
+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$
+{ "" }
+{ "\abphrase{8}" volume tie.or.space.connect
+series empty$
+'skip$
+{ "\abphrase{5}" * series quote * }
+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 = output.state continue.sentence = or
+{ "\abphrase{10}" }
+{ "\abphrase{11}" }
+if$
+number tie.or.space.connect
+series empty$
+{ "there's a number but no series in " cite$ * warning$ }
+{ "\abphrase{6}" * series * }
+if$
+}
+if$
+}
+{ "" }
+if$
+}
+FUNCTION {format.edition}
+{ edition empty$
+{ "" }
+{ output.state mid.sentence = output.state continue.sentence = or
+{ edition "l" change.case$ "\abphrase{12}" * }
+{ edition "t" change.case$ "\abphrase{12}" * }
+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
+{ "\abphrase{13}" pages n.dashify tie.or.space.connect }
+{ "\abphrase{14}" pages tie.or.space.connect }
+if$
+}
+if$
+}
+FUNCTION {format.vol.num.pages}
+{ volume field.or.null boldface
+number empty$
+'skip$
+{ "\abtype{4}{" 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$
+{ "\abphrase{15}" }
+{ 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$
+{ "\abphrase{7}" booktitle quote * }
+{ "\abphrase{7}" format.editors * ", " * booktitle quote * }
+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$
+{ "\abphrase{16}" }
+'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$
+""
+}
+{ "\abphrase{7}" journal emphasize * }
+if$
+}
+{ "\abphrase{7}" key * }
+if$
+" \cite{" * crossref * "}" *
+}
+FUNCTION {format.crossref.editor}
+{ editor #1 "{vv~}{ll}" format.name$
+editor num.names$ duplicate$
+#2 >
+{ pop$ "\abphrase{2}" * }
+{ #2 <
+'skip$
+{ editor #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =
+{ "\abphrase{2}" * }
+{ "\abphrase{0}" * editor #2 "{vv~}{ll}" format.name$ * }
+if$
+}
+if$
+}
+if$
+}
+FUNCTION {format.book.crossref}
+{ volume empty$
+{ "empty volume in " cite$ * "'s crossref of " * crossref * warning$
+"\abphrase{7}"
+}
+{ "\abphrase{9}" volume tie.or.space.connect
+"\abphrase{5}" *
+}
+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$
+"" *
+}
+{ series quote * }
+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$
+""
+}
+{ "\abphrase{7}" booktitle quote * }
+if$
+}
+{ "\abphrase{7}" key * }
+if$
+}
+{ "\abphrase{7}" format.crossref.editor * }
+if$
+" \cite{" * crossref * "}" *
+}
+FUNCTION {article}
+{ output.bibitem
+format.authors "author" 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
+new.clause
+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$
+{ new.clause
+format.bvolume output
+new.block
+format.number.series output
+new.sentence
+publisher "publisher" output.check
+address new.clause.checka
+address output
+}
+{ new.block
+format.book.crossref output.nonnull
+}
+if$
+edition new.clause.checka
+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 new.clause.checka
+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
+new.clause
+crossref missing$
+{ format.bvolume output
+new.clause
+format.chapter.pages "chapter and pages" output.check
+new.block
+format.number.series output
+new.sentence
+publisher "publisher" output.check
+address new.clause.checka
+address output
+}
+{ format.chapter.pages "chapter and pages" output.check
+new.block
+format.book.crossref output.nonnull
+}
+if$
+edition new.clause.checka
+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
+chapter empty$ pages empty$ and
+{
+format.title "title" output.check
+new.block
+}
+'skip$
+if$
+crossref missing$
+{ format.in.ed.booktitle "booktitle" output.check
+new.clause
+format.bvolume output
+new.clause
+format.number.series output
+new.clause
+format.chapter.pages output
+new.sentence
+publisher "publisher" output.check
+address new.clause.checka
+address output
+edition new.clause.checka
+format.edition output
+format.date "year" output.check
+}
+{ format.incoll.inproc.crossref output.nonnull
+new.clause
+format.chapter.pages output
+}
+if$
+new.block
+note output
+fin.entry
+}
+FUNCTION {inproceedings}
+{ output.bibitem
+format.authors "author" output.check
+new.block
+pages empty$
+{
+format.title "title" output.check
+new.block
+}
+'skip$
+if$
+crossref missing$
+{ format.in.ed.booktitle "booktitle" output.check
+volume new.clause.checka
+format.bvolume output
+number series new.clause.checkb
+format.number.series output
+pages new.clause.checka
+format.pages output
+address empty$
+{ organization publisher new.sentence.checkb
+organization output
+publisher new.clause.checka
+publisher output
+format.date "year" output.check
+}
+{ new.clause
+address output.nonnull
+format.date "year" output.check
+new.sentence
+organization output
+new.clause
+publisher output
+}
+if$
+}
+{ format.incoll.inproc.crossref output.nonnull
+new.clause
+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
+new.clause
+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 new.clause.checka
+address output
+}
+if$
+edition new.clause.checka
+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
+"\abphrase{17}" format.thesis.type output.nonnull
+new.clause
+school "school" output.check
+address new.clause.checka
+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
+"\abphrase{18}" format.thesis.type output.nonnull
+new.clause
+school "school" output.check
+address new.clause.checka
+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
+volume new.clause.checka
+format.bvolume output
+number series new.clause.checkb
+format.number.series output
+address empty$
+{ editor empty$
+{ publisher new.sentence.checka }
+{ organization publisher new.sentence.checkb
+organization output
+publisher new.clause.checka
+}
+if$
+publisher output
+format.date "year" output.check
+}
+{ new.clause
+address output.nonnull
+format.date "year" output.check
+new.sentence
+editor empty$
+'skip$
+{ organization output
+new.clause
+}
+if$
+publisher output
+}
+if$
+new.block
+note output
+fin.entry
+}
+FUNCTION {techreport}
+{ output.bibitem
+format.authors "author" output.check
+new.block
+number empty$
+{
+format.title "title" output.check
+new.block
+}
+'skip$
+if$
+format.tr.number output.nonnull
+new.clause
+institution "institution" output.check
+address new.clause.checka
+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} {"\abmonth{1}"}
+MACRO {feb} {"\abmonth{2}"}
+MACRO {mar} {"\abmonth{3}"}
+MACRO {apr} {"\abmonth{4}"}
+MACRO {may} {"\abmonth{5}"}
+MACRO {jun} {"\abmonth{6}"}
+MACRO {jul} {"\abmonth{7}"}
+MACRO {aug} {"\abmonth{8}"}
+MACRO {sep} {"\abmonth{9}"}
+MACRO {oct} {"\abmonth{10}"}
+MACRO {nov} {"\abmonth{11}"}
+MACRO {dec} {"\abmonth{12}"}
+MACRO {first} {"\abedition{1}"}
+MACRO {second} {"\abedition{2}"}
+MACRO {third} {"\abedition{3}"}
+MACRO {fourth} {"\abedition{4}"}
+MACRO {fifth} {"\abedition{5}"}
+MACRO {sixth} {"\abedition{6}"}
+MACRO {seventh} {"\abedition{7}"}
+MACRO {eighth} {"\abedition{8}"}
+MACRO {ninth} {"\abedition{9}"}
+MACRO {tenth} {"\abedition{10}"}
+MACRO {section} {"\abchapter{0}"}
+MACRO {paragraph} {"\abchapter{1}"}
+MACRO {appendix} {"\abchapter{2}"}
+MACRO {part} {"\abchapter{3}"}
+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}
+{
+"\newif\ifabfull\abfullfalse" write$ newline$
+"\input apreambl" write$ newline$
+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}
diff --git a/biblio/bibtex/contrib/abstyles-babel/aunsrt.bst b/biblio/bibtex/contrib/abstyles-babel/aunsrt.bst
new file mode 100644
index 0000000000..a610403e42
--- /dev/null
+++ b/biblio/bibtex/contrib/abstyles-babel/aunsrt.bst
@@ -0,0 +1,928 @@
+% BibTeX bibliography style `AUNSRT'
+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
+continue.sentence }
+FUNCTION {init.state.consts}
+{ #0 'before.all :=
+#1 'mid.sentence :=
+#2 'after.sentence :=
+#3 'after.block :=
+#4 'continue.sentence :=
+}
+STRINGS { s t }
+FUNCTION {output.nonnull}
+{ 's :=
+output.state continue.sentence =
+{ " " * write$ }
+{ 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$
+}
+if$
+continue.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 {new.clause}
+{ output.state after.sentence =
+'skip$
+{ output.state after.block =
+'skip$
+{ output.state before.all =
+'skip$
+{ mid.sentence 'output.state := }
+if$
+}
+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 {new.clause.checka}
+{ empty$
+'skip$
+'new.clause
+if$
+}
+FUNCTION {new.clause.checkb}
+{ empty$
+swap$ empty$
+and
+'skip$
+'new.clause
+if$
+}
+FUNCTION {field.or.null}
+{ duplicate$ empty$
+{ pop$ "" }
+'skip$
+if$
+}
+FUNCTION {emphasize}
+{ duplicate$ empty$
+{ pop$ "" }
+{ "\abtype{2}{" swap$ * "}" * }
+if$
+}
+FUNCTION {capitalize}
+{ duplicate$ empty$
+{ pop$ "" }
+{ "\abtype{0}{" swap$ * "}" * }
+if$
+}
+FUNCTION {boldface}
+{ duplicate$ empty$
+{ pop$ "" }
+{ "\abtype{3}{" swap$ * "}" * }
+if$
+}
+FUNCTION {quote}
+{ duplicate$ empty$
+{ pop$ "" }
+{ "\abtype{1}{" swap$ * "}" * }
+if$
+}
+FUNCTION {parentheses}
+{ duplicate$ empty$
+{ pop$ "" }
+{ "\abtype{5}{" 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 >
+{ "\abphrase{1}" * }
+'skip$
+if$
+t "others" =
+{ "\abphrase{2}" * }
+{ "\abphrase{0}" * t * }
+if$
+}
+if$
+}
+'t
+if$
+nameptr #1 + 'nameptr :=
+namesleft #1 - 'namesleft :=
+}
+while$
+}
+FUNCTION {format.authors}
+{ author empty$
+{ "" }
+{ author format.names capitalize }
+if$
+}
+FUNCTION {format.editors}
+{ editor empty$
+{ "" }
+{ editor format.names capitalize
+editor num.names$ #1 >
+{ "\abphrase{3}" * }
+{ "\abphrase{4}" * }
+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 parentheses
+}
+if$
+}
+{ month empty$
+{ year parentheses }
+{ month " " * year * parentheses }
+if$
+}
+if$
+}
+FUNCTION {format.btitle}
+{ title quote
+}
+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$
+{ "" }
+{ "\abphrase{8}" volume tie.or.space.connect
+series empty$
+'skip$
+{ "\abphrase{5}" * series quote * }
+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 = output.state continue.sentence = or
+{ "\abphrase{10}" }
+{ "\abphrase{11}" }
+if$
+number tie.or.space.connect
+series empty$
+{ "there's a number but no series in " cite$ * warning$ }
+{ "\abphrase{6}" * series * }
+if$
+}
+if$
+}
+{ "" }
+if$
+}
+FUNCTION {format.edition}
+{ edition empty$
+{ "" }
+{ output.state mid.sentence = output.state continue.sentence = or
+{ edition "l" change.case$ "\abphrase{12}" * }
+{ edition "t" change.case$ "\abphrase{12}" * }
+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
+{ "\abphrase{13}" pages n.dashify tie.or.space.connect }
+{ "\abphrase{14}" pages tie.or.space.connect }
+if$
+}
+if$
+}
+FUNCTION {format.vol.num.pages}
+{ volume field.or.null boldface
+number empty$
+'skip$
+{ "\abtype{4}{" 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$
+{ "\abphrase{15}" }
+{ 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$
+{ "\abphrase{7}" booktitle quote * }
+{ "\abphrase{7}" format.editors * ", " * booktitle quote * }
+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$
+{ "\abphrase{16}" }
+'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$
+""
+}
+{ "\abphrase{7}" journal emphasize * }
+if$
+}
+{ "\abphrase{7}" key * }
+if$
+" \cite{" * crossref * "}" *
+}
+FUNCTION {format.crossref.editor}
+{ editor #1 "{vv~}{ll}" format.name$
+editor num.names$ duplicate$
+#2 >
+{ pop$ "\abphrase{2}" * }
+{ #2 <
+'skip$
+{ editor #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =
+{ "\abphrase{2}" * }
+{ "\abphrase{0}" * editor #2 "{vv~}{ll}" format.name$ * }
+if$
+}
+if$
+}
+if$
+}
+FUNCTION {format.book.crossref}
+{ volume empty$
+{ "empty volume in " cite$ * "'s crossref of " * crossref * warning$
+"\abphrase{7}"
+}
+{ "\abphrase{9}" volume tie.or.space.connect
+"\abphrase{5}" *
+}
+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$
+"" *
+}
+{ series quote * }
+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$
+""
+}
+{ "\abphrase{7}" booktitle quote * }
+if$
+}
+{ "\abphrase{7}" key * }
+if$
+}
+{ "\abphrase{7}" 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
+new.clause
+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$
+{ new.clause
+format.bvolume output
+new.block
+format.number.series output
+new.sentence
+publisher "publisher" output.check
+address new.clause.checka
+address output
+}
+{ new.block
+format.book.crossref output.nonnull
+}
+if$
+edition new.clause.checka
+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 new.clause.checka
+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
+new.clause
+crossref missing$
+{ format.bvolume output
+new.clause
+format.chapter.pages "chapter and pages" output.check
+new.block
+format.number.series output
+new.sentence
+publisher "publisher" output.check
+address new.clause.checka
+address output
+}
+{ format.chapter.pages "chapter and pages" output.check
+new.block
+format.book.crossref output.nonnull
+}
+if$
+edition new.clause.checka
+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
+new.clause
+format.bvolume output
+new.clause
+format.number.series output
+new.clause
+format.chapter.pages output
+new.sentence
+publisher "publisher" output.check
+address new.clause.checka
+address output
+edition new.clause.checka
+format.edition output
+format.date "year" output.check
+}
+{ format.incoll.inproc.crossref output.nonnull
+new.clause
+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
+volume new.clause.checka
+format.bvolume output
+number series new.clause.checkb
+format.number.series output
+pages new.clause.checka
+format.pages output
+address empty$
+{ organization publisher new.sentence.checkb
+organization output
+publisher new.clause.checka
+publisher output
+format.date "year" output.check
+}
+{ new.clause
+address output.nonnull
+format.date "year" output.check
+new.sentence
+organization output
+new.clause
+publisher output
+}
+if$
+}
+{ format.incoll.inproc.crossref output.nonnull
+new.clause
+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
+new.clause
+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 new.clause.checka
+address output
+}
+if$
+edition new.clause.checka
+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
+"\abphrase{17}" format.thesis.type output.nonnull
+new.clause
+school "school" output.check
+address new.clause.checka
+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
+"\abphrase{18}" format.thesis.type output.nonnull
+new.clause
+school "school" output.check
+address new.clause.checka
+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
+volume new.clause.checka
+format.bvolume output
+number series new.clause.checkb
+format.number.series output
+address empty$
+{ editor empty$
+{ publisher new.sentence.checka }
+{ organization publisher new.sentence.checkb
+organization output
+publisher new.clause.checka
+}
+if$
+publisher output
+format.date "year" output.check
+}
+{ new.clause
+address output.nonnull
+format.date "year" output.check
+new.sentence
+editor empty$
+'skip$
+{ organization output
+new.clause
+}
+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
+new.clause
+institution "institution" output.check
+address new.clause.checka
+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} {"\abmonth{1}"}
+MACRO {feb} {"\abmonth{2}"}
+MACRO {mar} {"\abmonth{3}"}
+MACRO {apr} {"\abmonth{4}"}
+MACRO {may} {"\abmonth{5}"}
+MACRO {jun} {"\abmonth{6}"}
+MACRO {jul} {"\abmonth{7}"}
+MACRO {aug} {"\abmonth{8}"}
+MACRO {sep} {"\abmonth{9}"}
+MACRO {oct} {"\abmonth{10}"}
+MACRO {nov} {"\abmonth{11}"}
+MACRO {dec} {"\abmonth{12}"}
+MACRO {first} {"\abedition{1}"}
+MACRO {second} {"\abedition{2}"}
+MACRO {third} {"\abedition{3}"}
+MACRO {fourth} {"\abedition{4}"}
+MACRO {fifth} {"\abedition{5}"}
+MACRO {sixth} {"\abedition{6}"}
+MACRO {seventh} {"\abedition{7}"}
+MACRO {eighth} {"\abedition{8}"}
+MACRO {ninth} {"\abedition{9}"}
+MACRO {tenth} {"\abedition{10}"}
+MACRO {section} {"\abchapter{0}"}
+MACRO {paragraph} {"\abchapter{1}"}
+MACRO {appendix} {"\abchapter{2}"}
+MACRO {part} {"\abchapter{3}"}
+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}
+{
+"\newif\ifabfull\abfulltrue" write$ newline$
+"\input apreambl" write$ newline$
+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}