ADRconv Anleitung Version 1.2b

Axel Kielhorn

31. Mai 2003

1 Adressdatenbanken

Wenn Sie Adressdateien zum Briefschreiben verwenden müssen Sie sich selbst um die Ordnung in einer solchen Datei kümmern. Falls Sie nur gelegentlich und mit einem leicht überschaubaren Adressatenkreis per Brief korrespondieren, werden Sie mit den bisher gezeigten Möglichkeiten meist auch zufrieden sein. Wenn jedoch die Menge der Adressen zunimmt und auch der Umfang der Adressinformationen über die bloße Postanschrift hinauswächst, beginnt die Verwaltung der Adressen zu einem eigenen Problem zu werden. Dieses Problem besteht zunächst ganz unabhängig davon welche Briefklasse Sie verwenden, und so war auch die Lösung, die Gerd Neugebauer 1994 vorstellte, nicht auf KOMA-Script und dessen Vorgänger, sondern auf BibTEX bezogen. Sein Bibliographie-Stil address.bst in Verbindung mit einem speziell definierten Eintragstypen für BibTEX-Datenbanken und einer tex-Datei machte sich den Umstand zunutze, dass BibTEX in der Lage ist, strukturierte Daten zu sortieren und in konfigurierbaren Listen auszugeben. BibTEX kann somit als Hilfsprogramm eingesetzt werden, das für Ordnung in Adressdatenbeständen sorgt.

Damit BibTEX eine Datei bearbeiten kann, muss diese in einem bestimmten Format vorliegen. Normalerweise besitzt eine solche Datei die Dateinamenserweiterung bib und enthält bibliographische Daten. Diese Daten werden nach Eintragstypen klassifiziert. Es ist möglich, neue Eintragstypen zu bilden und von BibTEX auswerten zu lassen.^{1}

Unter einer Adressdatenbank verstehen wir eine BibTEX-konforme Datei.

  @address{...}

Für Einträge in einer Adressdatenbank gibt es den speziellen Eintragstyp @address. Das folgende Beispiel beschreibt das Format eines @address-Eintrags in einer bib-Datei:

