%% This is file `dtk.cls',
%%
%% LaTeX Class for ``Die TeXnische Komoedie''.
%%
%% Copyright (C) 2015-2024
%% Rolf Niepraschk, Herbert Voss
%%
%% It may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3c
%% of this license or (at your option) any later version.
%% The latest version of this license is in
%%    http://www.latex-project.org/lppl.txt
%% and version 1.3c or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.

\listfiles

\InputIfFileExists{dtk-requirepackages.tex}{%
  \typeout{*************************************^^J%
           * File `dtk-requirepackages.tex' used.^^J%
           *************************************}%
}{}%

\NeedsTeXFormat{LaTeX2e}[1999/12/01]

\def\DTKversion{2.10f}
\def\DTKversiondate{2024/06/27}
\ProvidesClass{dtk}[\DTKversiondate v\DTKversion dtk documentclass (RN)]

\RequirePackage{iftex}

\ifluatex\else
  \ClassError{dtk}{%
    LuaLaTeX ist erforderlich.
  }{%
    Kompiliere mit LuaLaTeX.
  }
  \expandafter\stop
\fi

\RequirePackage{xkeyval}

\newif\ifDTK@Author@ \DTK@Author@true
\newif\ifDTKcolor \DTKcolorfalse % "@" ?
\newif\ifDTK@korr@ \DTK@korr@false

\newlength\DTK@tempdima
\newlength\DTK@tempdimb
\newlength\DTK@tempdimc
\newlength\DTK@tempdimd
\newlength\DTK@tempdime

\newlength\Linewidth
\AtBeginDocument{\Linewidth=\dimexpr\linewidth-2\fboxsep-2\fboxrule}

