END-GUIDE-STIL (HTML/CSS → PDF via WeasyPrint) FORMAT - A4 Hochformat, 50–250 Seiten (themenabhängig — kleines Thema kurz, großes Thema lang; die Seitenzahl folgt aus dem Inventar) - @page { size: A4; margin: 18mm; } - Cover-Seite + automatisches Inhaltsverzeichnis - Footer: Seitenzahl Mitte, " EndGuide" rechts ABDECKUNG (höchste Guide-Stufe) - ALLE Bausteine des Themas — vollständig, "lieber zu viel als zu wenig". - Von der ersten Zeile bis zu Experten-Themen (Architektur, Interna, Betrieb — was immer beim Thema die Expertenstufe ist). - Aktuelle Version des Themas als Zielversion nennen. THEMENINVENTAR (verbindlich) - Das Inventar wird vorab von einem Recherche-Agenten erstellt und mitgeliefert. Es ist die verbindliche Stoffliste: 1 Inventar-Punkt = 1 EIGENE H2-Sektion nach dem Muster Titel·Erklärung·Beispiel. - Punkte beim Schreiben NICHT zusammenfassen, kürzen oder eindampfen — wirkt das Pensum zu groß, Teil für Teil abarbeiten statt komprimieren. - Teile und Kapitel aus dem Inventar ableiten: verwandte Punkte zu Kapiteln gruppieren, Kapitel zu Teilen. Es gibt KEINE Vorgabe-Zahl für Teile/Kapitel. ZIELGRUPPE — VOM ANFÄNGER ZUM EXPERTEN - Beginnt bei null, steigert sich progressiv über die Teile - Frühe Teile erklären jeden Begriff; spätere setzen Vorheriges voraus - Verweise nach hinten ("eigener Teil") erlaubt – der Guide wird durchgelesen oder nachgeschlagen KERNPRINZIP — TITEL · ERKLÄRUNG · BEISPIEL (das definierende Muster) - JEDES Konzept in genau dieser Reihenfolge: 1. Titel: reiner Konzept-/Verb-/Typname. Nichts sonst. 2. Erklärung: 1–3 Sätze Prosa. Nennt die Funktionen/Bausteine und was sie tun. 3. Beispiel: lauffähiger Code (bzw. konkretes Beispiel) mit sichtbarem Ergebnis als Kommentar. - Die Überschrift trägt NIE die Funktionsliste oder die Definition: - schlecht: "Ersetzen: str_replace & substr_replace" "object – Instanz einer Klasse" - gut: "Ersetzen" + Erklärung nennt die Funktionen + Beispiel "object" + Erklärung "Instanz einer Klasse" + Beispiel INHALTLICHE PRINZIPIEN - Vollständigkeit: aufzählbare Mengen IMMER komplett (alle Operatoren, alle Varianten, alle Modi …). Nur sehr große Mengen (z. B. hunderte Formatzeichen) als Auswahl + Verweis auf die Doku. - Mechanik zeigen: Beispiele sind echte, lauffähige Mini-Demos MIT Ausgabe – nicht nur Signaturen oder leere Interfaces. Bei Mustern/Interfaces: Vertrag + konkrete Implementierung + Aufruf mit sichtbarem Ergebnis. - Tiefe vor Aufzählung: erst erklären warum/wann, dann zeigen. - Keine Performance-Zahlen ohne Quelle. CODE-KONVENTIONEN (bei technischen Themen) - Bezeichner englisch: Variablen, Funktionen, Klassen, Methoden, Konstanten. - Deutsch bleibt: Fließtext, Überschriften, Code-Kommentare, Ausgabetexte, Beispieldaten ("Anna", "Köln", "Hallo Welt"). - Unverändert: themen-/spracheigene Namen (Built-ins, Standard-APIs); Tabellen-/Spaltennamen in Strings (= Daten, keine Bezeichner). - Ergebnis-Kommentar an jedem Beispiel: // 19.99 € - Neutrale Daten: Namen Anna/Ben/Tom, Orte Köln/Hamburg, mail@example.com. Keine personenbezogenen oder echten Daten. - Moderne Syntax der aktuellen Zielversion bevorzugen; Versionsabhängiges kennzeichnen ("seit Version X"). STRUKTUR 1. Cover: Logo, Titel " — Der EndGuide", Subtitle, Badge " Teile · Kapitel" (Zahlen aus dem Inventar) 2. Inhaltsverzeichnis (automatisch aus der Struktur erzeugt) 3. Pro Teil: Trennseite (Teil-Nummer · Titel · Beschreibung · Kapitel-Liste) 4. Pro Kapitel: Kapitel-Nummer + Titel, kurzer Lead-Satz, dann H2-Sektionen nach dem Muster Titel·Erklärung·Beispiel NUMMERIERUNG - Teile und Kapitel sind GETRENNTE Zähler. - Kapitel laufen über den ganzen Guide durch – sie starten NICHT je Teil neu. - "Teil 7" ≠ "Kapitel 7". ELEMENTE - Fließtext: justify; Erklärungen als Prosa, Aufzählungen sparsam. - Codeblöcke: dunkler Hintergrund, Syntax-Highlighting, mit Ergebnis-Kommentaren. - Inline-Code: heller Hintergrund, Hauptfarbe – für jeden Fachbegriff und Funktionsnamen im Fließtext. - Callouts in 3 Varianten: tip (✓), warn (!), note (i). Sparsam, höchstens einer pro Sektion. - KEINE Übersichts- oder Referenztabellen. Jede Funktion/jedes Feature bekommt Erklärung + Beispiel inline. TYPOGRAFIE & FARBEN (max 3 + Neutrals) - Hauptfarbe: an offizielle Farbe des Themas anlehnen; dunkle Code-Blöcke (#1e2a3a-Familie). - Body Serif; Überschriften Sans-Serif bold; Code Monospace. - max. 3 Schriftgrößen pro Sektion. CALLOUT-NUTZUNG - tip (✓): Best Practice / Empfehlung. - warn (!): Sicherheits- oder Stolperfalle. - note (i): Hintergrund / Abgrenzung. BUILD-ARCHITEKTUR (strukturgetrieben) - Eine Quelle der Wahrheit: STRUCTURE in build.py = Liste aus (Teil-Kicker, Titel, Beschreibung, [Kapiteltitel]) — direkt aus dem Inventar abgeleitet. Daraus entstehen Reihenfolge, Nummern, Inhaltsverzeichnis und Trennseiten automatisch. - Inhalt in Modulen content_partN.py: CHAPTERS = { "Kapiteltitel": body_html }. Teil für Teil schreiben — nie den ganzen Guide in einem Stück. Nach jedem Teil: H2-Sektionen gegen die Inventar-Punkte des Teils zählen, Fehlendes sofort ergänzen, erst dann den nächsten Teil beginnen. - build.py meldet am Ende die Gesamtzahl der H2-Sektionen; sie muss der Anzahl der Inventar-Punkte entsprechen. - Highlight-Span-Klassen im Code: c=Kommentar, k=Keyword, s=String/Zahl, f=Funktion, t=Typ/Klasse/Konstante, v=Variable, a=Attribut. Inline-Code im Text: . - Escaping im Code: < > & als < > & (z. B. ->, =>, &&). - scrub() filtert beim Bauen personenbezogene Reste (Namen/Orte/Mails) heraus. VERMEIDEN - Feste Teile-/Kapitel-/Seitenzahlen als Ziel (der Umfang folgt aus dem Inventar, nicht umgekehrt). - Inventar-Punkte zusammenfassen oder weglassen. - Funktionsliste oder Definition in der Überschrift (Titel bleibt rein). - Übersichts-/Referenztabellen ohne Erklärtext. - Deutsche Code-Bezeichner. - Personenbezogene oder echte Daten. - Unvollständige aufzählbare Mengen. - Reine Interface-/Signatur-Stubs ohne Aufruf + Ausgabe. - Performance-Zahlen ohne Quelle. - Codeblock oder Callout über einen Seitenumbruch zerrissen (page-break-inside: avoid). GENERIERUNG & PRÜFUNG 1. Inventar lesen, STRUCTURE daraus ableiten. 2. python3 build.py → guide.html (meldet Kapitel/Teile + Sektionen) 3. weasyprint guide.html guide.pdf 4. Verifizieren — die Sollwerte kommen aus dem Inventar: - grep -c 'toc-part' == Anzahl Teile in STRUCTURE - grep -c 'chapter-num' == Anzahl Kapitel in STRUCTURE - grep -c '' == 0 - keine echten Namen/Orte/Mails - Seitenzahl (pdfinfo) im Rahmen 50–250 5. Stichproben rendern (pdftoppm) und ansehen: - Überschrift = reiner Titel, Erklärung darunter, dann Beispiel? - Code englisch, Erklärung und Kommentare deutsch? - Codeblöcke/Callouts nicht über Seitenumbruch zerrissen? - Cover, Inhaltsverzeichnis und Teil-Trennseiten korrekt? CHECKLISTE PRO ABSCHNITT - [ ] Überschrift ist ein reiner Titel (keine Funktionsliste, keine Definition) - [ ] Erklärung in Prosa vorhanden, nennt die Bausteine - [ ] lauffähiges Beispiel mit Ergebnis-Kommentar - [ ] keine Tabelle - [ ] englische Bezeichner, deutsche Erklärung/Kommentare/Daten - [ ] aufzählbare Menge vollständig - [ ] neutrale Beispieldaten INSTALLATION - pip install weasyprint - apt install poppler-utils (pdfinfo, pdftoppm, pdftotext) DARKMODE (PFLICHT) - Alle Farben ausschließlich über :root-Variablen definieren (--ink, --muted, --line, --bg-soft, Akzent-Variablen). - Zusätzlich einen Dunkelmodus-Block ausliefern: @media screen { html[data-theme="dark"] { ...dunkle Variablenwerte... } html[data-theme="dark"] body { background: #15171c; } } - Die App aktiviert ihn über data-theme="dark" auf . KEIN prefers-color-scheme verwenden. - Dunkle Werte: Hintergründe dunkel (#15171c / #23262e), Text hell (#e6e8ee), Linien gedämpft (#2c3038). Akzentfarben so anheben, dass Überschriften und Links auf dunklem Grund lesbar bleiben (Kontrast prüfen). Elemente mit hellem Text auf Akzent-Hintergrund (z. B. Tabellenköpfe) dürfen ihre helle Hintergrundfarbe behalten. - Callout-/Infobox-Hintergründe nicht hartkodieren oder im Dunkelmodus explizit abdunkeln (z. B. auf var(--bg-soft)); farbige Border bleibt. - Nur innerhalb von @media screen — Druck/PDF bleibt unverändert hell.