From b8a0cd7aa3522be81e4de247e4b486261e0e0c24 Mon Sep 17 00:00:00 2001 From: shahondin1624 Date: Thu, 2 Apr 2026 21:28:17 +0200 Subject: [PATCH] Sort TOC entries alphabetically including aliases Add a Python sort step in the Makefile that sorts .songtoc by the actual title text, stripping \textit{} wrappers so aliases sort into their correct alphabetical position alongside main titles. Co-Authored-By: Claude Opus 4.6 (1M context) --- Makefile | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Makefile b/Makefile index 08f3156..3a76713 100644 --- a/Makefile +++ b/Makefile @@ -18,6 +18,9 @@ $(OUTDIR)/$(MAIN).pdf: $(MAIN).tex songbook-style.sty songs/*.tex | $(OUTDIR) @for i in 1 2 3 4 5; do \ echo "=== LaTeX pass $$i ==="; \ $(TEXENV) $(ENGINE) $(FLAGS) $(MAIN).tex || true; \ + if [ -f $(OUTDIR)/$(MAIN).songtoc ]; then \ + python3 -c "import re;lines=open('$(OUTDIR)/$(MAIN).songtoc').readlines();lines.sort(key=lambda l:re.sub(r'[^a-zäöüß ]','',re.search(r'\{(?:\\\\textit\s*\{)?([^}]+)',l).group(1).lower()) if re.search(r'\{(?:\\\\textit\s*\{)?([^}]+)',l) else '');open('$(OUTDIR)/$(MAIN).songtoc','w').writelines(lines)" ; \ + fi; \ if [ $$i -ge 3 ] && ! grep -q "Rerun" $(OUTDIR)/$(MAIN).log 2>/dev/null; then \ echo "=== Stable after $$i passes ==="; \ break; \