Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
Praxis<br />
LaTeX <strong>und</strong> Datenbanken<br />
3 Druckvorlagen samt passender Schnittmarken mit wenigen Kommandos – die<br />
richtige Toolchain aus Datenbank, Skriptsprache <strong>und</strong> LaTeX macht es möglich.<br />
Listing 2<br />
01 import csv<br />
02 erzeugeHeader()<br />
03 ersteZeile = 1<br />
04 personenliste = csv.<br />
reader(open('personen.csv'),<br />
delimiter=',', quotechar= '"')<br />
05 for eintrag in personenliste:<br />
06 teilnehmer, rolle,<br />
projektname = eintrag<br />
07 if not ersteZeile:<br />
08 seitenumbruch()<br />
09 else:<br />
10 ersteZeile = 0<br />
11 erzeugeNamensschild(<br />
teilnehmer, rolle, projektname)<br />
12 erzeugeFooter()<br />
Listing 3<br />
01 from pg8000 import DBAPI<br />
In den Zeilen 5 <strong>und</strong> 6 fasst das Skript jeweils<br />
zwei einzelne Seiten auf einem<br />
Blatt zusammen – zunächst übereinander<br />
(Zeile 5) <strong>und</strong> darauf folgend nebeneinander<br />
(Zeile 6). Das Ergebnis besteht<br />
aus vier Namensschildern samt passender<br />
Schnittmarken pro Blatt, sodass sich<br />
dieses direkt für den Druck sowie den<br />
maschinellen Schnitt eignet 3 . In den<br />
Zeilen 8 <strong>und</strong> 9 entsteht mittels der Daten<br />
aus der Datenbank die Liste der Teilnehmer<br />
sowie eine passende Übersicht.<br />
Im Folgenden sehen wir uns nun die<br />
Skripte zum Erzeugen der Namensschilder<br />
<strong>und</strong> der Teilnehmerliste genauer an.<br />
Das Erzeugen der Namensschilder übernimmt<br />
das Python-Skript namensschilder.py<br />
(Listing 2). In Schritt 1 erstellt es<br />
die LaTeX-Kopfzeilen („Präambel“, Zeile<br />
2). Anschließend entnimmt es die Daten<br />
aus der angegebenen Datei (Zeile 4)<br />
<strong>und</strong> erzeugt daraus für jeden Datensatz<br />
ein Namensschild (Zeile 5 bis 11). Am<br />
Ende fügt das Skript in Zeile 12 noch die<br />
LaTeX-Fußzeilen hinzu.<br />
Um jedes Namensschild auf einer separaten<br />
Seite auszugeben, sorgen die<br />
Zeilen 7 bis 10 für einen Seitenumbruch<br />
ab dem zweiten Eintrag <strong>und</strong> vor jedem<br />
Namensschild. Zum Steuern dient die<br />
Variable ersteZeile (Zeile 3), die einfach<br />
den Wert null erhält, nachdem das Skript<br />
den ersten Datensatz aus der Quelle gelesen<br />
hat (Zeile 10).<br />
02 connectionId = DBAPI.connect(host="server",<br />
database="veranstaltung", user="tom", password="jerry")<br />
03 cursor = connectionId.cursor()<br />
04 cursor.execute("SELECT teilnehmer, rolle, projektname FROM<br />
personenliste")<br />
05 for datensatz in cursor:<br />
06 teilnehmer, rolle, projektname = datensatz<br />
07 ...<br />
08 cursor.close()<br />
09 connectionId.close()<br />
44 www.linux-user.de<br />
06.2013