% \iffalse meta-comment
%/GitFileInfo=tudscr-version.dtx
%
%  TUD-Script -- Corporate Design of Technische Universität Dresden
% ----------------------------------------------------------------------------
%
%  Copyright (C) Falk Hanisch <hanisch.latex@outlook.com>, 2012-2022
%
% ----------------------------------------------------------------------------
%
%  This work may be distributed and/or modified under the conditions of the
%  LaTeX Project Public License, either version 1.3c of this license or
%  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 2008-05-04 or later.
%
%  This work has the LPPL maintenance status "maintained".
%
%  The current maintainer and author of this work is Falk Hanisch.
%
% ----------------------------------------------------------------------------
%
% \fi
%
% \iffalse comment
% Nicht verwirren lassen! In dieser Datei steht ein Teil der Dokumentation und 
% des Codes vor dem Treiber. Das ist notwendig, weil der Teil des Codes bereits 
% am Anfang des Treibers selbst benötigt wird. Genauer gesagt handelt es sich 
% dabei um den Teil zur Versionsangbabe.
% \fi
%
% \selectlanguage{ngerman}
%
% \changes{v1.0}{2012/10/31}{\TUDScript-Bundle erstmalig veröffentlicht}^^A
% \changes{v2.00}{2014/04/21}{\TUDScript-Bundle auf \pkg{docstrip} umgestellt
%   und stark erweitert}^^A
% \changes{v2.01}{2014/04/24}{Anpassungen in Dokumentation und
%   Schriftinstallation, Fehlerkorrekturen}^^A
% \changes{v2.02}{2014/05/14}{Problem globaler Längenänderungen behoben}^^A
% \changes{v2.02}{2014/05/16}{Umbennenung mehrerer Befehle zur Kompatibilität
%   mit anderen Paketen}^^A
%
%
%
% \section{Die Version des \TUDScript-Bundles}
%
% Für das \TUDScript-Bundle wird die aktuelle Version sowie \LaTeXe{} als 
% benötigtes Format festgelegt.
%
% \subsection{Definition und Validierung der Version}
%
% \begin{macro}{\TUD@Version}
% \begin{macro}{\TUD@@Version}
% \changes{v2.02}{2014/07/22}{Expandieren der Versionsangabe bei der Verwendung 
%   von \pkg{docstrip} ermöglicht}^^A
% \begin{macro}{\TUDScriptVersion}
% \begin{macro}{\TUDScriptVersionNumber}
% \begin{macro}{\TUD@KOMAVersion}
% \begin{macro}{\TUD@KOMAVersionNumber}
% Die Klassen und Pakete des \TUDScript-Bundles verwenden \cs{TUD@Version}
% zur Versionsangabe. Je nachdem, ob \cs{TUD@Version} bereits definiert ist 
% oder nicht, wird mit \cs{TUD@@Version} die Definition überprüft oder eine 
% globale Definition vorgenommen. In \cs{TUD@KOMAVersion} wird die mindestens 
% notwendige Version von \KOMAScript{} definiert.
%    \begin{macrocode}
%<*identify>
%<class|package>\NeedsTeXFormat{LaTeX2e}[2022-06-01]
\begingroup
  \catcode`\@11\relax%
%<*!(class|package)>
  \ifx\documentclass\undefined%
    \gdef\TUD@@Version#1#2{%
      \gdef\TUD@Version{\space\space#1}%
      \gdef\TUD@KOMAVersion{\space\space#2}%
    }%
  \else%
%</!(class|package)>
  \ifx\TUD@Version\@undefined%
    \newcommand*\TUD@@Version[2]{%
      \gdef\TUD@Version{#1}%
      \gdef\TUD@KOMAVersion{#2}%
    }%
  \else%
    \newcommand*\TUD@@Version[2]{%
      \def\@tempa{#1}%
      \ifx\TUD@Version\@tempa\else%
        \@latex@warning@no@line{%
          \noexpand\TUD@Version\space is `\TUD@Version',\MessageBreak%
          but `#1' was expected!\MessageBreak%
          You should not use classes, packages or files from\MessageBreak%
          different TUD-Script bundle versions%
        }%
      \fi%
    }%
  \fi%
%<*!(class|package)>
  \fi%
%</!(class|package)>
  \TUD@@Version{2022/08/09 v2.06o TUD-Script}{2022/05/01 v3.36 KOMA-Script}%
  \ifx\TUDScriptVersion\@undefined%
    \xdef\TUDScriptVersion{\TUD@Version}%
    \def\@tempa#1 v#2 #3\relax#4\relax#5{\gdef#5{#2}}%
    \expandafter\@tempa\TUD@Version ? ?\relax\relax{\TUDScriptVersionNumber}%
    \expandafter\@tempa\TUD@KOMAVersion ? ?\relax\relax{\TUD@KOMAVersionNumber}%
  \fi%
\endgroup
%</identify>
%    \end{macrocode}
% \end{macro}^^A \TUD@KOMAVersionNumber
% \end{macro}^^A \TUD@KOMAVersion
% \end{macro}^^A \TUDScriptVersionNumber
% \end{macro}^^A \TUDScriptVersion
% \end{macro}^^A \TUD@@Version
% \end{macro}^^A \TUD@Version
%
% \iffalse ins:batch + dtx:driver
%<*ins>
\ifx\documentclass\undefined
  \input docstrip.tex
  \ifToplevel{\batchinput{tudscr.ins}}
\else
  \let\endbatchfile\relax
\fi
\endbatchfile
%</ins>
%<*dtx>
\ProvidesFile{tudscr-version.dtx}[2022/08/09]
\RequirePackage{tudscr-gitinfo}
\documentclass[english,ngerman,xindy]{tudscrdoc}
\iftutex
  \usepackage{fontspec}
\else
  \usepackage[T1]{fontenc}
  \usepackage[ngerman=ngerman-x-latest]{hyphsubst}
\fi
\usepackage{babel}
\usepackage{tudscrfonts}
\usepackage[babel]{microtype}

\GitHubBase{\TUDScriptRepository}
\begin{document}
  \author{Falk Hanisch\TUDScriptContactTitle}
  \maketitle
  \tableofcontents
  \DocInput{\filename}
\end{document}
%</dtx>
% \fi
%
% \iffalse comment
% Der Rest wird nicht mehr vom Treiber benötigt.
% \fi
%
% \iffalse 
%<*identify>
% \fi
%
% \subsection{Das \TUDScript-Logo und Anlaufstellen}
% \begin{macro}{\TUDScript}
% Der Schriftzug von \TUDScript.
%    \begin{macrocode}
\@ifundefined{TUDScript}{%
  \DeclareRobustCommand\TUDScript{%
    \mbox{%
      \textsf{%
        T\kern.05em U\kern.05em D\kern.1em-\kern.1em Script%
      }%
    }\ifcsname xspace\endcsname\xspace\fi%
  }%
}{}
%    \end{macrocode}
% \end{macro}^^A \TUDScript
%
% \begin{macro}{\TUDScriptContact}
% \begin{macro}{\TUDScriptRepository}
% \begin{macro}{\TUDScriptForum}
% Die E"~Mail-Adresse, Repository und Forum für Supportanfragen. 
%    \begin{macrocode}
\providecommand*\TUDScriptContact{hanisch.latex@outlook.com}
\providecommand*\TUDScriptRepository{https://github.com/tud-cd/tudscr}
\providecommand*\TUDScriptForum{https://latex.wcms-file3.tu-dresden.de/phpBB3/}
%    \end{macrocode}
% \end{macro}^^A \TUDScriptForum
% \end{macro}^^A \TUDScriptRepository
% \end{macro}^^A \TUDScriptContact
%
% \iffalse
%<*class>
% \fi
%
% \subsection{Laden von Klassen und Paketen}
%
% \begin{macro}{\TUD@ProvidesClass}
% \changes{v2.04}{2015/06/13}{neu}^^A
% \begin{macro}{\TUD@ProvidesWrapperClass}
% \changes{v2.04}{2015/06/13}{neu}^^A
% \begin{macro}{\TUD@Class@Name}
% \changes{v2.04}{2015/06/12}{neu}^^A
% \begin{macro}{\TUD@Class@Parent}
% \changes{v2.04}{2015/06/12}{neu}^^A
% \begin{macro}{\TUD@Class@KOMA}
% \changes{v2.04}{2015/06/12}{neu}^^A
% \begin{macro}{\TUDScriptClassName}
% \begin{macro}{\TUDClassName}
% Mit diesen Befehlen erfolgt die Versionsangabe der \TUDScript-Klassen beim
% Laden. Dabei werden hier einmalig die Namen der jeweiligen Klassen definiert. 
% Hierfür werden die Befehle \cs{TUD@ProvidesClass} für die Hauptklassen und 
% \cs{TUD@ProvidesWrapperClass} für auf diesen aufbauende Wrapper-Klassen 
% genutzt. Das erste Argument ist die zu definierende Klasse, das zweite 
% Argument entspricht der Basis-Klasse. Das dritte Argument enthält eine kurze 
% Beschreibung.
%    \begin{macrocode}
%<!inherit>\newcommand*\TUD@ProvidesClass[3]
%<inherit>\newcommand*\TUD@ProvidesWrapperClass[3]
{%
  \ProvidesClass{#1}[%
%!TUD@Version
    #3 (#2)%
  ]%
%<!inherit>  \newcommand*\TUD@Class@KOMA{#2}%
%<inherit>  \newcommand*\TUD@Class@Parent{#2}%
%<!inherit>  \ifx\TUD@Class@Parent\@undefined%
  \newcommand*\TUD@Class@Name{#1}%
%    \end{macrocode}
% Die Benutzermakros für den Namen der verwendeten \TUDScript-Klasse.
%    \begin{macrocode}
  \newcommand*\TUDScriptClassName{#1}%
  \providecommand*\TUDClassName{\TUDScriptClassName}%
  \TUD@Class@Info%
%<!inherit>  \fi%
}
%    \end{macrocode}
% \end{macro}^^A \TUDClassName
% \end{macro}^^A \TUDScriptClassName
% \end{macro}^^A \TUD@Class@KOMA
% \end{macro}^^A \TUD@Class@Parent
% \end{macro}^^A \TUD@Class@Name
% \end{macro}^^A \TUD@ProvidesWrapperClass
% \end{macro}^^A \TUD@ProvidesClass
% \begin{macro}{\TUD@Class@Info}
% \changes{v2.04}{2015/06/13}{neu}^^A
% Beim Verwenden der Klassen wird in der log-Datei ein Vermerk mit \cs{typeout} 
% erstellt.
%    \begin{macrocode}
\providecommand*\TUD@Class@Info{%
  \typeout{+------------------------------------------------------------------}%
  \typeout{| Corporate Design of Technische Universitaet Dresden}%
  \typeout{| Class:      \TUDScriptClassName}%
  \typeout{| Version:    \TUDScriptVersion}%
  \typeout{| Author:     Falk Hanisch (\TUDScriptContact)}%
  \typeout{| Repository: \TUDScriptRepository}%
  \typeout{| Forum:      \TUDScriptForum}%
  \typeout{+------------------------------------------------------------------}%
}
%    \end{macrocode}
% \end{macro}^^A \TUD@Class@Info
% Hier erfolgt nun die Indentifizierung und die Zuweisung der Klassennamen.
%    \begin{macrocode}
%<book>\TUD@ProvidesClass{tudscrbook}{scrbook}{document class}
%<report>\TUD@ProvidesClass{tudscrreprt}{scrreprt}{document class}
%<article>\TUD@ProvidesClass{tudscrartcl}{scrartcl}{document class}
%<poster>\TUD@ProvidesClass{tudscrposter}{scrartcl}{poster class}
%<doc>\TUD@ProvidesClass{tudscrdoc}{scrartcl}{source code documentation class}
%<manual>\TUD@ProvidesWrapperClass{tudscrmanual}{tudscrreprt}{manual class}
%    \end{macrocode}
%
% \iffalse
%</class>
%<*package>
%<*supervisor|comp|manual>
% \fi
%
% \begin{macro}{\TUD@Class@Check}
% \changes{v2.06o}{2022/08/09}{neu}^^A
% Einige Pakete sind nur mit den \TUDScript-Klassen verwendbar. Diese erzeugen 
% einen Fehler, wenn sie nicht mit einer dieser verwendet werden.
%    \begin{macrocode}
\providecommand*\TUD@Class@Check[1]{%
  \ifx\TUD@Class@Name\@undefined%
    \PackageError{#1}{TUD-Script class not loaded}{%
      This package requires a class of the TUD-Script bundle\MessageBreak%
      (tudscrbook, tudscrreprt, tudscrartcl, tudscrposter).%
    }%
    \DeclareOption*{}%
    \ProcessOptions\relax%
    \expandafter\endinput%
  \fi%
}%
%    \end{macrocode}
% \end{macro}^^A \TUD@Class@Check
%
% \iffalse
%</supervisor|comp|manual>
%</package>
%</identify>
% \fi
%
% \PrintBackMatter
%
\endinput
