summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/bibtex/bst/directory
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2006-01-09 00:33:43 +0000
committerKarl Berry <karl@freefriends.org>2006-01-09 00:33:43 +0000
commitf9e662abcd4764ed15dc598ff609d220e8382038 (patch)
treeb17660efa88c33d0b82b8fc0fd083ebf1e3d1d65 /Master/texmf-dist/bibtex/bst/directory
parent812777721ecd6065f14355d9df911ab2e7f2050d (diff)
texmf-dist/bibtex
git-svn-id: svn://tug.org/texlive/trunk@71 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/bibtex/bst/directory')
-rw-r--r--Master/texmf-dist/bibtex/bst/directory/address-html.bst791
-rw-r--r--Master/texmf-dist/bibtex/bst/directory/address.bst767
-rw-r--r--Master/texmf-dist/bibtex/bst/directory/email-html.bst361
-rw-r--r--Master/texmf-dist/bibtex/bst/directory/letter.bst272
-rw-r--r--Master/texmf-dist/bibtex/bst/directory/phone.bst487
5 files changed, 2678 insertions, 0 deletions
diff --git a/Master/texmf-dist/bibtex/bst/directory/address-html.bst b/Master/texmf-dist/bibtex/bst/directory/address-html.bst
new file mode 100644
index 00000000000..b2b49f34659
--- /dev/null
+++ b/Master/texmf-dist/bibtex/bst/directory/address-html.bst
@@ -0,0 +1,791 @@
+%% address-html.bst
+%% Copyright 1999-2000 Christophe Geuzaine
+%
+% Last Mod by Christophe on Sun Aug 27 21:10:54 2000
+%
+% This program can be redistributed and/or modified under the terms
+% of the LaTeX Project Public License distributed from CTAN
+% archives in directory macros/latex/base/lppl.txt; either
+% version 1 of the License, or (at your option) any later version.
+%
+% BibTeX bibliography style `address-html.bst'
+% 'directory' database: all fields
+%
+% Christophe.Geuzaine@advalvas.be
+%
+% Last modified 08/06/1999
+%
+% This is definitively a hack...
+%
+% The parts you may want to customize are labeled with "CUSTOM"
+%
+
+INTEGERS { nameptr namesleft numnames numaux len }
+STRINGS { s t u v }
+
+% ------------------------------------------------------------
+% E N T R I E S
+% ------------------------------------------------------------
+
+ENTRY
+ { name
+ nickname
+ birthday
+ birthyear
+ address
+ phone
+ cellular
+ fax
+ email
+ url
+ account
+ p.address
+ p.phone
+ p.cellular
+ p.fax
+ p.email
+ p.url
+ p.account
+ r.address
+ r.phone
+ r.cellular
+ r.fax
+ r.email
+ r.url
+ r.account
+ w.title
+ w.name
+ w.address
+ w.phone
+ w.cellular
+ w.fax
+ w.email
+ w.url
+ w.account
+ note
+ }
+ {}
+ { birthday.str
+ private.str
+ residence.str
+ work.str
+ note.str
+ and.str
+ nickname.str
+ address.str
+ phone.str
+ cellular.str
+ fax.str
+ email.str
+ url.str
+ account.str
+ title.str
+ name.str
+ }
+
+
+% ------------------------------------------------------------
+% G E N E R A L
+% ------------------------------------------------------------
+
+FUNCTION {init.strings}
+{
+
+% CUSOTM this is the 'html' equivalent for the \dirXXX customization
+% commands
+
+ "<dt>&nbsp;&nbsp;&nbsp;&nbsp;<em>birthday</em></dt>" 'birthday.str :=
+ "<dt>&nbsp;&nbsp;&nbsp;&nbsp;<em>home</em></dt>" 'private.str :=
+ "<dt>&nbsp;&nbsp;&nbsp;&nbsp;<em>residence</em></dt>" 'residence.str :=
+ "<dt>&nbsp;&nbsp;&nbsp;&nbsp;<em>workplace</em></dt>" 'work.str :=
+ "<dt>&nbsp;&nbsp;&nbsp;&nbsp;<em>note</em></dt>" 'note.str :=
+
+ " and " 'and.str :=
+ " aka " 'nickname.str :=
+ "" 'address.str :=
+ "Phn: " 'phone.str :=
+ "GSM: " 'cellular.str :=
+ "Fax: " 'fax.str :=
+ "" 'email.str :=
+ "" 'url.str :=
+ "Account: " 'account.str :=
+ "" 'title.str :=
+ "" 'name.str :=
+}
+
+FUNCTION {output.nonnull}
+{ 's :=
+ write$
+ newline$
+ "<dd> " write$
+ s
+}
+
+FUNCTION {output}
+{ duplicate$ empty$
+ 'pop$
+ 'output.nonnull
+ if$
+}
+
+FUNCTION {not}
+{ { #0 }
+ { #1 }
+ if$
+}
+
+FUNCTION {and}
+{ 'skip$
+ { pop$ #0 }
+ if$
+}
+
+FUNCTION {or}
+{ { pop$ #1 }
+ 'skip$
+ if$
+}
+
+FUNCTION {chop.word}
+{ 's :=
+ 'len :=
+ s #1 len substring$ =
+ { s len #1 + global.max$ substring$ }
+ 's
+ if$
+}
+
+FUNCTION {emailize}
+{ duplicate$ empty$
+ { pop$ "" }
+ { "<A HREF=" quote$ * "mailto:" * swap$ * quote$ * " >" * swap$ * "</A>" * }
+ if$
+}
+
+FUNCTION {urlize}
+{ duplicate$ empty$
+ { pop$ "" }
+ { "<A HREF=" quote$ * swap$ * quote$ * " >" * swap$ * "</A>" * }
+ if$
+}
+
+FUNCTION {ttize}
+{ duplicate$ empty$
+ { pop$ "" }
+ { "<tt>" swap$ * "</tt>" * }
+ if$
+}
+
+% ------------------------------------------------------------
+% S O R T I N G F U N C T I O N S
+% ------------------------------------------------------------
+
+FUNCTION {sortify}
+{ purify$
+ "l" change.case$
+}
+
+FUNCTION {sort.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.raw.names}
+{ 't :=
+ "A " #2 "L'" #2
+ "An " #3 "Au " #3 "Le " #3 "La " #3
+ "The " #4 "Les " #4 "Aux " #4
+ t
+ chop.word chop.word
+ chop.word chop.word chop.word chop.word
+ chop.word chop.word chop.word
+ sortify
+ #1 global.max$ substring$
+}
+
+FUNCTION {name.sort}
+{ name empty$
+ { " Name field missing in entry '" cite$ * "'" * warning$ "" }
+ { name sort.names }
+ if$
+}
+
+FUNCTION {raw.name.sort}
+{ name empty$
+ { " Name field missing in entry '" cite$ * "'" * warning$ "" }
+ { name sort.raw.names }
+ if$
+}
+
+FUNCTION {presort}
+{ type$ "company" =
+ type$ "place" =
+ or
+ { raw.name.sort }
+ { name.sort }
+ if$
+ " "
+ *
+ #1 entry.max$ substring$
+ 'sort.key$ :=
+}
+
+% ------------------------------------------------------------
+% P R E - A N D P O S T - H E A D E R S
+% ------------------------------------------------------------
+
+FUNCTION {begin.bib}
+{ "<HTML><!-- This is a file generated by the LaTeX directory package -->" write$
+ newline$
+ "<TITLE>Address Book (generated by the LaTeX directory package)</TITLE>" write$
+ newline$
+}
+
+FUNCTION {end.bib}
+{ newline$
+ "<p><hr><center><font size=-1>This address book was generated by <A HREF= " write$
+ quote$ "http://www.geuz.org/directory/" * quote$ * write$
+ " >directory</A>, version 1.15</center></HTML>" write$
+ newline$
+}
+
+% ------------------------------------------------------------
+% F O R M A T S
+% ------------------------------------------------------------
+
+FUNCTION {format.names}
+{ 's :=
+ #1 'nameptr :=
+ s num.names$ 'numnames :=
+ numnames 'namesleft :=
+ { namesleft #0 > }
+ {
+% CUSTOM uncomment one of the following lines to have the behaviour on the right
+ s nameptr "{ff{ } }{vv{ } }{ll{ }}{, jj{ }}" format.name$ 't := % Christophe de Geuzaine, jr
+% s nameptr "{f.{ } }{vv{ } }{ll{ }}{, jj{ }}" format.name$ 't := % C. de Geuzaine, jr
+% s nameptr "{vv{ } }{ll{ }}{ f.{ }}{, jj{ }}" format.name$ 't := % de Geuzaine C., jr
+% s nameptr "{vv{ } }{ll{ }}{, ff{ }}{, jj{ }}" format.name$ 't := % de Geuzaine, Christophe, jr
+
+ nameptr #1 >
+ { namesleft #1 >
+ { ", " * t * }
+ { and.str * t * }
+ if$
+ }
+ 't
+ if$
+ nameptr #1 + 'nameptr :=
+ namesleft #1 - 'namesleft :=
+ }
+ while$
+}
+
+
+FUNCTION {format.dates}
+{
+ 's :=
+ #1 'nameptr :=
+ s num.names$ 'numnames :=
+ numnames 'namesleft :=
+
+ birthyear empty$
+ { #0 'numaux := }
+ { birthyear num.names$ 'numaux :=
+ numnames numaux =
+ { }
+ { " birthdays and birthyears don't match in entry '" cite$ * "'" * warning$ }
+ if$
+ }
+ if$
+
+% CUSTOM
+
+ { namesleft #0 > }
+ { s nameptr "{ff}" format.name$ 't :=
+ s nameptr "{ll}" format.name$ 'u :=
+
+ nameptr #1 >
+ { namesleft #1 >
+ { ", " * t * "/" * u * }
+ { and.str * t * "/" * u * }
+ if$
+ }
+ { t "/" * u * }
+ if$
+
+ numaux #0 > not
+ { }
+ { birthyear nameptr "{ll}" format.name$ 'v :=
+ "/" * v * }
+ if$
+
+ nameptr #1 + 'nameptr :=
+ namesleft #1 - 'namesleft :=
+ numaux #1 - 'numaux :=
+ }
+ while$
+}
+
+FUNCTION {format.years}
+{
+ 's :=
+ #1 'nameptr :=
+ s num.names$ 'numnames :=
+ numnames 'namesleft :=
+
+ { namesleft #0 > }
+ { s nameptr "{ll}" format.name$ 't :=
+ nameptr #1 >
+ { namesleft #1 >
+ { ", " * t * }
+ { and.str * t * }
+ if$
+ }
+ t
+ if$
+ nameptr #1 + 'nameptr :=
+ namesleft #1 - 'namesleft :=
+ }
+ while$
+}
+
+FUNCTION {format.name}
+{ name empty$
+ { "" }
+ { name format.names }
+ if$
+}
+
+FUNCTION {format.nickname}
+{ nickname empty$
+ { "" }
+ { nickname.str nickname format.names * }
+ if$
+}
+
+FUNCTION {format.birthday.flag}
+{ birthyear empty$ not
+ birthday empty$ not
+ or
+ { birthday.str }
+ { "" }
+ if$
+}
+
+FUNCTION {format.birthday}
+{ birthday empty$
+ {
+ birthyear empty$
+ { "" }
+ { birthyear format.years }
+ if$
+ }
+ { birthday format.dates }
+ if$
+}
+
+FUNCTION {format.address}
+{ address empty$
+ { "" }
+ { address.str address * }
+ if$
+}
+
+FUNCTION {format.account}
+{ account empty$
+ { "" }
+ { account.str account ttize * }
+ if$
+}
+
+FUNCTION {format.phone}
+{ phone empty$
+ { "" }
+ { phone.str phone * }
+ if$
+}
+
+FUNCTION {format.cellular}
+{ cellular empty$
+ { "" }
+ { cellular.str cellular * }
+ if$
+}
+
+FUNCTION {format.fax}
+{ fax empty$
+ { "" }
+ { fax.str fax * }
+ if$
+}
+
+FUNCTION {format.email}
+{ email empty$
+ { "" }
+ { email.str email email emailize * }
+ if$
+}
+
+FUNCTION {format.url}
+{ url empty$
+ { "" }
+ { url.str url url urlize * }
+ if$
+}
+
+
+FUNCTION {format.p.flag}
+{ p.address empty$ not
+ p.phone empty$ not
+ p.cellular empty$ not
+ p.fax empty$ not
+ p.email empty$ not
+ p.url empty$ not
+ p.account empty$ not
+ or or or or or or
+ { private.str }
+ { "" }
+ if$
+}
+
+FUNCTION {format.p.address}
+{ p.address empty$
+ { "" }
+ { address.str p.address * }
+ if$
+}
+
+FUNCTION {format.p.phone}
+{ p.phone empty$
+ { "" }
+ { phone.str p.phone * }
+ if$
+}
+
+FUNCTION {format.p.cellular}
+{ p.cellular empty$
+ { "" }
+ { cellular.str p.cellular * }
+ if$
+}
+
+FUNCTION {format.p.fax}
+{ p.fax empty$
+ { "" }
+ { fax.str p.fax * }
+ if$
+}
+
+FUNCTION {format.p.email}
+{ p.email empty$
+ { "" }
+ { email.str p.email p.email emailize * }
+ if$
+}
+
+FUNCTION {format.p.url}
+{ p.url empty$
+ { "" }
+ { url.str p.url p.url urlize * }
+ if$
+}
+
+FUNCTION {format.p.account}
+{ p.account empty$
+ { "" }
+ { account.str p.account ttize * }
+ if$
+}
+
+FUNCTION {format.r.flag}
+{ r.address empty$ not
+ r.phone empty$ not
+ r.cellular empty$ not
+ r.fax empty$ not
+ r.email empty$ not
+ r.url empty$ not
+ r.account empty$ not
+ or or or or or or
+ { residence.str }
+ { "" }
+ if$
+}
+
+FUNCTION {format.r.address}
+{ r.address empty$
+ { "" }
+ { address.str r.address * }
+ if$
+}
+
+FUNCTION {format.r.phone}
+{ r.phone empty$
+ { "" }
+ { phone.str r.phone * }
+ if$
+}
+
+FUNCTION {format.r.cellular}
+{ r.cellular empty$
+ { "" }
+ { cellular.str r.cellular * }
+ if$
+}
+
+FUNCTION {format.r.fax}
+{ r.fax empty$
+ { "" }
+ { fax.str r.fax * }
+ if$
+}
+
+FUNCTION {format.r.email}
+{ r.email empty$
+ { "" }
+ { email.str r.email r.email emailize * }
+ if$
+}
+
+FUNCTION {format.r.url}
+{ r.url empty$
+ { "" }
+ { url.str r.url r.url urlize * }
+ if$
+}
+
+FUNCTION {format.r.account}
+{ r.account empty$
+ { "" }
+ { account.str r.account ttize * }
+ if$
+}
+
+FUNCTION {format.w.flag}
+{ w.title empty$ not
+ w.name empty$ not
+ w.address empty$ not
+ w.phone empty$ not
+ w.cellular empty$ not
+ w.fax empty$ not
+ w.email empty$ not
+ w.url empty$ not
+ w.account empty$ not
+ or or or or or or or or
+ { work.str }
+ { "" }
+ if$
+}
+
+FUNCTION {format.w.title}
+{ w.title empty$
+ { "" }
+ { title.str w.title * }
+ if$
+}
+
+FUNCTION {format.w.name}
+{ w.name empty$
+ { "" }
+ { name.str w.name * }
+ if$
+}
+
+FUNCTION {format.w.address}
+{ w.address empty$
+ { "" }
+ { address.str w.address * }
+ if$
+}
+
+FUNCTION {format.w.phone}
+{ w.phone empty$
+ { "" }
+ { phone.str w.phone * }
+ if$
+}
+
+FUNCTION {format.w.cellular}
+{ w.cellular empty$
+ { "" }
+ { cellular.str w.cellular * }
+ if$
+}
+
+FUNCTION {format.w.fax}
+{ w.fax empty$
+ { "" }
+ { fax.str w.fax * }
+ if$
+}
+
+FUNCTION {format.w.email}
+{ w.email empty$
+ { "" }
+ { email.str w.email w.email emailize * }
+ if$
+}
+
+FUNCTION {format.w.url}
+{ w.url empty$
+ { "" }
+ { url.str w.url w.url urlize * }
+ if$
+}
+
+FUNCTION {format.w.account}
+{ w.account empty$
+ { "" }
+ { account.str w.account ttize * }
+ if$
+}
+
+FUNCTION {format.note.flag}
+{ note empty$
+ { "" }
+ { note.str }
+ if$
+}
+
+FUNCTION {format.note}
+{ note empty$
+ { "" }
+ { note }
+ if$
+}
+
+
+% ------------------------------------------------------------
+% P E R S O N E N T R Y
+% ------------------------------------------------------------
+
+FUNCTION { person }
+{
+ init.strings
+ newline$
+ "<p><dt><b>" write$
+ format.name write$
+ "</b></dt>" write$
+
+ format.nickname write$
+
+ ""
+ format.birthday.flag output
+ format.birthday output
+
+ format.p.flag output
+ format.p.address output
+ format.p.phone output
+ format.p.cellular output
+ format.p.fax output
+ format.p.email output
+ format.p.url output
+ format.p.account output
+
+ format.r.flag output
+ format.r.address output
+ format.r.phone output
+ format.r.cellular output
+ format.r.fax output
+ format.r.email output
+ format.r.url output
+ format.r.account output
+
+ format.w.flag output
+ format.w.title output
+ format.w.name output
+ format.w.address output
+ format.w.phone output
+ format.w.cellular output
+ format.w.fax output
+ format.w.email output
+ format.w.url output
+ format.w.account output
+
+ format.note.flag output
+ format.note output
+
+ write$
+ newline$
+}
+
+% ------------------------------------------------------------
+% C O M P A N Y E N T R Y
+% ------------------------------------------------------------
+
+
+FUNCTION { company }
+{
+ init.strings
+ newline$
+ "<p><dt><b>" write$
+ name write$
+ "</b></dt><dd>" write$
+
+ ""
+ format.address output
+ format.phone output
+ format.cellular output
+ format.fax output
+ format.email output
+ format.url output
+ format.account output
+ format.note.flag output
+ format.note output
+
+ write$
+ newline$
+}
+
+% ------------------------------------------------------------
+% P L A C E E N T R Y
+% ------------------------------------------------------------
+
+FUNCTION { place }
+{
+ init.strings
+ newline$
+ "<p><dt><b>" write$
+ name write$
+ "</b></dt><dd>" write$
+
+ ""
+ format.address output
+ format.phone output
+ format.cellular output
+ format.fax output
+ format.note.flag output
+ format.note output
+
+ write$
+ newline$
+}
+
+% ------------------------------------------------------------
+% M A I N
+% ------------------------------------------------------------
+
+READ
+ITERATE {presort}
+SORT
+EXECUTE {begin.bib}
+ITERATE {call.type$}
+EXECUTE {end.bib}
+
diff --git a/Master/texmf-dist/bibtex/bst/directory/address.bst b/Master/texmf-dist/bibtex/bst/directory/address.bst
new file mode 100644
index 00000000000..8f692899926
--- /dev/null
+++ b/Master/texmf-dist/bibtex/bst/directory/address.bst
@@ -0,0 +1,767 @@
+%% address.bst
+%% Copyright 1999-2000 Christophe Geuzaine
+%
+% Last Mod by Christophe on Sun Aug 27 21:07:56 2000
+%
+% This program can be redistributed and/or modified under the terms
+% of the LaTeX Project Public License distributed from CTAN
+% archives in directory macros/latex/base/lppl.txt; either
+% version 1 of the License, or (at your option) any later version.
+%
+% BibTeX bibliography style `address.bst'
+% 'directory' database: all fields
+%
+% Christophe.Geuzaine@advalvas.be
+%
+% The parts you may want to customize are labeled with "CUSTOM"
+%
+
+INTEGERS { nameptr namesleft numnames numaux len }
+STRINGS { s t u v }
+
+% ------------------------------------------------------------
+% E N T R I E S
+% ------------------------------------------------------------
+
+ENTRY
+ { name
+ nickname
+ birthday
+ birthyear
+ address
+ phone
+ cellular
+ fax
+ email
+ url
+ account
+ p.address
+ p.phone
+ p.cellular
+ p.fax
+ p.email
+ p.url
+ p.account
+ r.address
+ r.phone
+ r.cellular
+ r.fax
+ r.email
+ r.url
+ r.account
+ w.title
+ w.name
+ w.address
+ w.phone
+ w.cellular
+ w.fax
+ w.email
+ w.url
+ w.account
+ note
+ }
+ {}
+ { label
+ letter
+ }
+
+% ------------------------------------------------------------
+% G E N E R A L
+% ------------------------------------------------------------
+
+FUNCTION {output}
+{ 's :=
+ s empty$
+ {}
+ { s write$
+ newline$
+ "\dirblock" write$
+ newline$
+ }
+ if$
+}
+
+FUNCTION {output.flag}
+{ 's :=
+ s empty$
+ {}
+ { s write$
+ newline$
+ }
+ if$
+}
+
+
+FUNCTION {not}
+{ { #0 }
+ { #1 }
+ if$
+}
+
+FUNCTION {and}
+{ 'skip$
+ { pop$ #0 }
+ if$
+}
+
+FUNCTION {or}
+{ { pop$ #1 }
+ 'skip$
+ if$
+}
+
+FUNCTION {chop.word}
+{ 's :=
+ 'len :=
+ s #1 len substring$ =
+ { s len #1 + global.max$ substring$ }
+ 's
+ if$
+}
+
+% ------------------------------------------------------------
+% S O R T I N G F U N C T I O N S
+% ------------------------------------------------------------
+
+FUNCTION {sortify}
+{ purify$
+ "l" change.case$
+}
+
+FUNCTION {sort.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.raw.names}
+{ 't :=
+ "A " #2 "L'" #2
+ "An " #3 "Au " #3 "Le " #3 "La " #3
+ "The " #4 "Les " #4 "Aux " #4
+ t
+ chop.word chop.word
+ chop.word chop.word chop.word chop.word
+ chop.word chop.word chop.word
+ sortify
+ #1 global.max$ substring$
+}
+
+FUNCTION {name.sort}
+{ name empty$
+ { " Name field missing in entry '" cite$ * "'" * warning$ "" }
+ { name sort.names }
+ if$
+}
+
+FUNCTION {raw.name.sort}
+{ name empty$
+ { " Name field missing in entry '" cite$ * "'" * warning$ "" }
+ { name sort.raw.names }
+ if$
+}
+
+FUNCTION {presort}
+{ type$ "company" =
+ type$ "place" =
+ or
+ { raw.name.sort }
+ { name.sort }
+ if$
+ " "
+ *
+ #1 entry.max$ substring$
+ 'sort.key$ :=
+}
+
+FUNCTION {format.first.letter}
+{ type$ "company" =
+ type$ "place" =
+ or
+ { raw.name.sort }
+ { name.sort }
+ if$
+ #1 #1 substring$
+}
+
+% ------------------------------------------------------------
+% P R E - A N D P O S T - H E A D E R S
+% ------------------------------------------------------------
+
+FUNCTION {begin.bib}
+{ "\begin{theaddressbook}" write$
+ newline$
+}
+
+FUNCTION {end.bib}
+{ newline$
+ "\end{theaddressbook}" write$
+ newline$
+}
+
+% ------------------------------------------------------------
+% F O R M A T S
+% ------------------------------------------------------------
+
+FUNCTION {format.names}
+{ 's :=
+ #1 'nameptr :=
+ s num.names$ 'numnames :=
+ numnames 'namesleft :=
+ { namesleft #0 > }
+ {
+% CUSTOM uncomment one of the following lines to have the behaviour on the right
+ s nameptr "{ff }{vv }{ll}{, jj}" format.name$ 't := % Christophe de Geuzaine, jr
+% s nameptr "{f. }{vv }{ll}{, jj}" format.name$ 't := % C. de Geuzaine, jr
+% s nameptr "{vv }{ll}{ f.}{, jj}" format.name$ 't := % de Geuzaine C., jr
+% s nameptr "{vv }{ll}{, ff}{, jj}" format.name$ 't := % de Geuzaine, Christophe, jr
+
+ nameptr #1 >
+ { namesleft #1 >
+ { ", " * t * }
+ { " {\dirandf} " * t * }
+ if$
+ }
+ 't
+ if$
+ nameptr #1 + 'nameptr :=
+ namesleft #1 - 'namesleft :=
+ }
+ while$
+}
+
+
+FUNCTION {format.dates}
+{
+ 's :=
+ #1 'nameptr :=
+ s num.names$ 'numnames :=
+ numnames 'namesleft :=
+
+ birthyear empty$
+ { #0 'numaux := }
+ { birthyear num.names$ 'numaux :=
+ numnames numaux =
+ { }
+ { " birthdays and birthyears don't match in entry '" cite$ * "'" * warning$ }
+ if$
+ }
+ if$
+
+% CUSTOM you shoudn't change this, but rather redefine the command \Dirbirthday.
+
+ { namesleft #0 > }
+ { s nameptr "{ff}" format.name$ 't :=
+ s nameptr "{ll}" format.name$ 'u :=
+
+ nameptr #1 >
+ { namesleft #1 >
+ { ", \dirbira{" * t * "}{" * u * "}" * }
+ { " {\dirandf} \dirbira{" * t * "}{" * u * "}" * }
+ if$
+ }
+ { "\dirbira{" t * "}{" * u * "}" * }
+ if$
+
+ numaux #0 > not
+ { }
+ { birthyear nameptr "{ll}" format.name$ 'v :=
+ "\dirbiya{" * v * "}" * }
+ if$
+
+ nameptr #1 + 'nameptr :=
+ namesleft #1 - 'namesleft :=
+ numaux #1 - 'numaux :=
+ }
+ while$
+}
+
+FUNCTION {format.years}
+{
+ 's :=
+ #1 'nameptr :=
+ s num.names$ 'numnames :=
+ numnames 'namesleft :=
+
+ { namesleft #0 > }
+ { s nameptr "{ll}" format.name$ 't :=
+ nameptr #1 >
+ { namesleft #1 >
+ { ", \dirbyra{" * t * "}" * }
+ { " {\dirandf} \dirbyra{" * t * "}" * }
+ if$
+ }
+ { "\dirbyra{" t * "}" * }
+ if$
+ nameptr #1 + 'nameptr :=
+ namesleft #1 - 'namesleft :=
+ }
+ while$
+}
+
+FUNCTION {format.name}
+{ name empty$
+ { "" }
+ { name format.names }
+ if$
+}
+
+FUNCTION {format.nickname}
+{ nickname empty$
+ { "" }
+ { newline$
+ "\dirnica{" nickname format.names "}" * * }
+ if$
+}
+
+FUNCTION {format.birthday.flag}
+{ birthyear empty$ not
+ birthday empty$ not
+ or
+ { "\dirbirf" }
+ { "" }
+ if$
+}
+
+FUNCTION {format.birthday}
+{ birthday empty$
+ {
+ birthyear empty$
+ { "" }
+ { birthyear format.years }
+ if$
+ }
+ { birthday format.dates }
+ if$
+}
+
+FUNCTION {format.address}
+{ address empty$
+ { "" }
+ { "\diradda{" address "}" * * }
+ if$
+}
+
+FUNCTION {format.account}
+{ account empty$
+ { "" }
+ { "\diracca{" account "}" * * }
+ if$
+}
+
+FUNCTION {format.phone}
+{ phone empty$
+ { "" }
+ { "\dirphoa{" phone "}" * * }
+ if$
+}
+
+FUNCTION {format.cellular}
+{ cellular empty$
+ { "" }
+ { "\dircela{" cellular "}" * * }
+ if$
+}
+
+FUNCTION {format.fax}
+{ fax empty$
+ { "" }
+ { "\dirfaxa{" fax "}" * * }
+ if$
+}
+
+FUNCTION {format.email}
+{ email empty$
+ { "" }
+ { "\diremaa{" email "}" * * }
+ if$
+}
+
+FUNCTION {format.url}
+{ url empty$
+ { "" }
+ { "\dirurla{" url "}" * * }
+ if$
+}
+
+
+FUNCTION {format.p.flag}
+{ p.address empty$ not
+ p.phone empty$ not
+ p.cellular empty$ not
+ p.fax empty$ not
+ p.email empty$ not
+ p.url empty$ not
+ p.account empty$ not
+ or or or or or or
+ { "\dirprif" }
+ { "" }
+ if$
+}
+
+FUNCTION {format.p.address}
+{ p.address empty$
+ { "" }
+ { "\dirpadda{" p.address "}" * * }
+ if$
+}
+
+FUNCTION {format.p.phone}
+{ p.phone empty$
+ { "" }
+ { "\dirpphoa{" p.phone "}" * * }
+ if$
+}
+
+FUNCTION {format.p.cellular}
+{ p.cellular empty$
+ { "" }
+ { "\dirpcela{" p.cellular "}" * * }
+ if$
+}
+
+FUNCTION {format.p.fax}
+{ p.fax empty$
+ { "" }
+ { "\dirpfaxa{" p.fax "}" * * }
+ if$
+}
+
+FUNCTION {format.p.email}
+{ p.email empty$
+ { "" }
+ { "\dirpemaa{" p.email "}" * * }
+ if$
+}
+
+FUNCTION {format.p.url}
+{ p.url empty$
+ { "" }
+ { "\dirpurla{" p.url "}" * * }
+ if$
+}
+
+FUNCTION {format.p.account}
+{ p.account empty$
+ { "" }
+ { "\dirpacca{" p.account "}" * * }
+ if$
+}
+
+FUNCTION {format.r.flag}
+{ r.address empty$ not
+ r.phone empty$ not
+ r.cellular empty$ not
+ r.fax empty$ not
+ r.email empty$ not
+ r.url empty$ not
+ r.account empty$ not
+ or or or or or or
+ { "\dirresf" }
+ { "" }
+ if$
+}
+
+FUNCTION {format.r.address}
+{ r.address empty$
+ { "" }
+ { "\dirradda{" r.address "}" * * }
+ if$
+}
+
+FUNCTION {format.r.phone}
+{ r.phone empty$
+ { "" }
+ { "\dirrphoa{" r.phone "}" * * }
+ if$
+}
+
+FUNCTION {format.r.cellular}
+{ r.cellular empty$
+ { "" }
+ { "\dirrcela{" r.cellular "}" * * }
+ if$
+}
+
+FUNCTION {format.r.fax}
+{ r.fax empty$
+ { "" }
+ { "\dirrfaxa{" r.fax "}" * * }
+ if$
+}
+
+FUNCTION {format.r.email}
+{ r.email empty$
+ { "" }
+ { "\dirremaa{" r.email "}" * * }
+ if$
+}
+
+FUNCTION {format.r.url}
+{ r.url empty$
+ { "" }
+ { "\dirrurla{" r.url "}" * * }
+ if$
+}
+
+FUNCTION {format.r.account}
+{ r.account empty$
+ { "" }
+ { "\dirracca{" r.account "}" * * }
+ if$
+}
+
+FUNCTION {format.w.flag}
+{ w.title empty$ not
+ w.name empty$ not
+ w.address empty$ not
+ w.phone empty$ not
+ w.cellular empty$ not
+ w.fax empty$ not
+ w.email empty$ not
+ w.url empty$ not
+ w.account empty$ not
+ or or or or or or or or
+ { "\dirworf" }
+ { "" }
+ if$
+}
+
+FUNCTION {format.w.title}
+{ w.title empty$
+ { "" }
+ { "\dirtita{" w.title "}" * * }
+ if$
+}
+
+FUNCTION {format.w.name}
+{ w.name empty$
+ { "" }
+ { "\dirnama{" w.name "}" * * }
+ if$
+}
+
+FUNCTION {format.w.address}
+{ w.address empty$
+ { "" }
+ { "\dirwadda{" w.address "}" * * }
+ if$
+}
+
+FUNCTION {format.w.phone}
+{ w.phone empty$
+ { "" }
+ { "\dirwphoa{" w.phone "}" * * }
+ if$
+}
+
+FUNCTION {format.w.cellular}
+{ w.cellular empty$
+ { "" }
+ { "\dirwcela{" w.cellular "}" * * }
+ if$
+}
+
+FUNCTION {format.w.fax}
+{ w.fax empty$
+ { "" }
+ { "\dirwfaxa{" w.fax "}" * * }
+ if$
+}
+
+FUNCTION {format.w.email}
+{ w.email empty$
+ { "" }
+ { "\dirwemaa{" w.email "}" * * }
+ if$
+}
+
+FUNCTION {format.w.url}
+{ w.url empty$
+ { "" }
+ { "\dirwurla{" w.url "}" * * }
+ if$
+}
+
+FUNCTION {format.w.account}
+{ w.account empty$
+ { "" }
+ { "\dirwacca{" w.account "}" * * }
+ if$
+}
+
+FUNCTION {format.note.flag}
+{ note empty$
+ { "" }
+ { "\dirnotf" }
+ if$
+}
+
+FUNCTION {format.note}
+{ note empty$
+ { "" }
+ { "\dirnota{" note "}" * * }
+ if$
+}
+
+
+% ------------------------------------------------------------
+% P E R S O N E N T R Y
+% ------------------------------------------------------------
+
+FUNCTION { person }
+{
+ newline$
+
+ "\dircheck{" write$
+ format.first.letter write$
+ "}" write$
+ newline$
+
+ "\diritem[" write$
+ format.name write$
+ "]{" write$
+ "d." cite$ * write$
+ "}\dirgroup" write$
+ format.nickname write$
+ newline$
+ "\dirblock" write$
+ newline$
+
+ format.birthday.flag output.flag
+ format.birthday output
+
+ format.p.flag output.flag
+ format.p.address output
+ format.p.phone output
+ format.p.cellular output
+ format.p.fax output
+ format.p.email output
+ format.p.url output
+ format.p.account output
+
+ format.r.flag output.flag
+ format.r.address output
+ format.r.phone output
+ format.r.cellular output
+ format.r.fax output
+ format.r.email output
+ format.r.url output
+ format.r.account output
+
+ format.w.flag output.flag
+ format.w.title output
+ format.w.name output
+ format.w.address output
+ format.w.phone output
+ format.w.cellular output
+ format.w.fax output
+ format.w.email output
+ format.w.url output
+ format.w.account output
+
+ format.note.flag output.flag
+ format.note output
+
+ "\direndgroup" write$
+ newline$
+}
+
+% ------------------------------------------------------------
+% C O M P A N Y E N T R Y
+% ------------------------------------------------------------
+
+
+FUNCTION { company }
+{
+ newline$
+
+ "\dircheck{" write$
+ format.first.letter write$
+ "}" write$
+ newline$
+
+ "\diritem[" write$
+ name write$
+ "]{" write$
+ "d." cite$ * write$
+ "}\dirgroup" write$
+ newline$
+ "\dirblock" write$
+ newline$
+
+ format.address output
+ format.phone output
+ format.cellular output
+ format.fax output
+ format.email output
+ format.url output
+ format.account output
+ format.note.flag output.flag
+ format.note output
+
+ "\direndgroup" write$
+ newline$
+}
+
+% ------------------------------------------------------------
+% P L A C E E N T R Y
+% ------------------------------------------------------------
+
+FUNCTION { place }
+{
+ newline$
+
+ "\dircheck{" write$
+ format.first.letter write$
+ "}" write$
+ newline$
+
+ "\diritem[" write$
+ name write$
+ "]{" write$
+ "d." cite$ * write$
+ "}\dirgroup" write$
+ newline$
+ "\dirblock" write$
+ newline$
+
+ format.address output
+ format.phone output
+ format.cellular output
+ format.fax output
+ format.note.flag output.flag
+ format.note output
+
+ "\direndgroup" write$
+ newline$
+}
+
+% ------------------------------------------------------------
+% M A I N
+% ------------------------------------------------------------
+
+READ
+ITERATE {presort}
+SORT
+EXECUTE {begin.bib}
+ITERATE {call.type$}
+EXECUTE {end.bib}
+
diff --git a/Master/texmf-dist/bibtex/bst/directory/email-html.bst b/Master/texmf-dist/bibtex/bst/directory/email-html.bst
new file mode 100644
index 00000000000..ef151557491
--- /dev/null
+++ b/Master/texmf-dist/bibtex/bst/directory/email-html.bst
@@ -0,0 +1,361 @@
+%% email-html.bst
+%% Copyright 1999-2000 Christophe Geuzaine
+%
+% Last Mod by Christophe on Sun Aug 27 21:23:27 2000
+%
+% This program can be redistributed and/or modified under the terms
+% of the LaTeX Project Public License distributed from CTAN
+% archives in directory macros/latex/base/lppl.txt; either
+% version 1 of the License, or (at your option) any later version.
+%
+% BibTeX bibliography style `addr-htm.bst'
+% 'directory' database: all fields
+%
+% Christophe.Geuzaine@advalvas.be
+%
+% This is definitively a hack...
+%
+% The parts you may want to customize are labeled with "CUSTOM"
+%
+
+INTEGERS { nameptr namesleft numnames numaux len }
+STRINGS { s t u v }
+
+% ------------------------------------------------------------
+% E N T R I E S
+% ------------------------------------------------------------
+
+ENTRY
+ { name
+ email
+ p.email
+ r.email
+ w.email
+ }
+ {}
+ { private.str
+ residence.str
+ work.str
+ and.str
+ }
+
+
+% ------------------------------------------------------------
+% G E N E R A L
+% ------------------------------------------------------------
+
+FUNCTION {init.strings}
+{
+% CUSOTM this is the 'html' equivalent for the \dirXXX customization
+% commands
+
+ "&nbsp;<em>priv.</em>" 'private.str :=
+ "&nbsp;<em>temp.</em>" 'residence.str :=
+ "&nbsp;<em>prof.</em>" 'work.str :=
+ " and " 'and.str :=
+}
+
+FUNCTION {output.nonnull}
+{ 's :=
+ write$
+ newline$
+ s
+}
+
+FUNCTION {output}
+{ duplicate$ empty$
+ 'pop$
+ 'output.nonnull
+ if$
+}
+
+FUNCTION {not}
+{ { #0 }
+ { #1 }
+ if$
+}
+
+FUNCTION {and}
+{ 'skip$
+ { pop$ #0 }
+ if$
+}
+
+FUNCTION {or}
+{ { pop$ #1 }
+ 'skip$
+ if$
+}
+
+FUNCTION {chop.word}
+{ 's :=
+ 'len :=
+ s #1 len substring$ =
+ { s len #1 + global.max$ substring$ }
+ 's
+ if$
+}
+
+FUNCTION {emailize}
+{ duplicate$ empty$
+ { pop$ "" }
+ { "<A HREF=" quote$ * "mailto:" * swap$ * quote$ * " >" * swap$ * "</A>" * }
+ if$
+}
+
+% ------------------------------------------------------------
+% S O R T I N G F U N C T I O N S
+% ------------------------------------------------------------
+
+FUNCTION {sortify}
+{ purify$
+ "l" change.case$
+}
+
+FUNCTION {sort.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.raw.names}
+{ 't :=
+ "A " #2 "L'" #2
+ "An " #3 "Au " #3 "Le " #3 "La " #3
+ "The " #4 "Les " #4 "Aux " #4
+ t
+ chop.word chop.word
+ chop.word chop.word chop.word chop.word
+ chop.word chop.word chop.word
+ sortify
+ #1 global.max$ substring$
+}
+
+FUNCTION {name.sort}
+{ name empty$
+ { " Name field missing in entry '" cite$ * "'" * warning$ "" }
+ { name sort.names }
+ if$
+}
+
+FUNCTION {raw.name.sort}
+{ name empty$
+ { " Name field missing in entry '" cite$ * "'" * warning$ "" }
+ { name sort.raw.names }
+ if$
+}
+
+FUNCTION {presort}
+{ type$ "company" =
+ type$ "place" =
+ or
+ { raw.name.sort }
+ { name.sort }
+ if$
+ " "
+ *
+ #1 entry.max$ substring$
+ 'sort.key$ :=
+}
+
+% ------------------------------------------------------------
+% P R E - A N D P O S T - H E A D E R S
+% ------------------------------------------------------------
+
+FUNCTION {begin.bib}
+{ "<HTML><!-- This is a file generated by the LaTeX directory package -->" write$
+ newline$
+ "<TITLE>E-mail directory (generated by the LaTeX directory package)</TITLE>" write$
+ newline$
+}
+
+FUNCTION {end.bib}
+{ newline$
+ "<p><hr><center><font size=-1>This e-mail directory was generated by <A HREF= " write$
+ quote$ "http://www.geuz.org/directory/" * quote$ * write$
+ " >directory</A>, version 1.15</center></HTML>" write$
+ newline$
+}
+
+% ------------------------------------------------------------
+% F O R M A T S
+% ------------------------------------------------------------
+
+FUNCTION {format.names}
+{ 's :=
+ #1 'nameptr :=
+ s num.names$ 'numnames :=
+ numnames 'namesleft :=
+ { namesleft #0 > }
+ {
+% CUSTOM uncomment one of the following lines to have the behaviour on the right
+% s nameptr "{ff{ } }{vv{ } }{ll{ }}{, jj{ }}" format.name$ 't := % Christophe de Geuzaine, jr
+% s nameptr "{f.{ } }{vv{ } }{ll{ }}{, jj{ }}" format.name$ 't := % C. de Geuzaine, jr
+% s nameptr "{vv{ } }{ll{ }}{ f.{ }}{, jj{ }}" format.name$ 't := % de Geuzaine C., jr
+ s nameptr "{vv{ } }{ll{ }}{, ff{ }}{, jj{ }}" format.name$ 't := % de Geuzaine, Christophe, jr
+
+ nameptr #1 >
+ { namesleft #1 >
+ { ", " * t * }
+ { and.str * t * }
+ if$
+ }
+ 't
+ if$
+ nameptr #1 + 'nameptr :=
+ namesleft #1 - 'namesleft :=
+ }
+ while$
+}
+
+FUNCTION {format.name}
+{ name empty$
+ { "" }
+ { name format.names }
+ if$
+}
+
+FUNCTION {format.email}
+{ email empty$
+ { "" }
+ { email email emailize }
+ if$
+}
+
+FUNCTION {format.p.flag}
+{ p.email empty$ not
+ { private.str }
+ { "" }
+ if$
+}
+
+FUNCTION {format.p.email}
+{ p.email empty$
+ { "" }
+ { p.email p.email emailize }
+ if$
+}
+
+FUNCTION {format.r.flag}
+{ r.email empty$ not
+ { residence.str }
+ { "" }
+ if$
+}
+
+FUNCTION {format.r.email}
+{ r.email empty$
+ { "" }
+ { r.email r.email emailize }
+ if$
+}
+
+FUNCTION {format.w.flag}
+{ w.email empty$ not
+ { work.str }
+ { "" }
+ if$
+}
+
+FUNCTION {format.w.email}
+{ w.email empty$
+ { "" }
+ { w.email w.email emailize }
+ if$
+}
+
+
+% ------------------------------------------------------------
+% P E R S O N E N T R Y
+% ------------------------------------------------------------
+
+FUNCTION { person }
+{
+ p.email empty$ not
+ r.email empty$ not
+ w.email empty$ not
+ or or
+ { init.strings
+
+ newline$
+ "<br><b>" write$
+ format.name write$
+ "</b>" write$
+
+ ""
+ format.p.flag output
+ format.p.email output
+ format.r.flag output
+ format.r.email output
+ format.w.flag output
+ format.w.email output
+
+ write$
+ newline$
+ }
+ { }
+ if$
+}
+
+% ------------------------------------------------------------
+% C O M P A N Y E N T R Y
+% ------------------------------------------------------------
+
+
+FUNCTION { company }
+{
+ email empty$ not
+ { init.strings
+
+ newline$
+ "<br><b>" write$
+ name write$
+ "</b>" write$
+
+ ""
+ format.email output
+
+ write$
+ newline$
+ }
+ { }
+ if$
+
+}
+
+% ------------------------------------------------------------
+% P L A C E E N T R Y
+% ------------------------------------------------------------
+
+FUNCTION { place }
+{
+}
+
+% ------------------------------------------------------------
+% M A I N
+% ------------------------------------------------------------
+
+READ
+ITERATE {presort}
+SORT
+EXECUTE {begin.bib}
+ITERATE {call.type$}
+EXECUTE {end.bib}
+
diff --git a/Master/texmf-dist/bibtex/bst/directory/letter.bst b/Master/texmf-dist/bibtex/bst/directory/letter.bst
new file mode 100644
index 00000000000..a86270c01dd
--- /dev/null
+++ b/Master/texmf-dist/bibtex/bst/directory/letter.bst
@@ -0,0 +1,272 @@
+%% letter.bst
+%% Copyright 1999-2000 Christophe Geuzaine
+%
+% Last Mod by Christophe on Sun Aug 27 21:24:23 2000
+%
+% This program can be redistributed and/or modified under the terms
+% of the LaTeX Project Public License distributed from CTAN
+% archives in directory macros/latex/base/lppl.txt; either
+% version 1 of the License, or (at your option) any later version.
+%
+% BibTeX bibliography style `letter.bst'
+% 'directory' database: all fields
+%
+% Christophe.Geuzaine@advalvas.be
+%
+% The parts you may want to customize are labeled with "CUSTOM"
+%
+
+INTEGERS { nameptr namesleft numnames numaux len }
+STRINGS { s t u v }
+
+% ------------------------------------------------------------
+% E N T R I E S
+% ------------------------------------------------------------
+
+ENTRY
+ { name
+ address
+ p.address
+ r.address
+ w.title
+ w.name
+ w.address
+ }
+ {}
+ {}
+
+
+% ------------------------------------------------------------
+% F O R M A T S
+% ------------------------------------------------------------
+
+FUNCTION {format.names}
+{ 's :=
+ #1 'nameptr :=
+ s num.names$ 'numnames :=
+ numnames 'namesleft :=
+ { namesleft #0 > }
+ {
+% CUSTOM uncomment one of the following lines to have the behaviour on the right
+ s nameptr "{ff }{vv }{ll}{, jj}" format.name$ 't := % Christophe de Geuzaine, jr
+% s nameptr "{f. }{vv }{ll}{, jj}" format.name$ 't := % C. de Geuzaine, jr
+% s nameptr "{vv }{ll}{ f.}{, jj}" format.name$ 't := % de Geuzaine C., jr
+% s nameptr "{vv }{ll}{, ff}{, jj}" format.name$ 't := % de Geuzaine, Christophe, jr
+
+ nameptr #1 >
+ { namesleft #1 >
+ { ", " * t * }
+ { " {\dirandf} " * t * }
+ if$
+ }
+ 't
+ if$
+ nameptr #1 + 'nameptr :=
+ namesleft #1 - 'namesleft :=
+ }
+ while$
+}
+
+FUNCTION {format.name}
+{ name empty$
+ { "" }
+ { name format.names }
+ if$
+}
+
+FUNCTION {format.address}
+{ address empty$
+ { "" }
+ { " \dirnext " address * }
+ if$
+}
+
+FUNCTION {format.p.address}
+{ p.address empty$
+ { "" }
+ { " \dirnext " p.address * }
+ if$
+}
+
+FUNCTION {format.r.address}
+{ r.address empty$
+ { "" }
+ { " \dirnext " r.address * }
+ if$
+}
+
+FUNCTION {format.w.title}
+{ w.title empty$
+ { "" }
+ { " \dirnext " w.title * }
+ if$
+}
+
+FUNCTION {format.w.name}
+{ w.name empty$
+ { "" }
+ { " \dirnext " w.name * }
+ if$
+}
+
+FUNCTION {format.w.address}
+{ w.address empty$
+ { "" }
+ { " \dirnext " w.address * }
+ if$
+}
+
+% ------------------------------------------------------------
+% P E R S O N E N T R Y
+% ------------------------------------------------------------
+
+FUNCTION { person }
+{
+ "\diritem{" write$
+ format.name write$
+ "}{" write$
+ "d." cite$ * write$
+ "}" write$
+
+ newline$
+
+ "\diritem{" write$
+ "\dirbegin " write$
+ format.name write$
+ format.p.address write$
+ "\dirend " write$
+ "}{" write$
+ "p." cite$ * write$
+ "}" write$
+
+ newline$
+
+ "\diritem{" write$
+ "\dirbegin " write$
+ format.name write$
+ format.r.address write$
+ "\dirend " write$
+ "}{" write$
+ "r." cite$ * write$
+ "}" write$
+
+ newline$
+
+ "\diritem{" write$
+ "\dirbegin " write$
+ format.name write$
+ format.w.title write$
+ format.w.name write$
+ format.w.address write$
+ "\dirend " write$
+ "}{" write$
+ "w." cite$ * write$
+ "}" write$
+
+ newline$
+}
+
+% ------------------------------------------------------------
+% C O M P A N Y E N T R Y
+% ------------------------------------------------------------
+
+
+FUNCTION { company }
+{
+ "\diritem{" write$
+ name write$
+ "}{" write$
+ "d." cite$ * write$
+ "}" write$
+
+ newline$
+
+ "\diritem{" write$
+ "\dirbegin " write$
+ name write$
+ format.address write$
+ "\dirend " write$
+ "}{" write$
+ "p." cite$ * write$
+ "}" write$
+
+ newline$
+
+ "\diritem{" write$
+ "\dirbegin " write$
+ name write$
+ format.address write$
+ "\dirend " write$
+ "}{" write$
+ "r." cite$ * write$
+ "}" write$
+
+ newline$
+
+ "\diritem{" write$
+ "\dirbegin " write$
+ name write$
+ format.address write$
+ "\dirend " write$
+ "}{" write$
+ "w." cite$ * write$
+ "}" write$
+
+ newline$
+}
+
+% ------------------------------------------------------------
+% P L A C E E N T R Y
+% ------------------------------------------------------------
+
+FUNCTION { place }
+{
+ "\diritem{" write$
+ name write$
+ "}{" write$
+ "d." cite$ * write$
+ "}" write$
+
+ newline$
+
+ "\diritem{" write$
+ "\dirbegin " write$
+ name write$
+ format.address write$
+ "\dirend " write$
+ "}{" write$
+ "p." cite$ * write$
+ "}" write$
+
+ newline$
+
+ "\diritem{" write$
+ "\dirbegin " write$
+ name write$
+ format.address write$
+ "\dirend " write$
+ "}{" write$
+ "r." cite$ * write$
+ "}" write$
+
+ newline$
+
+ "\diritem{" write$
+ "\dirbegin " write$
+ name write$
+ format.address write$
+ "\dirend " write$
+ "}{" write$
+ "w." cite$ * write$
+ "}" write$
+
+ newline$
+}
+
+% ------------------------------------------------------------
+% M A I N
+% ------------------------------------------------------------
+
+READ
+ITERATE {call.type$}
+
diff --git a/Master/texmf-dist/bibtex/bst/directory/phone.bst b/Master/texmf-dist/bibtex/bst/directory/phone.bst
new file mode 100644
index 00000000000..acd92094b15
--- /dev/null
+++ b/Master/texmf-dist/bibtex/bst/directory/phone.bst
@@ -0,0 +1,487 @@
+%% phone.bst
+%% Copyright 1999-2000 Christophe Geuzaine
+%
+% Last Mod by Christophe on Sun Aug 27 21:14:08 2000
+%
+% This program can be redistributed and/or modified under the terms
+% of the LaTeX Project Public License distributed from CTAN
+% archives in directory macros/latex/base/lppl.txt; either
+% version 1 of the License, or (at your option) any later version.
+%
+% BibTeX bibliography style `phone.bst'
+% 'directory' database: only phone and fax fields
+%
+% Christophe.Geuzaine@advalvas.be
+%
+% The parts you may want to customize are labeled with "CUSTOM"
+%
+
+INTEGERS { nameptr namesleft numnames numaux len }
+STRINGS { s t u v }
+
+% ------------------------------------------------------------
+% E N T R I E S
+% ------------------------------------------------------------
+
+ENTRY
+ { name
+ phone
+ cellular
+ fax
+ p.phone
+ p.cellular
+ p.fax
+ r.phone
+ r.cellular
+ r.fax
+ w.phone
+ w.cellular
+ w.fax
+ }
+ {}
+ {}
+
+% ------------------------------------------------------------
+% G E N E R A L
+% ------------------------------------------------------------
+
+FUNCTION {output}
+{ 's :=
+ s empty$
+ {}
+ { s write$
+ newline$
+ "\dirblock" write$
+ newline$
+ }
+ if$
+}
+
+FUNCTION {output.flag}
+{ 's :=
+ s empty$
+ {}
+ { s write$
+ newline$
+ }
+ if$
+}
+
+FUNCTION {not}
+{ { #0 }
+ { #1 }
+ if$
+}
+
+FUNCTION {and}
+{ 'skip$
+ { pop$ #0 }
+ if$
+}
+
+FUNCTION {or}
+{ { pop$ #1 }
+ 'skip$
+ if$
+}
+
+FUNCTION {chop.word}
+{ 's :=
+ 'len :=
+ s #1 len substring$ =
+ { s len #1 + global.max$ substring$ }
+ 's
+ if$
+}
+
+
+% ------------------------------------------------------------
+% S O R T I N G F U N C T I O N S
+% ------------------------------------------------------------
+
+FUNCTION {sortify}
+{ purify$
+ "l" change.case$
+}
+
+FUNCTION {sort.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.raw.names}
+{ 't :=
+ "A " #2 "L'" #2
+ "An " #3 "Au " #3 "Le " #3 "La " #3
+ "The " #4 "Les " #4 "Aux " #4
+ t
+ chop.word chop.word
+ chop.word chop.word chop.word chop.word
+ chop.word chop.word chop.word
+ sortify
+ #1 global.max$ substring$
+}
+
+FUNCTION {name.sort}
+{ name empty$
+ { " Name field missing in entry '" cite$ * "'" * warning$ "" }
+ { name sort.names }
+ if$
+}
+
+FUNCTION {raw.name.sort}
+{ name empty$
+ { " Name field missing in entry '" cite$ * "'" * warning$ "" }
+ { name sort.raw.names }
+ if$
+}
+
+FUNCTION {presort}
+{ type$ "company" =
+ type$ "place" =
+ or
+ { raw.name.sort }
+ { name.sort }
+ if$
+ " "
+ *
+ #1 entry.max$ substring$
+ 'sort.key$ :=
+}
+
+FUNCTION {format.first.letter}
+{ type$ "company" =
+ type$ "place" =
+ or
+ { raw.name.sort }
+ { name.sort }
+ if$
+ #1 #1 substring$
+}
+
+
+% ------------------------------------------------------------
+% P R E - A N D P O S T - H E A D E R S
+% ------------------------------------------------------------
+
+FUNCTION {begin.bib}
+{ "\begin{thephonebook}" write$
+ newline$
+}
+
+FUNCTION {end.bib}
+{ newline$
+ "\end{thephonebook}" write$
+ newline$
+}
+
+% ------------------------------------------------------------
+% F O R M A T S
+% ------------------------------------------------------------
+
+FUNCTION {format.names}
+{ 's :=
+ #1 'nameptr :=
+ s num.names$ 'numnames :=
+ numnames 'namesleft :=
+ { namesleft #0 > }
+ {
+% CUSTOM uncomment one of the following lines to have the behaviour on the right
+% s nameptr "{ff }{vv }{ll}{, jj}" format.name$ 't := % Christophe de Geuzaine, jr
+% s nameptr "{f. }{vv }{ll}{, jj}" format.name$ 't := % C. de Geuzaine, jr
+ s nameptr "{vv }{ll}{ f.}{, jj}" format.name$ 't := % de Geuzaine C., jr
+% s nameptr "{vv }{ll}{, ff}{, jj}" format.name$ 't := % de Geuzaine, Christophe, jr
+
+ nameptr #1 >
+ { namesleft #1 >
+ { ", " * t * }
+ { " {\dirandf} " * t * }
+ if$
+ }
+ 't
+ if$
+ nameptr #1 + 'nameptr :=
+ namesleft #1 - 'namesleft :=
+ }
+ while$
+}
+
+FUNCTION {format.name}
+{ name empty$
+ { "" }
+ { name format.names }
+ if$
+}
+
+FUNCTION {format.phone}
+{ phone empty$
+ { "" }
+ { "\dirphoa{" phone "}" * * }
+ if$
+}
+
+FUNCTION {format.cellular}
+{ cellular empty$
+ { "" }
+ { "\dircela{" cellular "}" * * }
+ if$
+}
+
+FUNCTION {format.fax}
+{ fax empty$
+ { "" }
+ { "\dirfaxa{" fax "}" * * }
+ if$
+}
+
+FUNCTION {format.p.flag}
+{ p.phone empty$ not
+ p.cellular empty$ not
+ p.fax empty$ not
+ or or
+ { "\dirprif " }
+ { "" }
+ if$
+}
+
+FUNCTION {format.p.phone}
+{ p.phone empty$
+ { "" }
+ { "\dirpphoa{" p.phone "}" * * }
+ if$
+}
+
+FUNCTION {format.p.cellular}
+{ p.cellular empty$
+ { "" }
+ { "\dirpcela{" p.cellular "}" * * }
+ if$
+}
+
+FUNCTION {format.p.fax}
+{ p.fax empty$
+ { "" }
+ { "\dirpfaxa{" p.fax "}" * * }
+ if$
+}
+
+FUNCTION {format.r.flag}
+{ r.phone empty$ not
+ r.cellular empty$ not
+ r.fax empty$ not
+ or or
+ { "\dirresf " }
+ { "" }
+ if$
+}
+
+FUNCTION {format.r.phone}
+{ r.phone empty$
+ { "" }
+ { "\dirrphoa{" r.phone "}" * * }
+ if$
+}
+
+FUNCTION {format.r.cellular}
+{ r.cellular empty$
+ { "" }
+ { "\dirrcela{" r.cellular "}" * * }
+ if$
+}
+
+FUNCTION {format.r.fax}
+{ r.fax empty$
+ { "" }
+ { "\dirrfaxa{" r.fax "}" * * }
+ if$
+}
+
+FUNCTION {format.w.flag}
+{ w.phone empty$ not
+ w.cellular empty$ not
+ w.fax empty$ not
+ or or
+ { "\dirworf " }
+ { "" }
+ if$
+}
+
+FUNCTION {format.w.phone}
+{ w.phone empty$
+ { "" }
+ { "\dirwphoa{" w.phone "}" * * }
+ if$
+}
+
+FUNCTION {format.w.cellular}
+{ w.cellular empty$
+ { "" }
+ { "\dirwcela{" w.cellular "}" * * }
+ if$
+}
+
+FUNCTION {format.w.fax}
+{ w.fax empty$
+ { "" }
+ { "\dirwfaxa{" w.fax "}" * * }
+ if$
+}
+
+% ------------------------------------------------------------
+% P E R S O N E N T R Y
+% ------------------------------------------------------------
+
+FUNCTION { person }
+{
+ p.phone empty$ not
+ p.cellular empty$ not
+ p.fax empty$ not
+ r.phone empty$ not
+ r.cellular empty$ not
+ r.fax empty$ not
+ w.phone empty$ not
+ w.cellular empty$ not
+ w.fax empty$ not
+ or or or or or or or or
+ { newline$
+
+ "\dircheck{" write$
+ format.first.letter write$
+ "}" write$
+ newline$
+
+ "\diritem[" write$
+ format.name write$
+ "]{" write$
+ "d." cite$ * write$
+ "}\dirgroup" write$
+ newline$
+ "\dirblock" write$
+ newline$
+
+ format.p.flag output.flag
+ format.p.phone output
+ format.p.cellular output
+ format.p.fax output
+
+ format.r.flag output.flag
+ format.r.phone output
+ format.r.cellular output
+ format.r.fax output
+
+ format.w.flag output.flag
+ format.w.phone output
+ format.w.cellular output
+ format.w.fax output
+
+ "\direndgroup" write$
+ newline$
+ }
+ { }
+ if$
+}
+
+% ------------------------------------------------------------
+% C O M P A N Y E N T R Y
+% ------------------------------------------------------------
+
+FUNCTION { company }
+{
+ phone empty$ not
+ cellular empty$ not
+ fax empty$ not
+ or or
+ { newline$
+
+ "\dircheck{" write$
+ format.first.letter write$
+ "}" write$
+ newline$
+
+ "\diritem[" write$
+ name write$
+ "]{" write$
+ "d." cite$ * write$
+ "}\dirgroup" write$
+ newline$
+ "\dirblock" write$
+ newline$
+
+ format.phone output
+ format.cellular output
+ format.fax output
+
+ "\direndgroup" write$
+ newline$
+ }
+ { }
+ if$
+}
+
+% ------------------------------------------------------------
+% P L A C E E N T R Y
+% ------------------------------------------------------------
+
+FUNCTION { place }
+{
+ phone empty$ not
+ cellular empty$ not
+ fax empty$ not
+ or or
+ { newline$
+
+ "\dircheck{" write$
+ format.first.letter write$
+ "}" write$
+ newline$
+
+ "\diritem[" write$
+ name write$
+ "]{" write$
+ "d." cite$ * write$
+ "}\dirgroup" write$
+ newline$
+ "\dirblock" write$
+ newline$
+
+ format.phone output
+ format.cellular output
+ format.fax output
+
+ "\direndgroup" write$
+ newline$
+ }
+ { }
+ if$
+}
+
+
+% ------------------------------------------------------------
+% M A I N
+% ------------------------------------------------------------
+
+READ
+ITERATE {presort}
+SORT
+EXECUTE {begin.bib}
+ITERATE {call.type$}
+EXECUTE {end.bib}
+