No description
  • HTML 74.8%
  • Python 21.3%
  • CSS 3%
  • Shell 0.9%
Find a file
rene 5f7372ba9d Lesefassung: Dokumentgeruest, Titel aus der Quelle, Leseposition merken
Beim Einsatz auf einem zweiten Buch (Thriller) sind vier Maengel aufgefallen,
alle im Browser nachgemessen, nicht aus dem Quelltext abgeleitet:

1. Die Ausgabe war ein HTML-Fragment: kein DOCTYPE, kein <html>, kein <head>.
   Damit fehlte **<meta name="viewport">** -- auf dem Telefon rendert die Seite
   dann in ~980 px Desktopbreite und muss aufgezogen werden. Ebenfalls kein
   **<meta charset>**: Chrome faellt auf windows-1252 zurueck und zerlegt alle
   Umlaute. Beides betrifft die veroeffentlichte Lesefassung des Akku-Buchs
   genauso -- dort bitte gegenpruefen, ob der Webserver den Zeichensatz bisher
   mitgeliefert hat.
2. Titel und Sprache waren fest auf "Lithium-Akkus reparieren" verdrahtet, an
   zwei Stellen. Sie kommen jetzt aus <title> und <html lang> der Quelldatei,
   damit dasselbe Werkzeug jedes Buch bauen kann.
3. Kein Positionsspeicher. Neu: Die Leseposition wird in localStorage
   gehalten -- nicht als Scrollhoehe, sondern als letzte Ueberschrift oberhalb
   des Viewports plus Abstand. Das ueberlebt geaenderte Schriftgroesse,
   Geraetewechsel und Textaenderungen am Manuskript. Gespeichert wird
   gedrosselt beim Scrollen sowie auf pagehide und visibilitychange (unload
   feuert auf iOS oft nicht). Beim Oeffnen wird still wiederaufgesetzt, dazu
   sechs Sekunden lang eine Pille "Weitergelesen bei ..." mit "Von vorn".
   Ein Anker in der URL hat Vorrang vor der Erinnerung.
4. history.scrollRestoration steht jetzt auf "manual", sonst arbeitet die
   browsereigene Wiederherstellung gegen die eigene.

Nachgemessen an Vollbrand: Wiederaufsetzen mit Abweichung 0 Pixel, charset
UTF-8, Umlaute korrekt, Titel "Vollbrand - Lesefassung".
2026-08-23 22:03:34 +02:00
buch-01-akku-reparatur KDP Select: Entscheidungsgrundlage statt Randnotiz 2026-08-23 11:20:43 +02:00
gemeinsam Lesefassung: Dokumentgeruest, Titel aus der Quelle, Leseposition merken 2026-08-23 22:03:34 +02:00
rechtliches Auszug der vier Pruefstellen als Anhang zur Antwortmail 2026-08-15 09:08:04 +02:00
.gitignore Umschlagvorderseite und E-Book-Cover aus dem textfreien Foto gesetzt 2026-08-22 17:05:22 +02:00
AGENTS.md Werkzeuge fuer die Korrekturschleife: auslesen und markieren 2026-08-21 22:35:27 +02:00
README.md Produktions-Toolchain fuer KDP-Buecher aufgesetzt 2026-08-07 19:20:00 +02:00

ebooks

Manuskripte und Produktions-Toolchain fuer die KDP-Veroeffentlichungen.

Aufbau

gemeinsam/css/druck.css      Satzspiegel fuer KDP-Taschenbuch 6" x 9"
gemeinsam/css/epub.css       Reflowable-Stil fuer das eBook
gemeinsam/werkzeuge/         Assembler und Pruefwerkzeuge
buch-01-akku-reparatur/      Buch 1 (in Arbeit)

Aus einer Markdown-Quelle entstehen beide Ausgabeformate: Markdown → pandoc → EPUB, und Markdown → HTML+CSS → WeasyPrint → Druck-PDF.

Bauen

./buch-01-akku-reparatur/bauen.sh

Das Skript erzeugt PDF und EPUB und prueft beide anschliessend: das PDF wird nachgemessen (Stege, Trimmgroesse, Seitenzahl gegen die KDP-Tabelle), das EPUB laeuft durch epubcheck. Exit-Code 1 bei Befunden.

Umgebungsabhaengigkeiten

Punkt Warum
DYLD_FALLBACK_LIBRARY_PATH=/opt/homebrew/lib conda-Python findet die Homebrew-Libs fuer WeasyPrint sonst nicht. Setzt bauen.sh selbst.
hyphenate-character: "\002D" in druck.css Charter enthaelt kein U+2010 HYPHEN. Ohne die Zeile holt WeasyPrint jeden Trennstrich aus einer Fallback-Schrift (gemessen: Hiragino Mincho).
Kolumnentitel via string(kapitel, first-except) @page name:first greift in WeasyPrint nur auf der ersten Dokumentseite, nicht je Kapitel. Gemessen, nicht vermutet.

KDP-Vorgaben (Stand 2026-08, nachgeschlagen)

  • Trimm 6" x 9", Innensteg bei 151-300 Seiten mindestens 12,7 mm
  • Aussen/oben/unten mindestens 6,35 mm ohne Anschnitt
  • Anschnitt, falls genutzt: 3,2 mm allseitig
  • Seitenzahl 24 bis 828
  • 10 neue Titel pro Buchformat und Woche

Vor der Veroeffentlichung

  • Impressum: Name und ladungsfaehige Anschrift (Verlegerpflicht in DE)
  • Haftungsausschluss
  • KI-Deklaration bei KDP setzen: Text und Bilder (generiertes Cover)
  • Buch werbefrei halten (KDP-Vertrag Ziffer 5.1.2)
  • Buchpreisbindung: gleicher Preis bei allen Anbietern
  • Probeexemplar drucken lassen und pruefen