\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{ngutils}[2026/06/05 Never's LaTeX utils]

\RequirePackage[ngerman]{babel}
\RequirePackage{graphicx}
\RequirePackage{tabularx}
\RequirePackage{booktabs}
\RequirePackage{listings}

\lstnewenvironment{pseudocode}[1][] %defines the algorithm listing environment
{
    \renewcommand{\lstlistingname}{Algorithmus}
    \lstset{ %this is the stype
        mathescape=true,
        columns=fullflexible,
        basicstyle=\normalfont,
        identifierstyle=\scshape,
        keywordstyle=\bfseries,
        keywords={, and, or, not, new, if, then, else, while, for, in, to, up, down, foreach, do, return},
        commentstyle=\itshape,
        comment=[l]//,
        delim=[is][\normalfont]{|}{|},
        tabsize=3,
        frame=tb,
        framerule=1pt,
        #1 % this is to add specific settings to an usage of this environment (for instnce, the caption and referable label)
    }
}
{}

\newcommand{\seilpmi}{\Longleftarrow}

\newcommand{\NN}{\mathbb{N}}
\newcommand{\ZZ}{\mathbb{Z}}
\newcommand{\QQ}{\mathbb{Q}}
\newcommand{\RR}{\mathbb{R}}
\newcommand{\CC}{\mathbb{C}}
\newcommand{\PP}{\mathbb{P}}

\newcommand{\Pe}{\mathrm{P}}
\newcommand{\NPe}{\mathrm{NP}}

\newcommand{\Oh}{\mathcal{O}}
\newcommand{\oh}{\scriptstyle{\mathcal{O}}}

\newcommand{\indeg}{\mathrm{indeg}}
\newcommand{\outdeg}{\mathrm{outdeg}}
\newcommand{\Eh}{\mathrm{E}}
\newcommand{\Var}{\mathrm{Var}}
\newcommand{\pot}{\mathcal{P}}
\newcommand{\argmax}{\mathop{\mathrm{arg\,max}}}
\newcommand{\argmin}{\mathop{\mathrm{arg\,min}}}

\newcommand{\parens}[1]{\left(#1\right)}
\newcommand{\brackets}[1]{\left[#1\right]}
\newcommand{\braces}[1]{\left\{#1\right\}}
\newcommand{\angled}[1]{\left\langle#1\right\rangle}

\newcommand{\suchthat}{\;\middle\vert\;}

\newcommand{\tup}[1]{\parens{#1}}
\newcommand{\interval}[2][b]{
	\if\detokenize{a}\detokenize{#1}%
		\left[#2\right[
	\fi
	\if\detokenize{b}\detokenize{#1}%
		\left[#2\right]
	\fi
	\if\detokenize{c}\detokenize{#1}%
		\left]#2\right[
	\fi
	\if\detokenize{d}\detokenize{#1}%
		\left]#2\right]
	\fi
}
\newcommand{\set}[2][]{
	\ifx&#1&
		\braces{#2}
	\else
		\braces{#1 \suchthat #2}
	\fi
}
\newcommand{\arr}[1]{\angled{#1}}
\newcommand{\abs}[1]{\left\vert#1\right\vert}
\newcommand{\norm}[1]{\left\Vert#1\right\Vert}
\newcommand{\ceil}[1]{\left\lceil#1\right\rceil}
\newcommand{\floor}[1]{\left\lfloor#1\right\rfloor}

% \newcommand{\alg}[2]{{\normalfont\scshape#1}{\normalfont(#2)}}
\newcommand{\algt}[1]{{\normalfont\scshape#1}}

\makeatletter
\newcommand*{\alg@unstarred}[2]{{\normalfont\scshape#1}{\normalfont(#2)}}
\newcommand*{\alg@starred}[1]{{\normalfont\scshape#1}}
\newcommand*{\alg}{\@ifstar{\alg@starred}{\alg@unstarred}}
\makeatother

\newcommand{\com}[1]{{\normalfont\itshape/\!\!/ #1}}

\newenvironment{algorithmic}[1][1em]{
	\begin{minipage}[t]{\dimexpr\linewidth}
		\bfseries
		\begin{tabbing}
			\hspace{#1}\=\hspace{#1}\=\hspace{#1}\=\hspace{#1}\=\hspace{#1}\=\hspace{#1}\=\hspace{#1}\=\hspace{#1}\=\kill
			}{%
		\end{tabbing}
	\end{minipage}
}

% \newlength{\theoremskip}
% \setlength{\theoremskip}{6em}
%
% \newcommand{\theoremfont}{\normalfont\bfseries}
% \newcommand{\definitionfont}{\normalfont\bfseries}
%
% \newenvironment{theoremic}[3][]{
% 	{#3 #2 #1}
% 	\hfill
% 	\begin{minipage}[t]{\the\dimexpr\linewidth-\theoremskip\relax}
% 		}{
% 	\end{minipage}
% }
%
% \newenvironment{theorem}[1][]{
% 	\begin{theoremic}[#1]{Satz}{\theoremfont}
% 		}{
% 	\end{theoremic}
% }
%
% \newenvironment{lemma}[1][]{
% 	\begin{theoremic}[#1]{Lemma}{\theoremfont}
% 		}{
% 	\end{theoremic}
% }
%
% \newenvironment{corrolary}[1][]{
% 	\begin{theoremic}[#1]{Korall}{\theoremfont}
% 		}{
% 	\end{theoremic}
% }
%
% \newenvironment{proof}[1][]{
% 	\begin{theoremic}[#1]{Beweis}{\theoremfont}
% 		}{
% 	\end{theoremic}
% }
%
% \newenvironment{definition}[1][]{
% 	\begin{theoremic}[#1]{Definition}{\theoremfont}
% 		}{
% 	\end{theoremic}
% }
%
% \newenvironment{example}[1][]{
% 	\begin{theoremic}[#1]{Beispiel}{\theoremfont}
% 		}{
% 	\end{theoremic}
% }
%
