%% 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