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:
@@ -1,2 +1,2 @@
|
||||
S09
|
||||
Teilgebiet 01 Iteration C Foto-Einbindung umgesetzt. Header als 2-Spalten-Grid-Table in cv.md mit Strich-Verhaeltnis 112:60 (= 65,1%/34,9% Spaltenbreite, ca. 10,15/5,43 cm bei 16 cm Textbreite). Foto rechts oben, 4,06x4,06 cm, beide Dimensionen explizit im Markdown um Pandocs Default-Wrapper keepaspectratio mit height=textheight zu vermeiden, der die Layout-Box auf 24cm Hoehe streckt und die Tabellen-Zeile zerschiesst. DOCX-Header-Spacing per neuer 4. Modifikation in build/post-process-docx.py (process_header_table): findet erste Tabelle, setzt Heading1-spacing-before=0 und Foto-Paragraph spacing-before=100 (=5pt) plus jc=right. PDF-Layout via neuem Pandoc-Lua-Filter build/header-image-wrap.lua: wrappt das Header-Foto im LaTeX-Output mit hfill+raisebox(-height)[0pt][0pt]{...}, hfill schiebt rechtsbuendig in raggedright-p-Spalte, raisebox setzt Bild-Top auf Cell-Top und reportet null Hoehe an die Tabellen-Zeile. Filter prueft FORMAT=latex und Image-Pfad enthaelt foto, DOCX bleibt unberuehrt. Lua-Filter-Erste-Version (Image durch RawInline ersetzt mit gebackenem Pfad) hat Pandocs Image-Resource-Resolution gebrochen und LuaLaTeX scheiterte mit File foto.jpg not found, Fix: Filter gibt Lua-Liste zurueck mit Original-img-Element zwischen RawInline-Wrappern. Template-Hotfixes fuer PDF: renewcommand-nolinkurl-zu-Plaintext (verhindert at-xverbatim-Bruch in longtable-Minipage durch URL-Display-Text-Verbatim-Mode), titlespacing-section-before=0pt fuer H1-Top-Alignment. cv.md: Pipe-Alignment in Grid Table programmatisch via Python ljust und Pipe-Position-Eindeutigkeitscheck (Pandoc 3.x ist beim Grid-Table-Pipe-Alignment streng, Sandbox-Pandoc 2.9 ist toleranter und damit irrefuehrend). build.ps1 erweitert um lua-filter-Argument in PDF und DOCX, plus Read-Host-Wait-on-Error entfernt (blockiert AI-Agents und CI), durch Start-Sleep 3s am Ende ersetzt. header-image-wrap.lua als Pflichtdatei in Test-Path-Check aufgenommen. Vier weitere Edit-Tool-Truncation-Vorfaelle in S09 (cv.md, template.tex zweimal, build.ps1), Lehre verschaerft Edit-Tool fuer jede nicht-triviale Modifikation auf NTFS-Mount-Dateien meiden. Sandbox-NTFS-Stale-Read auf DOCX-Output (DOCX-Datei als not a zip file, Workaround DOCX im Sandbox neu generieren). Sandbox-NTFS-Mount kann auch Datei-Schreiben mit open(w) verweigern obwohl os.path.exists True liefert, Workaround tmp-Datei plus os.rename. Build und visuelle Bestaetigung durch Thomas erfolgt fuer DOCX und PDF. teilgebiete/01-lebenslauf.md um Iteration-C-Block ergaenzt und Naechste-Schritte-Liste auf S10-Plan umgestellt (1 DOCX-Heading-Farben pruefen, 2 Doublecheck der generierten Texte mindestens elektrischer-Gehaeuse ist sinnverkehrt, 3 Buzzword-Kompetenzen brainstormen mindestens Umgang mit quantisierten LLMs fehlt, 4 PDF-Spacings H1/H2/Kontaktdaten und hellgraue Trennlinien korrigieren, 5 Hyphenation-Feintuning, 6 Teilgebiet abschliessen). agent-prompt.md Aktueller-Stand-Block fuer S10 fortgeschrieben.
|
||||
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.
|
||||
|
||||
@@ -106,7 +106,7 @@ S09 — **Iteration C: Foto-Einbindung via Grid Table.**
|
||||
|
||||
**Nächste Aufgabe (S10) in dieser Reihenfolge (von Thomas vorgegeben):**
|
||||
|
||||
1. **DOCX: Blau ist nicht DesTEngS-Blau.** Heading-Farben prüfen — Soll: `#0B5394`. `build/build-reference-docx.py` Funktion `set_heading_colors` setzt zwar `<w:color w:val="0B5394"/>`, aber Word rendert ggf. trotzdem den Theme-Aptos-Blau, weil das Heading-Style einen `themeColor`-Verweis behält oder weil das Theme dominiert. Prüfen, ob das `themeColor`-Attribut wirklich entfernt ist und ob die Farbe direkt am Run statt am Stil gesetzt werden muss.
|
||||
1. **DOCX: Blau ist nicht DesTEngS-Blau.** Heading-Farben prüfen — Soll: `#3C68AE`. `build/build-reference-docx.py` Funktion `set_heading_colors` setzt zwar `<w:color w:val="3C68AE"/>`, aber Word rendert ggf. trotzdem den Theme-Aptos-Blau, weil das Heading-Style einen `themeColor`-Verweis behält oder weil das Theme dominiert. Prüfen, ob das `themeColor`-Attribut wirklich entfernt ist und ob die Farbe direkt am Run statt am Stil gesetzt werden muss.
|
||||
2. **Doublecheck der neu generierten Texte in cv.md.** Mindestens „elektrischer Gehäuse" ist sinnverkehrt (vermutlich aus V9/V10-KI-Iterationen). cv.md komplett auf Sinn- und Sprachfehler durchgehen, vermutlich Konkordanz-/Stil-Fehler an mehreren Stellen.
|
||||
3. **Buzzword-Kompetenzen-Brainstorm.** Kenntnisse-Abschnitt erweitern. Mindestens „Umgang mit quantisierten LLMs" ergänzen. Weitere KI-Begriffe für Agentur-Keyword-Matching identifizieren (Quantization, GGUF, GPTQ, AWQ, Inference-Optimierung, vLLM, llama.cpp, Ollama-Deployment etc.).
|
||||
4. **PDF: Abstände H1 / H2 „Kontaktdaten" / Kontaktdaten-Bullet-Liste stimmen nicht** (Folge der C4c-Spacing-Änderung). Plus: hellgraue Trennlinien (rulegray = `#BFBFBF`) sind inakzeptabel — Farbe oder Linienführung überdenken (Trennlinien stehen nach H1 und H2 im titlesec-Format-Block).
|
||||
|
||||
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<>]è | ||||