% !TEX root = ../../Main.tex % ==== Colors ==== \definecolor{britishracinggreen}{rgb}{0.0, 0.26, 0.15} \definecolor{eggplant}{rgb}{0.38, 0.25, 0.32} \definecolor{hanblue}{rgb}{0.27, 0.42, 0.81} \definecolor{navyblue}{rgb}{0.0, 0.0, 0.5} \definecolor{pansypurple}{rgb}{0.47, 0.09, 0.29} \definecolor{shockingpink}{rgb}{0.99, 0.06, 0.75} % ==== Base Case ==== % Define a counter to track nesting level \newcounter{coloredBoxLevel} % Parameters: \makeatletter \define@key{coloredBox}{icon}{\def\coloredBoxIcon{#1}} \define@key{coloredBox}{icon.prefix}{\def\coloredBoxIconPrefix{#1}} \define@key{coloredBox}{icon.fontsize}{\def\coloredBoxIconSize{#1}} \define@key{coloredBox}{icon.offset.x}{\def\coloredBoxIconOffsetX{#1}} \define@key{coloredBox}{icon.offset.y}{\def\coloredBoxIconOffsetY{#1}} \define@key{coloredBox}{icon.color}{\def\coloredBoxColor{#1}} \define@key{coloredBox}{background.color}{\def\coloredBoxBackground{#1}} \makeatother % Define the environment \NewEnviron{ColoredBox}[1][ icon={\faInfoCircle}, icon.color={blue}, icon.prefix={}, icon.fontsize={28pt}, icon.offset.x={0pt}, icon.offset.y={0pt}, background.color={blue} ]{ % Start of the environment %% Setting the keys \setkeys{coloredBox}{#1} %% Set background opacity % Increment the nesting level counter \stepcounter{coloredBoxLevel} % Set opacity based on the nesting level using a formula \FPeval{\backgroundOpacityFloat}{0.05 + 0.075 * \arabic{coloredBoxLevel}} % Convert the opacity to a percentage integer \FPeval{\backgroundOpacity}{round(\backgroundOpacityFloat * 100, 0)} % Always have the icon opacity 15% higher than the background \FPeval{\iconOpacity}{\backgroundOpacity + 20} %% === Content === \ifnum\value{coloredBoxLevel}=1 % Commands to only execute at the page level \filbreak \fi \vspace*{0.5\baselineskip} \noindent \begin{minipage}{\linewidth} \begin{mdframed}[ backgroundcolor={\coloredBoxBackground!\backgroundOpacity}, hidealllines=true, skipabove=0.7\baselineskip, skipbelow=0.7\baselineskip, splitbottomskip=2pt, splittopskip=4pt, roundcorner=5pt ] % [REFACTOR] using picture environment instead of tikz due to pgf errors \begin{picture}(\textwidth, 0)(0, 0) \put(\coloredBoxIconOffsetX-\coloredBoxIconSize,\coloredBoxIconOffsetY-0.7cm){ \fontsize{\coloredBoxIconSize}{\coloredBoxIconSize} \selectfont \color{\coloredBoxColor!\iconOpacity} \coloredBoxIcon } \end{picture} \hspace*{0.25cm} \begin{minipage}{\linewidth-0.5cm} \vspace*{0.5\baselineskip} \BODY \vspace*{0.5\baselineskip} \end{minipage} \end{mdframed} \end{minipage} %% === /Content === % Reduce the nesting level counter \addtocounter{coloredBoxLevel}{-1} } % ==== /Base Case ==== % ==== Info Box ==== % Derived from `ColoredBox` \NewEnviron{InfoBox}[1][ icon={\faInfoCircle}, icon.color={blue}, icon.prefix={}, icon.fontsize={24pt}, icon.offset.x={0pt}, icon.offset.y={0pt}, background.color={blue} ]{ \let\iBODY\BODY \begin{ColoredBox}[#1] \iBODY \end{ColoredBox} } % ==== /Info Box ==== % ==== Warning Box ==== % Derived from `ColoredBox` \NewEnviron{WarningBox}[1][ icon={\faExclamationTriangle}, icon.color={red}, icon.prefix={}, icon.fontsize={24pt}, icon.offset.x={0pt}, icon.offset.y={0pt}, background.color={red} ]{ \let\wBODY\BODY \begin{ColoredBox}[#1] \wBODY \end{ColoredBox} } % ==== /Warning Box ==== % ==== Success Box ==== % Derived from `ColoredBox` \NewEnviron{SuccessBox}[1][ icon={\faCheckCircle}, icon.color={green}, icon.prefix={}, icon.fontsize={24pt}, icon.offset.x={0pt}, icon.offset.y={2pt}, background.color={green} ]{ \let\sBODY\BODY \begin{ColoredBox}[#1] \sBODY \end{ColoredBox} } % ==== /Success Box ==== % ==== Important Box ==== % Derived from `ColoredBox` \NewEnviron{ImportantBox}[1][ icon={\faExclamationCircle}, icon.color={orange}, icon.prefix={}, icon.fontsize={24pt}, icon.offset.x={0pt}, icon.offset.y={0pt}, background.color={orange} ]{ \let\impBODY\BODY \begin{ColoredBox}[#1] \impBODY \end{ColoredBox} } % ==== Simpler Custom Boxes ==== % Environment `CustomBox` % Usage: % \begin{CustomBox}{}{} % ... % \end{CustomBox} % Parameters: \NewEnviron{CustomBox}[2]{ \let\cBODY\BODY \begin{ColoredBox}[ icon={#1}, icon.color={#2}, icon.prefix={}, icon.fontsize={24pt}, icon.offset.x={0pt}, icon.offset.y={0pt}, background.color={#2} ] \cBODY \end{ColoredBox} } % ==== /Simpler Custom Boxes ==== % ==== Voting results Environment ==== % Using vote-yea Icon from fontawesome \NewEnviron{VotingResultsBox}[1]{ \let\VotingResultsBODY\BODY \begin{ColoredBox}[ icon={\faVoteYea}, icon.color={#1}, icon.prefix={}, icon.fontsize={24pt}, icon.offset.x={-0.2cm}, icon.offset.y={0pt}, background.color={#1} ] \VotingResultsBODY \end{ColoredBox} } % ==== /Voting results Environment ==== % ==== Voting Results ==== % Derived from `VotingResultsBox` \NewEnviron{VotingResults}[3]{ \let\voteBODY\BODY % Choose the color based on the vote results \ifnum#1>#2 \def\voteColor{britishracinggreen} \else \ifnum#1<#2 \def\voteColor{red} \else \def\voteColor{eggplant} \fi \fi \begin{VotingResultsBox}{\voteColor} \voteBODY \begin{multicols}{3} \begin{CustomBox}{\faThumbsUp}{britishracinggreen} \textbf{Ja:} #1 \end{CustomBox} \columnbreak \begin{CustomBox}{\faThumbsDown}{red} \textbf{Nein:} #2 \end{CustomBox} \columnbreak \begin{CustomBox}{\faQuestion}{eggplant} \textbf{Enthaltung:} #3 \end{CustomBox} \end{multicols} \end{VotingResultsBox} } % ==== /Voting Results ==== % ==== Discussion Box ==== % Derived from `ColoredBox` \NewEnviron{DiscussionBox}[1][ icon={\faComments}, icon.color={hanblue}, icon.prefix={}, icon.fontsize={24pt}, icon.offset.x={0pt}, icon.offset.y={0pt}, background.color={hanblue} ]{ \let\dBODY\BODY \begin{ColoredBox}[#1] \dBODY \end{ColoredBox} } % ==== /Discussion Box ====