diff options
Diffstat (limited to 'Master/texmf-dist/bibtex/bst/directory/address-ldif.bst')
-rw-r--r-- | Master/texmf-dist/bibtex/bst/directory/address-ldif.bst | 679 |
1 files changed, 679 insertions, 0 deletions
diff --git a/Master/texmf-dist/bibtex/bst/directory/address-ldif.bst b/Master/texmf-dist/bibtex/bst/directory/address-ldif.bst new file mode 100644 index 00000000000..5d69f62df6d --- /dev/null +++ b/Master/texmf-dist/bibtex/bst/directory/address-ldif.bst @@ -0,0 +1,679 @@ +%% address-ldif.bst +%% Copyright 2003 Christophe Geuzaine <geuz@geuz.org> +% +% $Id: address-ldif.bst,v 1.7 2003/09/16 07:18:07 geuzaine Exp $ +% +% 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-ldif.bst' +% 'directory' database: all fields +% +% This is definitively a hack... To get a working ldif file if the bib +% file contains special characters (ISO Latin 1, etc.) you must +% convert the output bbl file to UTF8. You can do it e.g. with the +% following C code (found on the web, don't know who wrote it): +% +% /* Read Latin-1 (ISO-8859-1) characters from stdin, convert them +% to UTF-8, and write the converted characters to stdout. +% UTF-8 is defined by RFC 2044. +% */ +% #include <errno.h> +% #include <stdio.h> +% +% int +% main (int argc, char** argv) +% { +% register int c; +% while ((c = getchar()) != EOF) { +% if ((c & 0x80) == 0) { +% putchar (c); +% } else { +% putchar (0xC0 | (0x03 & (c >> 6))); +% putchar (0x80 | (0x3F & c)); +% } +% } +% if ( ! feof (stdin)) { +% errno = ferror (stdin); +% perror (argv[0]); +% } +% return 0; +% } +% + +INTEGERS { nameptr namesleft numnames numaux len } +STRINGS { s t u v } + +% ------------------------------------------------------------ +% E N T R I E S +% ------------------------------------------------------------ + +ENTRY + { name + nickname + birthday + birthyear + address % if empty, use street, city, ... + street + city + state + zip + country + phone + cellular + fax + email + url + account + p.address % if empty, use p.street, p.city, ... + p.street + p.city + p.state + p.zip + p.country + p.phone + p.cellular + p.fax + p.email + p.url + p.account + r.address % if empty, use r.street, r.city, ... + r.street + r.city + r.state + r.zip + r.country + r.phone + r.cellular + r.fax + r.email + r.url + r.account + w.title + w.name + w.address % if empty, use w.street, w.city, ... + w.street + w.city + w.state + w.zip + w.country + w.phone + w.cellular + w.fax + w.email + w.url + w.account + note + } + {} + { + } + +% ------------------------------------------------------------ +% G E N E R A L +% ------------------------------------------------------------ + +FUNCTION {output} +{ 's := + s empty$ + {} + { s write$ + newline$ + } + if$ +} + +FUNCTION {not} +{ { #0 } + { #1 } + if$ +} + +FUNCTION {and} +{ 'skip$ + { pop$ #0 } + if$ +} + +FUNCTION {or} +{ { pop$ #1 } + 'skip$ + if$ +} + +% ------------------------------------------------------------ +% P R E - A N D P O S T - H E A D E R S +% ------------------------------------------------------------ + +FUNCTION {begin.bib} +{ +} + +FUNCTION {end.bib} +{ +} + +% ------------------------------------------------------------ +% G E N E R A L F O R M A T T I N G F U N C T I O N S +% ------------------------------------------------------------ + +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 * } + { " and " * t * } + if$ + } + 't + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ +} + +FUNCTION {format.first.names} +{ 's := + #1 'nameptr := + s num.names$ 'numnames := + numnames 'namesleft := + { namesleft #0 > } + { + s nameptr "{ff{ }}" format.name$ 't := + nameptr #1 > + { namesleft #1 > + { ", " * t * } + { " and " * t * } + if$ + } + 't + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ +} + +FUNCTION {format.last.names} +{ 's := + #1 'nameptr := + s num.names$ 'numnames := + numnames 'namesleft := + { namesleft #0 > } + { + s nameptr "{vv{ } }{ll{ }}{, jj{ }}" format.name$ 't := + nameptr #1 > + { namesleft #1 > + { ", " * t * } + { " and " * 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$ + + { namesleft #0 > } + { s nameptr "{ff}" format.name$ 't := + s nameptr "{ll}" format.name$ 'u := + + numaux #0 > not + { } + { birthyear nameptr "{ll}" format.name$ 'v := + v * "-" * } + if$ + + nameptr #1 > + { ";" * u * "-" * t * } + { u "-" * t * } + if$ + + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + numaux #1 - 'numaux := + } + while$ +} + +% ------------------------------------------------------------ +% V C A R D F I E L D F O R M A T S +% ------------------------------------------------------------ + +FUNCTION {format.name} +{ name empty$ + { "" } + { "cn: " name format.names * } + if$ +} + +FUNCTION {format.first.name} +{ name empty$ + { "" } + { "givenName: " name format.first.names * } + if$ +} + +FUNCTION {format.last.name} +{ name empty$ + { "" } + { "sn: " name format.last.names * } + if$ +} + +FUNCTION {format.simple.name} +{ name empty$ + { "" } + { "cn: " name * } + if$ +} + +FUNCTION {format.simple.last.name} +{ name empty$ + { "" } + { "sn: " name * } + if$ +} + +FUNCTION {format.nickname} +{ nickname empty$ + { "" } + { "xmozillanickname: " nickname * } + if$ +} + +FUNCTION {format.birthday} +{ birthday empty$ + { + birthyear empty$ + { "" } + { "custom1: birthyear=" birthyear * } + if$ + } + { "custom1: birthday=" birthday format.dates * } + if$ +} + +FUNCTION {format.address} +{ address empty$ + { + % ugly, but we need a new line after each field + street empty$ { skip$ } { "postalAddress: " street * output } if$ + city empty$ { skip$ } { "l: " city * output } if$ + state empty$ { skip$ } { "st: " state * output } if$ + zip empty$ { skip$ } { "postalCode: " zip * output } if$ + country empty$ { skip$ } { "c: " country * output } if$ + "" + } + { "postalAddress: " address * } + if$ +} + +FUNCTION {format.account} +{ account empty$ + { "" } + { "custom2: account=" account * } + if$ +} + +FUNCTION {format.phone} +{ phone empty$ + { "" } + { "telephoneNumber: " phone * } + if$ +} + +FUNCTION {format.cellular} +{ cellular empty$ + { "" } + { "mobile: " cellular * } + if$ +} + +FUNCTION {format.fax} +{ fax empty$ + { "" } + { "facsimileTelephoneNumber: " fax * } + if$ +} + +FUNCTION {format.email} +{ email empty$ + { "" } + { "mail: " email * } + if$ +} + +FUNCTION {format.url} +{ url empty$ + { "" } + { "workurl: " url * } + if$ +} + +FUNCTION {format.p.address} +{ p.address empty$ + { + % ugly, but we need a new line after each field + p.street empty$ { skip$ } { "homePostalAddress: " p.street * output } if$ + p.city empty$ { skip$ } { "mozillaHomeLocalityName: " p.city * output } if$ + p.state empty$ { skip$ } { "mozillaHomeState: " p.state * output } if$ + p.zip empty$ { skip$ } { "mozillaHomePostalCode: " p.zip * output } if$ + p.country empty$ { skip$ } { "mozillaHomeCountryName: " p.country * output } if$ + "" + } + { "homePostalAddress: " p.address * } + if$ +} + +FUNCTION {format.p.phone} +{ p.phone empty$ + { "" } + { "homePhone: " p.phone * } + if$ +} + +FUNCTION {format.p.cellular} +{ p.cellular empty$ + { "" } + { "mobile: " p.cellular * } + if$ +} + +FUNCTION {format.p.fax} +{ p.fax empty$ + { "" } + { "facsimileTelephoneNumber: " p.fax * } + if$ +} + +FUNCTION {format.p.email} +{ p.email empty$ + { "" } + { "mail: " p.email * } + if$ +} + +FUNCTION {format.p.url} +{ p.url empty$ + { "" } + { "homeurl: " p.url * } + if$ +} + +FUNCTION {format.p.account} +{ p.account empty$ + { "" } + { "custom2: account=" p.account * } + if$ +} + +FUNCTION {format.r.address} +{ r.address empty$ + { + % ugly, but we need a new line after each field + r.street empty$ { skip$ } { "homePostalAddress: " r.street * output } if$ + r.city empty$ { skip$ } { "mozillaHomeLocalityName: " r.city * output } if$ + r.state empty$ { skip$ } { "mozillaHomeState: " r.state * output } if$ + r.zip empty$ { skip$ } { "mozillaHomePostalCode: " r.zip * output } if$ + r.country empty$ { skip$ } { "mozillaHomeCountryName: " r.country * output } if$ + "" + } + { "homePostalAddress: " r.address * } + if$ +} + +FUNCTION {format.r.phone} +{ r.phone empty$ + { "" } + { "homePhone: " r.phone * } + if$ +} + +FUNCTION {format.r.cellular} +{ r.cellular empty$ + { "" } + { "mobile: " r.cellular * } + if$ +} + +FUNCTION {format.r.fax} +{ r.fax empty$ + { "" } + { "facsimileTelephoneNumber: " r.fax * } + if$ +} + +FUNCTION {format.r.email} +{ r.email empty$ + { "" } + { "mail: " r.email * } + if$ +} + +FUNCTION {format.r.url} +{ r.url empty$ + { "" } + { "homeurl: " r.url * } + if$ +} + +FUNCTION {format.r.account} +{ r.account empty$ + { "" } + { "custom2: account=" r.account * } + if$ +} + +FUNCTION {format.w.title} +{ w.title empty$ + { "" } + { "title: " w.title * } + if$ +} + +FUNCTION {format.w.name} +{ w.name empty$ + { "" } + { "o: " w.name * } + if$ +} + +FUNCTION {format.w.address} +{ w.address empty$ + { + % ugly, but we need a new line after each field + w.street empty$ { skip$ } { "postalAddress: " w.street * output } if$ + w.city empty$ { skip$ } { "l: " w.city * output } if$ + w.state empty$ { skip$ } { "st: " w.state * output } if$ + w.zip empty$ { skip$ } { "postalCode: " w.zip * output } if$ + w.country empty$ { skip$ } { "c: " w.country * output } if$ + "" + } + { "postalAddress: " w.address * } + if$ +} + +FUNCTION {format.w.phone} +{ w.phone empty$ + { "" } + { "telephoneNumber: " w.phone * } + if$ +} + +FUNCTION {format.w.cellular} +{ w.cellular empty$ + { "" } + { "mobile: " w.cellular * } + if$ +} + +FUNCTION {format.w.fax} +{ w.fax empty$ + { "" } + { "facsimileTelephoneNumber: " w.fax * } + if$ +} + +FUNCTION {format.w.email} +{ w.email empty$ + { "" } + { "mail: " w.email * } + if$ +} + +FUNCTION {format.w.url} +{ w.url empty$ + { "" } + { "workurl: " w.url * } + if$ +} + +FUNCTION {format.w.account} +{ w.account empty$ + { "" } + { "custom2: account=" w.account * } + if$ +} + +FUNCTION {format.note} +{ note empty$ + { "" } + { "description: " note * } + if$ +} + +% ------------------------------------------------------------ +% P E R S O N E N T R Y +% ------------------------------------------------------------ + +FUNCTION { person } +{ + "objectclass: top" output + "objectclass: person" output + "objectclass: organizationalPerson" output + "objectclass: inetOrgPerson" output + "objectclass: mozillaAbPersonObsolete" output + + format.first.name output + format.last.name output + format.name output + format.nickname output + format.birthday 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.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.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 output + + newline$ +} + +% ------------------------------------------------------------ +% C O M P A N Y E N T R Y +% ------------------------------------------------------------ + +FUNCTION { company } +{ + "objectclass: top" output + "objectclass: person" output + "objectclass: organizationalPerson" output + "objectclass: inetOrgPerson" output + "objectclass: mozillaAbPersonObsolete" output + + format.simple.last.name output + format.simple.name output + format.address output + format.phone output + format.cellular output + format.fax output + format.email output + format.url output + format.account output + format.note output + + newline$ +} + +% ------------------------------------------------------------ +% P L A C E E N T R Y +% ------------------------------------------------------------ + +FUNCTION { place } +{ + "objectclass: top" output + "objectclass: person" output + "objectclass: organizationalPerson" output + "objectclass: inetOrgPerson" output + "objectclass: mozillaAbPersonObsolete" output + + format.simple.last.name output + format.simple.name output + format.address output + format.phone output + format.cellular output + format.fax output + format.note output + + newline$ +} + +% ------------------------------------------------------------ +% M A I N +% ------------------------------------------------------------ + +READ +EXECUTE {begin.bib} +ITERATE {call.type$} +EXECUTE {end.bib} |