S10: Aufgabe 1 (DOCX-Heading-Farbe und -Bold) abgeschlossen. Farb-Audit zuerst: DesTEngS-Primaerfarbe ist 3C68AE, in 4 Dateien (agent-prompt.md, teilgebiete/01-lebenslauf.md, build/build-reference-docx.py Konstante HEADING_COLOR und Doc-Kommentar, templates/template.tex destengsblue-Definition) von 0B5394 auf 3C68AE korrigiert. changelog.md (append-only) und cv-debug.tex (generierter Output) bewusst ausgenommen. Diagnose der nicht-greifenden Heading-Farbe: Pandoc-3.x-Default-Reference enthaelt Linked Character Styles Heading1Char/2Char/3Char mit eigener color val=0F4761 themeColor=accent1 themeShade=BF (Aptos-Petrol). Char-Styles dominieren in Word ueber Para-Styles bei Run-Eigenschaften, deshalb gewann das Aptos-Theme. Pandoc 2.9 (Sandbox) hat diese Char-Styles nicht, daher konnte der Bug dort nicht reproduziert werden. Fix in build/build-reference-docx.py: HEADING_COLOR_STYLES um Heading1Char Heading2Char Heading3Char erweitert. Zusatzanforderung von Thomas: H1 und H2 fett. Neue Funktion set_heading_bold mit Konstante HEADING_BOLD_STYLES analog (Heading1+2 Para- und Char-Stil). H3 bleibt unveraendert. Docstring-Block B4 um beide Erklaerungen erweitert. Sandbox-syntaktischer Test der neuen Funktionen erfolgreich. Build und visuelle Bestaetigung durch Thomas: alle Headings im DOCX in DesTEngS-Blau 3C68AE, H1 und H2 fett, H3 normal. Aufgabe 2 Diff-Material vorbereitet: alte CV-Quelle Lebenslauf_Thomas_Langer_2025-03-21.docx aus archiv via pandoc nach markdown konvertiert und mit aktueller cv.md verglichen. Vier Output-Dateien in artefakte/01-lebenslauf/output: cv-old-plain.txt (DOCX normalisiert 305 Zeilen), cv-new-plain.txt (cv.md normalisiert 289 Zeilen), cv-diff-unified.txt (kompletter unified diff 551 Zeilen), cv-diff-report.md (sektionsweise Vergleichsbericht mit Mapping Berufstaetigkeit gleich Projekte als freiberuflicher Consultant). Sektion-Groessenvergleich zeigt erwartete Aenderungsmuster: Header kompakter, Zusammenfassung und Kenntnisse erweitert (KI-Fokus), Trainings stark gekuerzt, Veroeffentlichungen in Ausbildung integriert. Sinn-Check selbst macht Thomas in seinem Tempo, dann gemeinsames Review.

This commit is contained in:
tlg
2026-04-27 20:27:12 +02:00
parent b26cfd0ab3
commit 8016f4d775
16 changed files with 1917 additions and 133 deletions

View File

@@ -23,8 +23,21 @@ Iteration B1 + B1.5 + B2 + B3 + B4 (aktuell):
passiert nicht hier, sondern im Post-Processing
(build/post-process-docx.py), das auf das fertige DOCX angewendet
wird - ein Stil kann keine Per-Bullet-Logik abbilden.
B4 - Heading 1/2/3 in destengsblue (0B5394) gefaerbt (themeColor
B4 - Heading 1/2/3 in destengsblue (3C68AE) gefaerbt (themeColor
entfernt, damit die Farbe nicht aus dem Word-Theme kommt).
Wichtig (S10-Fix): NICHT NUR die Paragraph-Styles
Heading1/2/3, sondern AUCH die Linked Character Styles
Heading1Char/2Char/3Char muessen gefaerbt werden.
Pandoc-3.x-Default-Reference enthaelt diese Char-Styles
mit eigener color val=0F4761 themeColor=accent1
themeShade=BF (Aptos-Petrol). Char-Styles haben in Word
Vorrang vor Para-Styles bei Run-Eigenschaften (Schrift,
Farbe), d.h. ohne Char-Style-Aenderung gewinnt das
Theme-Aptos-Blau gegenueber dem Para-Style-destengsblue.
B4-Bold (S10) - Heading 1 und 2 fett (Para- UND Char-Stil),
Heading 3 bleibt normal. Pandoc 3.x Default-Reference
hat Headings nicht fett. Char-Stil-Vorrangs-Logik
identisch wie bei der Farbe.
Hinweis (S08): die zwischenzeitlich eingebauten Heading-
Trennlinien (Bottom-Border + Indent-Trick) wurden zurueck-
gerollt, weil sie in Word linksbuendig statt zentriert
@@ -82,8 +95,14 @@ KEEP_STYLES = ("Heading1", "Heading2", "Heading3", "FirstParagraph")
# B4 - Heading-Farben (Trennlinien wurden in S08 zurueckgerollt, siehe
# Modul-Docstring). Bleibt: Heading 1/2/3 in destengsblue, themeColor entfernt.
HEADING_COLOR = "0B5394" # destengsblue (analog template.tex)
HEADING_COLOR_STYLES = ("Heading1", "Heading2", "Heading3")
HEADING_COLOR = "3C68AE" # destengsblue (analog template.tex)
HEADING_COLOR_STYLES = ("Heading1", "Heading2", "Heading3",
"Heading1Char", "Heading2Char", "Heading3Char")
# B4-Bold (S10) - Heading 1+2 fett, Heading 3 bleibt normal.
# Auch hier: Para- UND Char-Style modifizieren, weil Char-Style
# in Word Run-Properties dominiert (analog Farb-Fix).
HEADING_BOLD_STYLES = ("Heading1", "Heading2",
"Heading1Char", "Heading2Char")
PAGE_W = 11906
PAGE_H = 16838
@@ -301,6 +320,31 @@ def set_heading_colors(styles_xml):
log(f" Stil {sid!r}: color={HEADING_COLOR} (themeColor entfernt)")
write_xml(tree, styles_xml)
def set_heading_bold(styles_xml):
"""Setzt <w:b/> und <w:bCs/> auf Heading1 + Heading2 (Para- und Char-Stil).
Pandoc 3.x Default-Reference hat weder Para- noch Char-Stil fett gesetzt.
Char-Styles werden mit modifiziert, weil sie in Word fuer Run-Properties
Vorrang vor Para-Styles haben (analog Farb-Fix in set_heading_colors)."""
tree = ET.parse(styles_xml)
root = tree.getroot()
seen = set()
for style in root.findall(f"{W}style"):
sid = style.get(f"{W}styleId")
if sid not in HEADING_BOLD_STYLES:
continue
rPr = style.find(f"{W}rPr")
if rPr is None:
rPr = ET.SubElement(style, f"{W}rPr")
for tag in (f"{W}b", f"{W}bCs"):
if rPr.find(tag) is None:
ET.SubElement(rPr, tag)
log(f" Stil {sid!r}: bold (b + bCs)")
seen.add(sid)
missing = set(HEADING_BOLD_STYLES) - seen
if missing:
log(f" Hinweis: Stil(e) {sorted(missing)!r} nicht gefunden, uebersprungen")
write_xml(tree, styles_xml)
def header_default_xml():
return (
b'<w:hdr xmlns:w="' + NS["w"].encode() + b'">\n'
@@ -454,6 +498,8 @@ def main():
set_keep_next_styles(styles_xml)
log("Anpassung: Heading 1/2/3 in destengsblue (B4)")
set_heading_colors(styles_xml)
log("Anpassung: Heading 1+2 fett (B4-Bold, S10)")
set_heading_bold(styles_xml)
log("Anpassung: Header und Footer einbauen (B2)")
add_header_footer(unpacked)