377 lines
16 KiB
TeX
377 lines
16 KiB
TeX
|
|
% ▄▄▄ ▄▄▄▄▄▄ ▄▄▄▄▄▄▄ ▄▄▄▄▄▄▄ ▄▄ ▄▄ ▄▄ ▄▄ ▄▄▄▄▄▄▄ ▄▄▄ ▄▄▄▄▄▄▄ ▄▄▄▄▄▄▄ ▄▄▄▄▄▄ ▄▄▄▄▄▄▄
|
|
% █ █ █ █ █ █ █▄█ █ █ █ █ █ █ █ █ █ █ ▄ █ █ █
|
|
% █ █ █ ▄ █▄ ▄█ ▄▄▄█ █ █ █▄█ █ ▄▄▄█ █ █ ▄ █ ▄▄▄█ █ █ █ █ ▄▄▄▄▄█
|
|
% █ █ █ █▄█ █ █ █ █ █▄▄▄█ █ █ █ █▄▄▄█ █ █ █▄█ █ █▄▄▄█ █▄▄█▄█ █▄▄▄▄▄
|
|
% █ █▄▄▄█ █ █ █ █ ▄▄▄██ █ █ ▄ █ ▄▄▄█ █▄▄▄█ ▄▄▄█ ▄▄▄█ ▄▄ █▄▄▄▄▄ █
|
|
% █ █ ▄ █ █ █ █ █▄▄▄█ ▄ █ █ █ █ █ █▄▄▄█ █ █ █ █▄▄▄█ █ █ █▄▄▄▄▄█ █
|
|
% █▄▄▄▄▄▄▄█▄█ █▄▄█ █▄▄▄█ █▄▄▄▄▄▄▄█▄▄█ █▄▄█ █▄▄█ █▄▄█▄▄▄▄▄▄▄█▄▄▄▄▄▄▄█▄▄▄█ █▄▄▄▄▄▄▄█▄▄▄█ █▄█▄▄▄▄▄▄▄█
|
|
|
|
|
|
% ▄▄█▀▀▀█▄█
|
|
% ▄██▀ ▀█
|
|
% ██▀ ▀ ▄██▀██▄▀███▄███ ▄▄█▀██
|
|
% ██ ██▀ ▀██ ██▀ ▀▀ ▄█▀ ██
|
|
% ██▄ ██ ██ ██ ██▀▀▀▀▀▀
|
|
% ▀██▄ ▄▀██▄ ▄██ ██ ██▄ ▄
|
|
% ▀▀█████▀ ▀█████▀▄████▄ ▀█████▀
|
|
|
|
% 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{lipsum}
|
|
\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) = <section>.<number> or (1) = <section>.<subsection>.<number> or (2) = <section>.<subsection>.<subsubsection>.<number>
|
|
\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}}}
|
|
\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}}}}
|
|
|
|
% 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}
|