This repository contains a German grammar and verb-reference book developed as part of my own German-learning journey. It brings together the rules, patterns, and examples that I have found most useful, with a particular focus on practical verb usage.
The book is an ongoing project. Corrections and constructive suggestions are welcome.
All 600 verb tables are maintained as structured YAML rather than handwritten LaTeX records. The grammar chapters and visual design remain in LaTeX because prose and print layout are already expressed well there. The build pipeline is:
verbs/verbs.yaml -> validation -> verbs/verb-list.tex -> GermanBook.pdf
verbs/verb-list.tex is generated. Edit verbs/verbs.yaml, then regenerate.
- Python 3
- PyYAML (
python-yamlon Arch Linux) latexmkand the LaTeX packages used bystyle/germanbook.sty
makeThis validates the YAML, regenerates verbs/verb-list.tex when necessary, and
builds GermanBook.pdf. Building in the project root is intentional: the two
imakeidx indexes then find their generated .idx files and apply
style/germanbook.ist during the LaTeX run.
Other useful commands are:
make generate # regenerate verbs/verb-list.tex
make check # validate YAML and check that generated LaTeX is current
make test # run the catalogue tests
make clean # remove LaTeX build productsThe underlying generator commands are also available as
python3 scripts/generate_verbs.py and
python3 scripts/generate_verbs.py --check.
main.tex— book assembly and orderinggrammar/— grammar-reference chaptersverbs/verbs.yaml— canonical source for all verb dataverbs/verb-list.tex— generated LaTeX; do not edit directlyverbs/introductions/— explanatory notes included in the verb referencescripts/verb_data.py— schema validation and LaTeX renderingscripts/generate_verbs.py— generator and generated-file checkstyle/germanbook.sty— shared book and verb-table presentationtemplates/new-verb.yaml— starter record for adding a verbtests/— catalogue and generation regression tests
Copy templates/new-verb.yaml into the appropriate chapter and alphabetical
group in verbs/verbs.yaml, then edit the new record. The YAML retains the
book's chapter and alphabetical-section ordering. Each verb separates:
- identity and English meaning;
- grammatical classification, auxiliary selection, and visual case style;
- person-keyed present, preterite, and optional subjunctive forms;
- role-keyed imperative forms;
- structured perfect, future, and pluperfect constructions;
- prepositional patterns with explicit government;
- related separable compounds with an unformatted split marker.
grammar.type is a broad verb classification and uses five values: regular,
irregular, mixed, modal, and variable. Case government, reflexivity,
prefix behaviour, and register do not belong in this label; they are either
represented elsewhere in the record or left out of the compact heading.
The two explanatory callout boxes remain in verbs/introductions/, just as
the longer grammar prose remains in grammar/.
scripts/import_existing_tex.py records how the initial YAML data was
migrated from the former handwritten verbs/verb-list.tex. It is retained as
migration history and is not part of the normal editing workflow.