% !TEX root = ../../HSRTReport.cls % ============================================================================== % Logos Module % ============================================================================== % Description: Logo management and positioning for title and footer pages % Author: Frederik Beimgraben % License: Creative Commons CC BY 4.0 % ============================================================================== % ============================================================================== % Logo Scale Settings % ============================================================================== \newcommand{\logosScale}{1} \newcommand{\mainLogoScale}{1} \newlength{\imageHeight} % Set the scale for all logos \DeclareRobustCommand{\SetLogosScale}[1]{ \renewcommand{\logosScale}{#1} } % ============================================================================== % Logo Array Management % ============================================================================== % Configure array handling for global scope \let\newglobalarray\newarray \patchcmd{\newglobalarray}{\edef}{\xdef}{}{} % Enable array element expansion \expandarrayelementtrue % ============================================================================== % Logo Storage Arrays % ============================================================================== % Arrays to store logo properties \newglobalarray\LogosPaths \newglobalarray\LogosScales \newglobalarray\LogosOpacities \newglobalarray\LogosExtensions % Counter for number of logos \newcounter{logoCounter} \setcounter{logoCounter}{0} % ============================================================================== % Logo Management Commands % ============================================================================== % Add a logo to the arrays % Usage: \AddLogo{}{}{}{} \DeclareRobustCommand{\AddLogo}[4]{ \stepcounter{logoCounter} \LogosPaths(\thelogoCounter)={#1} \LogosScales(\thelogoCounter)={#2} \LogosOpacities(\thelogoCounter)={#3} \LogosExtensions(\thelogoCounter)={#4} } % Get opacity value for a specific logo \DeclareRobustCommand{\GetLogoOpacity}[1]{ \expand{\LogosOpacities(#1)} } % ============================================================================== % Title Page Data Management % ============================================================================== % Token register to store title page data \newtoks\titlePageData \def\tand{&} \titlePageData={\tand} % Add vertical space to title page data \DeclareRobustCommand{\AddTitlePageDataSpace}[1]{ \titlePageData=\expandafter{\the\titlePageData \vspace{#1}} } % Add a data line to title page (key-value pair) \DeclareRobustCommand{\AddTitlePageDataLine}[2]{ \titlePageData=\expandafter{\the\titlePageData\\ \textbf{#1}\tand #2} } % Get formatted title page data table \DeclareRobustCommand{\GetTitlePageDataTable}{ \begin{tabular}{@{} p{30mm} p{\textwidth-30mm-2\tabcolsep}} \the\titlePageData \end{tabular} } % ============================================================================== % Background Graphics Configuration % ============================================================================== % Path to skyline graphic \def\skylinePath{\classPath/Assets/Images/Skyline.svg} % Footer positioning \newcommand{\footerYShift}{1.5em} \newcommand{\footerXShift}{0.7em} % ============================================================================== % Logo Placement on Pages % ============================================================================== % Define logo positioning at beginning of each page \AtBeginPage{ \setlength{\imageHeight}{2cm*\real{\mainLogoScale}*\real{\logosScale}*\real{0.45}} \begin{tikzpicture}[overlay, remember picture] % === Main Logo(s) === \node[anchor=south east, inner sep=0pt, xshift=-\footerXShift, yshift=\footerYShift, opacity=0.0] (logo0) at (current page.south east) { \strcompare{\thepage}{0}{}{ \includegraphics[height=\imageHeight]{\imagesPath/DUMMY_FOOT.png} } }; \ifnum\thepage=0 \else % For loop to place all logos \foreach \i in {1,...,\value{logoCounter}} { % Calculate name for i-1 \pgfmathtruncatemacro{\prev}{\i-1} \node[anchor=east, inner sep=0pt, xshift=-0.1cm, yshift=2pt, opacity=0.3] (logo\i) at (logo\prev.west) { \makeatletter \testarray{LogosScales}(\i) \setlength{\imageHeight}{1.5cm*\real{\temp@macro}*\real{\logosScale}*\real{0.55}} \testarray{LogosExtensions}(\i) \let\extension\temp@macro \testarray{LogosOpacities}(\i) \let\opacity\temp@macro \testarray{LogosPaths}(\i) \ifthenelse{\equal{\extension}{svg}}{ \begin{tikzpicture} \node[opacity=\opacity] { \includesvg[height=\imageHeight]{\classPath/Assets/Images/\temp@macro.\extension} }; \end{tikzpicture} }{ \begin{tikzpicture} \node[opacity=\opacity] { \includegraphics[height=\imageHeight]{\classPath/Assets/Images/\temp@macro.\extension} }; \end{tikzpicture} } \makeatother }; } \fi % Skyline \node[anchor=south west, inner sep=0pt, yshift=0em] at (current page.south west) { \includesvg[width=1.5\paperwidth]{\skylinePath} }; \end{tikzpicture} } % ============================================================================== % End of Logos Module % ==============================================================================