spb/traite-evaluation-qc
Public
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