TOC: Titel/Untertitel unlisted, 'Über den Kurs' als Teil 0 vor Vorwort
- Titel und Untertitel im Vorwort von {-} auf {.unlisted .unnumbered}
umgestellt: verschwinden aus dem Inhaltsverzeichnis, bleiben sichtbar
- '# Über den Kurs {-}' als neue Oberüberschrift vor dem Vorwort
eingefügt — gruppiert im TOC als 'Teil 0' den gesamten Front Matter
- TOC_MARKE auf '# Über den Kurs {-}' gesetzt, damit \tableofcontents
davor eingefügt wird
- verschiebe_toc_vor_vorwort(): Anker auf <h1 id="über-den-kurs">
umgestellt (Pandoc behält das ü in der ID)
- pruefe_titeltexte(): ohne_marke() generalisiert von {-} auf beliebige
Attributblöcke {…}, sonst schlägt --check bei .unlisted .unnumbered fehl
This commit is contained in:
parent
0d76c1a89d
commit
1070baad7a
7 changed files with 23 additions and 18 deletions
|
|
@ -14,9 +14,9 @@
|
|||
|
||||
---
|
||||
|
||||
# Optimierte Entscheidungsfindung mit Python {-}
|
||||
# Optimierte Entscheidungsfindung mit Python {.unlisted .unnumbered}
|
||||
|
||||
## Von der mathematischen Modellierung zu praktischen intelligenten Lösungen für Betrieb, Technik und Finanzmärkte {-}
|
||||
## Von der mathematischen Modellierung zu praktischen intelligenten Lösungen für Betrieb, Technik und Finanzmärkte {.unlisted .unnumbered}
|
||||
|
||||
**Ein praxisorientiertes Kompendium für Entscheider** mit Constraint Programming, Vektor-
|
||||
und Matrixmethoden sowie HiGHS, SciPy, Google OR-Tools und CVXPY.
|
||||
|
|
@ -31,6 +31,8 @@ Stand: {datum}
|
|||
|
||||
---
|
||||
|
||||
# Über den Kurs {-}
|
||||
|
||||
## Vorwort {-}
|
||||
|
||||
Dieses Buch hat ein einziges Ziel: **Sie sollen am Ende in der Lage sein, ein reales
|
||||
|
|
|
|||
|
|
@ -167,7 +167,7 @@ KEINE_KAPITELDATEIEN: set[str] = {
|
|||
|
||||
# Das Inhaltsverzeichnis wird unmittelbar vor dieser Ueberschrift eingefuegt -
|
||||
# also direkt nach dem Titelblock, noch vor dem Vorwort.
|
||||
TOC_MARKE = "## Vorwort {-}"
|
||||
TOC_MARKE = "# Über den Kurs {-}"
|
||||
|
||||
# Basis-Defaults fuer den PDF-Bau (Schriften, Geometrie, Praeambel). Bevorzugt
|
||||
# wird die Kopie IM Repository: Nur so kann ein frischer Klon ein PDF bauen -
|
||||
|
|
@ -469,10 +469,10 @@ def pruefe_titeltexte() -> list[str]:
|
|||
zeilen = f.read().split("\n")
|
||||
|
||||
# Gesucht werden die '#'- und '##'-Ueberschrift und die beiden Absaetze
|
||||
# danach. Der '{-}'-Zusatz (Pandoc: nicht nummerieren) gehoert nicht zum
|
||||
# Text.
|
||||
# danach. Ein Attributblock wie '{-}' oder '{.unlisted .unnumbered}' (Pandoc:
|
||||
# nicht nummerieren / nicht ins Inhaltsverzeichnis) gehoert nicht zum Text.
|
||||
def ohne_marke(text: str) -> str:
|
||||
return re.sub(r"\s*\{-\}\s*$", "", text)
|
||||
return re.sub(r"\s*\{[^}]*\}\s*$", "", text)
|
||||
|
||||
gefunden: dict[str, tuple[int, str]] = {}
|
||||
absaetze: list[tuple[int, str]] = []
|
||||
|
|
@ -1542,14 +1542,14 @@ def verschiebe_toc_vor_vorwort(pfad: str) -> None:
|
|||
html = f.read()
|
||||
|
||||
nav_match = re.search(r'<nav id="TOC"[^>]*>.*?</nav>\n?', html, re.DOTALL)
|
||||
vorwort_anker = '<h2 class="unnumbered" id="vorwort">'
|
||||
if not nav_match or vorwort_anker not in html:
|
||||
print("WARNUNG: TOC oder Vorwort-Anker nicht gefunden - Verschiebung uebersprungen.")
|
||||
kurs_anker = '<h1 class="unnumbered" id="über-den-kurs">'
|
||||
if not nav_match or kurs_anker not in html:
|
||||
print("WARNUNG: TOC oder 'Über den Kurs'-Anker nicht gefunden - Verschiebung uebersprungen.")
|
||||
return
|
||||
|
||||
nav_block = nav_match.group(0)
|
||||
ohne_nav = html[:nav_match.start()] + html[nav_match.end():]
|
||||
einfuege_pos = ohne_nav.index(vorwort_anker)
|
||||
einfuege_pos = ohne_nav.index(kurs_anker)
|
||||
neu = ohne_nav[:einfuege_pos] + nav_block + ohne_nav[einfuege_pos:]
|
||||
|
||||
with open(pfad, "w", encoding="utf-8") as f:
|
||||
|
|
|
|||
Loading…
Reference in a new issue