initial scaffold: structure, build setup, chapter stubs, diagrams
This commit is contained in:
+246
@@ -0,0 +1,246 @@
|
||||
\NeedsTeXFormat{LaTeX2e}
|
||||
\ProvidesClass{pidi-thesis}[2025/09/03 v1.0 PidI Thesis Class]
|
||||
|
||||
\newif\if@times
|
||||
\newif\if@calibri
|
||||
\newif\if@arial
|
||||
\@timestrue % default
|
||||
|
||||
\DeclareOption{times}{\@timestrue \@arialfalse \@calibrifalse}
|
||||
\DeclareOption{calibri}{\@calibritrue \@arialfalse \@timesfalse}
|
||||
\DeclareOption{arial}{\@arialtrue \@calibrifalse \@timesfalse}
|
||||
|
||||
% pass through unknown options to base class if needed
|
||||
\DeclareOption*{\PassOptionsToClass{\CurrentOption}{report}}
|
||||
\ProcessOptions\relax
|
||||
|
||||
% size depends on font choice: Times (12pt) vs sans (11pt)
|
||||
\if@times
|
||||
\LoadClass[12pt,a4paper]{report}
|
||||
\else
|
||||
\LoadClass[11pt,a4paper]{report}
|
||||
\fi
|
||||
|
||||
% --- Packages
|
||||
\RequirePackage[a4paper,left=3cm,right=2.5cm,top=3cm,bottom=2.5cm,headsep=1cm,footskip=10mm,includehead,includefoot]{geometry}
|
||||
\RequirePackage{float}
|
||||
\RequirePackage{iftex}
|
||||
\RequirePackage{microtype}
|
||||
\RequirePackage{setspace}
|
||||
\RequirePackage{graphicx}
|
||||
\RequirePackage{booktabs}
|
||||
\RequirePackage{tabularx}
|
||||
\RequirePackage{caption}
|
||||
\RequirePackage{titlesec}
|
||||
\RequirePackage{enumitem}
|
||||
\RequirePackage{fancyhdr}
|
||||
\RequirePackage{hyperref}
|
||||
\RequirePackage{xcolor}
|
||||
\RequirePackage[ngerman,english]{babel}
|
||||
\RequirePackage{csquotes}
|
||||
\RequirePackage{transparent}
|
||||
\RequirePackage[absolute,overlay]{textpos}
|
||||
\RequirePackage{changepage}
|
||||
\RequirePackage{listings}
|
||||
\RequirePackage{minted}
|
||||
\RequirePackage{pdfpages}
|
||||
\RequirePackage{longtable}
|
||||
\RequirePackage[htt]{hyphenat}
|
||||
|
||||
% Code highlighting
|
||||
\usemintedstyle{default}
|
||||
|
||||
% Fonts: sans (Arial/Calibri) in 11pt, or Times New Roman 12pt
|
||||
\ifPDFTeX
|
||||
\if@times
|
||||
\RequirePackage{newtxtext}
|
||||
\else
|
||||
\RequirePackage[scaled=0.95]{helvet}
|
||||
\renewcommand{\familydefault}{\sfdefault}
|
||||
\fi
|
||||
\else
|
||||
\RequirePackage{fontspec}
|
||||
\if@times
|
||||
\setmainfont{TimesNewerRoman-Regular.otf}[
|
||||
BoldFont = TimesNewerRoman-Bold.otf,
|
||||
ItalicFont = TimesNewerRoman-Italic.otf,
|
||||
BoldItalicFont = TimesNewerRoman-BoldItalic.otf
|
||||
]
|
||||
\else
|
||||
\if@calibri
|
||||
\setmainfont{Calibri}
|
||||
\else
|
||||
\setmainfont{Arial}
|
||||
\fi
|
||||
\fi
|
||||
\fi
|
||||
|
||||
% Line spacing
|
||||
\setstretch{1.3}
|
||||
|
||||
% Paragraph spacing
|
||||
\setlength{\parindent}{0pt}
|
||||
\setlength{\parskip}{6pt}
|
||||
|
||||
% Headings: bold + clear visual hierarchy
|
||||
\titleformat{\chapter}{\bfseries\LARGE}{\thechapter\quad}{0pt}{}
|
||||
\titlespacing*{\chapter}{0pt}{*2}{*1}
|
||||
\titleformat{\section}{\bfseries\Large}{\thesection\quad}{0pt}{}
|
||||
\titlespacing*{\section}{0pt}{*1.5}{*0.8}
|
||||
\titleformat{\subsection}{\bfseries\large}{\thesubsection\quad}{0pt}{}
|
||||
\titlespacing*{\subsection}{0pt}{*1.2}{*0.6}
|
||||
|
||||
% Emphasis should be bold as per spec
|
||||
\renewcommand{\emph}[1]{\textbf{#1}}
|
||||
|
||||
% Captions a bit tighter
|
||||
\captionsetup{font=small,labelfont=bf}
|
||||
|
||||
% Lists tighter by default
|
||||
\setlist{itemsep=3pt plus 1pt, topsep=6pt}
|
||||
|
||||
% Header & footer: page number bottom-center; optional header with short title
|
||||
\pagestyle{fancy}
|
||||
\fancyhf{} % clear
|
||||
\fancyfoot[C]{\thepage}
|
||||
\renewcommand{\headrulewidth}{0pt}
|
||||
\renewcommand{\footrulewidth}{0pt}
|
||||
|
||||
% Redefine 'plain' style to ensure chapter starting pages also use bottom-center numbering
|
||||
\fancypagestyle{plain}{
|
||||
\fancyhf{}
|
||||
\fancyfoot[C]{\thepage}
|
||||
\renewcommand{\headrulewidth}{0pt}
|
||||
\renewcommand{\footrulewidth}{0pt}
|
||||
}
|
||||
|
||||
% Optional header content command; placed 1cm above text via headsep=1cm
|
||||
\newcommand{\shorthead}{}
|
||||
\fancyhead[L]{\shorthead}
|
||||
|
||||
\newcommand{\headerlogo}{}
|
||||
\fancyhead[R]{\IfFileExists{\headerlogo}{\includegraphics[height=1em]{\headerlogo}}{}}
|
||||
|
||||
\renewcommand{\headrulewidth}{0.4pt}
|
||||
|
||||
% Hyperref setup
|
||||
\hypersetup{
|
||||
pdftitle={},
|
||||
pdfauthor={},
|
||||
colorlinks=true,
|
||||
linkcolor=[rgb]{0.0,0.2,0.6},
|
||||
citecolor=[rgb]{0.0,0.2,0.6},
|
||||
urlcolor=[rgb]{0.0,0.2,0.6}
|
||||
}
|
||||
|
||||
% --- Meta fields
|
||||
\newcommand{\thesistitle}{}
|
||||
\newcommand{\thesisshorttitle}{}
|
||||
\newcommand{\authorname}{}
|
||||
\newcommand{\matrikel}{}
|
||||
\newcommand{\degree}{}
|
||||
\newcommand{\institution}{}
|
||||
\newcommand{\faculty}{}
|
||||
\newcommand{\course}{Praktikum in der Industrie (PidI 3)}
|
||||
\newcommand{\company}{}
|
||||
\newcommand{\advisor}{}
|
||||
\newcommand{\daterange}{}
|
||||
\newcommand{\submissiondate}{}
|
||||
|
||||
\newcommand{\setthesismeta}[9]{%
|
||||
\renewcommand{\thesistitle}{#1}%
|
||||
\renewcommand{\thesisshorttitle}{#2}%
|
||||
\renewcommand{\authorname}{#3}%
|
||||
\renewcommand{\matrikel}{#4}%
|
||||
\renewcommand{\degree}{#5}%
|
||||
\renewcommand{\institution}{#6}%
|
||||
\renewcommand{\faculty}{#7}%
|
||||
\renewcommand{\company}{#8}%
|
||||
\renewcommand{\advisor}{#9}%
|
||||
}
|
||||
|
||||
\newcommand{\setdates}[2]{%
|
||||
\renewcommand{\daterange}{#1}%
|
||||
\renewcommand{\submissiondate}{#2}%
|
||||
}
|
||||
|
||||
% Update header and pdf meta when title/author set
|
||||
\AtBeginDocument{%
|
||||
\renewcommand{\shorthead}{\thesisshorttitle}%
|
||||
\hypersetup{pdftitle=\thesistitle, pdfauthor=\authorname}%
|
||||
}
|
||||
|
||||
% Title page per spec, clean & simple
|
||||
\newcommand{\companylogo}{}
|
||||
\newcommand{\unilogo}{}
|
||||
\newcommand{\maketitlepage}{%
|
||||
\begin{titlepage}
|
||||
|
||||
\newcommand{\hlogo}{1.5cm}
|
||||
|
||||
\centering
|
||||
|
||||
{\bfseries\LARGE \thesistitle\par}
|
||||
\vspace{2em}
|
||||
{\Large \course\par}
|
||||
\vspace{2em}
|
||||
{\large \textbf{Autor/in:} \authorname \\
|
||||
\textbf{Matrikelnummer:} \matrikel \par}
|
||||
\vspace{1em}
|
||||
{\large \textbf{Studiengang/Abschluss:} \degree \par}
|
||||
\vspace{1em}
|
||||
{\large \textbf{Hochschule:} \institution \\
|
||||
\textbf{Fakultät/Bereich:} \faculty \par}
|
||||
\vspace{1em}
|
||||
{\large \textbf{Partnerunternehmen:} \company \\
|
||||
\textbf{Betreuer/in im Unternehmen:} \advisor \par}
|
||||
|
||||
\vspace{2em}
|
||||
\includegraphics[height=\hlogo]{\companylogo}
|
||||
\hfill
|
||||
\includegraphics[height=\hlogo]{\unilogo}
|
||||
\vfill
|
||||
{\large \textbf{Tätigkeitszeitraum:} \daterange \par}
|
||||
\vspace{0.5em}
|
||||
{\large \textbf{Abgabedatum:} \submissiondate \par}
|
||||
|
||||
\addcontentsline{toc}{chapter}{Titelseite}
|
||||
\end{titlepage}
|
||||
}
|
||||
|
||||
% Confirmation page (Bescheinigung)
|
||||
\newcommand{\confirmationpage}{%
|
||||
\chapter*{Bescheinigung}
|
||||
Hiermit wird bestätigt, dass \textbf{\authorname} das Praktikum \textbf{\course} im Partnerunternehmen \textbf{\company} im Zeitraum \textbf{\daterange} selbständig durchgeführt hat. Es wurden mindestens \textbf{24 Manntage} an dem Projekt gearbeitet. Der Einsatz von KI beschränkt sich maximal auf die erlaubten Zwecke.
|
||||
|
||||
\vspace{4em}
|
||||
\begin{tabularx}{\textwidth}{X X}
|
||||
\hrulefill & \hrulefill \\
|
||||
Ort, Datum & Unterschrift Betreuer/in \\
|
||||
\end{tabularx}
|
||||
|
||||
\addcontentsline{toc}{chapter}{Bescheinigung}
|
||||
\clearpage
|
||||
}
|
||||
|
||||
% Abstract & declarations convenience
|
||||
\newcommand{\frontmatterpages}{%
|
||||
\pagenumbering{roman}
|
||||
\maketitlepage
|
||||
\renewcommand*\contentsname{Inhaltsangabe}
|
||||
\tableofcontents
|
||||
\addcontentsline{toc}{chapter}{Inhaltsangabe}
|
||||
\confirmationpage
|
||||
\input{frontmatter/usage-of-ai}
|
||||
\input{frontmatter/abstract}
|
||||
\input{frontmatter/acknowledgments}
|
||||
\clearpage
|
||||
\pagenumbering{arabic}
|
||||
}
|
||||
|
||||
% Bibliography (biblatex expected)
|
||||
\newcommand{\printrefs}{%
|
||||
\clearpage
|
||||
\addcontentsline{toc}{chapter}{Literaturverzeichnis}
|
||||
\printbibliography
|
||||
}
|
||||
Reference in New Issue
Block a user