Glossar: Sprungleiste, Abkürzungen ausschreiben, CLAUDE.md-Regel

Sprungleiste (A B C ... Z) im Glossar — wie im Stichwortverzeichnis:
ein Klick je Buchstabe springt zur '## <Buchstabe>'-Überschrift.
Eingebaut in erzeuge_glossar_04.py als {=html}-Rohblock (nur HTML,
im PDF bedeutungslos).

Abkürzungen beim ersten Mal ausschreiben: 'VaR' → 'VaR (Value at Risk)',
'EVPI' → 'EVPI (Expected Value of Perfect Information)' als Link-Text
bei der ersten Nennung je Datei; danach nur die Abkürzung. 19 Abkürzungen
erfasst (VaR, CVaR, KKT, NLP, MILP, EVPI, LP, QP, ...).

CLAUDE.md: Regel 'Glossar-Links: Fachbegriffe im Fließtext automatisch
verlinkt' dokumentiert — resolve_glossar(), LINK_TEXTE,
ABBREV_ERSTE_NENNUNG, _NICHT_AUTO_LINKEN, _ZU_KURZ_ABK, .glossar-link,
{gl:}-Marke, Sprungleiste, {#gloss:<slug>}-Anchor.
This commit is contained in:
dschlueter 2026-09-10 17:52:49 +02:00
commit 0e2c011732
47 changed files with 545 additions and 561 deletions

View file

@ -113,7 +113,7 @@ bewacht jede Familie. Konkret:
einer bereits nummerierten Überschrift. Verwiesen wird auf
`{ref:sec:<kapitel>-denkfehler}`.
* Im Fließtext `{ref:<label>}`, nie eine Literalzahl.
* **Das Glossar (Anhang E) wird erzeugt.** Die 234 Einträge stehen in
* **Das Glossar (Anhang E) wird erzeugt.** Die 239 Einträge stehen in
`glossar_eintraege_04.py` als Viertupel *(Anzeigename, Indexmarke, Definition,
Verweisziel)*; `erzeuge_glossar_04.py` schreibt daraus `94_Anhang_Glossar.md`. Die `.md`
**nicht** von Hand bearbeiten — `--check` bemerkt es und nennt die Quelle. Der Erzeuger
@ -122,6 +122,25 @@ bewacht jede Familie. Konkret:
existieren, und kein Verweis darf auf das Glossar selbst zeigen. Begriffe, die es nur im
Glossar gibt, stehen ausdrücklich in `NUR_IM_GLOSSAR` — sonst ließe sich ein solcher Fall
nicht von einem Tippfehler unterscheiden.
* **Glossar-Links: Fachbegriffe im Fließtext werden automatisch verlinkt.**
`resolve_glossar()` in `build_version_04.py` sucht beim Bau jeden Fließtext nach
Glossar-Begriffen ab und ersetzt die **erste Nennung je Begriff je Datei** durch einen
Link auf den Glossar-Eintrag (`#gloss:<slug>` im Gesamtdokument,
`anhang-glossar.md#gloss:<slug>` in den Einzelseiten). Die `.md`-Quelldateien enthalten
**keine** manuellen Link-Marken — der Build macht es automatisch, sodass Textänderungen
nichts nachziehen. Ausgenommen vom Auto-Linking: Code-Blöcke, Inline-Code, Marken
(`{idx:}`, `{ref:}`), Markdown-Links und Überschriften. Die Slug-Map `LINK_TEXTE` und
die Erste-Nennung-Map `ABBREV_ERSTE_NENNUNG` werden in `glossar_eintraege_04.py`
automatisch aus `EINTRAEGE` generiert. **Abkürzungen** (`VaR`, `CVaR`, `KKT` …) werden
beim ersten Vorkommen ausgeschrieben: „VaR (Value at Risk)“ als Link-Text, danach nur
„VaR“. **Mehrdeutige** Begriffe („Lösung“, „Matrix“, „Variable“ …), die im Glossar
stehen aber nicht jedes Vorkommen verlinkt werden soll, stehen in `_NICHT_AUTO_LINKEN`;
wer sie an einer Stelle trotzdem verlinken will, setzt `{gl:Begriff}`. **Zu kurze**
Abkürzungen (`OR` — taucht als Teilstring in `OR-Tools` auf) stehen in `_ZU_KURZ_ABK`
und werden nur mit `{gl:OR}` verlinkt. Die CSS-Klasse `.glossar-link` (dezente
gestrichelte Unterstreichung, nicht blau) steht in `web_04/assets/site.css`.
`erzeuge_glossar_04.py` gibt jedem Eintrag einen `{#gloss:<slug>}`-Anchor und eine
alphabetische **Sprungleiste** (A B C …) wie das Stichwortverzeichnis.
* **Der Titeltext steht in `Operations_Research_mit_Python_Version_04/NEUER_TITEL.md`** und
nirgends sonst. `titeltexte_04.py` liest ihn; die PDF-Titelseite
(`bilder_04/erzeuge_titelseite.py`) und der Hero-Block der Startseite