%------- Matheclub.sty -------
\ProvidesPackage{Matheclub}
\renewcommand{\familydefault}{\sfdefault} %FONT

%------- Math Commands -------
\RequirePackage{lipsum}
\RequirePackage{epsfig}
\RequirePackage{amsmath}
\RequirePackage{amsthm}
\RequirePackage{amssymb}
\RequirePackage{multicol}
\RequirePackage{graphicx,url}
\RequirePackage[absolute,overlay]{textpos}
\RequirePackage{tikz}
\RequirePackage{enumitem}
\RequirePackage{xparse}
\RequirePackage{wrapfig}




%------- Formatting Commands -------
\RequirePackage{mleftright}\mleftright 
\RequirePackage[strict, style=german]{csquotes} \MakeOuterQuote{"}

\RequirePackage{parskip} % für Abstand zwischen Absätzen
\setlength{\parindent}{0cm}                             % no indent on new line
\setlength{\parskip}{1mm}
\addtolength{\footskip}{5mm}                           % move page number/footer down by 5mm
\allowdisplaybreaks                             % allow page breaks in equation environments
\RequirePackage{float}

\RequirePackage[scaled=.95]{inconsolata}        %monospace font and size
\renewcommand{\UrlFont}{\footnotesize\ttfamily}

%------- Bibliography Commands -------
\RequirePackage[
  backend=biber,
  style=alphabetic, % gives [..] brackets and works well with shorthands
]{biblatex}
\DeclareFieldFormat{postnote}{#1}
\DeclareFieldFormat{multipostnote}{#1}
\renewcommand*{\nameyeardelim}{\addcomma\space}
\DeclareFieldFormat[article]{volume}{Vol.\space #1}
\DeclareFieldFormat[article]{number}{Nr.\space #1}

\renewbibmacro*{volume+number+eid}{%
  \printfield{volume}%
  \setunit{\addspace}%
  \printfield{number}%
  \setunit{\addcomma\space}%
  \printfield{eid}}

\RequirePackage{xurl} % allow line breaks in URL strings at arbitrary locations

%------- Reference Commands  -------
\RequirePackage{hyperref}
\hypersetup{
    colorlinks=true,
    linkcolor=blue, 
    citecolor=blue,    
    urlcolor=cyan
    }
% cleveref must be loaded after hyperref
\RequirePackage[ngerman]{cleveref}

\crefname{equation}{Gleichung}{Gleichungen}
\crefname{figure}{Abbildung}{Abbildungen}
\crefname{table}{Tabelle}{Tabellen}
\crefname{section}{Abschnitt}{Abschnitte}


%------- Theorem Boxes -------
\RequirePackage{tcolorbox}
\tcbuselibrary{theorems,breakable, skins}
\RequirePackage{xcolor}
\RequirePackage{titlesec} 


\definecolor{Satz}{RGB}{66,133,244} 
\definecolor{Definition}{RGB}{255,204,0}  % lighter blue
\definecolor{Korollar}{RGB}{10, 100, 120}  % light blue
\definecolor{Beispiel}{HTML}{339551}  % yellow
\definecolor{Lemma}{RGB}{75, 50, 130}  % light blue 
\definecolor{Proposition}{HTML}{c7dbe2}  % apricot
\definecolor{Background}{HTML}{fffbf0}

\newcommand{\mc@theoremnote}[1]{\par\hfill{\footnotesize #1}}


\iffalse
Wir haben die Umgebungen Satz, Lemma, Proposition, Korollar, Definition, Beispiel und Bemerkung definiert. Sie können diese Umgebungen verwenden, um Sätze, Lemmata, Propositionen, Korollare, Definitionen, Beispiele und Bemerkungen zu erstellen. Die Umgebungen sind nummeriert und können mit \cref{satz:SatzLabel}, \cref{lem:LemmaLabel}, \cref{prop:PropositionLabel}, \cref{kor:KorollarLabel}, \cref{def:DefinitionLabel}, \cref{bsp:BeispielLabel} und \cref{bem:BemerkungLabel} referenziert werden. Die Umgebungen sind farblich hervorgehoben, um sie leicht von anderen Texten zu unterscheiden. 

Die Umgebungen können wie folgt verwendet werden:
\begin{satz}[Optionaler Satzname]{SatzLabel}{Optional: Quellenangabe}
    Hier steht der Inhalt des Satzes.
\end{satz}

Der optionale Satzname wird in eckigen Klammern angegeben, diese können einfach weggelassen werden, wenn kein Name angegeben werden soll.
In den geschweiften Klammern wird das Label angegeben, mit dem der Satz später referenziert werden kann. Das Label muss eindeutig sein, damit es nicht zu Verwechslungen kommt.
Die geschweiften Klammern müssen immer angegeben werden, auch wenn kein Label angegeben werden soll. In diesem Fall kann man einfach leere geschweifte Klammern angeben, also {}.

Um ein Satz zu referenzieren verwenden Sie den Befehl \cref{satz:SatzLabel}. In dem geschriebenen Text erscheint dann automatisch Satz 1.1 oder so ähnlich.

Die anderen Umgebungen funktionieren analog.
Die cref Bezeichnungen lauten:
    \cref{satz:SatzLabel} für Sätze
    \cref{lem:LemmaLabel} für Lemmata
    \cref{prop:PropositionLabel} für Propositionen
    \cref{kor:KorollarLabel} für Korollare
    \cref{def:DefinitionLabel} für Definitionen
    \cref{bsp:BeispielLabel} für Beispiele
    \cref{bem:BemerkungLabel} für Bemerkungen
    \cref{tab:TabelleLabel} für Tabellen
    \cref{fig:AbbildungLabel} für Abbildungen
    \cref{eq:GleichungLabel} für Gleichungen

Wenn der Inhalt der Ungebungen aus einer Quelle stammt, kann diese mit der dritten geschweiften Klammer angegeben werden. In diesem Fall müssen die geschweiften Klammern in denen das Label angegeben wird geschrieben werden! Falls Sie dennoch kein Label vergeben wolen, lassen Sie den Inhalt der geschweiften Klammern einfach leer, also {}. Die Quellenangabe wird dann in kleiner Schrift am Ende der Umgebung angezeigt.
\fi


\newtcbtheorem[auto counter, number within=subsection, crefname={Satz}{Sätze}]{satzbox}{Satz}{
  breakable,
  enhanced,
  colback=Satz!5,
  colframe=Satz,
  arc=0.25mm,
  boxrule=1pt,
  top=4mm,
  attach boxed title to top left={yshift=-3mm, xshift=2mm},
  boxed title style={
    enhanced,
    colback=Satz!40,
    colframe=Satz,
    arc=1mm,
    boxrule=0pt,
    left=4pt,
    right=4pt,
    top=3pt,
    bottom=3pt,
  },
  coltitle=black,
  fonttitle=\bfseries,
}{satz}
\NewDocumentEnvironment{satz}{ O{} g g +b }{%
  \IfNoValueTF{#3}
    {\begin{satzbox}{#1}{#2}}
    {\begin{satzbox}[after upper={\mc@theoremnote{#3}}]{#1}{#2}}
  #4
  \end{satzbox}%
}{}

\newtcbtheorem[use counter from=satzbox, crefname={Lemma}{Lemmata}]{lemmabox}{Lemma}{
  breakable,
  enhanced,
  colback=Lemma!5,
  colframe=Lemma,
  arc=0.25mm,
  boxrule=1pt,
  top=4mm,
  attach boxed title to top left={yshift=-3mm, xshift=2mm},
  boxed title style={
    enhanced,
    colback=Lemma!40,
    colframe=Lemma,
    arc=1mm,
    boxrule=0pt,
    left=4pt,
    right=4pt,
    top=3pt,
    bottom=3pt,
  },
  coltitle=black,
  fonttitle=\bfseries,
}{lem}
\NewDocumentEnvironment{lemma}{ O{} g g +b }{%
  \IfNoValueTF{#3}
    {\begin{lemmabox}{#1}{#2}}
    {\begin{lemmabox}[after upper={\mc@theoremnote{#3}}]{#1}{#2}}
  #4
  \end{lemmabox}%
}{}

\newtcbtheorem[use counter from=satzbox, crefname={Proposition}{Propositionen}]{propositionbox}{Proposition}{
  breakable,
  enhanced,
  colback=Proposition!5,
  colframe=Proposition,
  arc=0.25mm,
  boxrule=1pt,
  top=4mm,
  attach boxed title to top left={yshift=-3mm, xshift=2mm},
  boxed title style={
    enhanced,
    colback=Proposition!40,
    colframe=Proposition,
    arc=1mm,
    boxrule=0pt,
    left=4pt,
    right=4pt,
    top=3pt,
    bottom=3pt,
  },
  coltitle=black,
  fonttitle=\bfseries,
}{prop}
\NewDocumentEnvironment{proposition}{ O{} g g +b }{%
  \IfNoValueTF{#3}
    {\begin{propositionbox}{#1}{#2}}
    {\begin{propositionbox}[after upper={\mc@theoremnote{#3}}]{#1}{#2}}
  #4
  \end{propositionbox}%
}{}

\newtcbtheorem[use counter from=satzbox, crefname={Korollar}{Korollare}]{korollarbox}{Korollar}{
   breakable,
  enhanced,
  colback=Korollar!5,
  colframe=Korollar,
  arc=0.25mm,
  boxrule=1pt,
  top=4mm,
  attach boxed title to top left={yshift=-3mm, xshift=2mm},
  boxed title style={
    enhanced,
    colback=Korollar!40,
    colframe=Korollar,
    arc=1mm,
    boxrule=0pt,
    left=4pt,
    right=4pt,
    top=3pt,
    bottom=3pt,
  },
  coltitle=black,
  fonttitle=\bfseries,
}{kor}
\NewDocumentEnvironment{korollar}{ O{} g g +b }{%
  \IfNoValueTF{#3}
    {\begin{korollarbox}{#1}{#2}}
    {\begin{korollarbox}[after upper={\mc@theoremnote{#3}}]{#1}{#2}}
  #4
  \end{korollarbox}%
}{}

\newtcbtheorem[use counter from=satzbox, crefname={Definition}{Definitionen}]{definitionbox}{Definition}{
  breakable,
  enhanced,
  colback=Definition!5,
  colframe=Definition,
  arc=0.25mm,
  boxrule=1pt,
  top=4mm,
  attach boxed title to top left={yshift=-3mm, xshift=2mm},
  boxed title style={
    enhanced,
    colback=Definition!40,
    colframe=Definition,
    arc=1mm,
    boxrule=0pt,
    left=4pt,
    right=4pt,
    top=3pt,
    bottom=3pt,
  },
  coltitle=black,
  fonttitle=\bfseries,
}{def}
\NewDocumentEnvironment{definition}{ O{} g g +b }{%
  \IfNoValueTF{#3}
    {\begin{definitionbox}{#1}{#2}}
    {\begin{definitionbox}[after upper={\mc@theoremnote{#3}}]{#1}{#2}}
  #4
  \end{definitionbox}%
}{}

\newtcbtheorem[use counter from=satzbox, crefname={Beispiel}{Beispiele}]{beispielbox}{Beispiel}{
  breakable,
  enhanced,
  colback=Beispiel!5,
  colframe=Beispiel,
  arc=0.25mm,
  boxrule=1pt,
  top=4mm,
  attach boxed title to top left={yshift=-3mm, xshift=2mm},
  boxed title style={
    enhanced,
    colback=Beispiel!40,
    colframe=Beispiel,
    arc=1mm,
    boxrule=0pt,
    left=4pt,
    right=4pt,
    top=3pt,
    bottom=3pt,
  },
  coltitle=black,
  fonttitle=\bfseries,
}{bsp}

\NewDocumentEnvironment{beispiel}{ O{} g g +b }{%
  \IfNoValueTF{#3}
    {\begin{beispielbox}{#1}{#2}}
    {\begin{beispielbox}[after upper={\mc@theoremnote{#3}}]{#1}{#2}}
  #4
  \end{beispielbox}%
}{}

\newtcbtheorem[use counter from=satzbox, crefname={Bemerkung}{Bemerkungen}]{bemerkungbox}{Bemerkung}{
  breakable,
  colback=white,
  colframe=white,
  boxrule=0pt,
  left=0pt,
  right=0pt,
  top=0pt,
  bottom=0pt,
  before skip=\baselineskip,
  after skip=\baselineskip,
  coltitle=black,
  fonttitle=\itshape,
  fontupper=\normalfont,
  separator sign={.}
}{bem}

\NewDocumentEnvironment{bemerkung}{ O{} g g +b }{%
  \IfNoValueTF{#3}
    {\begin{bemerkungbox}{#1}{#2}}
    {\begin{bemerkungbox}[after upper={\mc@theoremnote{#3}}]{#1}{#2}}
  #4
  \end{bemerkungbox}%
}{}


%--------- Fix Cleverref for Appendix ---------
\makeatletter
\let\mc@oldappendix\appendix
\renewcommand{\appendix}{%
  \mc@oldappendix
  \crefname{appendix}{Anhang}{Anhänge}%
  \Crefname{appendix}{Anhang}{Anhänge}%
  \crefalias{section}{appendix}%
}
\makeatother




% ------- Inhaltsverzeichnis -------
\RequirePackage{tocloft}

\renewcommand{\cftsecfont}{\normalfont}
\renewcommand{\cftsecpagefont}{\normalfont}
\renewcommand{\cftsubsecfont}{\normalfont}
\renewcommand{\cftsubsecpagefont}{\normalfont}
\renewcommand{\cftsubsubsecfont}{\normalfont}
\renewcommand{\cftsubsubsecpagefont}{\normalfont}
\setlength{\cftbeforesecskip}{0pt}
\setlength{\cftbeforesubsecskip}{0pt}
\setlength{\cftbeforesubsubsecskip}{0pt}

\makeatletter
\renewcommand{\tableofcontents}{%
  \section*{\contentsname}%
  \@starttoc{toc}%
}
\makeatother





\RequirePackage{minted}         % allows for writing nice code
\usemintedstyle{solarized-light}  % a nice, colorful theme
\setminted{
  bgcolor=Background,
  breaklines=true,
  breakanywhere=true,
  linenos=true,
  %fontsize=\footnotesize
}
\renewcommand{\theFancyVerbLine}{%
  \ttfamily\scriptsize\arabic{FancyVerbLine}}