% \CheckSum{316}
% \iffalse meta-comment
% ======================================================================
% scrkernel-listsandtabulars.dtx
% Copyright (c) Markus Kohm, 2002-2019
%
% 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.
% ----------------------------------------------------------------------
% scrkernel-listsandtabulars.dtx
% Copyright (c) Markus Kohm, 2002-2019
%
% 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: scrkernel-listsandtabulars.dtx 3394 2019-11-19 11:56:28Z kohm $
%<option>%%%            (run: option)
%<body>%%%            (run: body)
%<*dtx>
% \fi
\ifx\ProvidesFile\undefined\def\ProvidesFile#1[#2]{}\fi
\begingroup
  \def\filedate$#1: #2-#3-#4 #5${\gdef\filedate{#2/#3/#4}}
  \filedate$Date: 2019-11-19 12:56:28 +0100 (Tue, 19 Nov 2019) $
  \def\filerevision$#1: #2 ${\gdef\filerevision{r#2}}
  \filerevision$Revision: 1872 $
  \edef\reserved@a{%
    \noexpand\endgroup
    \noexpand\ProvidesFile{scrkernel-listsandtabulars.dtx}%
                          [\filedate\space\filerevision\space
                           KOMA-Script source
                           (lists and tabulars)]
  }%
\reserved@a
% \iffalse
\documentclass[parskip=half-]{scrdoc}
\usepackage[english,ngerman]{babel}
\CodelineIndex
\RecordChanges
\GetFileInfo{scrkernel-listsandtabulars.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{v2.95}{2002/07/01}{%
%   erste Version aus der Aufteilung von \texttt{scrclass.dtx}}
%
% \section{Listen und Tabellen}
%
% \KOMAScript{} verfügt über einige zusätzliche Listenumgebungen. Ein
% Teil dieser Listenumgebungen ist nicht sofort auf den ersten Blick
% als solche zu erkennen, so wie dies schon bei den Standardklassen
% beispielsweise mit \texttt{quote} und \texttt{quotation} der Fall
% ist.
%
% \StopEventually{\PrintIndex\PrintChanges}
%
% \iffalse
%<*option>
% \fi
%
% \subsection{Optionen}
% Diese Umgebungen werden nicht durch Optionen beeinflusst.
%
%
% \iffalse
%</option>
%<*body>
%<*class>
% \fi
%
%
% \subsection{Ränder in Listen}
%
% \begin{Length}{leftmargini}
% \begin{Length}{leftmarginii}
% \begin{Length}{leftmarginiii}
% \begin{Length}{leftmarginiv}
% \begin{Length}{leftmarginv}
% \begin{Length}{leftmarginvi}
% \begin{Length}{leftmargin}
% \begin{Length}{labelsep}
% \begin{Length}{labelwidth}
% Für die Listenumgebungen in verschiedenen Stufen müssen Ränder
% definiert werden. Hinzu kommen noch die Breite eines Labels und der
% Abstand nach einem Label.
%    \begin{macrocode}
%<*!letter>
\if@twocolumn
  \setlength{\leftmargini}{2em}
\else
%</!letter>
  \setlength{\leftmargini}{2.5em}
%<!letter>\fi
\setlength{\leftmarginii}{2.2em}
\setlength{\leftmarginiii}{1.87em}
\setlength{\leftmarginiv}{1.7em}
%<*!letter>
\if@twocolumn
  \setlength{\leftmarginv}{.5em}
  \setlength{\leftmarginvi}{.5em}
\else
%</!letter>
  \setlength{\leftmarginv}{1em}
  \setlength{\leftmarginvi}{1em}
%<!letter>\fi
\setlength{\leftmargin}{\leftmargini}
\setlength{\labelsep}{.5em}
\setlength{\labelwidth}{\leftmargini}
\addtolength{\labelwidth}{-\labelsep}
%    \end{macrocode}
% \end{Length}
% \end{Length}
% \end{Length}
% \end{Length}
% \end{Length}
% \end{Length}
% \end{Length}
% \end{Length}
% \end{Length}
%
% Weil die Gelegenheit so günstig ist, setzen wir hier auch gleich
% noch ein paar \emph{penalties} (Erlaubsnispunkte).
%    \begin{macrocode}
\@beginparpenalty=-\@lowpenalty
\@endparpenalty  =-\@lowpenalty
\@itempenalty    =-\@lowpenalty
%    \end{macrocode}
%
%
% \subsection{Verschiedene Längen für Tabellen, Arrays und Tabulatoren}
% 
% Vorbemerkung: Arrays sind im Prinzip Tabellen zur Verwendung im
% mathemathischen Modus.
%
% \begin{Length}{arraycolsep}
% \begin{Length}{tabcolsep}
% \begin{Length}{arrayrulewidth}
% \begin{Length}{doublerulewidth}
% \begin{Length}{tabbingsep}
% Bei diesen Längen handelt es sich um die Abstände der Spalten in
% \texttt{array}- und \texttt{tabular}-Umgebungen, sowie um die Breite
% und den Abstand der Trennlinien. Hinzu kommt noch der \cs{'} Abstand
% in \texttt{tabbing}-Umgebungen.
%    \begin{macrocode}
\setlength\arraycolsep{5\p@}
\setlength\tabcolsep{6\p@}
\setlength\arrayrulewidth{.4\p@}
\setlength\doublerulesep{2\p@}
\setlength\tabbingsep{\labelsep}
%    \end{macrocode}
% \end{Length}
% \end{Length}
% \end{Length}
% \end{Length}
% \end{Length}
%
%
% \subsection{Marken in Listen}
%
% \begin{macro}{\theenumi}
% \begin{macro}{\theenumii}
% \begin{macro}{\theenumiii}
% \begin{macro}{\theenumiv}
% \begin{macro}{\labelenumi}
% \begin{macro}{\labelenumii}
% \changes{v2.4m}{1997/02/28}{öffnende Klammer entsprechend Doku
%      entfernt}%^^A
% \begin{macro}{\labelenumiii}
% \begin{macro}{\labelenumiv}
% \begin{macro}{\p@enumii}
% \begin{macro}{\p@enumiii}
% \begin{macro}{\p@enumiv}
% \begin{macro}{\labelitemi}
% \changes{v2.5g}{1999/10/09}{Mathemodus eliminiert}%^^A
% \begin{macro}{\labelitemii}
% \changes{v2.5g}{1999/10/09}{\cs{textendash} verwendet}
% \begin{macro}{\labelitemiii}
% \changes{v2.5g}{1999/10/09}{Mathemodus eliminiert}%^^A
% \begin{macro}{\labelitemiv}
% \changes{v2.5g}{1999/10/09}{Mathemodus eliminiert}%^^A
% Für die numerierten Listenumgebungen müssen Marken bzw. Numerierungen
% festgelegt werden. Dazu wird eine Darstellung der Zähler, ihr Prefix
% und ihre Labeldarstellung neu definiert.
%    \begin{macrocode}
\renewcommand*\theenumi{\@arabic\c@enumi}
\renewcommand*\theenumii{\@alph\c@enumii}
\renewcommand*\theenumiii{\@roman\c@enumiii}
\renewcommand*\theenumiv{\@Alph\c@enumiv}
\newcommand*\labelenumi{\theenumi.}
\newcommand*\labelenumii{\theenumii)}
\newcommand*\labelenumiii{\theenumiii.}
\newcommand*\labelenumiv{\theenumiv.}
\renewcommand*\p@enumii{\theenumi}
\renewcommand*\p@enumiii{\p@enumii(\theenumii)}
\renewcommand*\p@enumiv{\p@enumiii\theenumiii}
\newcommand*\labelitemi{\textbullet}
\newcommand*\labelitemii{\normalfont\bfseries\textendash}
\newcommand*\labelitemiii{\textasteriskcentered}
\newcommand*\labelitemiv{\textperiodcentered}
%    \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
%
%
% \subsection{Definition der Umgebungen}
%
% \begin{environment}{description}
% Die \texttt{description}-Umgebung dient der Beschreibung von
% einzelnen Begriffen. Der Begriff aus dem optionalen Argument des
% \cs{item}-Befehls wird in einem speziellen Font, dem \cs{descfont},
% gesetzte.
%    \begin{macrocode}
\newenvironment{description}{%
  \list{}{\labelwidth\z@ \itemindent-\leftmargin
    \let\makelabel\descriptionlabel}%
}{%
  \endlist
}
\newcommand*{\descriptionlabel}[1]{%
  \hspace{\labelsep}\descfont #1%
}
%    \end{macrocode}
% \end{environment}
%
% \begin{environment}{labeling}
% \begin{macro}{\labelinglabel}
% \changes{v3.02}{2009/01/01}{Neue Elemente \texttt{labelinglabel} und
%     \texttt{labelingseparator} werden verwendet}
% \changes{v3.02c}{2009/01/28}{\texttt{labelinglabel} und
%     \texttt{labelingseparator} werden nun auch zur Berechnung der Breite
%     verwendet}
% \changes{v3.03a}{2009/04/02}{Argumente in der Berechnung der Label-Breite
%     korrigiert}%^^A
% Die \cs{labeling}-Umgebung ist eine Erweiterung des \textsf{Script}
% Pakets. Sie erwartet ein optionales und ein normales Argument. Das
% optionale Argument beschreibt einen speziellen Trenntext zwischen
% \cs{item}-Marke und \cs{item}-Beschreibung. Das eigentliche Argument
% wird für die Ermittlung der Einrückung des Beschreibungstextes
% bzw. des Trenntextes benötigt.
%    \begin{macrocode}
%</class>
\newenvironment{labeling}[2][]{%
  \def\sc@septext{#1}%
  \list{}{\settowidth{\labelwidth}{{%
        \usekomafont{labelinglabel}{#2%
          \usekomafont{labelingseparator}{\sc@septext}}%
      }}%
    \leftmargin\labelwidth \advance\leftmargin by \labelsep
    \let\makelabel\labelinglabel
  }%
}{%
  \endlist
}
\newcommand\labelinglabel[1]{%
  \usekomafont{labelinglabel}{#1\hfil
    \usekomafont{labelingseparator}{\sc@septext}}%
}
%<*class>
%    \end{macrocode}
% \end{macro}
% \end{environment}
%
% \begin{environment}{verse}
% \changes{v2.3g}{1996/01/14}{\cs{item} muss keine "`[]"'-Klammern
%      mehr verarbeiten}
% Die Verse-Umgebung ist für Zitate in Gedichtform und ähnliches
% gedacht.
%    \begin{macrocode}
\newenvironment{verse}{%
  \let\\=\@centercr
  \list{}{\itemsep=\z@
    \itemindent=-1.5em
    \listparindent=\itemindent
    \rightmargin=\leftmargin
    \advance\leftmargin by1.5em
  }%
  \item\relax
}{%
  \endlist
}
%    \end{macrocode}
% \end{environment}
%
% \begin{environment}{quotation}
% \changes{v2.3g}{1996/01/14}{\cs{item} muss keine "`[]"'-Klammern
%      mehr verarbeiten}
% \begin{environment}{quote}
% \changes{v2.3g}{1996/01/14}{\cs{item} muss keine "`[]"'-Klammern
%      mehr verarbeiten}
% Die \texttt{quotation}- und die \texttt{quote}-Umgebung erlauben
% rechts und links eingerückte Passagen. Absätze werden entweder in
% der ersten Zeile zusätzlich eingerückt oder durch vertikalen Abstand
% markiert.
%    \begin{macrocode}
\newenvironment{quotation}{%
  \list{}{\listparindent 1em%
    \itemindent    \listparindent
    \rightmargin   \leftmargin
    \parsep        \z@ \@plus\p@
  }%
  \item\relax
}{%
  \endlist
}
\newenvironment{quote}{%
  \list{}{\rightmargin\leftmargin}%
  \item\relax
}{%
  \endlist
}
%    \end{macrocode}
% \end{environment}
% \end{environment}
%
% \begin{environment}{addmargin}
% \changes{v2.8q}{2001/11/29}{neue Umgebung}%^^A
% \changes{v2.95a}{2006-07-20}{\cs{@listdepth} korrigiert}%^^A
% \begin{environment}{addmargin*}
% \changes{v2.8q}{2001/11/29}{neue Umgebung}%^^A
% \changes{v2.95a}{2006-07-20}{\cs{@listdepth} korrigiert}%^^A
% \changes{v3.17}{2015/03/23}{robuster gegen Umbrüche am Anfang}%^^A
% \changes{v3.22}{2016/08/02}{Umbruchtest nur für doppelseitige
%     Dokumente}%^^A
% Diese beiden Umgebungen ähneln \texttt{quote} und
% \texttt{quotation}. Dabei werden Absatzeinzug und Absatzabstand
% nicht verändert. Die einzige Veränderung besteht in den Rändern. Wie
% stark die Ränder verändert werden, hängt dabei von den Parametern
% ab. Ist nur der obligatorische Parameter angegeben, werden die
% Ränder auf beiden Seiten um diesen Wert vergrößert. Ist ein
% optionaler Parameter angegeben, so ist dies bei \texttt{addmargin}
% der linke und bei \texttt{addmargin*} der innere Rand. Der
% obligatorische Parameter ist dann der andere Rand. Diese
% Entscheidung ist das einzige, was die Umgebungen selbst erledigen
% müssen.
% \begin{macro}{\@addmargin}
% \changes{v2.8q}{2001/11/29}{neu (intern)}%^^A
% \changes{v2.95}{2002/07/01}{\cs{item} muss keine "`[]"'-Klammern
%     mehr verarbeiten}%^^A
% \changes{v2.9q}{2003/03/24}{\cs{labelsep} bleibt unverändert}%^^A
% \changes{v2.95a}{2006/07/20}{\cs{@tmpcnta} bleibt unverändert}%^^A
% \changes{v3.05b}{2010/04/29}{\cs{partopsep} muss auf 0 statt \cs{parskip}
%     gesetzt werden, weil es zu \cs{topsep} addiert wird}%^^A
% \changes{v3.17}{2015/03/23}{robuster gegen Umbrüche am Anfang}%^^A
% \changes{v3.28}{2019/11/19}{\cs{ifthispageodd} durch \cs{Ifthispageodd}
%   ersetzt}%^^A
% Der Rest wird von diesem Makro erledigt.
% \begin{macro}{\scr@addmargin@startpage}
% \changes{v3.12}{2013/10/26}{neu (intern, lokal)}%^^A
% \changes{v3.12}{2013/10/26}{Test auf Seitenumbruch in
%   \texttt{addmargin*}}%^^A
% \changes{v3.22}{2016/10/21}{\cs{topsep} und \cs{partopsep} werden
%   erhalten}%^^A
%    \begin{macrocode}
%</class>
\newenvironment{addmargin}{%
  \@tempswafalse\@addmargin
}{%
  \advance\@listdepth\@ne
  \endlist
}
\newenvironment{addmargin*}{%
  \@tempswafalse
  \if@twoside\is@thispageodd[]\ifthispagewasodd\else\@tempswatrue\fi
    \edef\scr@addmargin@startpage{\csname tpo@\scr@tpo\endcsname}\fi
  \@addmargin
}{%
  \if@twoside
    \unskip\nobreak\Ifthispageodd{}{}%
    \expandafter\ifx\csname tpo@\scr@tpo\endcsname\scr@addmargin@startpage\else
%<class>      \ClassWarning{\KOMAClassName}{%
%<package>    \PackageWarning{scrextend}{%
        page break inside `addmargin*' environment.\MessageBreak
        A `addmargin*' environment starting on page
        \scr@addmargin@startpage\MessageBreak
        ends on page \csname tpo@\scr@tpo\endcsname.\MessageBreak
        This will result in potential wrong margins on\MessageBreak
        every other page.\MessageBreak
        So maybe you should change the `addmargin*'\MessageBreak
        environment, that ends%
      }%
    \fi
  \fi
  \advance\@listdepth\@ne
  \endlist
}
\newcommand*{\@addmargin}[2][\@tempa]{%
  \list{}{%
    \if@tempswa
      \def\@tempa{\leftmargin}%
      \setlength{\leftmargin}{#2}%
      \setlength{\rightmargin}{#1}%
    \else
      \def\@tempa{\rightmargin}%
      \setlength{\rightmargin}{#2}%
      \setlength{\leftmargin}{#1}%
    \fi
    \setlength{\listparindent}{\parindent}%
    \setlength{\itemsep}{\parskip}%
    \setlength{\itemindent}{\z@}%
    \setlength{\@tempskipa}{\topsep}%
    \setlength{\topsep}{\z@}%
    \setlength{\parsep}{\parskip}%
    \setlength{\@tempskipb}{\partopsep}%
    \setlength{\partopsep}{\z@}%
    \let\makelabel\@gobble
    \setlength{\labelwidth}{\z@}%
    \advance\@listdepth\m@ne
  }%
  \expandafter\ifnum\scr@v@is@ge{3.22}%
    \setlength{\topsep}{\@tempskipa}%
    \setlength{\partopsep}{\@tempskipb}%
  \fi
  \item\is@thispageodd@setlabel\nobreak\ignorespaces
}
%<*class>
%    \end{macrocode}
% \end{macro}
% \end{macro}
% \end{environment}
% \end{environment}
%
%
% \subsection{Schriftarten für Listen}
%
% \begin{macro}{\descfont}
% \changes{v3.20}{2016/01/29}{\cs{sffamily} durch \cs{@gr@gsffamily}
%     ersetzt}%^^A
% Dies ist die Schriftart, in der das Label der Einträge in eine
% \texttt{description}-Umgebung gesetzt wird. Das Makro ist als intern
% zu betrachten. Anwender habe stattdessen das entsprechende Element
% zu verwenden.
%    \begin{macrocode}
\newcommand*\descfont{\@gr@gsffamily\bfseries}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\scr@fnt@descriptionlabel}
% \changes{v2.8o}{2001/09/14}{neues Element \texttt{descriptionlabel}}
% Das Element auf das \cs{descfont} angewandt wird:
%    \begin{macrocode}
\newcommand*{\scr@fnt@descriptionlabel}{\descfont}
%    \end{macrocode}
% \end{macro}
%
% \begin{KOMAfont}{labelinglabel}
% \changes{v3.02}{2009/01/01}{neues Element}%^^A
% \begin{KOMAfont}{labelingseparator}
% \changes{v3.02}{2009/01/01}{neues Element}%^^A
% Das Label einer \texttt{labeling}-Umgebung wird in eigener Schrift
% gesetzt. Innerhalb des Labels wird dann das Trennzeichen ebenfalls mit
% eigener Schrift gesetzt. Voreingestellt ist in beiden Fällen keine Änderung.
%    \begin{macrocode}
%</class>
\newkomafont{labelinglabel}{}
\newkomafont{labelingseparator}{}
%<*class>
%    \end{macrocode}
% \end{KOMAfont}
% \end{KOMAfont}
%
%
% \iffalse
%</class>
%</body>
% \fi
%
% \Finale
%
\endinput
%
% end of file `scrkernel-listsandtabulars.dtx'
%%% Local Variables:
%%% mode: doctex
%%% TeX-master: t
%%% End:
