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:
Binary file not shown.
Binary file not shown.
@@ -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)
|
||||
|
||||
|
||||
Binary file not shown.
@@ -181,18 +181,21 @@ endobj
|
||||
93 0 obj
|
||||
<< /Filter /FlateDecode /Length 3184 >>
|
||||
stream
|
||||
x<EFBFBD><EFBFBD>[ˎ<><CB8E><11><>W<EFBFBD>Z<><5A>0<0C>e{<7B><>Mһ<4D><D2BB>&<26>lrL6<4C><36>Y,<2C>HI<48><49>u/.<1A>%<25>*<2A><>ԩ"<22>8<EFBFBD>y<10><><EFBFBD>}N<>D<EFBFBD><0E><><EFBFBD><l<><6C><EFBFBD><EFBFBD>O=I<>-<0E><><EFBFBD><14>;<3B><>&<26><><EFBFBD><EFBFBD>oO<6F><4F>7<> <><7F><1D><>y跃<79>z<EFBFBD>F<EFBFBD><46><1F><><EFBFBD>k<13><>"<EFBFBD><EFBFBD>6<EFBFBD>R<EFBFBD>D<EFBFBD><EFBFBD>A耢<EFBFBD><EFBFBD>QίO?<3F>t<H3i<33><69><EFBFBD><EFBFBD>_ٌ<><D98C><EFBFBD><EFBFBD><EFBFBD>o<EFBFBD>ߎB<DF8E>x<EFBFBD>><3E><>?<3F><>R<EFBFBD>_<EFBFBD>}<7D><><EFBFBD>=<3D><>?=+<2B>ҌtŞB<C59E>e_<65>O<EFBFBD>t<EFBFBD><74><EFBFBD>LN<>.ߣ:]=<3D>]<5D><><EFBFBD>5]]/<2F><>ͱ\<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>wZ<EFBFBD><EFBFBD><EFBFBD>bc'e<>]è | ||||