Compare commits

...

3 Commits

Author SHA1 Message Date
Peter Adam
b3e7d99ec6 Translate README content to German 2026-02-28 10:17:16 +01:00
Peter Adam
fbd55f841a Update README: document CSV workflow and file list
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-28 10:15:07 +01:00
Peter Adam
dbc3dc18ac Remove outdated 2025 brevet card PDF templates from README. 2026-02-28 10:14:19 +01:00

161
README.md
View File

@@ -1,124 +1,139 @@
# Brevet Card PDF Generator # Brevetkarten-PDF-Generator
LaTeX-based generator for Audax Randonneurs Deutschland brevet cards with front and back sides for duplex printing. LaTeX-basierter Generator für Audax Randonneurs Allemagne Brevetkarten mit Vorder- und Rückseite für den Duplexdruck.
## Quick Start ## Schnellstart
```bash ```bash
# Build everything and generate both PDFs # Alles bauen und beide PDFs erzeugen
make build make build
# The PDFs will be created as: # Die PDFs werden erstellt als:
# - brevetkarte.pdf (front side with participant info) # - brevetkarte.pdf (Vorderseite mit Teilnehmerinfos)
# - brevetkarte-rueckseite.pdf (back side with control points) # - brevetkarte-rueckseite.pdf (Rückseite mit Kontrollen)
``` ```
## Prerequisites ## Voraussetzungen
- Docker - Docker
- Make - Make
## Usage ## Verwendung
### Build Both PDFs ### Beide PDFs bauen
```bash ```bash
make build make build
``` ```
This will: Dies führt folgende Schritte aus:
1. Build the Docker image with TeXLive 1. Docker-Image mit TeX Live bauen
2. Compile `brevetkarte.tex` to `brevetkarte.pdf` (front side) 2. `brevetkarte.tex` zu `brevetkarte.pdf` kompilieren (Vorderseite)
3. Compile `brevetkarte-rueckseite.tex` to `brevetkarte-rueckseite.pdf` (back side) 3. `brevetkarte-rueckseite.tex` zu `brevetkarte-rueckseite.pdf` kompilieren (Rückseite)
### Build Individual Sides ### Einzelne Seiten bauen
```bash ```bash
# Just build front side # Nur Vorderseite bauen
make build-front make build-front
# Just build back side # Nur Rückseite bauen
make build-back make build-back
# Build both sides (without rebuilding Docker image) # Beide Seiten bauen (ohne Docker-Image neu zu bauen)
make build-pdf make build-pdf
``` ```
### Other Commands ### Personalisierte Karten aus CSV
```bash ```bash
# Just build the Docker image # 1. Beispiel-CSV kopieren und Teilnehmerdaten eintragen
cp "Export Brevetkarte.csv.example" "Export Brevetkarte.csv"
# "Export Brevetkarte.csv" mit den Teilnehmern befüllen
# 2. Personalisierte Karten erzeugen und bauen
make build-personalized
# Ausgabe: brevetkarte-personalized.pdf
```
Die CSV-Datei `Export Brevetkarte.csv` wird nicht von git erfasst (sie kann personenbezogene Daten enthalten). Die Datei `Export Brevetkarte.csv.example` zeigt das erwartete Format.
### Weitere Befehle
```bash
# Nur das Docker-Image bauen
make build-image make build-image
# Open interactive shell in container # Interaktive Shell im Container öffnen
make shell make shell
# Clean generated files (.aux, .log, .pdf) # Erzeugte Dateien löschen (.aux, .log, .pdf)
make clean make clean
# Clean everything including Docker image # Alles löschen inkl. Docker-Image
make clean-all make clean-all
# Rebuild from scratch # Von Grund auf neu bauen
make rebuild make rebuild
# Show help # Hilfe anzeigen
make help make help
``` ```
## Files ## Dateien
- `brevetkarte.tex` - LaTeX source for the front side (participant info) - `brevetkarte.tex` - LaTeX-Quelle für die Vorderseite (zwei identische Blanko-Karten)
- `brevetkarte-rueckseite.tex` - LaTeX source for the back side (control points) - `brevetkarte-template.tex` - Vorlage für personalisierte Karten (Platzhalter werden aus CSV ersetzt)
- `cyclist-logo.png` - Audax Randonneurs logo (extracted from original) - `brevetkarte-rueckseite.tex` - LaTeX-Quelle für die Rückseite (Kontrollen)
- `Dockerfile` - Docker image definition with TeXLive - `Export Brevetkarte.csv.example` - Beispiel-CSV mit dem Teilnehmerdatenformat
- `Makefile` - Build automation - `generate_cards.py` - Erzeugt `brevetkarte-personalized.tex` aus CSV und Vorlage
- `Brevet200km_2025_09_20_Namensseite_blanko.pdf` - Original front side template - `cyclist-logo.png` - Audax Randonneurs Logo
- `Brevet200km_2025_09_20_Kontrollseite.pdf` - Original back side template - `Dockerfile` - Docker-Image-Definition (debian:bookworm-slim + TeX-Live-Pakete)
- `Makefile` - Build-Automatisierung
## Output ## Ausgabe
### Front Side (brevetkarte.pdf) ### Vorderseite (brevetkarte.pdf)
Contains two identical brevet cards that can be cut in half. Each card includes: Enthält zwei identische Brevetkarten, die in der Mitte geschnitten werden können. Jede Karte enthält:
- Participant information fields (Name, Address, etc.) - Teilnehmerinformationen (Name, Adresse usw.)
- Event details (200km "Auf eine Pommes nach Belgien") - Veranstaltungsdetails (200 km Auf eine Pommes nach Belgien")
- Randonneur Mondiaux rules - Randonneur-Mondiaux-Regeln
- Homologation section - Homologationsbereich
- Start time: 8:30 - Startzeit: 8:30
### Back Side (brevetkarte-rueckseite.pdf) ### Rückseite (brevetkarte-rueckseite.pdf)
Contains control points table (4 columns × 6 rows): Enthält die Kontrollentabelle (4 Spalten × 6 Zeilen):
- **Rows 1-3**: Control points for upper card - **Zeilen 13**: Kontrollen für die obere Karte
- Nr. 1: Start (Km 0 - Unisport, Bonn) - Nr. 1: Start (Km 0 Unisport, Bonn)
- Nr. 2: Km 57 - Nationalpark-Tor, Heimbach - Nr. 2: Km 57 Nationalpark-Tor, Heimbach
- Nr. 3: Km 100 - Friterie "Au Petit Creux", Waimes - Nr. 3: Km 100 Friterie Au Petit Creux", Waimes
- Nr. 4: Km 165 - Mahlberg - Nr. 4: Km 165 Mahlberg
- Nr. 5: Km 205 - Finish (Unisport, Bonn) - Nr. 5: Km 205 Ziel (Unisport, Bonn)
- **Rows 4-6**: Control points for lower card (same as above, but Nr. 5: Km 214) - **Zeilen 46**: Kontrollen für die untere Karte (wie oben, aber Nr. 5: Km 214)
- Empty columns for stamps/signatures - Leere Spalten für Stempel/Unterschriften
- Control question for verification - Kontrollfrage zur Verifikation
## Duplex Printing ## Duplexdruck
The PDFs are designed for duplex (double-sided) printing: Die PDFs sind für den Duplexdruck (beidseitiger Druck) ausgelegt:
1. Print `brevetkarte.pdf` on one side 1. `brevetkarte.pdf` auf einer Seite drucken
2. Print `brevetkarte-rueckseite.pdf` on the reverse side 2. `brevetkarte-rueckseite.pdf` auf der Rückseite drucken
3. The columns and rows are aligned so that: 3. Spalten und Zeilen sind so ausgerichtet, dass:
- Front side columns match back side columns - Vorderseitenspalten mit Rückseitenspalten übereinstimmen
- Upper card (rows 1-3) aligns with front side upper card - Obere Karte (Zeilen 13) mit der oberen Vorderseitenkarte fluchtet
- Lower card (rows 4-6) aligns with front side lower card - Untere Karte (Zeilen 46) mit der unteren Vorderseitenkarte fluchtet
4. Cut the sheet in half horizontally to create two separate brevet cards 4. Blatt horizontal in der Mitte schneiden, um zwei separate Brevetkarten zu erhalten
## Customization ## Anpassung
Edit `brevetkarte.tex` to modify front side: `brevetkarte.tex` bearbeiten für die Vorderseite:
- Event name, date, and location - Veranstaltungsname, Datum und Ort
- Distance (200km) - Distanz (200 km)
- Start time - Startzeit
- Club information - Vereinsinformationen
- Brevet number format - Brevetformat
Edit `brevetkarte-rueckseite.tex` to modify back side: `brevetkarte-rueckseite.tex` bearbeiten für die Rückseite:
- Control point locations - Kontrollpunkte
- Control times (von/bis) - Kontrollzeiten (von/bis)
- Distances - Distanzen
- Control questions - Kontrollfragen