185 lines
6.8 KiB
TeX
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}
|