159 lines
5.8 KiB
TeX
159 lines
5.8 KiB
TeX
% !TEX root = ../HSRTReport.cls
|
|
% ==============================================================================
|
|
% Typography Configuration Module
|
|
% ==============================================================================
|
|
% Description: Typography settings including text alignment, spacing, and formatting
|
|
% Author: Frederik Beimgraben
|
|
% License: Creative Commons CC BY 4.0
|
|
% ==============================================================================
|
|
|
|
% ==============================================================================
|
|
% Page Style Configuration
|
|
% ==============================================================================
|
|
\pagestyle{fancy}
|
|
|
|
% ==============================================================================
|
|
% Line and Paragraph Spacing
|
|
% ==============================================================================
|
|
% Line spacing
|
|
\renewcommand{\baselinestretch}{1.5}
|
|
|
|
% ==============================================================================
|
|
% Text Alignment
|
|
% ==============================================================================
|
|
% Use justified text (Blocksatz) - this is the default in LaTeX
|
|
% No \raggedright command needed
|
|
|
|
% Enable hyphenation for better text distribution in justified text
|
|
% Lower penalties encourage more hyphenation for better spacing
|
|
\hyphenpenalty=500
|
|
\exhyphenpenalty=500
|
|
\tolerance=1000
|
|
\emergencystretch=3em
|
|
|
|
% Prevent excessive word spacing in justified text
|
|
\spaceskip=0.3em plus 0.2em minus 0.1em
|
|
\xspaceskip=0.6em plus 0.3em minus 0.15em
|
|
|
|
% ==============================================================================
|
|
% Widow and Orphan Control
|
|
% ==============================================================================
|
|
% Prevent single lines at the beginning or end of a page
|
|
% High penalties discourage but don't absolutely prevent widows/orphans
|
|
\widowpenalty=10000
|
|
\clubpenalty=10000
|
|
\displaywidowpenalty=10000
|
|
|
|
% Prevent page breaks right after section headings
|
|
\@beginparpenalty=10000
|
|
\@endparpenalty=10000
|
|
|
|
% ==============================================================================
|
|
% Enhanced Page Break Control
|
|
% ==============================================================================
|
|
% Section page break penalties are handled in PageBreakControl.tex
|
|
|
|
% Minimum lines on a new page after section break
|
|
% Require at least 2 paragraphs (approximately 8-10 lines) after a section
|
|
\raggedbottom % Allow variable page heights to avoid bad breaks
|
|
\flushbottom % But try to align bottoms when possible
|
|
|
|
% Configure penalties for better paragraph cohesion
|
|
\interlinepenalty=150 % Discourage breaks within paragraphs
|
|
\predisplaypenalty=10000 % Prevent breaks before equations
|
|
\postdisplaypenalty=10000 % Prevent breaks after equations
|
|
\floatingpenalty=20000 % Strongly discourage breaks around floats
|
|
|
|
% Keep at least two paragraphs together at page boundaries
|
|
\setlength{\parskip}{0.5em plus 0.2em minus 0.1em}
|
|
\parfillskip=0pt plus 1fil
|
|
|
|
% ==============================================================================
|
|
% Listing and Itemize Environment Protection
|
|
% ==============================================================================
|
|
% Prevent page breaks in listings
|
|
\lstset{
|
|
float=H, % Force listings to stay in place
|
|
belowskip=-0.5em plus 0.2em, % Adjust spacing
|
|
aboveskip=0.5em plus 0.2em,
|
|
keepspaces=true,
|
|
breaklines=true
|
|
}
|
|
|
|
% Create protected itemize environment that resists page breaks
|
|
\newenvironment{protecteditemize}{%
|
|
\begin{minipage}{\linewidth}%
|
|
\begin{itemize}%
|
|
}{%
|
|
\end{itemize}%
|
|
\end{minipage}%
|
|
}
|
|
|
|
% Create protected enumerate environment
|
|
\newenvironment{protectedenumerate}{%
|
|
\begin{minipage}{\linewidth}%
|
|
\begin{enumerate}%
|
|
}{%
|
|
\end{enumerate}%
|
|
\end{minipage}%
|
|
}
|
|
|
|
% Hook into itemize/enumerate to discourage breaks without redefining
|
|
% This avoids conflicts with enumitem package options
|
|
\AtBeginEnvironment{itemize}{%
|
|
\nopagebreak[4]% Strong discouragement of page break
|
|
\interlinepenalty=5000% Discourage breaks within items
|
|
}
|
|
\AtEndEnvironment{itemize}{%
|
|
\nopagebreak[3]% Discourage break after list
|
|
}
|
|
|
|
\AtBeginEnvironment{enumerate}{%
|
|
\nopagebreak[4]%
|
|
\interlinepenalty=5000%
|
|
}
|
|
\AtEndEnvironment{enumerate}{%
|
|
\nopagebreak[3]%
|
|
}
|
|
|
|
% ==============================================================================
|
|
% Needspace Package for Conditional Page Breaks
|
|
% ==============================================================================
|
|
\usepackage{needspace}
|
|
|
|
% Section spacing is handled in PageBreakControl.tex
|
|
|
|
% ==============================================================================
|
|
% Float Placement Control
|
|
% ==============================================================================
|
|
% Adjust float placement to keep figures and tables near their reference
|
|
\renewcommand{\floatpagefraction}{0.8} % Float page must be 80% full
|
|
\renewcommand{\topfraction}{0.9} % Max 90% of page for top floats
|
|
\renewcommand{\bottomfraction}{0.9} % Max 90% of page for bottom floats
|
|
\renewcommand{\textfraction}{0.1} % Min 10% of page must be text
|
|
\setcounter{topnumber}{2} % Max 2 floats at top of page
|
|
\setcounter{bottomnumber}{2} % Max 2 floats at bottom of page
|
|
\setcounter{totalnumber}{4} % Max 4 floats per page
|
|
|
|
% ==============================================================================
|
|
% List Formatting
|
|
% ==============================================================================
|
|
% Define a list paragraph style with no spacing between items
|
|
% This will be used for compact lists as required
|
|
\newenvironment{listenabsatz}{%
|
|
\begin{itemize}[nosep,leftmargin=*]%
|
|
}{%
|
|
\end{itemize}%
|
|
}
|
|
|
|
% Also provide enumerated version
|
|
\newenvironment{listenabsatz*}{%
|
|
\begin{enumerate}[nosep,leftmargin=*]%
|
|
}{%
|
|
\end{enumerate}%
|
|
}
|
|
|
|
% ==============================================================================
|
|
% End of Typography Configuration Module
|
|
% ==============================================================================
|