Files
marketing_claude/artefakte/01-lebenslauf/templates/template.tex
tlg 8016f4d775 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.
2026-04-27 20:27:12 +02:00

185 lines
6.8 KiB
TeX

%% template.tex — Pandoc-LaTeX-Template für den DesTEngS-Lebenslauf
%% Engine: LuaLaTeX (wegen fontspec + OpenType-Schrift IBM Plex Sans)
%% Status: zweite Iteration mit typographischen Tiefen-Eingriffen.
\documentclass[11pt,a4paper]{article}
%% Section-Nummerierung deaktivieren (CV soll keine 1.2.3-Nummern haben)
\setcounter{secnumdepth}{0}
%% === Schrift ================================================================
\usepackage{fontspec}
\setmainfont{IBM Plex Sans}
\setsansfont{IBM Plex Sans}
\setmonofont{IBM Plex Mono}
\renewcommand{\familydefault}{\sfdefault}
%% === Sprache und Mikrotypographie ===========================================
\usepackage{microtype}
\usepackage{polyglossia}
\setdefaultlanguage{german}
%% === Geometrie ==============================================================
\usepackage[a4paper,
top=2.2cm, bottom=2.2cm, left=2.5cm, right=2.5cm,
headheight=16pt, headsep=0.6cm,
footskip=1.0cm]{geometry}
%% === Absatz-Layout ==========================================================
%% CV-Stil: keine Erstzeilen-Einrückung, stattdessen Vertikalabstand
\setlength{\parindent}{0pt}
\setlength{\parskip}{0.5em plus 0.2em minus 0.1em}
%% === Widow/Orphan-Kontrolle (strikt) ========================================
\widowpenalty=10000
\clubpenalty=10000
\displaywidowpenalty=10000
\brokenpenalty=10000
\raggedbottom
%% === Hyphenation tunen ======================================================
%% Hoehere Penalty: lieber leichte Ueberlaenge als unschoene Trennungen
\hyphenpenalty=500
\exhyphenpenalty=500
\tolerance=400
\emergencystretch=2em
%% === Farbe ==================================================================
\usepackage{xcolor}
\definecolor{destengsblue}{HTML}{3C68AE}
\definecolor{rulegray}{HTML}{BFBFBF}
%% === Hyperlinks =============================================================
%% URLs blau, interne Links (\pageref u.ae.) schwarz
\usepackage[hidelinks]{hyperref}
\hypersetup{
colorlinks=true,
linkcolor=black,
urlcolor=destengsblue,
citecolor=destengsblue,
pdfauthor={Dr.-Ing. Thomas Langer},
pdftitle={Lebenslauf Dr.-Ing. Thomas Langer},
pdfcreator={Pandoc + LuaLaTeX},
}
%% Pandoc emittiert fuer href-Links, deren Display-Text wie eine URL aussieht
%% (z.B. eine E-Mail-Adresse als Display und mailto:Adresse als Ziel),
%% \nolinkurl{...} um den Text in Verbatim-Mode zu rendern. Verbatim-Mode
%% bricht in fragilen Kontexten wie `longtable`-Minipage mit
%% ! Paragraph ended before \@xverbatim was complete.
%% ab. Da wir im CV (Sans-Serif durchgehend) kein Verbatim-Mode-Rendering
%% fuer URLs brauchen, redefinieren wir \nolinkurl{} zu Plain-Text-Output.
\renewcommand{\nolinkurl}[1]{#1}
%% === Bilder =================================================================
\usepackage{graphicx}
%% === Listen =================================================================
\usepackage{enumitem}
\setlist{nosep, leftmargin=1.2em, topsep=0.2em, partopsep=0pt, parsep=0pt, itemsep=0.15em}
%% Level 1: gefuellter Bullet
\setlist[itemize,1]{label=\textbullet}
%% Level 2: Endstrich (textopenbullet ist in Plex Sans nicht enthalten)
\setlist[itemize,2]{label=\textendash, leftmargin=2.0em}
%% === Tabellen ===============================================================
%% 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}
%% Pandoc 3.x emittiert fuer unnummerierte Tabellen `\def\LTcaptype{none}`
%% ohne den Counter `none` zu definieren. Pandocs eigene Default-Vorlage
%% definiert ihn (commit d835461 in Pandoc 3.8.2.1), Custom-Templates muessen
%% das selbst tun, sonst bricht LuaLaTeX mit
%% ! LaTeX Error: No counter 'none' defined.
%% in der Tabellen-Spaltenangabe ab. Siehe github.com/jgm/pandoc/issues/11201.
\newcounter{none}
%% Linienbreiten auf 0pt: \toprule/\midrule/\bottomrule rendern unsichtbar.
\setlength{\heavyrulewidth}{0pt}
\setlength{\lightrulewidth}{0pt}
\setlength{\cmidrulewidth}{0pt}
%% Kein Vertikalabstand um die Linien.
\setlength{\aboverulesep}{0pt}
\setlength{\belowrulesep}{0pt}
%% Vertikalabstand vor/nach longtable reduzieren (Default ist \bigskipamount).
\setlength{\LTpre}{0.4em}
\setlength{\LTpost}{0.4em}
%% === Schusterjungen-Schutz ==================================================
\usepackage{needspace}
%% === Abschnitte =============================================================
\usepackage{titlesec}
%% H1 (\section): gross, blau, mit Trennlinie. Im CV nur einmal (Name oben).
\titleformat{\section}
{\Large\bfseries\color{destengsblue}}
{}{0em}
{}
[\vspace{-0.3em}{\color{rulegray}\titlerule[0.4pt]}]
%% H2 (\subsection): mittelgross, blau, mit Trennlinie.
%% Hauptabschnitte (Kontaktdaten, Zusammenfassung, Stationen, Ausbildung, Kenntnisse)
\titleformat{\subsection}
{\large\bfseries\color{destengsblue}}
{}{0em}
{}
[\vspace{-0.3em}{\color{rulegray}\titlerule[0.3pt]}]
%% H3 (\subsubsection): normal-fett, jeweils Stations-Titel.
%% needspace verhindert Fast-Schusterjunge: kein Pagebreak, wenn weniger
%% als 6 Zeilen Platz; nopagebreak nach: Titel und erste Liste bleiben zusammen.
\titleformat{\subsubsection}
{\needspace{6\baselineskip}\normalsize\bfseries}
{}{0em}
{}
[\nopagebreak]
\titlespacing*{\section}{0pt}{0pt}{0.5em}
\titlespacing*{\subsection}{0pt}{1.0em}{0.4em}
\titlespacing*{\subsubsection}{0pt}{0.7em}{0.2em}
%% === Kopf- und Fusszeile ====================================================
\usepackage{fancyhdr}
\usepackage{lastpage}
\pagestyle{fancy}
\fancyhf{}
\fancyhead[L]{\small Dr.-Ing. Thomas Langer}
\fancyhead[R]{\small Lebenslauf}
\fancyfoot[R]{\small \thepage\,/\,\pageref{LastPage}}
\renewcommand{\headrulewidth}{0.4pt}
\renewcommand{\headrule}{\color{rulegray}\hrule height 0.4pt}
%% Erste Seite ohne Header
\fancypagestyle{firstpage}{%
\fancyhf{}%
\fancyfoot[R]{\small \thepage\,/\,\pageref{LastPage}}%
\renewcommand{\headrulewidth}{0pt}%
}
%% === Pandoc-Hilfen ==========================================================
\providecommand{\tightlist}{%
\setlength{\itemsep}{0pt}\setlength{\parskip}{0pt}}
%% Lange URL-Zeilen brechen
\usepackage{xurl}
%% === Dokument ===============================================================
\begin{document}
\thispagestyle{firstpage}
$body$
\end{document}