% ▄▄▄ ▄▄▄▄▄▄ ▄▄▄▄▄▄▄ ▄▄▄▄▄▄▄ ▄▄ ▄▄ ▄▄ ▄▄ ▄▄▄▄▄▄▄ ▄▄▄ ▄▄▄▄▄▄▄ ▄▄▄▄▄▄▄ ▄▄▄▄▄▄ ▄▄▄▄▄▄▄ % █ █ █ █ █ █ █▄█ █ █ █ █ █ █ █ █ █ █ ▄ █ █ █ % █ █ █ ▄ █▄ ▄█ ▄▄▄█ █ █ █▄█ █ ▄▄▄█ █ █ ▄ █ ▄▄▄█ █ █ █ █ ▄▄▄▄▄█ % █ █ █ █▄█ █ █ █ █ █▄▄▄█ █ █ █ █▄▄▄█ █ █ █▄█ █ █▄▄▄█ █▄▄█▄█ █▄▄▄▄▄ % █ █▄▄▄█ █ █ █ █ ▄▄▄██ █ █ ▄ █ ▄▄▄█ █▄▄▄█ ▄▄▄█ ▄▄▄█ ▄▄ █▄▄▄▄▄ █ % █ █ ▄ █ █ █ █ █▄▄▄█ ▄ █ █ █ █ █ █▄▄▄█ █ █ █ █▄▄▄█ █ █ █▄▄▄▄▄█ █ % █▄▄▄▄▄▄▄█▄█ █▄▄█ █▄▄▄█ █▄▄▄▄▄▄▄█▄▄█ █▄▄█ █▄▄█ █▄▄█▄▄▄▄▄▄▄█▄▄▄▄▄▄▄█▄▄▄█ █▄▄▄▄▄▄▄█▄▄▄█ █▄█▄▄▄▄▄▄▄█ % ▄▄█▀▀▀█▄█ % ▄██▀ ▀█ % ██▀ ▀ ▄██▀██▄▀███▄███ ▄▄█▀██ % ██ ██▀ ▀██ ██▀ ▀▀ ▄█▀ ██ % ██▄ ██ ██ ██ ██▀▀▀▀▀▀ % ▀██▄ ▄▀██▄ ▄██ ██ ██▄ ▄ % ▀▀█████▀ ▀█████▀▄████▄ ▀█████▀ % This file contains all necessary dependencies for the document to compile (at all) and some core macros % Imports % \typeout{[Core] Importing!} \usepackage[table, dvipsnames]{xcolor} \usepackage{amsmath} \usepackage{graphicx} \usepackage{subcaption} \usepackage[export]{adjustbox} \usepackage[most]{tcolorbox} \usepackage{cancel} \usepackage{dsfont} \usepackage{amssymb} \usepackage{mathrsfs} \usepackage{ulem} \usepackage{soul} \usepackage{parskip} \usepackage{fancyhdr} \usepackage{lastpage} \usepackage{tocloft} \usepackage{wasysym} \usepackage{wrapfig} \usepackage{multicol} \usepackage{ifthen} \usepackage[hidelinks]{hyperref} \usepackage{enumitem} \usepackage{gensymb} \usepackage{pifont} % Language Switching. Currently only English and German are supported % See docs for how to use \newcounter{lang} \newcommand{\setLang}[1]{ \edef\lang{#1} \edef\en{en} \edef\de{de} \ifx\lang\en \typeout{[Lang Switcher] Loading English} \setcounter{lang}{1} \else \ifx\lang\de \typeout{[Lang Switcher] Loading German} \setcounter{lang}{2} \usepackage[ngerman]{babel} \else \typeout{[Lang Switcher] No such language!} \fi \fi } \newcommand{\loadLang}{ \ifnum\value{lang}<2{ \typeout{[Lang Loader] Loaded English} }\else { \typeout{[Lang Loader] Loaded German} \setcounter{lang}{2} } \fi } % Create config counters / variables. See the config file for changing them \newcounter{numberingConfig} \newcounter{numberSubsections} \newcounter{descriptorShadeStrength} \newcounter{shadeStrength} % Set up the latex document, configure author, title (as first argument), as well as headers and footers \newcommand{\setup}[1]{ \typeout{[Setup] Setting up...} \loadLang \usepackage[a4paper,textwidth=17.5cm,textheight=25cm,includehead]{geometry} \title{\Huge \textbf{#1}} \author{\authorTitle} \makeatletter \makeatother \fancyhead{} \fancyhead[L]{#1} \fancyhead[R]{\authorHeaders} \fancyfoot{} \fancyfoot[L]{\today} \fancyfoot[R]{\thepage\ /\ \pageref{LastPage}} \fancypagestyle{plain}{% \fancyhead{} \fancyhead[L]{#1} \fancyhead[R]{\authorHeaders} \fancyfoot{} \fancyfoot[L]{\today} \fancyfoot[R]{\thepage\ /\ \pageref{LastPage}} } } % Start document command (required) \newcommand{\startDocument}{ \maketitle \pagestyle{fancy} \thispagestyle{fancy} } % Set up the latex document, only configuring the author, title and page size \newcommand{\setupBarebones}[1]{ \loadLang \usepackage[a4paper,textwidth=17.5cm,textheight=25cm,includehead]{geometry} \title{\Huge \textbf{#1}} \author{\authorTitle} } % Set up the latex document for exam summaries (Extra wide body, small margins, no header) \newcommand{\setupCheatSheet}[1]{ \loadLang \usepackage[a4paper,textwidth=20cm,textheight=28.5cm]{geometry} \title{\Huge \textbf{#1}} \author{\authorTitle} } % ──────────────────────────────────────────────────────────────────── % ╭────────────────────────────────────────────────╮ % │ Translatation │ % ╰────────────────────────────────────────────────╯ \newcommand{\translate}[2]{\ifnum\value{lang}<2{#1}\else{#2}\fi} \newcommand{\tr}[2]{\translate{#1}{#2}} % ┌ ┐ % │ Translation aids (commonly used) │ % └ ┘ \newcommand{\trif}{\translate{if }{falls }} \newcommand{\trIf}{\translate{If }{Falls }} \newcommand{\trLet}{\translate{Let }{Sei }} \newcommand{\trLets}{\translate{Let }{Seien }} \newcommand{\trFor}{\translate{For }{Für }} \newcommand{\trfor}{\translate{for }{für }} \newcommand{\trand}{\translate{and }{und }} \newcommand{\tror}{\translate{or }{oder }} \newcommand{\trst}{\translate{s.t. }{s.d. }} \newcommand{\trsuchthat}{\translate{such that }{so dass }} \newcommand{\trwith}{\translate{with }{mit }} % ___ ___ % ( _ \ / ___)_ % | ( (_) _ ___ | (__ (_) __ % | | _ / _ \/ _ \ __)| |/ _ \ % | (_( ) (_) ) ( ) | | | | (_) | % (____/ \___/(_) (_)_) (_)\__ | % ( )_) | % \___/ % To be loaded *after* main/core.tex % Configure your author name here \newcommand{\authorTitle}{Janis Hutz\\\url{https://janishutz.com}} \newcommand{\authorHeaders}{Janis Hutz} % Configure your address here \newcommand{\name}{Janis Hutz} \newcommand{\street}{Street} \newcommand{\city}{City} \newcommand{\countrycode}{CH} % Configure definition, lemma, theorem, etc numbering behaviour. 1 = Individual, 2 = Combined (apart from Definition), 3 = Combined \setcounter{numberingConfig}{1} % Configure if for definitions, lemmas, etc, numbering should be (0) =
. or (1) =
.. or (2) =
... \setcounter{numberSubsections}{0} % Set the default language. \setLang{en} % Set the default command for theorem translation \newcommand{\theoremde}{Satz} % ----- % % STYLE % % ----- % % The colour-saturation of the short / inline descriptors (default = 40) \setcounter{descriptorShadeStrength}{40} % The colour-saturation of the shade command (default = 20) \setcounter{shadeStrength}{20} %░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ %░░░ ░░░░░ ░░░░░░░░░░░░░ ░░░░░░░░░░░ %▒ ▒▒▒▒ ▒▒▒ ▒▒▒▒▒▒▒▒▒▒▒▒▒ ▒▒▒▒▒▒▒▒▒▒▒ %▒▒ ▒▒▒▒▒▒▒ ▒ ▒ ▒▒▒ ▒ ▒▒▒▒ ▒▒▒▒ %▓▓▓▓ ▓▓▓▓▓▓▓ ▓▓▓▓ ▓ ▓▓ ▓▓ ▓▓▓ ▓ %▓▓▓▓▓▓▓ ▓▓▓▓ ▓▓▓▓▓▓ ▓▓▓ ▓ ▓ %▓ ▓▓▓▓ ▓▓▓ ▓ ▓▓▓▓▓ ▓▓▓ ▓ ▓▓▓▓▓▓▓▓ %███ ██████ █████ ████ ███ ███ %██████████████████████ ███████████████████ % Global style configs for tcolorbox (to reduce bloat) \newcommand{\usetcolorboxes}{ \tcbset{ mainboxstyle/.style={ arc=3mm, colback=red!5!white, colframe=red!75!black, colbacktitle=red!75!black, fonttitle=\bfseries, enhanced, attach boxed title to top left={yshift=-2mm,xshift=5mm}, breakable, top=0.4cm, } } \tikzset{ overlaystyle/.style={ draw=red!75!black, thick, fill=red!75!black, left, anchor=east, text=white, rounded corners=1mm, font=\bfseries, xshift=-5mm, yshift=1mm, inner xsep=3mm, inner ysep=1.5mm } } } % -------------------- % % Small style elements % % -------------------- % \newcommand{\setFont}[1]{\fontfamily{#1}\selectfont} \newcommand{\setFontType}[1]{ \ifthenelse{\equal{#1}{mono}}{ \renewcommand{\familydefault}{\ttdefault} }{ \ifthenelse{\equal{#1}{serif}}{ \renewcommand{\familydefault}{\rmdefault} }{ \renewcommand{\familydefault}{\sfdefault} } } } \newcommand{\rmvspace}{\vspace{-0.5pc}} \newcommand{\drmvspace}{\vspace{-1pc}} \renewcommand{\footrulewidth}{0.4pt} \newcommand{\TODO}{\color{red} \hl{TODO:} \color{black}} \newcommand{\bi}[1]{\textbf{\textit{#1}}} \newcommand{\i}[1]{\textit{#1}} \newcommand{\b}[1]{\textbf{#1}} \renewcommand{\quote}[1]{``\textit{#1}''} % Add a color shade (similar to \fhlc, but nicer boxes) \newcommand{\background}[3]{\tcbox[on line, boxsep=2pt, left=0pt, right=0pt, top=0pt, bottom=0pt, colframe=white, frame empty, colback=#1!#2!white, highlight math style={enhanced} ] {\textbf{#3}}} % Abstraction of background, where the brightness is set to 20% \newcommand{\shade}[2]{\background{#1}{\arabic{shadeStrength}}{#2}} % This command is used for the short and inline descriptors \newcommand{\bg}[2]{\background{#1}{\arabic{descriptorShadeStrength}}{#2}} % Add a gray backdrop \newcommand{\backdrop}[1]{\shade{black}{#1}} % Fancy highlighting (Bold, underlined, colorbox behind it. Shorthand for \fhlc{white}{#1} \newcommand{\fhl}[1]{\fhlc{white}{#1}} % Add a colorbox around your text with the color specified. Text is bold and underlined \newcommand{\fhlc}[2]{\textbf{\underline{\colorbox{#1}{#2}}}} % Draw box around links. First arg link, second arg display \newcommand{\hlhref}[2]{\color{MidnightBlue}\fbox{\href{#1}{#2}}\color{black}} % Same for urls (just one arg tho) \newcommand{\hlurl}[1]{\color{MidnightBlue}\fbox{\url{#1}}\color{black}} % Spacing (horizontal) \newcommand{\smallhspace}{\hspace{2mm}} \newcommand{\mediumhspace}{\hspace{5mm}} \newcommand{\largehspace}{\hspace{1cm}} % ----------------- % % Table of contents % % ----------------- % % Print a table of contents as a tcolorbox \newcommand{\printtoc}[1]{ \renewcommand{\cfttoctitlefont}{} \renewcommand{\cftaftertoctitle}{\vspace{-0.75cm}} \renewcommand{\contentsname}{} \begin{tcolorbox}[colback=black!5!white,colbacktitle=#1!75!black,coltitle=black,enhanced,attach boxed title to top center={yshift=-2mm}, title={\Large \ifnum\value{lang}<2{Contents}\else {Inhaltsverzeichnis}\fi},fonttitle=\bfseries,breakable] \hspace{1cm} \tableofcontents \end{tcolorbox} } %▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ %██░▄▄▀█▀▄▄▀█░▄▀▄░█░▄▀▄░█▀▄▄▀█░▄▄▀ %██░████░██░█░█▄█░█░█▄█░█░██░█░██░ %██░▀▀▄██▄▄██▄███▄█▄███▄██▄▄██▄██▄ %▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀ \newtcolorbox{recall}[2][]{mainboxstyle,colback=yellow!5!white,colframe=yellow!75!black,colbacktitle=yellow!75!black,title={\large #2}, overlay={\node[overlaystyle,draw=yellow!75!black,,fill=yellow!75!black] at (frame.north east) {\large \translate{Recall }{Repetition }};},#1} \newtcolorbox{remarks}[2][]{mainboxstyle,colback=green!5!white,colframe=green!75!black,colbacktitle=green!75!black,title={\large #2}, overlay={\node[overlaystyle,draw=green!75!black,,fill=green!75!black] at (frame.north east) {\large \translate{Remarks }{Bemerkungen }};},#1} \newtcolorbox{guides}[3][]{mainboxstyle,colback=red!5!white,colframe=red!75!black,colbacktitle=red!75!black,title={\large #2}, overlay={\node[overlaystyle,draw=red!75!black,,fill=red!75!black] at (frame.north east) {\large #3};},#1} \newtcolorbox{properties}[2][]{mainboxstyle,colback=purple!5!white,colframe=purple!75!black,colbacktitle=purple!75!black,title={\large #2}, overlay={\node[overlaystyle,draw=purple!75!black,,fill=purple!75!black] at (frame.north east) {\large \translate{Properties }{Eigenschaften }};},#1} \newtcolorbox{restrictions}[2][]{mainboxstyle,colback=purple!5!white,colframe=purple!75!black,colbacktitle=purple!75!black,title={\large #2}, overlay={\node[overlaystyle,draw=purple!75!black,,fill=purple!75!black] at (frame.north east) {\large \translate{Restrictions }{Einschränkungen }};},#1} \newtcolorbox{limitations}[2][]{mainboxstyle,colback=purple!5!white,colframe=purple!75!black,colbacktitle=purple!75!black,title={\large #2}, overlay={\node[overlaystyle,draw=purple!75!black,,fill=purple!75!black] at (frame.north east) {\large \translate{Limitations }{Limitierungen }};},#1} \newtcolorbox{intuition}[2][]{mainboxstyle,colback=Emerald!5!white,colframe=Emerald!75!black,colbacktitle=Emerald!75!black,title={\large #2}, overlay={\node[overlaystyle,draw=Emerald!75!black,,fill=Emerald!75!black] at (frame.north east) {\large Intuition};},#1} \newcommand{\inlineintuition}{\bg{Emerald}{Intuition:}} % Terms and notation \newtcolorbox{terms}[2][]{mainboxstyle,colback=orange!5!white,colframe=orange!75!black,colbacktitle=orange!75!black,title={\large #2}, overlay={\node[overlaystyle,draw=orange!75!black,,fill=orange!75!black] at (frame.north east) {\large \translate{Terms }{Begriffe }};},#1} \newtcolorbox{notation}[2][]{mainboxstyle,colback=Peach!5!white,colframe=Peach!75!black,colbacktitle=Peach!75!black,title={\large #2}, overlay={\node[overlaystyle,draw=Peach!75!black,,fill=Peach!75!black] at (frame.north east) {\large Notation};},#1} \newtcolorbox{usage}[2][]{mainboxstyle,colback=green!5!white,colframe=green!75!black,colbacktitle=green!75!black,title={\large #2}, overlay={\node[overlaystyle,draw=green!75!black,,fill=green!75!black] at (frame.north east) {\large \translate{Usage }{Nutzung }};},#1} % Task \newtcolorbox{task}[2][]{mainboxstyle,colback=gray!5!white,colframe=gray!75!black,colbacktitle=gray!75!black,title={\large #2},overlay={\node[overlaystyle,draw=gray!75!black,fill=gray!75!black] at (frame.north east) {\large \translate{Task}{Aufgabe}};},#1} % Proof \newtcolorbox{proof}[2][]{mainboxstyle,colback=magenta!5!white,colframe=magenta!75!black,colbacktitle=magenta!75!black,title={\large #2},overlay={\node[overlaystyle,draw=magenta!75!black,fill=magenta!75!black] at (frame.north east) {\large \translate{Proof}{Beweis}};},#1} % General \newtcolorbox{general}[4][]{mainboxstyle,colback=#4!5!white,colframe=#4!75!black,colbacktitle=#4!75!black,title={\large #2}, overlay={\node[overlaystyle,draw=#4!75!black,,fill=#4!75!black] at (frame.north east) {\large #3};},#1} % Simple \newtcolorbox{simplebox}[2][]{colback=#2!5!white,colframe=#2!75!black,#1}