SPB Git
981 B · 19 lines python
1#!/usr/bin/env python32"""Normalise les entrées d'index (.idx) avant makeindex : ajoute une clé de tri sans accent aux entrées dont3l'initiale est accentuée (É, À, Î, …) pour que makeindex (octets) produise des en-têtes de lettre valides en UTF-8."""4import sys, re, unicodedata, pathlib5p = pathlib.Path(sys.argv[1]); txt = p.read_text(encoding="utf-8", errors="ignore")6def strip(s): return "".join(c for c in unicodedata.normalize("NFD", s) if unicodedata.category(c) != "Mn")7def fix(m):8    body = m.group(1)9    parts = body.split("!")10    out = []11    for part in parts:12        if "@" in part or not part: out.append(part); continue13        plain = strip(part)14        key = re.sub(r"\\[a-zA-Z]+\s*", "", plain)  # retire les commandes pour la clé15        out.append(f"{key}@{part}" if (plain != part or key != part) else part)16    return "\\indexentry{" + "!".join(out) + "|"17new = re.sub(r"\\indexentry\{(.*?)\|", fix, txt)18p.write_text(new, encoding="utf-8")19
Files · 577f3e95e830087bf4d5101ceb2925ae494ca15c
Menu

Theme