Print-ready editable voter-information booklet for the City of Chamblee 2026 Democratic primary.
- TeX 49.9%
- Python 48.8%
- Makefile 1.3%
| .forgejo/workflows | ||
| assets | ||
| data | ||
| deliverables | ||
| qa-previews | ||
| scripts | ||
| src | ||
| .gitattributes | ||
| .gitignore | ||
| Makefile | ||
| README.md | ||
Chamblee 2026 voter booklet
Editable-source + PDF project for the Chamblee 2026 Democratic primary voter booklet.
Active generation pipeline
- Generator script:
scripts/generate_booklet.py - Validation script:
scripts/validate_booklet.py - Editable booklet pages:
src/booklet-pages.tex - Editable imposed print layout:
src/booklet-print.tex - Rendered booklet pages PDF:
build/booklet-pages.pdf - Rendered imposed print PDF:
build/booklet-print.pdf
Prerequisites
- Python 3
ffmpeg/ffprobefor headshot preparation- LuaLaTeX and
latexmkfor PDF builds - Git LFS enabled before building from a fresh clone, so committed image assets are real images rather than pointer files
The included Makefile defaults to the Hermes TeX Live path when available (/opt/hermes-runtime/tools/texlive/2026/bin/x86_64-linux) and otherwise uses latexmk from PATH. Override with LATEXMK=/path/to/latexmk if needed.
Build and validation
git lfs pull # needed after a fresh clone
make generate # refresh data/render_data.json and src/*.tex
make validate # check generated data, assets, and imposition order
make build # build build/booklet-pages.pdf and build/booklet-print.pdf
Equivalent manual build commands:
python3 scripts/generate_booklet.py
python3 scripts/validate_booklet.py
export PATH=/opt/hermes-runtime/tools/texlive/2026/bin/x86_64-linux:$PATH
latexmk -lualatex -interaction=nonstopmode -halt-on-error -jobname=booklet-pages -output-directory=build src/booklet-pages.tex
latexmk -lualatex -interaction=nonstopmode -halt-on-error -jobname=booklet-print -output-directory=build src/booklet-print.tex
Sources and structure
- Authoritative candidate list:
data/sheet_raw.json - Cleaned/render-ready data:
data/render_data.json - Candidate QR codes:
assets/qr/candidates/ - Candidate headshots:
assets/headshots/square/ - Review images:
qa-previews/ - Project repository root: this directory
Binary file handling
This repo uses Git LFS for committed image formats listed in .gitattributes. Clone with Git LFS enabled to fetch preview images and static assets normally.
Current PDF deliverables in deliverables/ are committed as regular files; generated PDFs under build/ are ignored.
Imposition order
The print PDF follows the required 8-page booklet order:
- Sheet A front: page 8 | page 1
- Sheet A back: page 2 | page 7
- Sheet B front: page 6 | page 3
- Sheet B back: page 4 | page 5