1Die für L^{A}TEX standardmäßig definierten Eintragstypen, ihr formaler Aufbau und die Funktionsweise von BibTEX überhaupt können hier nicht beschrieben werden. Für sie sei auf die Originaldokumentation in btxdoc und btxhak sowie auf die Beschreibung im L^{A}TEX-Handbuch verwiesen.

  @address{HMUS,
     name =      {Hans Mustermann},
     title =     {Mag. art.},
     organization = {Verband der Vereine},
     city =      {Heimstatt},
     zip =       01234,
     country =   {Germany},
     street =    {Mauerstra{\ss}e 1},
     phone =     {01234 / 5 67 89},
     fax =       {01234 / 5 67 89},
     mobile =    {0171 / 45 67 89},
     email =     {hm{@}work.com},
     url =       {http://www.work.com},
     note =      {Alles nur Erfindung},
     key =       {HMUS},
     birthday =  {13. August anno muri},
     nbirthday = {0813}
  }

Ähnliche Mustereinträge wie diesen finden Sie in der Datei example.bib. Die Adresseinträge dort sind jedoch weniger umfangreich. Die hier dargestellte ausführliche Form zeigt die Version 1.2.

name Der Name im normalen BibTEX Format: Vorname von Nachname

title Akademischer Titel oder ähnliches (Wird z. Zt. nicht unterstützt)

organization Organisation, Firma, Gewerkschaft, Verein (Wird z. Zt. nicht unterstützt)

city Stadt

country Das Länderkennzeichen (Wird z. Zt. nicht unterstützt)

zip Postleitzahl (ZIP-Code ist die US Bezeichnung)

street Straße

phone Telefonnummer

mobile Zweite Telefonnummer, z. B. für Mobiltelefon

fax Telefaxnummer, wird von adrfax.bst zum Erstellen eines Telefaxbuches verwendet.

email E-mail Adresse, wird von email.bst zum erstellen eines E-mail Verzeichnisses benutzt.

url Ein Link auf die Homepage. Hier wäre jetzt ein Konverter nach HTML gefragt. key Das Kürzel unter dem der betreffende Name in KOMA-Script Briefklasse

aufgerufen werden kann. Dieses Kürzel muss für alle bib Dateien eindeutig sein.

note Notiz (Wird z. Zt. nicht unterstützt)

birthday Geburtstagstext, so wie er gedruckt wird

nbirthday Numerischer Geburtstag, wird zum Sortieren verwendet. Format: Monat zweistellig Tag zweistellig (MMDD)

2 Adressdatenbankkonverter

BibTEX erzeugt aus bib-Dateien (Datenbanken) bbl-Dateien. Eine bbl-Datei besteht im wesentlichen aus einer sortierten Liste. Welche Elemente einer bib-Datei hierfür ausgewertet werden und wie die resultierende bbl-Datei im einzelnen aufgebaut ist, wird dabei jeweils durch einen Bibliographie-Stil (eine bst-Datei) gesteuert.

Die standardmäßig für die Erzeugung von Literaturverzeichnissen mit L^{A}TEX eingesetzten Bibliographie-Stile können freilich weder @address-Eintragstypen auswerten noch Adressdateien im adr-Format erzeugen. Um eine Adressdatenbank in eine Adressdatei zu konvertieren, wird also ein eigens dafür eingerichteter Bibliographie-Stil benötigt. Es wurden dafür mehrere Bibliographie-Stile entwickelt, die als Konverter von Adressdatenbanken in Adressdateien dienen können.

adrconv.bst Erzeugt eine Adressdatei, die sowohl mit der KOMA-Script Briefklasse zum Einfügen von Adressen in Briefe als auch mit den Programmen dir.tex und phone.tex zur Erzeugung von Adress- und Telefonverzeichnissen verwendet werden kann. Es werden dabei jeweils die ersten vier Felder sowie das achte Feld der Adress-Einträge (Name, Vorname, Adresse, Telefonnummer und Kürzel) belegt. Die Adress-Einträge in der Datei werden alphabetisch nach den Namen sortiert und die \adrchar-Einträge werden am Beginn jeder Buchstabengruppe automatisch eingesetzt. Das Kürzel wird als Gedächnisstütze mit ausgegeben. Mit diesem Kürzel kann der Eintrag in der Briefklasse aus KOMA-Script aufrufen werden.

adrfax.bst Ein Konvertierer zum Erstellen von Faxbüchern. Statt der Telefonnummer wird hier jedoch die Faxnummer benutzt.

birthday.bst Erzeugt eine Adressdatei, die mittels dir.tex als Geburtstagsverzeichnis ausgegeben werden kann. Hierfür werden die Einträge nach Monat und Tag sortiert. Damit das funktioniert, muß ein nbirthday Eintrag vorhanden sein. Dieser wird als Sortierschlüssel genutzt.

email.bst Erzeugt eine Adressdatei, die durch Bearbeitung mit dir.tex ein E-Mail-Verzeichnis ergibt. Sie ist alphabetisch nach Namen sortiert.

3 Ablauf der Konvertierung

Damit BibTEX eine Adressdatenbank mit Hilfe eines Bibliographie-Stils in eine Adressdatei konvertieren kann, benötigt es noch Informationen darüber, welche der Einträge aus der bib-Datei auf diese Weise bearbeitet werden sollen. Diese Informationen entnimmt BibTEX der aux-Datei, die beim TEX-Lauf über eine tex-Datei entsteht und die Schlüsselwörter für BibTEX enthält, welche normalerweise durch \cite-Befehle in der tex-Datei erzeugt werden.

In unserem Fall gibt es keine derartige tex-Datei. Stattdessen müssen wir uns eine Hilfsdatei anlegen.

    \citation{*}
    \bibstyle{adrconv}  % oder adrfax, birthday, email
    \bibdata{example}   % koennen auch mehrere Dateien sein

\citation{*} wählt alle Einträge der Datenbank aus, \bibstyle den gewünschten Stil und \bibdata die Datenbank(en). Es können auch mehrere Datenbanken gleichzeitig ausgewählt werden. Dadurch kann man private und berufliche Adressen in unterschiedlichen Datenbanken pflegen und bei Bedarf eine gemeinsame Adressliste erstellen.

Die von BibTEX erstellte bbl Datei muss dann nur noch in adr umbenannt werden und schon kann sie mit dir.tex in ein Adressbuch umgewandelt werden. Das beiliegende adrdir.tex enthält eine etwas modifizierte Version von dir.tex. Diese Version kann über Konfigurationsdateien für verschiedene Formate angepasst werden:

adrdir Das Originalformat aus dir.tex, die Einzelseiten sind DIN A6 groß und können so platzsparend auf DIN A4 ausgedruckt werden.

adrschmal Ist ein etwas schmaleres Format, das in viele Taschenkalender passt, z. B. in den Kalender den mir meine Sparkasse jedes Jahr schenkt.

adrplaner Diese Woche hatte Aldi einen Taschenkalender im Angebot, wie üblich auch mit Adressbuch. Aber warum soll ich jetzt alle Adressen von Hand eintragen, also musste eine neue Konfigurationsdatei her. Die sollte problemlos auch in andere Organizer passen. (Ich würde mich über Rückmeldungen freuen.)

In den Konfigurationsdateien befinden sich auch die Parameter für DVIDVI, damit man die Einzelseiten problemlos auf ein Blatt A4 verteilen kann. Die interaktive TEX-Programme mit den Namen adrconv.tex, birthday.tex und email.tex, können die jeweils passende aux-Dateien selbst erzeugen.

Die Konvertierung einer Adressdatenbank in eine Adressdatei läuft daher in drei Schritten ab:

1. Vorbereitung der Konvertierung durch Erzeugen der aux-Datei für die entsprechende bib-Datei.

2. Konvertierung der bib-Datei mittels BibTEX.

3. Umbenennung der entstandenen bbl-Datei in die adr-Namensform für Adressdateien

Angenommen, Sie haben einen neuen Eintrag in Ihre Adressdatenbank mit Namen adressen.bib aufgenommen, der so aussehen könnte:

@address{DANTE,
name      = {{DANTE~e.\,V.}},
street    = {Postfach 10 18 40},
zip       = {69008},
city      = {Heidelberg},
phone     = {0 62 21 / 2 97 66},
fax       = {0 62 21 / 16 79 06},
email     = {dante{@}dante.de},
url       = {http://www.dante.de},
key       = {DANTE},
birthday  = {14. April 1989},
nbirthday = {0414}
}

Wenn Sie eine Adressdatei für Briefe und ein Adressverzeichnis brauchen, wählen Sie den Konverter adrconv und erzeugen die aux-Datei. Die Protokolldatei adrconv.log zeigt, wie das abgelaufen ist:

sh>tex adrconv.tex
This is TeX, Version 3.14159 (Web2C 7.3.2x) (format=tex
2001.8.1)  13 AUG 2001 05:26
**adrconv.tex
(/texmf/tex/latex/koma-script/adrconv.tex
Now you have to typein the name of the BibTeX
adressfile, you want to convert to
script-adress-file-format (without extension `.bib'):
Geben Sie nun den Namen der BibTeX-Adressdatei ein, die
Sie in das Script-Adressdateiformat konvertieren wollen
(ohne `.bib'):
adressfile=adressen
\auxfile=\write0
\openout0 = `adressen.aux'.

After running BibTeX rename file `adressen.bbl' to
`adressen.adr'!
Nach dem BibTeX-Lauf benennen Sie bitte die Datei
`adressen.bbl' in `adressen.adr' um!
[1] )
Output written on adrconv.dvi (1 page, 224 bytes).

Als zweiten Schritt rufen Sie BibTEX zur Konvertierung auf. Wir zeigen das

Protokoll adressen.blg:

sh>bibtex adressen
This is BibTeX, Version 0.99c (Web2C 7.3.2x)
The top-level auxiliary file: adressen.aux
The style file: adrconv.bst
Database file #1: adressen.bib

Zuletzt benennen Sie die Datei um:

sh>mv adressen.bbl adressen.adr

Die konvertierte Adressdatei hat folgenden Inhalt:

\adrchar{K}
\adrentry{Kalkweiss}{Achim}
{Langer Weg 17 \\
 38118 Braunschweig}{0531 / 113 34 89}{}{}{}{}
\adrentry{Kohlmeise}{Rudolf}
{Stra{\ss}e des 11.~September 17 \\
 12345 Neu Jorg}{0513 / 89 55 66}{}{}{}{}
\adrentry{Kuchennascher}{Mattse}
{Fichtenstra{\ss}e 1 \\
 98765 Brummelsbach}{}{}{}{}{}
\adrchar{M}
\adrentry{Mustermann}{Hans}
{Einbahnstra{\ss}e 1 \\
 01234 Heimstatt}{01234 / 5 67 89}{}{}{}{}
\adrchar{{}
\adrentry{{DANTE~e.\,V.}}{}
{Postfach 10 18 40 \\
 69008 Heidelberg}{0 62 21 / 2 97 66}{}{}{}{DANTE}

Der fehlende Vorname führt hier zu einem Fehler im \adrchar-Eintrag. Nachdem Sie ihn in:

\adrchar{D}

verbessert und zusammen mit dem Adress-Eintrag an die richtige Stelle verschoben haben, können Sie einen Brief an DANTE e. V. dann mit Hilfe der KOMA-Script Briefklasse so beginnen:

\documentclass{scrlttr2}
\usepackage{german}
\begin{document}
\begin{letter}{\DANTE}
...

Um Ihre Adressdateien aktuell zu halten, müssen Sie diese drei Schritte jedesmal wiederholen, wenn Sie Änderungen an Ihrer Adressdatenbank vorgenommen haben.

Bitte beachten Sie dabei, dass die drei Programme zum Erzeugen der aux-

Datei (adrconv.tex, birthday.tex und email.tex) sowohl mit (Plain)TEX

als auch mit L^{A}TEX aufgerufen werden können, während die beiden Programme dir.tex und phone.tex, die Sie nach erfolgreicher Konvertierung auf Ihre Adressdatei anwenden können, um daraus fertige Adress-, E-Mail- bzw. Telefonverzeichnisse zu produzieren, nur mit L^{A}TEX funktionieren.