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