Neuer Standard auto: Ebene 1 wie bisher, aber Kapitel mit über 30 000
Wörtern und mindestens zwei Unterkapiteln der nächsten Ebene werden an
diesen geteilt (Teile eines Romans). Alle anderen Kapitel bleiben ganz;
Register, Literatur und Glossar werden nie zerlegt. Ein Probedurchlauf
des ChapterBuilder bestimmt die Kapitel, der zweite teilt sie (deep_starts).
Info chapter-split; eine feste Zahl verhält sich wie bisher.
Roman (Adler-Olsen): 78 statt 9 Dateien, wortgleich, 0 kaputte Links.
Klein, Krooß, Lerch, Liesen: Kapiteldateien byte-identisch.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Kapitelbildung: Cover-Erkennung am Inhalt, Titel "Deckblatt"/"Titel"
- Merge: --toc hinter dem Vorspann, unsichtbare Platzhalter für book.lua,
Datumsformat im Buch-Kopf
- book.lua gilt für HTML und beide PDF-Wege
- Tests: test_styles.py und neue Merge-Tests beschrieben
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Kapitelerkennung: erstes Kapitel nur aus einem Bild = Cover ("[Titelinfo]",
"Deckblatt"), Titel "Titel" = Titelseite
- epub2md_merge: Vorspann reicht bis vor den Hauptteil (Teil, Vorwort,
Einleitung, nummerierter Titel, > 1000 Wörter), kurze Zwischenseiten
(Auflage, Verlagsbrief, "Über dieses Buch") bleiben davor
- book.lua: Cover am Inhalt erkannt; LaTeX-Weg (Filter in beiden Schritten):
\tableofcontents hinter dem Vorspann, \clearpage je Kapitel, kein \maketitle
vor dem Cover, A4, seitengroßes Cover, DejaVu-Schriften und Mathe-Symbole
für fehlende Glyphen (Mathebuch: >10.000 fehlende Zeichen → 0)
- Buch-README: bei Formeln LaTeX-Weg empfohlen, sonst weasyprint
- Alle sechs Beispielbücher geprüft: Seite 1 Cover, Verzeichnis nach dem Vorspann
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Pandocs --toc setzt Inhaltsverzeichnis und Titelkopf immer vor den
Buchtext, also vor Cover, Titelseite und Impressum.
- epub2md_merge.py: Kapiteltypen aus manifest.json; Platzhalter
<div id="epub2md-toc"> hinter dem Vorspann und, ohne eigene Titelseite,
<div id="epub2md-titlepage"> hinter dem Cover; --toc-Liste an derselben Stelle
- pandoc/book.lua (HTML/weasyprint, statt --toc): baut dort das
Inhaltsverzeichnis, lässt Pandocs Titelkopf bei eigener Titelseite weg,
Cover ohne Bildunterschrift, Kapitelanker → div.chapter-start;
andere Formate: nur Platzhalter entfernen
- print.css: jedes Kapitel (auch Cover/Titelseite/Impressum) und das
Verzeichnis auf neuer Seite, Verzeichnis mit Punktlinie und Seitenzahl
- Buch-README, Bedienungsanleitung, README: Befehle mit book.lua
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- A4, Seitenzahlen, jedes Kapitel auf neuer Seite, Inhaltsverzeichnis auf
eigener Seite, Silbentrennung (nicht in Code), umbrechende Codezeilen;
bringt Grundschrift und Titelkopf mit, da --css Pandocs Standard-CSS ersetzt
- Buch-README: zusätzlicher weasyprint-Befehl mit Filter und print.css
- Doku: Bedienungsanleitung und README um den weasyprint-Weg ergänzt
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Marken im Kastentitel landen über marker_sink vor dem Kasten (wie bei
Überschriften) statt im fetten Titel ("**\[S. 62\]Wozu …**")
- Doku: --no-css-emphasis lässt <mark> bestehen, das steuert --styles
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Pandoc 3.1.3 kennt '> [!TIP]' nicht und druckt die Marke als Text.
pandoc/callouts.lua macht daraus in HTML/EPUB gerahmte, farbige Kästen
(<div class="callout callout-tip"> + CSS) und in LaTeX/DOCX/ODT einen
Zitatblock mit fettem Titel ("Tipp: …", englisch bei lang: en); auch für
den PDF-Weg über HTML.
- Buch-README: Pandoc-Befehle enthalten --lua-filter, wenn Callouts da sind
- Kastentitel ohne dekorative Symbole (<span class="box_icon">[»]</span>)
- README: css.py/pandoc in der Architektur, veralteter CSS-Hinweis korrigiert
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Erkennung: epub:type/role pagebreak (aria-label, title, Text) sowie
Seitenanker-IDs page_47, page37, seite-12 und p17 (nur leere a/span)
- Ausgabe: visible = \[S. 123\], comment = <!-- S. 123 -->, none (Standard)
- keine Marker in Code; Marker in Überschriften als Absatz davor;
Layout-Tabellen-Überschriften behalten ihre Seitenmarke
- Bericht: layout.page_markers; interne data-e2m-*-Attribute nie im HTML
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
--styles semantic (Standard): Hintergrundmarkierung wird zu <mark>, sonst
nur bedeutungstragende Gestaltung.
--styles html: Farbe, Hintergrund, Schriftgröße/-art, Kapitälchen und
Ausrichtung bleiben als <span style>/<div style> erhalten,
fremdsprachige Passagen als <span lang>. Übernommen wird nur, was vom
Grundstil abweicht (häufigste Werte aller Absätze, Schriftgröße ab ±15 %);
Formel- und Bildabsätze bekommen keine Ausrichtung; unsichere Werte werden
verworfen. Gilt im Fließtext, für Absätze und in HTML-Tabellen.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Kästen werden erkannt über aside/epub:type, Klassennamen (box, kasten, tipp,
hinweis, warnung, wichtig, exkurs …) oder einen CSS-Rahmen/-Hintergrund um
kurzen Fließtext. Folgen von Tipp-Absätzen werden gruppiert. Ausgabe:
'> [!TIP]' mit fettem Titel (GitHub-Alert/Obsidian-Callout). Der Typ kommt
aus Klasse, Titel oder erstem Wort; dekorative Symbolbilder entfallen;
umrahmte Codelistings bleiben Code. Option --boxes callout|quote|html|plain.
Beispielbücher: Python-Buch 72, C-Buch 83, Bildband 32 Tipps, Mathebuch 11
MATLAB-Minuten; Code-Treue und Links unverändert.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Ein leerer Absatz (nur Leerzeichen/br) zwischen zwei Textabsätzen wird
zu '* * *'; mehrere ergeben einen Wechsel.
- Ornament-Absätze (***, ⁂ …) werden ebenfalls zu '* * *'.
- Leere divs (z. B. Springer ClearBoth) und reine Ankerabsätze zählen nicht.
- Gedichte (poem/verse/gedicht, z3998:poem) werden zum Zitatblock mit einer
Zeile pro Vers und Leerzeile zwischen Strophen.
Roman: 239 Szenenwechsel und 2 Gedichte (vorher verloren bzw. als lose
Absätze); die Sachbücher sind praktisch unverändert. Bericht: layout.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Neues Modul epub2md/css.py: Es wertet die Stylesheets des Buches aus
(Typ-, Klassen- und ID-Selektoren, Nachfahre/Kind, Spezifität,
style-Attribute; @media und Pseudoklassen werden ignoriert). Daraus werden:
- fett/kursiv → **/*, unterstrichen → <u>, durchgestrichen → ~~,
vertical-align super/sub → <sup>/<sub>
- Monospace-Einzelwörter → Inline-Code
- display:none → Element entfällt
Das gilt im Fließtext, für ganze Absätze und in HTML-Tabellen (dort als
HTML-Tags). Direkt aneinanderstoßende gleiche Hervorhebungen werden
zusammengefasst ('*x**y*' brach Markdown; Mathebuch: 305 → 249 Stellen).
Beispiele: C-Buch 799× kursiv und 648× fett, die vorher verloren gingen.
Abschaltbar mit --no-css-emphasis.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Nullbreiten-Zeichen (U+200B–U+200D, U+2060, U+FEFF) und weiche
Trennstriche (U+00AD) werden aus Fließtext, Alternativtexten und
Kapiteltiteln entfernt; Code bleibt unverändert. Im Mathebuch sind das
198 Zeichen (z. B. '1.1'). Abschaltbar mit --keep-invisible-chars; die
Anzahl steht im Bericht unter text_cleanup.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Überschriften, die genau einem Verzeichnisnamen entsprechen (Quellen,
Literatur, Glossar, Register, Index …), beginnen auch unterhalb von
--chapter-level eine eigene Datei mit passendem Typ. Die nächste Überschrift
gleicher oder höherer Ebene beendet den Abschnitt; innerhalb eines Kapitels,
das selbst ein Verzeichnis ist, wird nicht weiter geteilt. Im Roman-Beispiel
wird 'Quellen' aus dem Anhang so zum Literaturverzeichnis; die anderen vier
Beispielbücher bleiben unverändert.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Getestete Befehle für HTML, EPUB, Word, ODT, PDF (LaTeX über HTML bzw.
weasyprint) und Kindle (AZW3 via Calibre), aus der Gesamtdatei wie aus
den Kapiteldateien, mit Installationshinweisen.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- QA2-09: Formeln in HTML-Tabellen als MathML/Formelbild statt $…$; Inline-Noten
dort als HTML-Verweis (Markdown wird in HTML-Blöcken nicht gerendert)
- QA2-10: PDF-Weg Markdown → HTML → PDF in README, Bedienungsanleitung und
Buch-README. Beim direkten Weg Markdown → LaTeX verwirft Pandoc HTML-Tabellen
und <a id>-Ziele. Geprüft: C-Buch 405 Seiten, 34 Tabellen, 728/755 Links.
- QA2-11: Hinweis code-language-hint bei einsprachigen Büchern
- QA2-12: --strict bricht bei nicht dekodierbarem XHTML ab (Exit 3);
Hilfetext präzisiert
- QA2-13: verdächtig große Medien werden übersprungen (Fehler media-skipped,
Platzhalter) statt die ganze Konvertierung abzubrechen
- QA2-14: Formelklasse am <img> selbst wird erkannt
- QA2-15: wiederholte Diagnosen werden gezählt (count, ×n); MathML in
HTML-Tabellen zählt im Formelbericht mit
- QA2-16: Unicode-Buchstaben in Ankernamen bleiben erhalten
- QA2-17: keine leeren Links (#) auf den eigenen Kapitelanfang; keine
namespaced Attribute (epub:type → type=) in HTML-Tabellen
- QA2-18: nicht definierte Entitäten werden gemeldet (undefined-entity)
- QA2-19: Bild-Platzhalter ohne Kursivschrift (benachbarte ergaben **)
Regressionstests: tests/test_qa2_open.py (11 Tests, vorher alle rot).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Bildband-EPUB (434 Bilder, 246 Figuren) konvertiert und validiert:
- 0 Warnungen, 968 Links/Bilder gültig
- alle 442 img-Elemente ausgegeben, 13/13 Bildunterschriften
- Gesamtdatei per Pandoc nach EPUB mit 433 Bildern
Kein Codefehler gefunden. README-Einschränkungen aktualisiert
(CSS-generierte Inhalte werden nicht übernommen).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Fortsetzungszeilen werden wieder mit genau einem Leerzeichen zur
ursprünglichen Codezeile zusammengefügt. Im Python-Beispielbuch sind das
195 Stellen; danach lassen sich 247 statt 203 von 255 Python-Blöcken
parsen. Abschaltbar mit --keep-wrap-markers; der Bericht enthält
wrap_lines_joined pro Block und einen Hinweis pro Kapitel.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Schritt-für-Schritt-Anleitung: Einrichtung, Umwandeln, Gesamtdatei,
Rezepte für Roman/Programmier-/Mathebuch/Fußnoten, Weiterverarbeitung
(Obsidian, Pandoc, RAG), erneutes Umwandeln, Warnungen und Fehlermeldungen
mit Abhilfe, FAQ und Optionsübersicht. README verlinkt sie.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>