S05: Zweite Iteration auf Inspektions-Befunde. cv.md: 25 Vorkommen Zahl-plus-Einheit (Hz/kHz/KHz/MHz/GHz/THz) per geschuetztem Leerzeichen U+00A0 vor Zerreissen geschuetzt; Trainings-Sektion von Fliesstext auf Bullet-Liste umgestellt. template.tex: parindent=0 mit parskip-Vertikalabstand statt Erstzeilen-Einrueckung (behebt Ausbildungs-Inkonsistenz), Level-2-Bullet von textopenbullet (in Plex Sans nicht enthalten, Rechtecke) auf textendash umgestellt, linkcolor auf schwarz fuer interne Links (LastPage-Seitennummer nicht mehr blau, URLs bleiben blau), Hyphenation-Penalty erhoeht (kuerzere Worte am Zeilenanfang seltener), Section-Hierarchie korrigiert (H2 jetzt groesser als H3, beide mit destengsblau und Trennlinie), Schusterjungen-Schutz per needspace+nopagebreak vor und nach jedem Stations-Titel (verhindert dass Stations-Anfang am Seitenende landet). Sandbox-Verifikation: 51 LaTeX-itemize-Bloecke, 558 DOCX-Numbering-Marker, alle Template-Eingriffe im Output sichtbar. Hinweis: Write-Tool hatte das Template beim ersten Versuch verstuemmelt; Heredoc-Workaround per bash hat geklappt.

This commit is contained in:
tlg
2026-04-25 13:26:24 +02:00
parent ea177fd20c
commit a4393f6a00
7 changed files with 838 additions and 1007 deletions

View File

@@ -1,6 +1,6 @@
%% template.tex — Pandoc-LaTeX-Template für den DesTEngS-Lebenslauf
%% Engine: LuaLaTeX (wegen fontspec + OpenType-Schrift IBM Plex Sans)
%% Status: erstes funktionsfähiges Grundgerüst; Typographie-Feinarbeit erfolgt iterativ.
%% Status: zweite Iteration mit typographischen Tiefen-Eingriffen.
\documentclass[11pt,a4paper]{article}
@@ -25,6 +25,11 @@
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
@@ -32,16 +37,24 @@
\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}{0B5394}
\definecolor{rulegray}{HTML}{BFBFBF}
%% === Hyperlinks =============================================================
%% URLs blau, interne Links (\pageref u.ae.) schwarz
\usepackage[hidelinks]{hyperref}
\hypersetup{
colorlinks=true,
linkcolor=destengsblue,
linkcolor=black,
urlcolor=destengsblue,
citecolor=destengsblue,
pdfauthor={Dr.-Ing. Thomas Langer},
@@ -55,24 +68,46 @@
%% === 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}
\setlist[itemize,2]{label=\textopenbullet, leftmargin=2.0em}
%% Level 2: Endstrich (textopenbullet ist in Plex Sans nicht enthalten)
\setlist[itemize,2]{label=\textendash, leftmargin=2.0em}
%% === 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}
{\normalsize\bfseries}
{\large\bfseries\color{destengsblue}}
{}{0em}
{}
\titlespacing*{\section}{0pt}{1.4em}{0.5em}
\titlespacing*{\subsection}{0pt}{0.9em}{0.2em}
[\vspace{-0.3em}{\color{rulegray}\titlerule[0.3pt]}]
%% === Kopf- und Fußzeile =====================================================
%% 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}{1.4em}{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}
@@ -91,11 +126,10 @@
}
%% === Pandoc-Hilfen ==========================================================
%% Pandoc-Output nutzt \tightlist für dichte Listen
\providecommand{\tightlist}{%
\setlength{\itemsep}{0pt}\setlength{\parskip}{0pt}}
%% Bei Bedarf längere URL-Zeilen brechen
%% Lange URL-Zeilen brechen
\usepackage{xurl}
%% === Dokument ===============================================================