\newcommand*\journalname{Die \protect\TeX{}nische Kom\"odie}

\newcommand*\DTKyear{} \edef\DTKyear{\the\year}
\newcommand*\DTKmonth{0}
\newcommand*\DTKissue{0}
\newcommand*\DTKvolume{??}
\newcommand*\DTKdate{?/??}
\newcommand*\DTKcorrVersion{\mbox{}}
\newcommand*\DTKfullIssue{\mbox{}}
\newcommand*\DTKissn{1434-5897}

\DeclareOptionX{Ausgabe}{\def\DTKissue{#1}}
\DeclareOptionX{Jahr}{\def\DTKyear{#1}}
\DeclareOptionX{Monat}{\def\DTKmonth{#1}}
\DeclareOptionX{korr}[true]{\csname DTK@korr@#1\endcsname}
\DeclareOptionX{full}[true]{\csname @tempswa#1\endcsname
  \if@tempswa\DTK@Author@false\else\DTK@Author@true\fi}
\DeclareOptionX{color}[true]{\csname DTKcolor#1\endcsname}
\DeclareOptionX{draft}{\PassOptionsToClass{\CurrentOption}{scrbook}}

\DeclareOptionX*{\OptionNotUsed}
\ProcessOptionsX\relax

\PassOptionsToPackage{paper=a5,pagesize}{typearea}

\newdimen\DTK@tempdima
\newdimen\DTK@tempdimb
\newdimen\DTK@tempdimc

\newcommand*\DTK@tempa{}
\newcommand*\DTK@tempb{}
\newcommand*\DTK@tempc{}

\newsavebox\DTK@tempbox

\LoadClass[%
,twoside
,fontsize=10pt
,captions=oneline
,parskip=full-
,headings=small
,open=any
,pagesize
]{scrbook}

\RequirePackage{scrhack}% Andere Pakete KOMA-Script-freundlich machen

\RequirePackage[final]{listings}

\RequirePackage{hvextern}

% http://www.komascript.de/release3.18
\Ifstr{\KOMAScriptVersion}{2015/07/02 v3.18 KOMA-Script}{%
  \ifx\par@update\default@par@update\else
    \AtBeginDocument{\par@updaterelative}%
  \fi
}{}

\AtEndOfClass{%
  \InputIfFileExists{dtk.cfg}{}{}%
}

% *** Konstanten ***

\ifDTK@Author@\else\setcounter{errorcontextlines}{100}\fi

\textheight = 485pt %
\textwidth  = 333pt %
\oddsidemargin  = -35.89157pt %
\evensidemargin = -17.70235pt %
\marginparwidth = 1cm %
\marginparsep = 7pt %
\topmargin  = -55.66684pt %
\headheight = 17pt %
\headsep    = 17pt %
\footskip = 24pt %
\parskip   = 0.3\baselineskip
\advance\parskip by 0pt plus 2pt %
\parindent = 0pt %
\columnsep = 5pt %

\emergencystretch = 1.5em %
\clubpenalty  = 10000 %
\widowpenalty = 10000 %
\raggedbottom

\setlength\textfloatsep{10.0pt plus 1pt minus 1pt}
\setlength\intextsep{6.0pt plus .5pt minus .5pt} 

\setcounter{secnumdepth}{\numexpr\partnumdepth-1\relax}
\ifDTK@Author@\else\setcounter{tocdepth}{\chapternumdepth}\fi

\@fptop=\z@
\renewcommand\topfraction{.9}
\renewcommand\bottomfraction{.9}
\renewcommand\textfraction{.1}

\RequirePackage[english,main=ngerman]{babel}

\defineshorthand{"|}{%
  \ClassError{dtk}{%
    Shorthand `\string"|' wird nicht unterstützt! Entferne `\string"|'%
  }{}%
}

\newcommand*\DTK@FontNameMissing{%
  \ClassError{dtk}{%
    Eines der Makros `\string\DTKrmFontName', `\string\DTKsfFontName',
    \MessageBreak
    `\string\DTKttFontName' oder `\string\DTKmathFontName'
    \MessageBreak
    ist nicht korrekt definiert%
  }{}%
}
\newcommand*\DTKrmFontName{}   \let\DTKrmFontName=\DTK@FontNameMissing
\newcommand*\DTKsfFontName{}   \let\DTKsfFontName=\DTK@FontNameMissing
\newcommand*\DTKttFontName{}   \let\DTKttFontName=\DTK@FontNameMissing
\newcommand*\DTKmathFontName{} \let\DTKmathFontName=\DTK@FontNameMissing

\input{dtk-fonts.clo}

\@ifpackagelater{csquotes}{2018/02/11}{}{%
  \def\@inpenc@undefined{}
}
\RequirePackage[autostyle=true,german=guillemets,maxlevel=3]{csquotes}%
\MakeAutoQuote{»}{«}
\defineshorthand{"`}{\openautoquote}%
\defineshorthand{"'}{\closeautoquote}%

\iftrue
  \newcommand*\EURO@scale@to@rm[2]{%
    \begingroup
    \fontsize{10}{0}\usefont{\encodingdefault}{\rmdefault}{m}{n}%
    #1%
    \xdef\eurosym@@Scale{%
      \strip@pt
      \dimexpr  1pt * \@tempdima / \dimexpr#2pt\relax }%
    \ClassInfo{dtk}{The eurosym family is scaled by \eurosym@@Scale}%
    \endgroup
  }
  \EURO@scale@to@rm{\setbox0\hbox{C}\@tempdima=\ht0}{6.92}% matchuppercase
  % Extrakt aus "eurosym.sty"
  \DeclareFontFamily{U}{DTK@eurosym}{}
  \DeclareFontShape{U}{DTK@eurosym}{m}{n}{ <-> s*[\eurosym@@Scale] feymr10 }{}
  \DeclareFontShape{U}{DTK@eurosym}{m}{sc}{ <-> s*[\eurosym@@Scale] ssub*DTK@eurosym/m/n }{}
  \DeclareFontShape{U}{DTK@eurosym}{m}{sl}{ <-> s*[\eurosym@@Scale] feymo10 }{}
  \DeclareFontShape{U}{DTK@eurosym}{m}{it}{ <-> s*[\eurosym@@Scale] ssub*DTK@eurosym/m/sl }{}
  \DeclareFontShape{U}{DTK@eurosym}{m}{ol}{ <-> s*[\eurosym@@Scale] feyml10 }{}
  \DeclareFontShape{U}{DTK@eurosym}{bx}{n}{ <-> s*[\eurosym@@Scale] feybr10 }{}
  \DeclareFontShape{U}{DTK@eurosym}{bx}{sc}{ <-> s*[\eurosym@@Scale] ssub*DTK@eurosym/bx/n }{}
  \DeclareFontShape{U}{DTK@eurosym}{bx}{sl}{ <-> s*[\eurosym@@Scale] feybo10 }{}
  \DeclareFontShape{U}{DTK@eurosym}{bx}{it}{ <-> s*[\eurosym@@Scale] ssub*DTK@eurosym/bx/sl }{}
  \DeclareFontShape{U}{DTK@eurosym}{bx}{ol}{ <-> s*[\eurosym@@Scale] feybl10 }{}
  \DeclareFontShape{U}{DTK@eurosym}{b}{n}{ <-> s*[\eurosym@@Scale] ssub*DTK@eurosym/bx/n }{}
  \DeclareFontShape{U}{DTK@eurosym}{b}{sl}{ <-> s*[\eurosym@@Scale] ssub*DTK@eurosym/bx/sl }{}
  \DeclareFontShape{U}{DTK@eurosym}{b}{it}{ <-> s*[\eurosym@@Scale] ssub*DTK@eurosym/bx/sl }{}
  \DeclareFontShape{U}{DTK@eurosym}{b}{sc}{ <-> s*[\eurosym@@Scale] ssub*DTK@eurosym/bx/n }{}
  \DeclareFontShape{U}{DTK@eurosym}{b}{ol}{ <-> s*[\eurosym@@Scale] ssub*DTK@eurosym/bx/ol }{}
  \DeclareRobustCommand\DTK@euro{{\fontencoding{U}\fontfamily{DTK@eurosym}\selectfont{}e}}
\else
  % Sobald das Paket Skalierung unterstützt
  \RequirePackage[right,scaled]{eurosym}
%%%\DeclareRobustCommand\DTK@euro{\scalebox{0.9}{\officialeuro}}
\fi

\let\texteuro=\DTK@euro

\ifxetex\else
\RequirePackage[%
,protrusion=true
,expansion=true
,verbose=true
,final=true
,letterspace=100
,babel=true
]{microtype}
% TODO: Spezielle Angaben zu den Schriften?
\fi

\RequirePackage[%
,style=dtk
,language=auto
,sorting=nyt
,sortlocale=auto
,backend=biber
]{biblatex}

\let\ORIGprintbibliography\printbibliography
\g@addto@macro\bibsetup{\RaggedRight}

%\RequirePackage{etex} % ???
\RequirePackage{ragged2e}
\RequirePackage{hvlogos}

\renewcommand\title[2][]{%
  \gdef\@title{#2}%
  \ifx\relax#1\relax\gdef\@@title{#2}\else\gdef\@@title{#1}\fi%
}

\let\DTK@thispagestyle=\thispagestyle

\newcommand*\DTK@Author@list@content{}
\newcommand\DTK@Author@list@exec{%
  \DTK@Author@list@content
  \global\let\DTK@Author@list@content=\@empty
}
\newcommand\DTK@maketitle[1][]{%
  \begingroup
    \dimen0=\textheight
    \advance\dimen0 by -\pagetotal
    \ifdim\dimen0<.2\textheight
      \newpage
    \fi
  \endgroup
  \def\and{\end{tabular}, \begin{tabular}[t]{@{}c@{}}}%
  \leavevmode% erzwingt \everypar (speziell: \DTK@Author@list@exec)
  \vspace*{-8mm}%
  \addchap[\@@title]{\@title}%
  \begingroup
    \usekomafont{author}\lineskip 0.75em %
    \begin{tabular}[t]{@{}c@{}}\@author\end{tabular}\par\medskip
  \endgroup
  \@thanks
  \global\let\@thanks=\@empty
  \global\let\@title=\@empty
  \global\let\@author=\@empty
  \global\let\@thanks=\@empty
  \global\let\and\relax
  \global\let\DTK@license=\@empty
}

\renewcaptionname{ngerman}{\bibname}{Literatur und Software}
\defbibheading{dtk}{\section{\bibname}}

\RequirePackage[automark,draft=false]{scrlayer-scrpage}
\pagestyle{scrheadings}
\clearpairofpagestyles
% https://komascript.de/node/2177
\ihead{\Ifstr{\righttopmark}{\rightbotmark}{\leftmark}{}}
\ohead{\Ifstr{\righttopmark}{\rightbotmark}{\pagemark}{}}
\ofoot*{\normalsize\DTKcorrVersion}
\ifoot*{\journalname~~\DTKdate}
\automark[chapter]{chapter}

\newcommand*\DTK@license{}
\newcommand*\license[1]{%
  \gdef\DTK@license{#1}%
}
\iffalse
\RedeclareSectionCommand[%
  ,style=part
  %,indent=\z@
  ,beforeskip=40mm
  ,afterskip=60mm %
  ,pagestyle=plain.scrheadings
  %,innerskip=\z@
]{part}
\fi

\RedeclareSectionCommand[%
  ,style=section
  ,indent=\z@
  ,beforeskip=-2\baselineskip \@plus -.2\baselineskip \@minus -.2\baselineskip
  ,afterskip=.4\baselineskip \@plus .04\baselineskip \@minus .04\baselineskip
]{chapter}

\RedeclareSectionCommand[%
  ,beforeskip=-2.4ex \@plus -1ex \@minus -.2ex % Betrag ist von Bedeutung!
  ,afterskip=0.8ex \@plus .1ex \@minus .1ex %
]{section}

\RedeclareSectionCommand[%
  ,afterskip=0.8ex \@plus .1ex %
]{subsection}

\RequirePackage{xcolor}

\ifDTKcolor
  \colorlet{DTK@marker}{red!30}
  \definecolor{DTK@fancy}{rgb}{.72,.525,.044}
\else
  \colorlet{DTK@marker}{black!20}
  \colorlet{DTK@fancy}{black!60}
\fi

\colorlet{DTKlstBackground}{black!5}
\colorlet{DTKlstKeys}{black}
%\colorlet{DTKlstIdentifiers}{black}
\colorlet{DTKlstComments}{black}
\colorlet{DTKlstStrings}{black}
\colorlet{DTKlstNumbers}{black}
\newcommand*\DTKlstKeywordfont{\bfseries}

\@ifundefined{ifDTKrecord}{\newif\ifDTKrecord \DTKrecordfalse}{}

\newcommand*\address[3]{%
  \ClassError{dtk}{%
    Das Makro \string\address\space existiert nicht mehr!\MessageBreak
    Nimm stattdessen \string\Author%
    \string{Vorn.\string}\string{Nachn.\string}\string{Adr.\string}}{}%
}%
\def\author#1{%
  \ClassError{dtk}{%
    Das Makro \string\author\space existiert nicht mehr!\MessageBreak
    Nimm stattdessen \string\Author%
    \string{Vorn.\string}\string{Nachn.\string}\string{Adr.\string}}{}%
}%

% Sternform: Autor-Eintrag im Verzeichnis, aber nicht im Artikel
\newcommand*\Author{% #1=Vorname, #2=Nachname, #3=Adresse
  \@ifstar\DTK@Author\DTK@@Author
}

\newcommand\DTK@Author[3]{}%

\newcommand\DTK@Author@article[3]{%
  \begingroup
    \ifx\@author\@empty\let\x=\@empty\else\def\x{\and}\fi
    \expandafter\g@addto@macro\expandafter\@author\expandafter{\x #1 #2}%
  \endgroup
}%

\let\@author=\@empty

\ifDTK@Author@
  \input{dtk-author.clo}
\else
  \input{dtk-full.clo}
\fi

\AfterEndPreamble{% "etoolbox"
  \def\bibliography#1{%
    \ClassError{dtk}{%
      Das Makro `\string\bibliography' wird nicht unterstützt!\MessageBreak
      Verwende stattdessen `\string\addbibresource\string{#1.bib\string}'
      \MessageBreak
      und `\string\printbibliography' (siehe biblatex-Dokumentation)
    }{}%
  }%
}

%%%\ifDTKrecord \expandafter \endinput \fi % lohnt es?

\addtokomafont{caption}{%\RaggedRight
  \small}
\setkomafont{captionlabel}{\sffamily}
\setcapindent{0pt}
%\setcapwidth[c]{\textwidth}
\renewcaptionname{ngerman}{\figurename}{Abb.}
\renewcaptionname{ngerman}{\tablename}{Tab.}
\def\thefigure{\@arabic\c@figure}
\def\thetable{\@arabic\c@table}
\def\theequation{\@arabic\c@equation}
\def\thelstlisting{\@arabic\c@lstlisting}

\setkomafont{disposition}{\normalfont\sffamily}
\setkomafont{part}{\usekomafont{disposition}\huge}
\setkomafont{chapter}{\usekomafont{disposition}\Large}
\setkomafont{section}{\usekomafont{disposition}\large}
\setkomafont{pagenumber}{\normalfont\sffamily}
\setkomafont{pagehead}{\sffamily\slshape}% \itshape?
\setkomafont{pagefoot}{\footnotesize\sffamily\slshape}% \itshape?
\setkomafont{author}{\usekomafont{section}}

\RequirePackage{marginnote}
\renewcommand*{\marginfont}{\normalfont\itshape\small} 
\renewcommand*{\sectionlinesformat}[4]{%
  % reagiert auf \addchap in \maketitle (wegen "style=section")
  \@hangfrom{%
    \ifx\DTK@license\@empty\else
      \marginnote{\rotatebox{90}{\makebox[.5em][r]{%
        Lizenz:~\DTK@license
      }}}%
    \fi
    \hskip #2#3%
  }{#4}%
}

%\addtokomafont{footnote}{\RaggedRight}
\deffootnote[1.2em]{1.2em}{1.2em}{\textsuperscript{\thefootnotemark}\,}
\newcommand*\DTK@footnote{}
\let\DTK@footnote=\footnote
\newcommand*\DTK@@footnote[2][]{%
  \edef\DTK@tempa{\ifx\relax#1\relax\else[#1]\fi}%
  \expandafter\DTK@footnote\DTK@tempa{\RaggedRight #2}%
}
\def\footnote{%
  \@ifstar\DTK@@footnote\DTK@footnote
}
%\setfootnoterule{.15\textwidth}

\RequirePackage{enumitem}
\setlist{leftmargin=*,nosep}
\setlist[1]{labelindent=1em}
\iffalse
\setlist[itemize,1]{label=\raisebox{-.1ex}{\Large\textbullet}}
\setlist[itemize,2]{label=\raisebox{-.1ex}{\Large$\m@th\circ$}}
\setlist[itemize,3]{label=\raisebox{-.7ex}{\large\textasteriskcentered}}
\setlist[itemize,4]{label=\raisebox{.4ex}{\tiny$\m@th\triangleright$}}
\fi

\PassOptionsToPackage{hyphens}{url}
\RequirePackage{dtk-url}
\RequirePackage{hvqrurl}%   Spät laden!

% Listings
\newcommand*\DTKlstfont{\small\ttfamily}

\let\lstlisting=\relax
\let\lstlisting@=\relax
% Correct wrong vertical spaces
\lstnewenvironment{lstlisting}[2][]{%
  %%%%\leavevmode%
  \lst@TestEOLChar{#2}%
  \lstset{#1}%
  \csname\@lst @SetFirstNumber\endcsname
}{\csname\@lst @SaveFirstNumber\endcsname}

% siehe ggf.: https://github.com/jez/latex-solarized

\lstdefinestyle{DTKlstSimple0}{%
,basicstyle=\DTKlstfont
,numbers=none
,backgroundcolor={}
,tabsize=2
,frame=none
}

\lstdefinestyle{DTKlstVerbatim}{
,style=DTKlstSimple0
,aboveskip=\smallskipamount
,belowskip=0pt plus .25pt minus .25pt %
}

\lstdefinestyle{DTKlstSimple1}{%
,style=DTKlstSimple0
,identifierstyle=\DTKlstfont
,stringstyle=\DTKlstfont
,commentstyle=\DTKlstfont
,basewidth=0.55em
,keepspaces
,backgroundcolor=\color{DTKlstBackground}
,numbers=none
,frame=single
,framesep=\fboxsep
,aboveskip=\medskipamount
,belowskip=1pt plus .5pt minus .5pt %
,xleftmargin=\fboxsep
,xrightmargin=\fboxsep
}

\newcommand*\DTK@lst@colorbox[2]{%
  \fboxsep=.3em %
  \settowidth\DTK@tempdima{#2}\settoheight\DTK@tempdimb{#2}%
  \makebox[\DTK@tempdima][c]{\colorbox{#1}{%
    \raisebox{0pt}[\DTK@tempdimb][\z@]{#2}}}%
}

\lstdefinestyle{DTKlstBase}{%
,style=DTKlstSimple1
%,identifierstyle=\color{DTKlstIdentifiers}
,keywordstyle=\DTKlstKeywordfont
,stringstyle=\itshape\color{DTKlstStrings}
,commentstyle=\itshape\color{DTKlstComments}
,columns=fullflexible
%,extendedchars=true
,showspaces=false
,showstringspaces=false
,breaklines=true
,breakindent=0.5em
,breakautoindent=true
,breakatwhitespace=false  % ???
,captionpos=t
,emphstyle=\DTK@lst@colorbox{DTKlstBackground!70!-DTKlstBackground}%
%,prebreak=
,postbreak=\mbox{$\hookrightarrow$}
}

\lstdefinestyle{number}{%  TODO: Evtl. doch besser Zeilennummern ganz ausrücken?
,style=DTKlstBase
,numbers=left
,numberstyle=\tiny\ttfamily
,numbersep=1.3em
,xleftmargin=1.5em
}

\lstdefinestyle{noNumber}{%
,style=DTKlstBase
,numbers=none
,xleftmargin=\fboxsep % ???
}

\lstset{style=noNumber}

% see: https://tex.stackexchange.com/questions/25391/the-listings-package-and-utf-8/25396#25396
\lst@InputCatcodes
\def\lst@DefEC{%
  \lst@CCECUse \lst@ProcessLetter
  ^^80^^81^^82^^83^^84^^85^^86^^87^^88^^89^^8a^^8b^^8c^^8d^^8e^^8f%
  ^^90^^91^^92^^93^^94^^95^^96^^97^^98^^99^^9a^^9b^^9c^^9d^^9e^^9f%
  ^^a0^^a1^^a2^^a3^^a4^^a5^^a6^^a7^^a8^^a9^^aa^^ab^^ac^^ad^^ae^^af%
  ^^b0^^b1^^b2^^b3^^b4^^b5^^b6^^b7^^b8^^b9^^ba^^bb^^bc^^bd^^be^^bf%
  ^^c0^^c1^^c2^^c3^^c4^^c5^^c6^^c7^^c8^^c9^^ca^^cb^^cc^^cd^^ce^^cf%
  ^^d0^^d1^^d2^^d3^^d4^^d5^^d6^^d7^^d8^^d9^^da^^db^^dc^^dd^^de^^df%
  ^^e0^^e1^^e2^^e3^^e4^^e5^^e6^^e7^^e8^^e9^^ea^^eb^^ec^^ed^^ee^^ef%
  ^^f0^^f1^^f2^^f3^^f4^^f5^^f6^^f7^^f8^^f9^^fa^^fb^^fc^^fd^^fe^^ff%
  ^^^^20ac^^^^0153^^^^0152%
  ^^^^0131% small letter dotless i
  ^^^^017f% latin small letter long s
  ^^^^03b1% greek small letter alpha
  ^^^^03b2% greek small letter beta
  ^^^^03b3% greek small letter gamma
  ^^^^2013% en dash
  ^^00%
}
\lst@RestoreCatcodes

% noHilit, latex ???

\ifDTKrecord\else% wegen Problem mit verbatim-Paket/dtkGLOBAL
\let\verbatim=\relax
\let\verbatim@=\relax
\lstnewenvironment{verbatim}
{\lstset{style=DTKlstVerbatim,language={}}}{}
\fi

\newlength\fullwidth
\setlength\fullwidth{\dimexpr\textwidth+\marginparwidth+\marginparsep\relax}
\newenvironment{Figure}[2][\fullwidth]
  {\figure[htb!]\setlength\columnsep{1.5em}%
   \captionbeside{#2}[o][#1][0pt]*}%
  {\endcaptionbeside\endfigure}
\newenvironment{Table}[2][\fullwidth]
  {\table[htb!]\setlength\columnsep{1.5em}%
   \begincaptionbeside{#2}[o][#1][0pt]*}%
  {\endcaptionbeside\endtable}

\newenvironment{abstract}
  {\quote\small}{\endquote\medskip\par}

\NewDocumentCommand\Macro{m}{\texttt{\textbackslash#1}}
\NewDocumentCommand\Code{m}{\texttt{#1}}
\NewDocumentCommand\Command{m}{\texttt{#1}}
\NewDocumentCommand\Environment{m}{\texttt{#1}}
\DeclareDocumentCommand\biblatex{m}{\texttt{\BibLaTeX}\xspace}
\NewDocumentCommand\Paket{m}{\texttt{#1}}
\NewDocumentCommand\Package{m}{\texttt{#1}}
\NewDocumentCommand\Programm{m}{\texttt{#1}}
\NewDocumentCommand\Program{m}{\texttt{#1}}
\NewDocumentCommand\Env{m}{\texttt{#1}}
\NewDocumentCommand\Class{m}{\texttt{#1}}
\NewDocumentCommand\Klasse{m}{\texttt{#1}}

\endinput
