Vorwort: Navigationszeile einzeilig, Linktexte statt Dateinamen; --check bewacht einzeilige Weiter-mit-Zeilen
This commit is contained in:
parent
abc7a5693f
commit
0d76c1a89d
8 changed files with 50 additions and 16 deletions
|
|
@ -318,7 +318,7 @@ können Sie gezielt springen.
|
|||
> ⭐ Verständnis (im Kopf oder in zwei Sätzen) ·
|
||||
> ⭐⭐ Handrechnung oder kleine Modelländerung ·
|
||||
> ⭐⭐⭐ Eigenständige Programmieraufgabe.
|
||||
> **Alle Lösungen** stehen in [`90_Anhang_Loesungen.md`](90_Anhang_Loesungen.md).
|
||||
> **Alle Lösungen** stehen in {ref:anhang:loesungen}.
|
||||
|
||||
> **✅ Selbsttest**
|
||||
> Fünf Fragen mit Kurzantworten zur schnellen Selbstkontrolle.
|
||||
|
|
@ -644,6 +644,4 @@ dem aus Kenntnis Können wird.
|
|||
|
||||
---
|
||||
|
||||
*Weiter mit:* [`01_Notation_und_Abkuerzungen.md`](01_Notation_und_Abkuerzungen.md) —
|
||||
oder direkt zu [{ref:kap:einfuehrung}](10_Einfuehrung_OR.md), wenn Sie die Notation
|
||||
lieber nachschlagen, sobald sie auftaucht.
|
||||
*Weiter mit:* [dem Verzeichnis Notation und Abkürzungen](01_Notation_und_Abkuerzungen.md) — oder direkt zu [{ref:kap:einfuehrung}](10_Einfuehrung_OR.md), wenn Sie die Notation lieber nachschlagen, sobald sie auftaucht.
|
||||
|
|
|
|||
|
|
@ -395,6 +395,19 @@ def pruefe_dateien() -> list[str]:
|
|||
f"folgt aber '{soll}' - die Lesekette ueberspringt eine Datei.")
|
||||
fehlend.append(name)
|
||||
|
||||
# Die Navigationszeile muss in EINER Zeile bleiben: weiter_re und
|
||||
# entferne_navigation() lesen nur bis zum Zeilenende. Ein umgebrochener
|
||||
# Verweis bleibt sonst als Absatz in PDF und Website stehen - so geschah
|
||||
# es im Vorwort (drei Zeilen, die Zeile leckte ins gedruckte Buch).
|
||||
for name in DATEIEN:
|
||||
with open(os.path.join(HIER, name), encoding="utf-8") as f:
|
||||
for nr, zeile in enumerate(f, 1):
|
||||
if zeile.startswith("*Weiter mit:") and \
|
||||
not re.search(r"\]\(\S+?\.md\)", zeile):
|
||||
print(f"FEHLER: {name}:{nr} - '*Weiter mit:' ist umgebrochen; "
|
||||
f"das Linkziel (.md) muss in derselben Zeile stehen.")
|
||||
fehlend.append(name)
|
||||
|
||||
# Marken fuer interaktive Figuren: Zeigt eine ins Leere, verschwindet sie
|
||||
# auf der Website stillschweigend - im PDF steht dann ein Verweis auf eine
|
||||
# Figur, die es nicht gibt.
|
||||
|
|
@ -548,8 +561,15 @@ def entferne_navigation(text: str) -> str:
|
|||
"""
|
||||
Entfernt die 'Weiter mit:'-Navigationszeilen am Dateiende - im
|
||||
Gesamtdokument sind sie ueberfluessig und die Links zeigen ins Leere.
|
||||
|
||||
Ein umgebrochener Navigationsabsatz (Fortsetzungszeilen bis zur naechsten
|
||||
Leerzeile) wird mitgenommen. Ohne diese Toleranz blieb eine dreizeilige
|
||||
"Weiter mit"-Zeile im PDF stehen und renderte auf der Website den
|
||||
geschachtelten {ref:}-Link als Rohtext - passiert im Vorwort.
|
||||
"""
|
||||
text = re.sub(r"\n---\n+\*(Weiter mit|Zurueck zum|Zurück zum)[^\n]*\n*$", "\n", text)
|
||||
text = re.sub(
|
||||
r"\n---\n+\*(Weiter mit|Zurueck zum|Zurück zum)[^\n]*"
|
||||
r"(?:\n(?!\n)[^\n]*)*\n*$", "\n", text)
|
||||
return text.rstrip() + "\n"
|
||||
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue