S05: build.ps1 repariert: Die zuvor eingebaute Write-Both-Hilfsfunktion und em-Dashes in Code-Strings hatten zu einem stillen Frueh-Abbruch unter Windows PowerShell 5.1 gefuehrt. Neue Version verwendet stattdessen direkte Write-Host/Write-Log-Paare an den Fortschrittsstellen, ASCII-only in Code-Strings, strukturell nah an der initial funktionierenden Version. Konsolenausgabe mit farbigen Statuszeilen pro Build-Phase ist jetzt sichtbar, Pandoc-Detail-Output bleibt im Log.

This commit is contained in:
tlg
2026-04-25 12:05:52 +02:00
parent cc1110aea6
commit 823331955b
6 changed files with 41 additions and 44 deletions

View File

@@ -1,2 +1,2 @@
S05
build.ps1 erweitert um sichtbaren Fortschritt im PowerShell-Fenster (farbige Statuszeilen für Build-Phasen, Pandoc-Detail-Output bleibt nur im Log). Notes-Block aktualisiert (System-Fonts statt plex-otf-Paket). Teilgebiet 25 ergänzt um Doku der system-weiten Installation IBM Plex Sans v1.1.0, IBM Plex Mono v1.1.0 und IBM Plex Serif v1.1.0 (Release 2024-11-13, OTF, alle Benutzer) mit Quelle und Anlass; Offene-Punkte-Abschnitt entsprechend nachgezogen. Erster vollständiger Build des CV (PDF und DOCX) auf Thomas' MiKTeX-System lief erfolgreich durch.
build.ps1 repariert: Die zuvor eingebaute Write-Both-Hilfsfunktion und em-Dashes in Code-Strings hatten zu einem stillen Frueh-Abbruch unter Windows PowerShell 5.1 gefuehrt. Neue Version verwendet stattdessen direkte Write-Host/Write-Log-Paare an den Fortschrittsstellen, ASCII-only in Code-Strings, strukturell nah an der initial funktionierenden Version. Konsolenausgabe mit farbigen Statuszeilen pro Build-Phase ist jetzt sichtbar, Pandoc-Detail-Output bleibt im Log.

View File

@@ -7,17 +7,15 @@
Deterministischer Build ohne GUI oder Komfortfunktionen.
- PDF via Pandoc + LuaLaTeX, nutzt templates/template.tex
- DOCX via Pandoc, nutzt templates/reference.docx
- Log in output/build.log (überschrieben pro Build)
- Fortschrittsausgaben werden zusätzlich in der Konsole angezeigt
- Log in output/build.log (ueberschrieben pro Build)
- Fortschritt wird zusaetzlich in der Konsole angezeigt
- Exit-Code 0 = beide Ausgaben erfolgreich, 1 = ein oder beide Schritte fehlgeschlagen
.NOTES
Voraussetzungen auf dem System:
- Pandoc (im PATH)
- MiKTeX mit LuaLaTeX und den Paketen fontspec, microtype, polyglossia,
geometry, xcolor, hyperref, graphicx, enumitem, titlesec, fancyhdr,
lastpage, xurl.
- System-Fonts: IBM Plex Sans, IBM Plex Mono (für Windows installiert).
- MiKTeX mit LuaLaTeX
- System-Fonts: IBM Plex Sans und IBM Plex Mono fuer Windows installiert
MiKTeX mit "Install missing packages on the fly: Yes" zieht fehlende
LaTeX-Pakete beim ersten Lauf automatisch.
#>
@@ -42,27 +40,18 @@ if (-not (Test-Path $outputDir)) {
New-Item -ItemType Directory -Path $outputDir -Force | Out-Null
}
# --- Log initialisieren (UTF-8 ohne BOM) --------------------------------------
# --- Log initialisieren (UTF-8 ohne BOM) -------------------------------------
$utf8NoBom = New-Object System.Text.UTF8Encoding $false
[System.IO.File]::WriteAllText($logFile, '', $utf8NoBom)
# Schreibt nur in die Log-Datei (für Pandoc-Ausgaben und Detail-Zeilen)
function Write-Log {
param([string]$Line)
[System.IO.File]::AppendAllText($logFile, $Line + [Environment]::NewLine, $utf8NoBom)
}
[System.IO.File]::WriteAllText($logFile, '', $utf8NoBom)
# Schreibt auf Konsole UND in die Log-Datei (für Fortschritts-Meilensteine)
function Write-Both {
param(
[string]$Line,
[string]$Color = 'Gray'
)
Write-Host $Line -ForegroundColor $Color
Write-Log $Line
}
Write-Both ("===== Build gestartet: {0} =====" -f (Get-Date -Format 'yyyy-MM-dd HH:mm:ss')) 'Cyan'
$startTs = Get-Date -Format 'yyyy-MM-dd HH:mm:ss'
Write-Host ""
Write-Host "===== Build gestartet: $startTs =====" -ForegroundColor Cyan
Write-Log "===== Build gestartet: $startTs ====="
Write-Log "Source: $sourceFile"
Write-Log "Template-TEX: $templateTex"
Write-Log "Reference: $referenceDoc"
@@ -71,21 +60,24 @@ Write-Log ''
$overallExit = 0
# --- Pflichtdateien prüfen ----------------------------------------------------
# --- Pflichtdateien pruefen --------------------------------------------------
foreach ($f in @($sourceFile, $templateTex, $referenceDoc)) {
if (-not (Test-Path $f)) {
Write-Both "FEHLER: Pflichtdatei fehlt: $f" 'Red'
Write-Host "FEHLER: Pflichtdatei fehlt: $f" -ForegroundColor Red
Write-Log "FEHLER: Pflichtdatei fehlt: $f"
$overallExit = 1
}
}
if ($overallExit -ne 0) {
Write-Both '===== Abbruch: Pflichtdateien fehlen =====' 'Red'
Write-Host "===== Abbruch: Pflichtdateien fehlen =====" -ForegroundColor Red
Write-Log "===== Abbruch: Pflichtdateien fehlen ====="
exit $overallExit
}
# --- PDF-Build ----------------------------------------------------------------
Write-Both '' 'Gray'
Write-Both '[1/2] PDF wird erzeugt (Pandoc + LuaLaTeX) ...' 'Yellow'
# --- PDF-Build ---------------------------------------------------------------
Write-Host ""
Write-Host "[1/2] PDF wird erzeugt (Pandoc + LuaLaTeX) ..." -ForegroundColor Yellow
Write-Log "--- Pandoc -> PDF (LuaLaTeX) ---"
$pdfArgs = @(
'--from=markdown+smart',
'--pdf-engine=lualatex',
@@ -100,15 +92,18 @@ $pdfExit = $LASTEXITCODE
$pdfOutput | ForEach-Object { Write-Log ([string]$_) }
if ($pdfExit -eq 0 -and (Test-Path $outputPdf)) {
$sizeKB = [math]::Round((Get-Item $outputPdf).Length / 1KB, 1)
Write-Both " PDF OK ($sizeKB KB): $outputPdf" 'Green'
Write-Host " PDF OK ($sizeKB KB): $outputPdf" -ForegroundColor Green
Write-Log "PDF OK: $outputPdf ($sizeKB KB)"
} else {
Write-Both " PDF FEHLER (Exit $pdfExit) Details siehe build.log" 'Red'
Write-Host " PDF FEHLER (Exit $pdfExit) - Details siehe build.log" -ForegroundColor Red
Write-Log "PDF FEHLER (Exit $pdfExit)"
$overallExit = 1
}
# --- DOCX-Build ---------------------------------------------------------------
Write-Both '' 'Gray'
Write-Both '[2/2] DOCX wird erzeugt (Pandoc) ...' 'Yellow'
# --- DOCX-Build --------------------------------------------------------------
Write-Host ""
Write-Host "[2/2] DOCX wird erzeugt (Pandoc) ..." -ForegroundColor Yellow
Write-Log "--- Pandoc -> DOCX ---"
$docxArgs = @(
'--from=markdown+smart',
"--reference-doc=$referenceDoc",
@@ -122,18 +117,21 @@ $docxExit = $LASTEXITCODE
$docxOutput | ForEach-Object { Write-Log ([string]$_) }
if ($docxExit -eq 0 -and (Test-Path $outputDocx)) {
$sizeKB = [math]::Round((Get-Item $outputDocx).Length / 1KB, 1)
Write-Both " DOCX OK ($sizeKB KB): $outputDocx" 'Green'
Write-Host " DOCX OK ($sizeKB KB): $outputDocx" -ForegroundColor Green
Write-Log "DOCX OK: $outputDocx ($sizeKB KB)"
} else {
Write-Both " DOCX FEHLER (Exit $docxExit) Details siehe build.log" 'Red'
Write-Host " DOCX FEHLER (Exit $docxExit) - Details siehe build.log" -ForegroundColor Red
Write-Log "DOCX FEHLER (Exit $docxExit)"
$overallExit = 1
}
Write-Both '' 'Gray'
$endTs = Get-Date -Format 'yyyy-MM-dd HH:mm:ss'
Write-Host ""
if ($overallExit -eq 0) {
Write-Both "===== Build beendet: $endTs, Exit-Code $overallExit (OK) =====" 'Cyan'
Write-Host "===== Build beendet: $endTs, Exit-Code $overallExit (OK) =====" -ForegroundColor Cyan
} else {
Write-Both "===== Build beendet: $endTs, Exit-Code $overallExit (FEHLER) =====" 'Red'
Write-Host "===== Build beendet: $endTs, Exit-Code $overallExit (FEHLER) =====" -ForegroundColor Red
}
Write-Log "===== Build beendet: $endTs, Exit-Code $overallExit ====="
exit $overallExit

View File

@@ -731,7 +731,7 @@ endobj
<1A>/<2F><> N
<EFBFBD>‚<EFBFBD>:pj]<5D> <09>'<27><>I<EFBFBD>d<00><>mAA<41><41>.8*1j<31><6A>;8<>Nt<03>0|<7C>F<EFBFBD><46>2k[<5B>n<>a߶S<DFB6><53>%<25><><EFBFBD>$dV<64><14>w,s<><04><>pUîRm<52>7۫%$G<><47>i<><69><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><73><D2BC><EFBFBD>ض<EFBFBD>I<EFBFBD>E<EFBFBD>c<>g<EFBFBD>?jo@/{<7B>C<EFBFBD><43><EFBFBD><EFBFBD>!<21><><EFBFBD>u<EFBFBD>J5U<35>1PU;K(2<>~ǝY<10>?؀vA<76>D<><44><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҙ<EFBFBD><D299><EFBFBD><EFBFBD><EFBFBD>ne<6E>m<EFBFBD><6D><EFBFBD>5K<35>H<EFBFBD><48>:<3A>i<EFBFBD>G"<22><><EFBFBD>feSU#K)<29>-<2D><><EFBFBD><0E>P<18><>}<7D><>g-_<>8$<24><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>3<><33><1E>,}p<>lp<zx"<22><><EFBFBD><EFBFBD><EFBFBD><08><>29T{v[<5B>$i <09>~N.<2E>֝y\<5C><>Hv<05>D<><14><>O<EFBFBD><4F><EFBFBD><EFBFBD>+ <0E><>͙45f<35>6<0E>
<EFBFBD>a<><61><0E><><EFBFBD><06>ϋ<EFBFBD><CF8B>f3pn<70><6E>
D<0F>(<28><><EFBFBD><00>X<EFBFBD><58>m<EFBFBD>)<29>х<>9<EFBFBD>|K<><4B><EFBFBD>/VKo<><6F>i<EFBFBD>AxR.<2E>/<2F><><EFBFBD>}"|<7C><><EFBFBD><1E>ćL<C487>.<2E>*<13>e<EFBFBD><EFBFBD><7F>Y<EFBFBD>i@<40>q<13><>wD7eK<65><12><>,vql<71>T<EFBFBD><54>ʔ#K<>2"<22>
D<0F>(<28><><EFBFBD><00>X<EFBFBD><58>m<EFBFBD>)<29>х<>9<EFBFBD>|K<><4B><EFBFBD>/VKo<><6F>i<EFBFBD>AxR.<2E>/<2F><><EFBFBD>}"|<7C><><EFBFBD><1E>ćL<C487>.<2E>*<13>e<EFBFBD><EFBFBD><7F>Y<EFBFBD>i@<40>q<13><>wD7eK<65><12><>,vql<71>T<EFBFBD><54>ʔ#K<>2"<22>
_<><5F><11>{q<06>2<>4<EFBFBD>ZD<5A>X<EFBFBD>2g<32>h1<68>=<3D>b<EFBFBD><62>U<15><>I0<49>;<3B>y<EFBFBD> ቖJ<E18996>ʮ<EFBFBD><CAAE>֒<EFBFBD>m<EFBFBD>g<EFBFBD>l˛!<21><><19>yQ"<22><><EFBFBD><EFBFBD><EFBFBD>T<EFBFBD><54><EFBFBD>Q<14><><EFBFBD>ܱC[NlȜ(<28><15><>[<02>'<27>4<EFBFBD><34>ϘZ"~<02><><EFBFBD><EFBFBD><EFBFBD>J<EFBFBD>7<17>?<3F><><10>^<5E><>/<2F>Q<EFBFBD><51>m<EFBFBD>ܱ_<DCB1>L<EFBFBD><4C><EFBFBD><ED8888>J<14><><EFBFBD>ʬFQx<<3C>떖"<22><><EFBFBD><1B><>ȯ<C8AF><7F><EFBFBD><EFBFBD>H<EFBFBD>$<24><><EFBFBD><EFBFBD>GK<>-t"7Ni<4E><17><><EFBFBD><EFBFBD>wk<00><><EFBFBD><EFBFBD>h<EFBFBD><68>5߀><3E><><EFBFBD>c<><63><04> }8<07><><EFBFBD>0<EFBFBD>9<>{<7B><>ˁt<CB81>=l<><6C>qH'<27>N]<5D><>k<EFBFBD><6B>"<0F>=<3D><><EFBFBD>ĝg<C49D>K<EFBFBD>st<73><74>;<3B><><EFBFBD><EFBFBD>/<2F><>{<7B><><EFBFBD><EFBFBD><EFBFBD>8<><38><EFBFBD><EFBFBD>
TSnY".<2E>.<17><><1A><>ϜR"}B<><42><01>f3y |<7C>w<><77>W<EFBFBD><57><EFBFBD><EFBFBD><0E><>O<EFBFBD>Y<EFBFBD>Ҁ<EFBFBD><D280>[]<5D><05>~<7E>10<31><30><15><><EFBFBD><EFBFBD><03><>1?؃<><04><>Q<19><><EFBFBD>פy<D7A4><79>3gv<67><76><EFBFBD>F<12><>B`A$<24><><EFBFBD>RF<52>2m<32>1<EFBFBD><31>
<EFBFBD><EFBFBD><EFBFBD>ޙf8<EFBFBD>N+5|<7C><><EFBFBD>S<EFBFBD><11><>%<25><><EFBFBD>o<><6F><1D>нEg:yRYm?O?<3F><0E>J<EFBFBD><4A>e<06>C<EFBFBD><43>b<>%)<29><><EFBFBD><EFBFBD><EFBFBD>
@@ -910,7 +910,7 @@ xref
0000001393 00000 n
0000002125 00000 n
0000017429 00000 n
0000064113 00000 n
0000064113 00000 n
0000002181 00000 n
0000002708 00000 n
0000022495 00000 n

View File

@@ -1,4 +1,4 @@
===== Build gestartet: 2026-04-25 10:59:38 =====
===== Build gestartet: 2026-04-25 11:28:43 =====
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
@@ -317,9 +317,7 @@ Cmd: pandoc --from=markdown+smart --pdf-engine=lualatex --template=Q:\DesTEngS\P
[WARNING] Missing character: There is no Ôùï (U+25CB) (U+25CB) in font "name:IBM Plex Sans:mode=nod
[WARNING] Missing character: There is no Ôùï (U+25CB) (U+25CB) in font "name:IBM Plex Sans:mode=nod
PDF OK: Q:\DesTEngS\Pro\Git\marketing\claude_cowork\artefakte\01-lebenslauf\output\Lebenslauf_Dr-Ing_Thomas_Langer.pdf (68.6 KB)
--- 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.2 KB)
===== Build beendet: 2026-04-25 11:02:09, Exit-Code 0 =====
===== Build beendet: 2026-04-25 11:28:50, Exit-Code 0 =====

View File

@@ -33,3 +33,4 @@ Chronologisches Log aller Entscheidungen und Prozessereignisse.
2026-04-24 14:20 | S05 | Teilgebiet 25 DesTEngS-Typographie-Refresh neu angelegt (Priorität niedrig, keine Abhängigkeiten) mit Begründung der Schriftentscheidung zu IBM Plex Sans als neue Dokumenten-Hausschrift; DesTEngS-Logo bleibt unverändert. Status von Teilgebiet 01 Lebenslauf-Optimierung im Index auf in Bearbeitung gesetzt. Artefakt-Ordner artefakte/25-typographie-refresh/ angelegt.
2026-04-24 21:46 | S05 | Teilgebiet 01 CV-Pipeline auf Pandoc/LuaLaTeX umgestellt: Ordner artefakte/01-lebenslauf neu gegliedert in source, templates, build, output, entwuerfe und archiv. Draft-Marker aus cv.md entfernt, Foto umbenannt ohne Sonderzeichen. Erste Template-Version template.tex geschrieben mit IBM Plex Sans, microtype, deutscher Sprachumgebung, Kopfzeile ab Seite 2, strikter Widow/Orphan-Kontrolle. Pandoc-Default reference.docx als Ausgangsbasis erzeugt. PowerShell-Build-Skript build.ps1 fertig mit Log und Exit-Code-Handling. DOCX-Build in Sandbox erfolgreich verifiziert, PDF-Build ist auf Thomas' MiKTeX-System zu testen. teilgebiete/01-lebenslauf.md um Wendepunkt, Entscheidungen, nächste Schritte und neue Artefakt-Liste aktualisiert.
2026-04-25 11:11 | S05 | build.ps1 erweitert um sichtbaren Fortschritt im PowerShell-Fenster (farbige Statuszeilen für Build-Phasen, Pandoc-Detail-Output bleibt nur im Log). Notes-Block aktualisiert (System-Fonts statt plex-otf-Paket). Teilgebiet 25 ergänzt um Doku der system-weiten Installation IBM Plex Sans v1.1.0, IBM Plex Mono v1.1.0 und IBM Plex Serif v1.1.0 (Release 2024-11-13, OTF, alle Benutzer) mit Quelle und Anlass; Offene-Punkte-Abschnitt entsprechend nachgezogen. Erster vollständiger Build des CV (PDF und DOCX) auf Thomas' MiKTeX-System lief erfolgreich durch.
2026-04-25 12:05 | S05 | build.ps1 repariert: Die zuvor eingebaute Write-Both-Hilfsfunktion und em-Dashes in Code-Strings hatten zu einem stillen Frueh-Abbruch unter Windows PowerShell 5.1 gefuehrt. Neue Version verwendet stattdessen direkte Write-Host/Write-Log-Paare an den Fortschrittsstellen, ASCII-only in Code-Strings, strukturell nah an der initial funktionierenden Version. Konsolenausgabe mit farbigen Statuszeilen pro Build-Phase ist jetzt sichtbar, Pandoc-Detail-Output bleibt im Log.