From 80a032399604d6cb68c5128d279c52ece8f0904c119962dcf610daa8ee1e3d39 Mon Sep 17 00:00:00 2001 From: tlg Date: Sat, 25 Apr 2026 22:15:22 +0200 Subject: [PATCH] S06: PDF-Build-Hotfix nach erstem Build der Tabellen-Revision: LuaLaTeX schlug in der Tabellen-Spaltenangabe mit der Meldung ueber einen nicht definierten Counter none fehl, weil Thomas Pandoc-Version (3.x) calc-basierte Spaltenbreiten der Form p von Klammer Spaltenbreite minus 2 mal tabcolsep Klammerzu mal real Faktor emittiert und das Template weder das calc-Paket noch das Pandoc-Hilfsmakro real bereitstellte (Sandbox-Pandoc 2.9 emittiert die simplere ll-Spaltenform und hat den Fehler nicht reproduziert). templates/template.tex Tabellen-Block ergaenzt um usepackage array, usepackage calc und providecommand real. Sandbox-Verifikation: synthetischer Pandoc-3.x-Spalten-Output kompiliert mit dem erweiterten Template via LuaLaTeX zu PDF, nur eine harmlose longtable-Rerun-Warnung. DOCX nach Tabellen-Revision von Thomas visuell bestaetigt (Tabelle sieht gut aus, nur Default-Word-Tabellenrahmenlinien noch da, Rahmen-Aus in Iteration B). teilgebiete/01-lebenslauf.md und agent-prompt.md um Hotfix-Eintrag und DOCX-Bestaetigung ergaenzt. --- .checkpoint-pending.txt | 11 +++++------ agent-prompt.md | 4 +++- .../Lebenslauf_Dr-Ing_Thomas_Langer.docx | Bin 20424 -> 20590 bytes artefakte/01-lebenslauf/output/build.log | 17 +++++++++++++---- .../01-lebenslauf/templates/template.tex | 10 ++++++++++ changelog.md | 1 + teilgebiete/01-lebenslauf.md | 4 ++++ 7 files changed, 36 insertions(+), 11 deletions(-) diff --git a/.checkpoint-pending.txt b/.checkpoint-pending.txt index 3015c32..68590e2 100644 --- a/.checkpoint-pending.txt +++ b/.checkpoint-pending.txt @@ -1,7 +1,6 @@ S06 -Iteration A revidiert: Ausbildungs-Layout von Definition-List auf Pandoc-Multiline-Tabelle umgestellt, weil Definition-List im DOCX kein echtes 2-Spalten-Layout liefert (Word kann Term und Definition als zwei Absatzstile nicht in eine Zeile zwingen). -source/cv.md Ausbildungs-Abschnitt nutzt jetzt headerless Multiline-Tabelle mit Strich-Verhaeltnis 10:70 (Pandoc berechnet Spaltenbreiten von ca. 14 Prozent und 80 Prozent der Textbreite). -templates/template.tex Description-List-Block wieder entfernt; neuer Tabellen-Block mit booktabs und longtable, Linienbreiten und Rule-Separations auf 0pt, LTpre/LTpost auf 0.4em. -Sandbox-Verifikation: Pandoc-LaTeX rendert longtable mit Minipage-Auto-Wrap und vier Datenzeilen, Pandoc-DOCX rendert eine native Word-Tabelle mit vier Zeilen und acht Zellen, keine Reste der Definition-List-Stile. -teilgebiete/01-lebenslauf.md Iteration-A-Block umgeschrieben mit Begruendung der Revision und Beschreibung des neuen Setups. -agent-prompt.md Aktueller-Stand-Abschnitt auf die Tabellen-Variante fortgeschrieben. +PDF-Build-Hotfix nach erstem Build der Tabellen-Revision: LuaLaTeX schlug in der Tabellen-Spaltenangabe mit der Meldung ueber einen nicht definierten Counter none fehl, weil Thomas Pandoc-Version (3.x) calc-basierte Spaltenbreiten der Form p von Klammer Spaltenbreite minus 2 mal tabcolsep Klammerzu mal real Faktor emittiert und das Template weder das calc-Paket noch das Pandoc-Hilfsmakro real bereitstellte (Sandbox-Pandoc 2.9 emittiert die simplere ll-Spaltenform und hat den Fehler nicht reproduziert). +templates/template.tex Tabellen-Block ergaenzt um usepackage array, usepackage calc und providecommand real. +Sandbox-Verifikation: synthetischer Pandoc-3.x-Spalten-Output kompiliert mit dem erweiterten Template via LuaLaTeX zu PDF, nur eine harmlose longtable-Rerun-Warnung. +DOCX nach Tabellen-Revision von Thomas visuell bestaetigt (Tabelle sieht gut aus, nur Default-Word-Tabellenrahmenlinien noch da, Rahmen-Aus in Iteration B). +teilgebiete/01-lebenslauf.md und agent-prompt.md um Hotfix-Eintrag und DOCX-Bestaetigung ergaenzt. diff --git a/agent-prompt.md b/agent-prompt.md index a8768f4..33fbcee 100644 --- a/agent-prompt.md +++ b/agent-prompt.md @@ -90,7 +90,9 @@ Setze zwischen sinnvollen Zwischenständen Checkpoints (z.B. nach "Marketing.md **Was wurde gemacht:** - **Iteration A für Teilgebiet 01 — Ausbildung als 2-Spalten-Layout, Revision auf Tabellen-Variante.** Erster Versuch mit Definition-List ergab im PDF zwar das gewünschte 2-Spalten-Layout, im DOCX aber nicht (Pandoc rendert Definition-Lists als zwei separate Absatzstile, Word kann zwei Absätze nicht in eine Zeile zwingen — visuell sichtbar nach Build von Thomas: Datum fett auf eigener Zeile, Inhalt darunter). Auf Wunsch von Thomas auf Tabellen-Variante umgestellt: `source/cv.md` Ausbildungs-Abschnitt nutzt jetzt eine Pandoc-Multiline-Tabelle ohne Header (Strich-Verhältnis 10:70 ergibt Spaltenbreiten ca. 14 % / 80 %). `templates/template.tex` um Tabellen-Setup erweitert: `booktabs` und `longtable` geladen, alle booktabs-Linienbreiten und Rule-Separationen auf 0 pt, `\LTpre`/`\LTpost` auf 0.4 em reduziert. Description-List-Block wieder entfernt. - **Sandbox-Verifikation der Tabellen-Revision:** Pandoc-LaTeX-Output zeigt `\begin{longtable}[]{@{}ll@{}}` mit vier Datenzeilen und Minipage-Auto-Wrap (`0.14\columnwidth` + `0.80\columnwidth`). Pandoc-DOCX-Output enthält eine native Word-Tabelle mit vier Zeilen und acht Zellen, keine Reste der zwischenzeitlich genutzten Definition-List-Stile. -- **Visuelle Bestätigung im PDF:** Thomas hat nach erstem Build der Tabellen-Revision noch nicht zurückgemeldet — der nächste Build steht aus. Beim ersten Build (Definition-List-Variante) war das PDF-Layout bereits wie gewünscht (Tabellen-Optik im PDF), das DOCX-Layout aber nicht 2-spaltig. Nach der Revision sollte auch das DOCX echtes 2-Spalten-Layout zeigen; Feinstyling der Tabelle (Rahmen aus, Spaltenbreite) gehört in Iteration B. +- **Hotfix für PDF-Build-Fehler:** Beim ersten Build der Tabellen-Revision auf Thomas' System schlug LuaLaTeX mit `! LaTeX Error: No counter 'none' defined.` in der Tabellen-Spaltenangabe fehl. Ursache: Pandoc 3.x emittiert calc-basierte Spaltenbreiten der Form `p{(\columnwidth - 2\tabcolsep) * \real{0.8554}}`, die das `calc`-Paket und das Pandoc-Hilfsmakro `\real` voraussetzen. Beides war im Template nicht vorhanden, weil Sandbox-Pandoc 2.9 die simplere `ll`-Spaltenform emittiert und den Fehler nicht reproduziert. Behoben durch Ergänzung von `\usepackage{array}`, `\usepackage{calc}` und `\providecommand{\real}[1]{#1}` im Tabellen-Block des Templates. Mit synthetischem Pandoc-3.x-Spalten-Format in der Sandbox via LuaLaTeX zu PDF kompiliert (eine harmlose `Rerun LaTeX`-Warnung, die der Pandoc-Build automatisch behandelt). +- **Visuelle Bestätigung im DOCX (nach Tabellen-Revision):** Tabelle sieht gut aus; offen sind nur die Default-Word-Tabellenrahmenlinien — Rahmen-Aus erfolgt in Iteration B über die `reference.docx`. +- **Visuelle Bestätigung im PDF:** Steht nach Hotfix-Build aus. **Stand zum Vergleich (S05):** CV-Pipeline steht (Pandoc/LuaLaTeX, IBM Plex Sans, Markdown-Quelle, build.ps1 mit sichtbarem Fortschritt). Zahlreiche typographische Mängel aus S05 behoben: Listen-Rendering (PDF + DOCX), Section-Nummerierung (PDF), Level-2-Bullets als Striche (PDF), einsame Einheiten (PDF + DOCX), Trainings als Liste (PDF + DOCX), Ausbildungs-Einrückung (PDF), Schusterjungen-Schutz Stations-Titel (PDF), Hyperlink-Farbe (PDF). Plex-Fonts v1.1.0 system-weit installiert (Doku in Teilgebiet 25). diff --git a/artefakte/01-lebenslauf/output/Lebenslauf_Dr-Ing_Thomas_Langer.docx b/artefakte/01-lebenslauf/output/Lebenslauf_Dr-Ing_Thomas_Langer.docx index ab841bb052dfbeba060e658f7f9a95d1ff809f12cf79ad755bfd4caa56ec21c7..c2df675f30d919908b6d69b8b5d0cd77b3c6c7fb63b7f6c7775834922df2356a 100644 GIT binary patch delta 11754 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 delta 11739 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 Ml^V8G;a}JP0HpD3?*IS* diff --git a/artefakte/01-lebenslauf/output/build.log b/artefakte/01-lebenslauf/output/build.log index f6efef1..f3c9c52 100644 --- a/artefakte/01-lebenslauf/output/build.log +++ b/artefakte/01-lebenslauf/output/build.log @@ -1,4 +1,4 @@ -===== Build gestartet: 2026-04-25 14:30:13 ===== +===== Build gestartet: 2026-04-25 20:59:41 ===== Source: Q:\DesTEngS\Pro\Git\marketing\claude_cowork\artefakte\01-lebenslauf\source\cv.md Template-TEX: Q:\DesTEngS\Pro\Git\marketing\claude_cowork\artefakte\01-lebenslauf\templates\template.tex Reference: Q:\DesTEngS\Pro\Git\marketing\claude_cowork\artefakte\01-lebenslauf\templates\reference.docx @@ -6,8 +6,17 @@ Output-Dir: Q:\DesTEngS\Pro\Git\marketing\claude_cowork\artefakte\01-lebenslau --- Pandoc -> PDF (LuaLaTeX) --- Cmd: pandoc --from=markdown+smart --pdf-engine=lualatex --template=Q:\DesTEngS\Pro\Git\marketing\claude_cowork\artefakte\01-lebenslauf\templates\template.tex --resource-path=Q:\DesTEngS\Pro\Git\marketing\claude_cowork\artefakte\01-lebenslauf\source --output=Q:\DesTEngS\Pro\Git\marketing\claude_cowork\artefakte\01-lebenslauf\output\Lebenslauf_Dr-Ing_Thomas_Langer.pdf Q:\DesTEngS\Pro\Git\marketing\claude_cowork\artefakte\01-lebenslauf\source\cv.md -PDF OK: Q:\DesTEngS\Pro\Git\marketing\claude_cowork\artefakte\01-lebenslauf\output\Lebenslauf_Dr-Ing_Thomas_Langer.pdf (68.2 KB) +Error producing PDF. +! LaTeX Error: No counter 'none' defined. +System.Management.Automation.RemoteException +See the LaTeX manual or LaTeX Companion for explanation. +Type H for immediate help. + ... + +l.828 ...width - 2\tabcolsep) * \real{0.8554}}@{}} +System.Management.Automation.RemoteException +PDF FEHLER (Exit 43) --- Pandoc -> DOCX --- Cmd: pandoc --from=markdown+smart --reference-doc=Q:\DesTEngS\Pro\Git\marketing\claude_cowork\artefakte\01-lebenslauf\templates\reference.docx --resource-path=Q:\DesTEngS\Pro\Git\marketing\claude_cowork\artefakte\01-lebenslauf\source --output=Q:\DesTEngS\Pro\Git\marketing\claude_cowork\artefakte\01-lebenslauf\output\Lebenslauf_Dr-Ing_Thomas_Langer.docx Q:\DesTEngS\Pro\Git\marketing\claude_cowork\artefakte\01-lebenslauf\source\cv.md -DOCX OK: Q:\DesTEngS\Pro\Git\marketing\claude_cowork\artefakte\01-lebenslauf\output\Lebenslauf_Dr-Ing_Thomas_Langer.docx (19.9 KB) -===== Build beendet: 2026-04-25 14:30:18, Exit-Code 0 ===== +DOCX OK: Q:\DesTEngS\Pro\Git\marketing\claude_cowork\artefakte\01-lebenslauf\output\Lebenslauf_Dr-Ing_Thomas_Langer.docx (20.1 KB) +===== Build beendet: 2026-04-25 20:59:51, Exit-Code 1 ===== diff --git a/artefakte/01-lebenslauf/templates/template.tex b/artefakte/01-lebenslauf/templates/template.tex index b075f3f..3f0cb65 100644 --- a/artefakte/01-lebenslauf/templates/template.tex +++ b/artefakte/01-lebenslauf/templates/template.tex @@ -77,8 +77,18 @@ %% Pandoc emittiert fuer Markdown-Tabellen eine longtable mit booktabs-Linien %% (\toprule, \bottomrule). Im CV werden Tabellen rahmenlos als Layout-Werkzeug %% eingesetzt (z.B. Ausbildung als 2-Spalten-Layout: Datum links, Inhalt rechts). +%% +%% Pandoc 3.x emittiert Spaltenbreiten als calc-Ausdruck der Form +%% p{(\columnwidth - 2\tabcolsep) * \real{0.8554}} +%% sowie >{\raggedright\arraybackslash}p{...}-Praeambeln. Dafuer brauchen wir +%% das array-Paket (\arraybackslash), das calc-Paket (Multiplikation in +%% Laengenarithmetik) und das Pandoc-Hilfsmakro \real, das in unserem Template +%% selbst providet werden muss, weil wir den Pandoc-Default-Header nicht nutzen. +\usepackage{array} +\usepackage{calc} \usepackage{booktabs} \usepackage{longtable} +\providecommand{\real}[1]{#1} %% Linienbreiten auf 0pt: \toprule/\midrule/\bottomrule rendern unsichtbar. \setlength{\heavyrulewidth}{0pt} \setlength{\lightrulewidth}{0pt} diff --git a/changelog.md b/changelog.md index 6d5a472..b7d49c7 100644 --- a/changelog.md +++ b/changelog.md @@ -39,3 +39,4 @@ Chronologisches Log aller Entscheidungen und Prozessereignisse. 2026-04-25 14:06 | S05 | Session-Abschluss S05. Aktueller Stand und naechste Aufgaben in agent-prompt.md aktualisiert: Teilgebiet 01 CV-Pipeline steht (Pandoc/LuaLaTeX, IBM Plex Sans, Markdown-Quelle, build.ps1 mit sichtbarem Fortschritt), zahlreiche typographische Maengel behoben (Listen-Rendering, Section-Nummerierung, Bullet-Symbole, geschuetzte Leerzeichen, Trainings-Liste, Ausbildungs-Einrueckung, Schusterjungen-Schutz, Hyperlink-Farben). Vier konkrete naechste Iterationen vorgemerkt: A Ausbildung 2-Spalten-Layout, B reference.docx in Word polieren, C Foto-Einbindung, D Hyphenation-Feintuning. Hinweis zum Write-Tool-Truncation-Issue mit Workaround dokumentiert. Teilgebiet 25 enthaelt vollstaendige Doku der Plex-Font-Installation v1.1.0. 2026-04-25 14:28 | S06 | Teilgebiet 01 Iteration A abgeschlossen: Ausbildung als 2-Spalten-Layout via Pandoc-Definition-List umgesetzt. source/cv.md Ausbildungs-Abschnitt auf Term/Definition-Syntax umgestellt (Datum als Term, Inhalt als Definition). templates/template.tex um enumitem-Konfiguration der description-Liste erweitert (style=multiline, labelwidth=5.5em, leftmargin=6.5em, font=\normalfont). Sandbox-Verifikation: Pandoc-LaTeX rendert sauberes \begin{description} mit vier Eintraegen, Pandoc-DOCX nutzt die Standardstile DefinitionTerm und Definition (in Iteration B in Word zu stylen). Hinweis: Pandoc setzt \tightlist innerhalb der Description-Liste und ueberschreibt damit zur Laufzeit das itemsep auf 0 — fuer vier kurze Eintraege visuell vertretbar. teilgebiete/01-lebenslauf.md um Iteration-A-Block ergaenzt und Naechste-Schritte-Liste auf B/C/D reduziert. agent-prompt.md Aktueller-Stand-Abschnitt auf S06 fortgeschrieben. 2026-04-25 20:58 | S06 | Iteration A revidiert: Ausbildungs-Layout von Definition-List auf Pandoc-Multiline-Tabelle umgestellt, weil Definition-List im DOCX kein echtes 2-Spalten-Layout liefert (Word kann Term und Definition als zwei Absatzstile nicht in eine Zeile zwingen). source/cv.md Ausbildungs-Abschnitt nutzt jetzt headerless Multiline-Tabelle mit Strich-Verhaeltnis 10:70 (Pandoc berechnet Spaltenbreiten von ca. 14 Prozent und 80 Prozent der Textbreite). templates/template.tex Description-List-Block wieder entfernt; neuer Tabellen-Block mit booktabs und longtable, Linienbreiten und Rule-Separations auf 0pt, LTpre/LTpost auf 0.4em. Sandbox-Verifikation: Pandoc-LaTeX rendert longtable mit Minipage-Auto-Wrap und vier Datenzeilen, Pandoc-DOCX rendert eine native Word-Tabelle mit vier Zeilen und acht Zellen, keine Reste der Definition-List-Stile. teilgebiete/01-lebenslauf.md Iteration-A-Block umgeschrieben mit Begruendung der Revision und Beschreibung des neuen Setups. agent-prompt.md Aktueller-Stand-Abschnitt auf die Tabellen-Variante fortgeschrieben. +2026-04-25 22:15 | S06 | PDF-Build-Hotfix nach erstem Build der Tabellen-Revision: LuaLaTeX schlug in der Tabellen-Spaltenangabe mit der Meldung ueber einen nicht definierten Counter none fehl, weil Thomas Pandoc-Version (3.x) calc-basierte Spaltenbreiten der Form p von Klammer Spaltenbreite minus 2 mal tabcolsep Klammerzu mal real Faktor emittiert und das Template weder das calc-Paket noch das Pandoc-Hilfsmakro real bereitstellte (Sandbox-Pandoc 2.9 emittiert die simplere ll-Spaltenform und hat den Fehler nicht reproduziert). templates/template.tex Tabellen-Block ergaenzt um usepackage array, usepackage calc und providecommand real. Sandbox-Verifikation: synthetischer Pandoc-3.x-Spalten-Output kompiliert mit dem erweiterten Template via LuaLaTeX zu PDF, nur eine harmlose longtable-Rerun-Warnung. DOCX nach Tabellen-Revision von Thomas visuell bestaetigt (Tabelle sieht gut aus, nur Default-Word-Tabellenrahmenlinien noch da, Rahmen-Aus in Iteration B). teilgebiete/01-lebenslauf.md und agent-prompt.md um Hotfix-Eintrag und DOCX-Bestaetigung ergaenzt. diff --git a/teilgebiete/01-lebenslauf.md b/teilgebiete/01-lebenslauf.md index cfca1ad..bdd7a0e 100644 --- a/teilgebiete/01-lebenslauf.md +++ b/teilgebiete/01-lebenslauf.md @@ -128,6 +128,10 @@ Die in S04 mit docx-js erstellte Version hatte strukturelle typographische Mäng **Visuelle Bestätigung im PDF:** Layout im Tabellen-Format wie gewünscht (linke Spalte Datum normal, rechte Spalte Titel fett, Beschreibung normal). Visuelle Bestätigung im DOCX steht nach erstem Build der Revision aus. +**Hotfix Build-Fehler:** Beim ersten Build der Tabellen-Revision schlug LuaLaTeX mit `! LaTeX Error: No counter 'none' defined.` in der Spaltenangabe `p{(\columnwidth - 2\tabcolsep) * \real{0.8554}}` fehl. Ursache: Thomas' Pandoc-Version (3.x) emittiert für Tabellen-Spaltenbreiten einen calc-basierten Multiplikator, der das Pandoc-Hilfsmakro `\real` und das `calc`-Paket voraussetzt; ohne diese interpretiert LaTeX die Multiplikation als Counter-Referenz und stolpert über einen vermeintlichen Counter `none`. Sandbox-Pandoc 2.9 emittiert die simplere `ll`-Spaltenform und reproduziert den Fehler nicht — daher fiel er zuerst nur auf Thomas' System auf. Behoben durch Ergänzung von `\usepackage{array}`, `\usepackage{calc}` und `\providecommand{\real}[1]{#1}` im Tabellen-Block des Templates. Sandbox-Verifikation mit synthetischem Pandoc-3.x-Spalten-Format kompilierte zu PDF ohne Fehler. + +**Visuelle Bestätigung im DOCX (nach Hotfix):** Tabelle sieht gut aus, nur die Default-Word-Tabellenrahmenlinien sind noch sichtbar; der Rahmen-Aus geht in Iteration B über die `reference.docx`. + ## Nächste Schritte 1. **Iteration B — `templates/reference.docx` in Word polieren:** Header/Footer setzen, Schriften auf Calibri vereinheitlichen, Listen-Schutz „Keep with next" und Widow-Control via Word-Stile, Stile `DefinitionTerm` und `Definition` für 2-Spalten-Verhalten konfigurieren (z.B. fester linker Einzug auf `Definition`, hängende Einrückung).