%% 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}{0B5394}
\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}
