feat: epub2md_merge.py – Gesamtdatei aus einer epub2md-Ausgabe
Fügt die Kapiteldateien in Lesereihenfolge (manifest.json) zu einer Markdown-Datei mit dem Original-EPUB-Namen (.md) zusammen. Dabei werden: - Links zwischen Kapiteln zu Sprunglinks in der Gesamtdatei, - kollidierende Anker pro Kapitel umbenannt, - Medienpfade relativ zum Ziel umgeschrieben, - doppelte Fußnotendefinitionen entfernt, - Code nie verändert. Optionen -o, --toc, --no-frontmatter und --force; abschließender Linkcheck. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
parent
0dad1f7b2d
commit
88888e5587
1 changed files with 448 additions and 0 deletions
33
README.md
33
README.md
|
|
@ -209,6 +209,38 @@ weil CommonMark keine `[^…]`-Syntax kennt.
|
|||
- **Register:** Buchstabengruppen werden zu `##`-Überschriften, Untereinträge erhalten `– `. Interne
|
||||
Registerlinks werden auf Kapiteldatei + Anker umgeschrieben. Seitenzahlen bleiben als Text sichtbar.
|
||||
|
||||
## Gesamtdatei erzeugen: `epub2md_merge.py`
|
||||
|
||||
Fügt die Kapiteldateien einer epub2md-Ausgabe in Lesereihenfolge (aus `manifest.json`) zu **einer**
|
||||
Markdown-Datei zusammen. Die Datei heißt wie das Original-EPUB, aber mit der Endung `.md`.
|
||||
|
||||
```bash
|
||||
python3 epub2md_merge.py output/programmierhandbuch
|
||||
# → output/programmierhandbuch/<Original-Name>.md
|
||||
|
||||
python3 epub2md_merge.py output/programmierhandbuch -o buecher/handbuch.md --toc --force
|
||||
```
|
||||
|
||||
| Option | Wirkung |
|
||||
| --- | --- |
|
||||
| `-o`, `--output DATEI.md` | anderer Zielort; Medienpfade werden relativ zum Ziel umgeschrieben |
|
||||
| `--frontmatter` / `--no-frontmatter` | ein YAML-Kopf mit Buchmetadaten (`title`, `author`, `lang`, …) für Pandoc (Standard: an) |
|
||||
| `--toc` | Inhaltsverzeichnis mit Sprunglinks auf die Kapitel einfügen |
|
||||
| `--force` | bestehende Zieldatei überschreiben (sonst Abbruch mit Exit 1) |
|
||||
|
||||
Beim Zusammenfügen passiert Folgendes:
|
||||
|
||||
- Die Frontmatter der einzelnen Kapitel wird entfernt.
|
||||
- Jedes Kapitel erhält einen Startanker (`<a id="003-kapitelname"></a>`).
|
||||
- Links zwischen Kapiteln (`003-x.md#anker`) werden zu Sprunglinks in der Gesamtdatei.
|
||||
- Anker, die in mehreren Kapiteln vorkommen (z. B. `Sec1` in jedem Kapitel eines Springer-Buchs), werden
|
||||
ab dem zweiten Vorkommen in `c012-Sec1` umbenannt, samt aller Links darauf.
|
||||
- Medienpfade (`../media/…`) werden auf den Ort der Gesamtdatei umgeschrieben.
|
||||
- Fußnotendefinitionen, die in mehreren Kapiteln stehen, erscheinen nur einmal.
|
||||
- Codeblöcke und Inline-Code werden nie verändert.
|
||||
|
||||
Am Ende werden alle Links der Gesamtdatei geprüft.
|
||||
|
||||
## Weiterverarbeitung mit Pandoc
|
||||
|
||||
```bash
|
||||
|
|
@ -260,6 +292,7 @@ Verlustfreiheit behauptet (`lossless: false`).
|
|||
|
||||
```text
|
||||
epub2md.py Einstiegspunkt
|
||||
epub2md_merge.py Einstiegspunkt: Gesamtdatei aus einer Ausgabe erzeugen (epub2md/merge.py)
|
||||
epub2md/
|
||||
├── cli.py argparse, Exit-Codes
|
||||
├── pipeline.py Ablaufsteuerung, Schreiben (atomar), Bericht/Manifest
|
||||
|
|
|
|||
Loading…
Reference in a new issue