%% This is file `dtk-full.clo',
%%
%% LaTeX Class for ``Die TeXnische Komoedie''.
%%
%% Copyright (C) 2015-
%% 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.

\ProvidesFile{dtk-full.clo}%
 [2023/07/25 v0.1r dtk class options for full mode (RN)]

\@ifclasslater{scrbook}{2015/09/29}{}{%
 \ClassError{dtk}{%
   Die geladene Version der Dokumentenklasse `scrbook' \MessageBreak
   (\KOMAScriptVersion) ist zu alt. \MessageBreak
   Gefordert ist die Version 2015/09/29 oder jünger. \MessageBreak
   Abbruch}{}%
}

\RequirePackage{xcolor,multicol,graphicx,tabularx}
\RequirePackage[showzone=false]{datetime2}

\newcounter{dtk@example@counter}

\newcommand*\AutorenListenName{Autoren/Organisatoren} % auch »Stichwortverzeichnis«?
\newcommand*\DTK@fancyJournalname{%
 \color{DTK@fancy}Die \color{black}\TeX\color{DTK@fancy}nische Kom\"odie}
\newcommand*\DTK@keywords{}
\newcommand*\keywords[1]{\gdef\DTK@keywords{#1}}

\newcommand*\DTKissueTOmonth[1]{\numexpr#1*3-1\relax}

\ifnum\DTKissue=\z@
 \def\DTKmonth{0}%
 \def\DTKmonthName{?????}%
\else
 \ifnum\DTKmonth=\z@
   \edef\DTKmonth{\DTKissueTOmonth{\DTKissue}}%
 \fi
 \edef\DTKmonthName{\DTMgermanmonthname{\DTKmonth}}%
\fi
\edef\DTKdate{\DTKissue/\DTKyear}%
\edef\DTKvolume{\the\numexpr\DTKyear-1989+1\relax}%
\edef\DTKfullIssue{\DTKvolume. Jahrgang\quad
 Heft \DTKissue/\DTKyear\quad \DTKmonthName\ \DTKyear}%
\ifDTK@korr@
 \edef\DTKcorrVersion{\noexpand\normalfont
   \noexpand\fcolorbox{black}{DTK@marker}{Korrekturversion: \DTMnow}}%
 \overfullrule=5pt %
\fi

\@ifundefined{@LN}{\let\@LN=\@gobbletwo}{}%
% Wegen .aux-Datei von vorherigem lineno-Lauf

\newcommand*\DTK@backside{%
 \begingroup
   \chardef\backside15 %
   \ch@ck7\backside\write
   \immediate\openout\backside dtk-ruecken.dat\relax
   \let\protect=\noexpand
   \immediate\write\backside{\journalname\space\DTKdate}%
   \immediate\closeout\backside\relax%
 \endgroup
}

\newcommand*\DTK@embedded@begindocumenthook{}
\newcommand*\AtEmbeddedBeginDocument{%
 \g@addto@macro\DTK@embedded@begindocumenthook}
\newcommand*\DTK@embedded@enddocumenthook{}
\newcommand*\AtEmbeddedEndDocument{%
 \g@addto@macro\DTK@embedded@enddocumenthook}
\newcommand*\DTK@local@inputname{}
\newcommand*\DTK@eat@version[1][]{\ignorespaces}
\newcommand*\DTK@usepackage[2][]{%
 \@ifnextchar[%]
   {\DTK@@usepackage{#1}{#2}}%
   {\DTK@@usepackage{#1}{#2}[]}%
}%
\newcommand*\DTK@RequirePackage[2][]{%
 \@ifnextchar[%]
   {\DTK@@RequirePackage{#1}{#2}}%
   {\DTK@@RequirePackage{#1}{#2}[]}%
}%
\newcommand*\DTK@@usepackage{}
\newcommand*\DTK@@RequirePackage{}
\newcommand*\DTK@documentclass[2][]{%
 \DTK@eat@version
}

\newcounter{artcounter}

\ifDTKrecord
 % Testlauf zum Aufsammeln von Paket- und bib-Dateinamen
 \@ifdefinable\user@usepackages{%
   \newwrite\user@usepackages
   \immediate\openout\user@usepackages dtk-userdefinitions.tex\relax
   \immediate\write\user@usepackages{%
     \@percentchar\space *** \DTMnow\space ***}%
   \AtEndDocument{\immediate\closeout\user@usepackages\relax}%
 }
 \@ifdefinable\user@requirepackages{%
   \newwrite\user@requirepackages
   \immediate\openout\user@requirepackages dtk-requirepackages.tex\relax
   \immediate\write\user@requirepackages{%
     \@percentchar\space *** \DTMnow\space ***}%
   \AtEndDocument{\immediate\closeout\user@requirepackages\relax}%
 }
 \@ifdefinable\user@bibs{%
   \newwrite\user@bibs
   \immediate\openout\user@bibs dtk-userbibs.tex\relax
   \immediate\write\user@bibs{%
     \@percentchar\space *** \DTMnow\space ***}%
   \AtEndDocument{\immediate\closeout\user@bibs\relax}%
 }
 \renewcommand*\printbibliography[1][]{}%
 \newcommand*\DTK@addbibresource[2][]{% Variant for recording run
   \@ifundefined{BIBS:\the\c@artcounter}{%
     \def\DTK@tempa{}% no comma
     \expandafter\let\csname BIBS:\the\c@artcounter\endcsname\@empty
   }{\def\DTK@tempa{,}}% comma
   % Collect all bib filenames in macro \BIBS:? as comma list for \newrefsection
   \expandafter\g@addto@macro\csname BIBS:\the\c@artcounter
     \expandafter\endcsname\expandafter{\DTK@tempa #2}%
   % Write current (local) \addbibresource command to file `dtk-userbibs.tex'
   \immediate\write\user@bibs{%
     \string\addbibresource\ifx\relax#1\relax\else[#1]\fi{#2}%
       \@percentchar\space \DTK@local@inputname
   }%
 }%
 \def\DTK@@usepackage#1#2[#3]{%
   \edef\@tempb{\zap@space#2 \@empty}%
   \@for\@tempa:=\@tempb\do{%
     \let\DTK@tempa=\@empty
     \Ifstr{\@tempa}{inputenc}{\let\DTK@tempa=\@percentchar}{%
       \Ifstr{\@tempa}{fontenc}{\let\DTK@tempa=\@percentchar}{}}%
     \immediate\write\user@usepackages{%
       \DTK@tempa\string\usepackage\ifx\relax#1\relax\else[#1]\fi{\@tempa}%
       \ifx\relax#3\relax\else[#3]\fi\@percentchar\space \DTK@local@inputname
     }%
   }%
   \ignorespaces
 }%
 \def\DTK@@RequirePackage#1#2[#3]{%
   \edef\@tempb{\zap@space#2 \@empty}%
   \@for\@tempa:=\@tempb\do{%
     \immediate\write\user@requirepackages{%
       \string\RequirePackage\ifx\relax#1\relax\else[#1]\fi{\@tempa}%
       \ifx\relax#3\relax\else[#3]\fi\@percentchar\space \DTK@local@inputname
     }%
   }%
   \ignorespaces
 }%
 \let\DTK@@Author=\DTK@Author
 \newcommand*\AutorenListe{}%
 \let\tableofcontents=\relax
 \renewcommand\maketitle[1][]{}%
 \RequirePackage{verbatim}%
 \def\dtkGLOBAL{% Record-Modus; Inhalt in Datei schreiben; siehe: moreverb.sty
   \immediate\write\user@usepackages{\@percentchar\space >>> %
     globale Definitionen (\DTK@local@inputname)}%
   \let\do\@makeother\dospecials
   \catcode`\^^M\active \catcode`\^^I=12 %
   \def\verbatim@processline{%
     \immediate\write\user@usepackages{\the\verbatim@line}}%
   \verbatim@start}
 \def\enddtkGLOBAL{%
   \immediate\write\user@usepackages{\@percentchar\space <<< %
     globale Definitionen (\DTK@local@inputname)}}
\else
 \AtEndOfClass{%
   \InputIfFileExists{dtk-userdefinitions.tex}{%
     \typeout{*************************************^^J%
              * File `dtk-userdefinitions.tex' used.^^J%
              *************************************}%
   }{}%
   \InputIfFileExists{dtk-userbibs.tex}{%
     \typeout{*************************************^^J%
              * File `dtk-userbibs.tex' used.^^J%
              *************************************}%
   }{}%
   \shorthandon{"}%
 }%
 \AtBeginDocument{\DTK@backside}%
 \def\DTK@@usepackage#1#2[#3]{}%
 \def\DTK@@RequirePackage#1#2[#3]{}%
 \newcommand*\DTK@addbibresource[2][]{}% Variant for the document run
 \newcommand*\ORIG@printbibliography{}
 \let\ORIG@printbibliography=\printbibliography
 \renewcommand*\printbibliography[1][]{\ORIG@printbibliography[heading=dtk]%
   \global\let\bbx@lasthash=\relax
 }
 \RequirePackage[split,protected]{splitidx} \makeindex
 \newindex[\AutorenListenName]{autoren}%
 \newcommand*\AutorenListe{%
   \clearpage
   \begingroup
     %\language\langwohyphens
     \renewenvironment{theindex}{\theAutoren}{\endtheAutoren}%
     \printindex[autoren]%
   \endgroup
 }%
 \RequirePackage{trimspaces}
 \newcommand\DTK@Author@list[3]{% TODO: Auch "!" und "|" maskieren?
   \begingroup
     \setbox\DTK@tempbox\hbox{\trim@spaces{#3}}%
     \def\Email##1{\escape@atsign##1\relax}% herausziehen?!
     \def\escape@atsign##1@##2\relax{%
       \noexpand\Email\string{##1\string"@##2\string}%
     }%
     \makeatletter
     \ifdim\wd\DTK@tempbox>\z@
       \scantokens{\protected@edef\x{%
         \noexpand\sindex[autoren]{#2#1@#1 #2!#3}}\@empty}%
       \x
     \else
       \sindex[autoren]{#2#1@#1 #2!\relax}%
     \fi
   \endgroup
 }%
 \newcommand*\DTK@Update@Author@index[3]{%
   % Paket "everyhook"?
   % Erst zu Beginn des nächsten Absatzes (hmode) Index-Befehle ausführen
   \g@addto@macro\DTK@Author@list@content{\DTK@Author@list{#1}{#2}{#3}}%
   \everypar=\expandafter{\the\everypar\DTK@Author@list@exec}%
 }
 % Sternversion: keine Ausgabe der Autoren, nur Index ergänzen
 \let\DTK@Author=\DTK@Update@Author@index
 % Normale Version
 \newcommand\DTK@@Author[3]{%
   \DTK@Author@article{#1}{#2}{#3}% Ausgabe der Autoren wie im Autor-Modus
   \DTK@Update@Author@index{#1}{#2}{#3}%
 }
 \renewcommand\maketitle[1][]{%
   \thispagestyle{dtk-title}%
   \global\let\maketitle=\DTK@maketitle
   \null\newpage
 }%
 \RequirePackage{environ}
 \NewEnviron{dtkGLOBAL}{}% Full-Modus; Inhalt ignorieren
\fi

%%% Laden eines Einzeldokuments
\newcommand*\DTKinput[1]{%
 \setcounter{dtk@example@counter}{1}%
 \stepcounter{artcounter}%
 \begingroup
   \filename@parse{#1}%
   \edef\jobname{\filename@base}%
   \@ifundefined{filename@ext}%
     {\edef\DTK@local@inputname{\[email protected]}}%
     {\edef\DTK@local@inputname{#1}}%
   \let\AtBeginDocument=\AtEmbeddedBeginDocument
   \let\AtEndDocument=\AtEmbeddedEndDocument
   \let\DTK@embedded@begindocumenthook=\@empty
   \let\DTK@embedded@enddocumenthook=\@empty
   \let\pagestyle=\@gobble
   \let\thispagestyle=\@gobble
   \let\listfiles=\relax
   \let\nofiles=\relax
   \let\documentclass=\DTK@documentclass
   \let\usepackage=\DTK@usepackage
   \let\RequirePackage=\DTK@RequirePackage
   \let\addbibresource=\DTK@addbibresource
   \c@footnote=\z@
   \c@lstlisting=\z@
   \c@figure=\z@
   \c@table=\z@
   \c@equation=\z@
   \ifDTKrecord
     \gdef\document{%
       % Write current macro definition of \BIBS:? (complete bibfile list)
       % to file `dtk-userbibs.tex'
       \@ifundefined{BIBS:\the\c@artcounter}{}{%
         \immediate\write\user@bibs{%
           \string\@namedef{BIBS:\the\c@artcounter}%
             {\@nameuse{BIBS:\the\c@artcounter}}%
           \@percentchar\space\DTK@local@inputname
         }%
       }%
       \endgroup\endinput
     }%
     \global\let\blx@warn@auxlist=\relax
   \else
     \renewenvironment{document}{%
       \DTK@embedded@begindocumenthook\ignorespaces
     }{%
       \DTK@embedded@enddocumenthook\mbox{}\endinput
     }%
   \fi
   % Macro \BIBS:? may have been defined by `dtk-userbibs.tex'
   \@ifundefined{BIBS:\the\c@artcounter}{%
     \input{\DTK@local@inputname}%
   }{%
     \expandafter\newrefsection\expandafter
       [\csname BIBS:\the\c@artcounter\endcsname]%
       \input{\DTK@local@inputname}%
     \endrefsection
   }%
 \endgroup
}

\let\indexspace=\relax
\renewcommand*\idx@heading{%
 \chapter{\indexname}%
 \ifx\index@preamble\relax
 \else\index@preamble\let\index@preamble=\relax\fi
}%
\def\DTK@scan@item#1\subitem#2\relax#3\@nil{%
 \def\DTK@tempa{#1}\def\DTK@tempb{#2}\def\DTK@tempc{#3}%
}
\newenvironment{theAutoren}{%
 \columnseprule=\z@ \columnsep=10\p@
 \begin{multicols}{2}[\idx@heading]%
   \makeatletter
   \parindent\z@
   \setlength{\parskip}{\z@ \@plus .3\p@}%
   \setlength{\parfillskip}{\z@ \@plus 1fil}%
   \raggedright
   \def\item##1\@nil{\DTK@scan@item##1\@nil
     \par\parbox{\columnwidth}{\raggedright%
       \textbf{\DTK@tempa}\hfill[\DTK@tempc]\par\DTK@tempb
     }%
     \par\bigskip
   }%
}{%
 \end{multicols}%
}

\newcommand*\DTK@toc@head{%
 \raisebox{0mm}[0pt][0pt]{%
   \parbox[t]{\textwidth}{%
     \normalfont\nointerlineskip
     \begingroup
       \Huge\raggedright
       \DTK@fancyJournalname \\
     \endgroup
     \addvspace{\dimexpr5mm-\baselineskip}%
     \rule{\textwidth}{2pt}\\[0.5mm]%
     \begingroup
       \footnotesize\raggedleft
       \DTKfullIssue \\
     \endgroup
   }%
 }%
}

\RequirePackage{picture}

\DeclareNewLayer[page,background,mode=picture,contents={%
 \put(24mm,0.5\dimexpr\layerheight\relax){%
   \makebox(0,0)[c]{\rotatebox[origin=c]{90}{%
     \resizebox{14cm}{!}{\Huge\DTK@fancyJournalname}}}%
   \put(8mm,0){\makebox(0,0)[c]{\rule{0.85mm}{\textheight}}}%
 }%
 \put(52mm,145mm){%
   \parbox[t]{78mm}{%
     \raggedleft
     \Huge\dantelogo \\
     \Large Deutschsprachige \\
     Anwendervereinigung \TeX\ \eV \\
     \addvspace{4mm}%
     \begingroup
       \raggedright\footnotesize
       \DTKfullIssue \\
     \endgroup
     \addvspace{40mm}%
     \makebox(0,0)[r]{\Large\DTKcorrVersion}
   }%
 }%
 \put(86mm,27mm){%
   \begingroup
     \color[gray]{.8}\resizebox{47mm}{!}{\Huge\DTKdate}%
   \endgroup
 }%
}]{dtk-title-content}
\DeclareNewPageStyleByLayers{dtk-title}{dtk-title-content}

\ifDTK@korr@% === Positionsnummern am linken Rand ===
 \newcommand*\formatPosNumber[1]{%
   \fbox{\ifnum\arabic{page}<10 0\fi\arabic{page}-\ifnum#1<10 0\fi\@arabic{#1}}%
 }
 \newcommand\makePosNumbers[2]{%
   \fboxsep=.2em %
   \settoheight\DTK@tempdimc{\formatPosNumber{9}}%
   \settowidth\DTK@tempdime{\formatPosNumber{9}}%
   \DTK@tempdimc=1.5\DTK@tempdimc
   \DTK@tempdimd=0pt %
   \DTK@tempdimb=#2 %
   %%%\settowidth\DTK@tempdima{\formatPosNumber{9}}%
   \@tempcnta=0 %
   \@whiledim \dimexpr\DTK@tempdimd+.5\DTK@tempdimc < \textheight\do{%
     \advance\@tempcnta 1 %
     \DTK@tempdimb=\dimexpr\DTK@tempdimb-\DTK@tempdimc
     \DTK@tempdimd=\dimexpr\DTK@tempdimd+\DTK@tempdimc
     \put(\ifodd\c@page #1\else\dimexpr#1+\textwidth+1.5\DTK@tempdime\fi,%
       \DTK@tempdimb){\formatPosNumber{\@tempcnta}}%
   }%
 }
 \DeclareNewLayer[textarea,background,mode=picture,contents={%
   \begingroup
     \ttfamily\scriptsize\itshape
     \settowidth\DTK@tempdimc{\formatPosNumber{99}}%
     \DTK@tempdima=\dimexpr-.5\textwidth-\[email protected] %
     \putC{%
       \makePosNumbers{\DTK@tempdima}{.5\textheight}%
     }%
   \endgroup
 }]{dtk-line-positions}
 \AddLayersToPageStyle{scrheadings}{dtk-line-positions}
 \AddLayersToPageStyle{plain.scrheadings}{dtk-line-positions}
\fi

\deftriplepagestyle{dtk-toc}%
 {}{\DTK@toc@head}{}%
 {}{\hfill\normalsize\DTKcorrVersion\hfill\null}{}

\AtEndOfClass{%
 \renewcommand*\l@part[2]{%
   \begingroup
     \addpenalty{-\@highpenalty}%
     \usekomafont{partentry}%
     \addvspace{0.5em plus 0pt}% space above part line
     \@tempdima=1.5em %
     \advance\leftskip\@tempdima
     \hskip -\leftskip
     #1\par
     \penalty\@highpenalty
   \endgroup
   \addvspace{0.2em}%
 }
 \renewcommand*\l@chapter[2]{%    TODO: Abstände richtig? "LaTeXifizieren?
   \begingroup
     \usekomafont{chapterentry}%
     \vskip \z@ \@plus.2\p@
     \@afterindenttrue
     \interlinepenalty\@M
     \@tempdimb 2.5em\relax % indent
     \advance\leftskip \@tempdimb
     \advance\rightskip \@tempdimb
     \noindent\hskip -\leftskip
     \settowidth\@tempdima{\the\c@page}%
     \hbox to\@tempdimb{\usekomafont{chapterentrypagenumber}%
       \makebox[\@tempdima][r]{#2}\hss}%
     #1\par
   \endgroup
 }
}

\setkomafont{chapterentry}{\normalfont\small}
\setkomafont{chapterentrypagenumber}{\usekomafont{chapterentry}}
\setkomafont{partentry}{\usekomafont{chapterentry}\bfseries}

\deftocheading{toc}{%
 \clearpage
 \thispagestyle{dtk-toc}%
 \vspace*{16pt}%
 \let\\=\relax
 \raggedright
}

\newcommand*\Part{%
% [#1]=toc, {#2}=Überschrift, [#3]=Präambel, *=nur Strich
 \clearpage
 %\DTK@thispagestyle{plain.scrheadings}%
 \@ifstar{\global\@tempswatrue\DTK@Part}{\global\@tempswafalse\DTK@Part}%
}

\newcommand\DTK@Part[2][]{%
 \protected@xdef\DTK@tempa{\ifx\relax#1\relax
   \noexpand\part{#2}\else\noexpand\part[#1]{#2}\fi}%
 \DTK@@Part
}

\newcommand\DTK@@Part[1][]{%
 \let\DTK@tempb=\partheadendvskip
 \DTK@tempdime=10pt %
 \if@tempswa% Strich
   \setpartpreamble{%
     \noindent\raisebox{\height}[\height]{\rule{\textwidth}{2pt}}%
   }%
   \advance\DTK@tempdime 3mm %
 \fi
 \ifx\relax#1\relax
 \else% Präambel
   \setbox0=\vbox{%
     \noindent\raisebox{\height}[\height]{\rule{\textwidth}{2pt}}\par
     \usekomafont{section} #1\par}%
   \settoheight{\DTK@tempdima}{\usebox0}%
   \settodepth{\DTK@tempdimb}{\usebox0}%
   \advance\DTK@tempdima\DTK@tempdimb
   \setpartpreamble{%
     \box0
   }%
   \advance\DTK@tempdime \DTK@tempdima %
 \fi
 \def\partheadendvskip{\vskip \DTK@tempdime\par}%
 \DTK@tempa
 \let\partheadendvskip=\DTK@tempb
 \vskip -5mm %
 \leavevmode
}

\def\partheadstartvskip{% 12.0pt plus 1.0fil
 \null\vskip-\baselineskip
}

\def\partheadendvskip{}
\let\partheademptypage=\relax% ???
\let\raggedpart\raggedright
\def\partpagestyle{plain.scrheadings}

% TODO: sinnhaftigkeit überprüfen; bessere Stammtisch-Umgebung?
\newenvironment{roll}%
 {\@ifnextchar[{\r@ll}{\r@ll[0pt]}}%
 {\end{list}}
\def\r@ll[#1]{\begin{list}{}{%
   \labelwidth = #1
   \leftmargin = \labelwidth
   \itemsep    = .3ex
   \let\makelabel=\rolllabel}%
 }
\newcommand\rolllabel[1]{\hspace\labelsep \textbf{#1}\hfill}

\providecommand*\InfoTeX{???}

\newcommand*\MitarbeiterListe{}
\newcommand*\ErzeugeMitarbeiterListe{%
 \begingroup
   \@temptokena{\begin{tabular}[t]{@{}lll@{}}}%
   \IfFileExists{dtk-mitarbeiter.tex}{%
       \openin\@inputcheck dtk-mitarbeiter.tex\relax
       \endlinechar=\m@ne
       \@tempcnta=\@ne
       \loop%
         \read\@inputcheck to \DTK@tempa
         \ifx\DTK@tempa\@empty\else
           \ifnum\@tempcnta=3\relax
             \@tempcnta=\@ne \def\DTK@tempc{\\}%
           \else
             \advance\@tempcnta\@ne \def\DTK@tempc{&}%
           \fi
           \protected@edef\DTK@tempb{\the\@temptokena\DTK@tempa\DTK@tempc}%
           \@temptokena\expandafter{\DTK@tempb}%
         \fi
       \ifeof\@inputcheck\else
       \repeat
       \closein\@inputcheck
   }{%
     \@temptokena\expandafter{\the\@temptokena ??? & ??? & ???}%
   }
   \@temptokena\expandafter{\the\@temptokena \end{tabular}}%
   \xdef\MitarbeiterListe{\the\@temptokena}%
 \endgroup
}

\ErzeugeMitarbeiterListe \let\ErzeugeMitarbeiterListe=\relax

\newcommand*\DTKschriftenListe{%
 \DTKrmFontName, \DTKsfFontName, \DTKttFontName\ und \DTKmathFontName}

\endinput