% \CheckSum{74}
% \iffalse meta-comment
% ======================================================================
% scrextend.dtx
% Copyright (c) Markus Kohm, 2002-2020
%
% This file is part of the LaTeX2e KOMA-Script bundle.
%
% This work may be distributed and/or modified under the conditions of
% the LaTeX Project Public License, version 1.3c of the license.
% 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 and of this work.
%
% This work has the LPPL maintenance status "author-maintained".
%
% The Current Maintainer and author of this work is Markus Kohm.
%
% This work consists of all files listed in manifest.txt.
% ----------------------------------------------------------------------
% scrextend.dtx
% Copyright (c) Markus Kohm, 2002-2020
%
% Dieses Werk darf nach den Bedingungen der LaTeX Project Public Lizenz,
% Version 1.3c, verteilt und/oder veraendert werden.
% Die neuste Version dieser Lizenz ist
%   http://www.latex-project.org/lppl.txt
% und Version 1.3c ist Teil aller Verteilungen von LaTeX
% Version 2005/12/01 oder spaeter und dieses Werks.
%
% Dieses Werk hat den LPPL-Verwaltungs-Status "author-maintained"
% (allein durch den Autor verwaltet).
%
% Der Aktuelle Verwalter und Autor dieses Werkes ist Markus Kohm.
% 
% Dieses Werk besteht aus den in manifest.txt aufgefuehrten Dateien.
% ======================================================================
% \fi
%
% \CharacterTable
%  {Upper-case    \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
%   Lower-case    \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
%   Digits        \0\1\2\3\4\5\6\7\8\9
%   Exclamation   \!     Double quote  \"     Hash (number) \#
%   Dollar        \$     Percent       \%     Ampersand     \&
%   Acute accent  \'     Left paren    \(     Right paren   \)
%   Asterisk      \*     Plus          \+     Comma         \,
%   Minus         \-     Point         \.     Solidus       \/
%   Colon         \:     Semicolon     \;     Less than     \<
%   Equals        \=     Greater than  \>     Question mark \?
%   Commercial at \@     Left bracket  \[     Backslash     \\
%   Right bracket \]     Circumflex    \^     Underscore    \_
%   Grave accent  \`     Left brace    \{     Vertical bar  \|
%   Right brace   \}     Tilde         \~}
%
% \iffalse
%%% From File: $Id: scrextend.dtx 3453 2020-02-25 07:33:30Z kohm $
%<preidentify>%%%            (run: preidentify)
%<prepare>%%%            (run: prepare)
%<option>%%%            (run: option)
%<*dtx>
\ifx\ProvidesFile\undefined\def\ProvidesFile#1[#2]{}\fi
\begingroup
  \def\filedate$#1: #2-#3-#4 #5${\gdef\filedate{#2/#3/#4}}
  \filedate$Date: 2020-02-25 08:33:30 +0100 (Tue, 25 Feb 2020) $
  \def\filerevision$#1: #2 ${\gdef\filerevision{r#2}}
  \filerevision$Revision: 1962 $
\endgroup
\ProvidesFile{scrextend.dtx}[\filedate\space\filerevision\space
                             KOMA-Script package source
                             (extend other classes)]
\documentclass[parskip=half-]{scrdoc}
\usepackage[english,ngerman]{babel}
\CodelineIndex
\RecordChanges
\GetFileInfo{scrextend.dtx}
\title{\KOMAScript{} \partname\ \texttt{\filename}%
  \footnote{Dies ist Version \fileversion\ von Datei
    \texttt{\filename}.}}
\date{\filedate}
\author{Markus Kohm}

\begin{document}
  \maketitle
  \tableofcontents
  \DocInput{\filename}
\end{document}
%</dtx>
% \fi
%
% \selectlanguage{ngerman}
%
% \changes{v3.00}{2008/05/01}{neues Paket}
%
% \section{Erweiterungen für andere Klassen}
%
% Dieses Paket dient dazu, einige Möglichkeiten von \KOMAScript{} auch anderen
% Klassen zur Verfügung zustellen. Dafür darf dieses Paket nicht mit einer
% \KOMAScript-Klasse verwendet werden.
%
% \StopEventually{\PrintIndex\PrintChanges}
%
% \subsection{Vorbereitung noch vor der Identifizierung des Pakets}
%
% Die Vorbereitung ist einfach. Es wird nur getestet, ob bereits eine
% \KOMAScript-Klasse geladen ist. Falls dem so ist, wird eine Warnung
% ausgegeben und dafür gesorgt, dass das Paket nicht weiter abgearbeitet wird.
%
% \iffalse
%<*preidentify>
% \fi
%
% \changes{v3.30}{2020/02/25}{\cs{PackageWarningNoLine} statt
%   \cs{PackageWarning} mit angehängtem \cs{@gobble}}%^^A
%    \begin{macrocode}
\begingroup\expandafter\expandafter\expandafter\endgroup
\expandafter\ifx\csname KOMAClassName\endcsname\relax\else
  \PackageWarningNoLine{scrextend}{%
    This package was made to extend other classes but\MessageBreak
    KOMA-Script classes by some features of the\MessageBreak
    KOMA-Script classes.\MessageBreak
    It should never be used with a KOMA-Script class.\MessageBreak
    Loading of the package will be aborted%
  }%
  \expandafter\endinput
\fi
%    \end{macrocode}
%
% \iffalse
%</preidentify>
%<*identify>
% \fi
%
% \subsection{Identifizierung des Pakets}
%
%    \begin{macrocode}
\ProvidesPackage{scrextend}[%
%!KOMAScriptVersion
  package (extend other classes with features of KOMA-Script classes)%
]
%    \end{macrocode}
%
% \iffalse
%</identify>
%<*prepare>
% \fi
%
% \subsection{Vorbereitung vor den Optionen}
%
% \begin{macro}{\scr@ext@activate}
% \begin{macro}{\scr@ext@activateable}
% \begin{macro}{\scr@ext@addto@activateable}
% \begin{sloppypar}
% Einige Dinge werden nur dann definiert, wenn dies gefordert ist. Dazu werden
% die entsprechenden Definitionen in das zweite Argument von
% \cs{scr@ext@activateable}\marg{Kürzel} gepackt, wodurch sie als
% \cs{scr@ext@activate@}\meta{Kürzel} definiert werden, und anschließend
% \cs{csname}~\texttt{scr@ext@immediate@}\meta{Kürzel}\cs{endcsname}
% ausgeführt. Um das dann zu aktivieren wird
% \cs{scr@ext@activate}\marg{Kürzel} aufgerufen (beispielsweise innerhalb
% einer Option). Mit \cs{scr@ext@addto@activateable} können Aktivierungen
% entsprechend um weitere Definitionen erweitert werden.
% \end{sloppypar}
%    \begin{macrocode}
\newcommand*{\scr@ext@activate}[1]{%
  \scr@ifundefinedorrelax{scr@ext@activate@#1}{%
    \@namedef{scr@ext@immediate@#1}{%
      \expandafter\let\csname scr@ext@immediate@#1\endcsname\relax
      \csname scr@ext@activate@#1\endcsname
    }%
  }{%
    \csname scr@ext@activate@#1\endcsname
    \expandafter\let\csname scr@ext@activate@#1\endcsname\relax
  }%
}
\newcommand*{\scr@ext@activateable}[1]{%
  \expandafter\newcommand\expandafter*\csname scr@ext@activate@#1\endcsname
}
\newcommand*{\scr@ext@addto@activateable}[1]{%
  \scr@ifundefinedorrelax{scr@ext@activate@#1}{%
    \expandafter\newcommand\expandafter*\csname scr@ext@activate@#1\endcsname
  }{%
    \expandafter\g@addto@macro\csname scr@ext@activate@#1\endcsname
  }%
}
%    \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
%
% \iffalse
%</prepare>
%<*option>
% \fi
%
% \subsection{Optionen}
%
% Das Paket kennt eine universelle Option, um aktivierbare Möglichkeiten zu
% aktivieren. Diese Option steht aber nur während dem Laden des Pakets zur
% Verfügung!
%
% \begin{option}{extendedfeature}
% \changes{v3.12}{2013/03/05}{Verwendung der Status-Signalisierung mit
%     \cs{FamilyKeyState}}%^^A
% \changes{v3.17}{2015/03/09}{Speicherung des Werts in der internen
%     Liste}%^^A
%    \begin{macrocode}
\KOMA@key{extendedfeature}{%
  \scr@ext@activate{#1}%
  \AtEndOfPackage{%
    \scr@ifundefinedorrelax{scr@ext@immediate@#1}{}{%
      \PackageWarningNoLine{unkown extended feature `#1'\MessageBreak
        You have used option `extendedfeature' to\MessageBreak
        activate an extended feature `#1',\MessageBreak
        but there is no such extended feature.\MessageBreak
        See the KOMA-Script manual for more\MessageBreak
        information about known activatable\MessageBreak
        extended features%
      }%
    }%
  }%
  \FamilyKeyStateProcessed
  \KOMA@kav@xadd{.scrextend.sty}{extendedfeature}{#1}%
}
\AtEndOfPackage{%
  \KOMA@key{extendedfeature}{%
    \def\FamilyKeyState{Option `extendedfeature' too late}%
  }%
}
%    \end{macrocode}
% \end{option}
%
% \iffalse
%</option>
% \fi
%
% \Finale
%
\endinput
%
% end of file `scrextend.dtx'
%%% Local Variables:
%%% mode: doctex
%%% TeX-master: t
%%% End:
