Bedienungsanleitung ergänzt, Bildpfade relativ zur Markdown-Datei

- BEDIENUNGSANLEITUNG.md: Installation, Weg A (PDF -> EPUB), Weg B (Markdown
  bearbeiten, dann pandoc), Scans, Optionen, Prüfen, häufige Probleme;
  Verweis in README.md
- Fix: pymupdf4llm schreibt Bildpfade relativ zum Arbeitsverzeichnis
  ("Output/x_images/…"), wenn der Bilderordner darunter liegt. Die Links
  zeigen jetzt immer relativ zur Markdown-Datei; Regressionstests ergänzt.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Dieter Schlüter 2026-10-02 01:23:36 +02:00
commit 85a01ac5c7

View file

@ -867,15 +867,25 @@ def extract_markdown(source: Path, plan: list[str], options: dict, jobs: int) ->
return "\n\n".join(parts)
def make_image_links_relative(markdown: str, image_dir: Path) -> str:
"""Absolute Bildpfade durch Pfade relativ zur Markdown-Datei ersetzen."""
absolute_dir = image_dir.resolve().as_posix()
relative_dir = image_dir.name
IMAGE_LINK = re.compile(r"(!\[[^\]]*\]\()([^)\s]+)\)")
return markdown.replace(
absolute_dir + "/",
relative_dir + "/",
)
def make_image_links_relative(markdown: str, image_dir: Path) -> str:
"""Bildpfade relativ zur Markdown-Datei machen ("<name>_images/datei.jpg").
pymupdf4llm schreibt den Pfad relativ zum Arbeitsverzeichnis, wenn der
Bilderordner darunter liegt (z. B. "Output/x_images/…"), sonst absolut.
"""
image_dir = image_dir.resolve()
def fix(match: re.Match) -> str:
path = Path(match.group(2))
full = path if path.is_absolute() else Path.cwd() / path
if full.resolve().parent != image_dir:
return match.group(0)
return f"{match.group(1)}{image_dir.name}/{path.name})"
return IMAGE_LINK.sub(fix, markdown)
# ===========================================================================