fbd55f841aa2c96d2a90e0d53556780272278670
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Brevet Card PDF Generator
LaTeX-based generator for Audax Randonneurs Deutschland brevet cards with front and back sides for duplex printing.
Quick Start
# Build everything and generate both PDFs
make build
# The PDFs will be created as:
# - brevetkarte.pdf (front side with participant info)
# - brevetkarte-rueckseite.pdf (back side with control points)
Prerequisites
- Docker
- Make
Usage
Build Both PDFs
make build
This will:
- Build the Docker image with TeXLive
- Compile
brevetkarte.textobrevetkarte.pdf(front side) - Compile
brevetkarte-rueckseite.textobrevetkarte-rueckseite.pdf(back side)
Build Individual Sides
# Just build front side
make build-front
# Just build back side
make build-back
# Build both sides (without rebuilding Docker image)
make build-pdf
Personalized Cards from CSV
# 1. Copy the example CSV and fill in participant data
cp "Export Brevetkarte.csv.example" "Export Brevetkarte.csv"
# Edit "Export Brevetkarte.csv" with your participants
# 2. Generate and build personalized cards
make build-personalized
# Output: brevetkarte-personalized.pdf
The CSV file Export Brevetkarte.csv is not tracked by git (it may contain personal data). The file Export Brevetkarte.csv.example shows the expected format.
Other Commands
# Just build the Docker image
make build-image
# Open interactive shell in container
make shell
# Clean generated files (.aux, .log, .pdf)
make clean
# Clean everything including Docker image
make clean-all
# Rebuild from scratch
make rebuild
# Show help
make help
Files
brevetkarte.tex- LaTeX source for the front side (two identical blank cards)brevetkarte-template.tex- Template for personalized cards (placeholders replaced from CSV)brevetkarte-rueckseite.tex- LaTeX source for the back side (control points)Export Brevetkarte.csv.example- Example CSV with participant data formatgenerate_cards.py- Generatesbrevetkarte-personalized.texfrom CSV and templatecyclist-logo.png- Audax Randonneurs logoDockerfile- Docker image definition (debian:bookworm-slim + TeX Live packages)Makefile- Build automation
Output
Front Side (brevetkarte.pdf)
Contains two identical brevet cards that can be cut in half. Each card includes:
- Participant information fields (Name, Address, etc.)
- Event details (200km "Auf eine Pommes nach Belgien")
- Randonneur Mondiaux rules
- Homologation section
- Start time: 8:30
Back Side (brevetkarte-rueckseite.pdf)
Contains control points table (4 columns × 6 rows):
- Rows 1-3: Control points for upper card
- Nr. 1: Start (Km 0 - Unisport, Bonn)
- Nr. 2: Km 57 - Nationalpark-Tor, Heimbach
- Nr. 3: Km 100 - Friterie "Au Petit Creux", Waimes
- Nr. 4: Km 165 - Mahlberg
- Nr. 5: Km 205 - Finish (Unisport, Bonn)
- Rows 4-6: Control points for lower card (same as above, but Nr. 5: Km 214)
- Empty columns for stamps/signatures
- Control question for verification
Duplex Printing
The PDFs are designed for duplex (double-sided) printing:
- Print
brevetkarte.pdfon one side - Print
brevetkarte-rueckseite.pdfon the reverse side - The columns and rows are aligned so that:
- Front side columns match back side columns
- Upper card (rows 1-3) aligns with front side upper card
- Lower card (rows 4-6) aligns with front side lower card
- Cut the sheet in half horizontally to create two separate brevet cards
Customization
Edit brevetkarte.tex to modify front side:
- Event name, date, and location
- Distance (200km)
- Start time
- Club information
- Brevet number format
Edit brevetkarte-rueckseite.tex to modify back side:
- Control point locations
- Control times (von/bis)
- Distances
- Control questions
Description
Languages
TeX
41.3%
Python
37.1%
Makefile
19.9%
Dockerfile
1.7%