% \CheckSum{1932}
% \iffalse meta-comment
% ======================================================================
% scrjura.dtx
% Copyright (c) Markus Kohm, 2007-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.
%
% The KOMA-Script bundle consists of all files listed in manifest.txt.
% This work `scrjura' consists of the files `scrjura.dtx' and 
% `scrlogo.dtx'.
% ----------------------------------------------------------------------
% scrjura.dtx
% Copyright (c) Markus Kohm, 2007-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.
%
% Das KOMA-Script-Paket besteht aus allen Dateien, die in manifest.txt
% genannt sind.
% Das Werk `scrjura' besteht aus den Dateien `scrjura.dtx' und
% `scrlogo.dtx'.
% ======================================================================
% \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^^A meta-comment
%%% From File: $Id: scrjura.dtx 3262 2019-10-10 08:25:29Z kohm $
%<identify>%%%            (run: identify)
%<init>%%%            (run: init)
%<options>%%%            (run: options)
%<postoptions>%%%            (run: postoptions)
%<body>%%%            (run: body)
%<final>%%%            (run: final)
%<*dtx>
\begingroup
  \def\filedate$#1: #2-#3-#4 #5${\gdef\filedate{#2/#3/#4}}
  \filedate$Date: 2019-10-10 10:25:29 +0200 (Thu, 10 Oct 2019) $
  \def\filerevision$#1: #2 ${\gdef\filerevision{r#2}}
  \filerevision$Revision: 1962 $
\endgroup
\def\LaTeXformat{LaTeX2e}
\ifx\fmtname\LaTeXformat\def\MainBodyWork{%
\ProvidesFile{scrjura.dtx}[\filedate\space\filerevision\space
%</dtx>
%<package&identify>\NeedsTeXFormat{LaTeX2e}[1995/06/01]
%<package&identify>\ProvidesPackage{scrjura}[%
%<*dtx|(package&identify)>
%!KOMAScriptVersion
  package
%<*dtx>
  source
%</dtx>
  (for jurists)
]
%</dtx|(package&identify)>
%<*dtx>
\IfFileExists{scrdoc.cls}{%
  \documentclass[parskip=half-]{scrdoc}
}{%
  \documentclass{ltxdoc}
}
\providecommand*{\DescribeOption}{\DescribeMacro}
\providecommand*{\DescribeCounter}{\DescribeMacro}
\usepackage[ngerman]{babel}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\IfFileExists{scrjura.sty}{%
  \usepackage{scrjura}
}{}
\CodelineIndex
\RecordChanges
\GetFileInfo{scrjura.dtx}
\DocInput{\filename}
\end{document}
%</dtx>
%<*dtx>
}\else\let\MainBodyWork\relax\fi

\MainBodyWork

\def\batchfile{scrjura.dtx}
%</dtx>
%<ins>\def\batchfile{scrjura.ins}
%<*dtx|ins>
\input scrdocstrip.tex
\@@input scrkernel-version.dtx
\@@input scrstrip.inc
\KOMAdefVariable{COPYRIGHTFROM}{2007}

% ---------- File generation -------------------------------------------

\generate{\usepreamble\defaultpreamble
  \file{scrjura.ins}{%
    \from{scrjura.dtx}{ins}%
  }%
  \file{scrjura.sty}{%
    \from{scrjura.dtx}{package,identify}%
    \from{scrjura.dtx}{package,init}%
    \from{scrjura.dtx}{package,options}%
    \from{scrjura.dtx}{package,postoptions}%
    \from{scrjura.dtx}{package,body}%
    \from{scrjura.dtx}{package,final}%
    \from{scrlogo.dtx}{logo}%
  }%
}%

% ---------- end of docstrip process -----------------------------------

\@@input scrstrop.inc

\let\byebye\endinput
\ifToplevel{\expandafter\let\expandafter\byebye\csname bye\endcsname}
\byebye

%</dtx|ins>
% \fi
%
% \title{\KOMAScript{} \partname\ \texttt{\filename}%
%   \thanks{Diese Datei ist Version \fileversion\ von \texttt{\filename}.}}
% \date{\filedate}
% \author{Markus Kohm\thanks{Paketautor, mailto:komascript(at)gmx.info}\and
%   Dr.\,Alexander
% Willand\thanks{Autor der Anleitung, mailto:alexander.willand(klammeraffe)t-online.de}}
% \begin{document}
% \maketitle
% \begin{abstract}
%   Das scrjura-Paket ist für die Kautelarjurisprudenz gedacht.  Es soll für
%   Anwälte und Notare eine flexible Hilfe bei der Abfassung von Verträgen,
%   Satzungen und juristischen Kommentaren bieten.  Es ist in Zusammenarbeit
%   mit Dr.\,Alexander Willand entstanden, bzw. noch immer in Entstehung
%   begriffen.
% \end{abstract}
%
%
% \StopEventually{\PrintIndex\PrintChanges}
%
% \section{Implementierung}
%
% \iffalse
%<*package>
% \fi
%
% \changes{v0.7b}{2014/11/11}{Generelle Umbenennung von "`Paragraph"' in
%   "`Clause"' für alle Befehle, Zähler und Optionen}%^^A
%
%    \begin{macrocode}
%<*init>
\@ifpackageloaded{hyperref}{%
  \PackageError{scrjura}{Package hyperref already loaded}{%
    If you want to use package scrjura with package hyperref, you have to
    use\MessageBreak
    package scrjura before package hyperref.\MessageBreak
    To solve the problem, you just should move the loading of package
    hyperref\MessageBreak
    behind the loading of package scrjura.}%
}
%</init>
%    \end{macrocode}
%
% Es wird das Paket \textsf{scrkbase} benötigt, weil alles weitere darauf
% aufbaut.
%    \begin{macrocode}
%<*init>
\RequirePackage{scrkbase}[2013/03/26]
%</init>
%    \end{macrocode}
%
% Außerdem wird \textsf{tocbasic} benötigt, weil einige wenige Befehle davon
% verwendet werden.
%    \begin{macrocode}
%<*init>
\RequirePackage{tocbasic}
%</init>
%    \end{macrocode}
%
% \begin{option}{contract}
%   Mit der Option |contract| wird das gesamte Dokument zu einem Vertrag. Man
%   darf dann keine der von diesem Paket bereit gestellten Umgebungen mehr
%   innerhalb des Dokuments verwenden! Realisiert wird dies, indem ganz am
%   Ende von |\begin{document}| noch |\contract| ausgeführt wird.
%    \begin{macrocode}
%<*options>
\DeclareOption{contract}{%
  \g@addto@macro\document\contract%
}
%</options>
%    \end{macrocode}
% \end{option}
%
% \begin{option}{juratotoc}
% Mit dieser Option wird die Verzeichnisebene für Inhaltsverzeichniseinträge
% auf einen gewünschten Wert oder 2 oder 10000 gesetzt.
% \changes{v0.7}{2013/11/04}{Verwendung der renovierten Schnittstelle mit
%   \cs{FamilyKeyState}}%^^A
% \changes{v0.9a}{2015/03/09}{Wert wird in der internen Liste erfasst}%^^A
% \begin{macro}{\if@juratotoc}
% \changes{v0.6}{2011/09/29}{Schalter durch Zähler überflüssig}
% \begin{Counter}{juratoclevel}
% \changes{v0.6}{2011/09/29}{Zählerdefinition verschoben}%^^A
% \changes{v3.27}{2019/02/25}{Zähler entfernt}%^^A
% \begin{macro}{\toclevel@cpar}
% \changes{v0.7}{2013/06/09}{neue für \textsf{hyperref}}%^^A
% \changes{v3.27}{2019/02/25}{wird von \textsf{tocbasic} erledigt}%^^A
%    \begin{macrocode}
%<*options>
\KOMA@key{juratotoc}[true]{%
  \KOMA@set@ifkey{juratotoc}{@tempswa}{#1}%
  \ifx\FamilyKeyState\FamilyKeyStateProcessed
    \if@tempswa
      \DeclareTOCStyleEntry[level=2]{default}{cpar}%
    \else
      \DeclareTOCStyleEntry[level=\maxdimen]{default}{cpar}%
    \fi
  \else
    \DeclareTOCStyleEntry[level=#1]{default}{cpar}%
  \fi
  \KOMA@kav@xreplacevalue{.scrjura.sty}{juratotoc}{\cpartocdepth}%
}
\KOMA@kav@xadd{.scrjura.sty}{juratotoc}{\cpartocdepth}%
%</options>
%    \end{macrocode}
% \end{macro}
% \end{Counter}
% \end{macro}
% \end{option}
%
% \begin{option}{juratocnumberwidth}
% \changes{v0.6}{2011/09/29}{neu}%^^A
% \changes{v0.7}{2013/11/04}{Verwendung der renovierten Schnittstelle mit
%     \cs{FamilyKeyStateProcessed}}%^^A
% \changes{v0.9a}{2015/03/09}{Wert wird in der internen Liste erfasst}%^^A
% \begin{option}{juratocindent}
% \changes{v0.6}{2011/09/29}{neu}%^^A
% \changes{v0.7}{2013/11/04}{Verwendung der renovierten Schnittstelle mit
%     \cs{FamilyKeyStateProcessed}}%^^A
% \changes{v0.9a}{2015/03/09}{Wert wird in der internen Liste erfasst}%^^A
% \begin{macro}{\cpar@numberwidth}
% \changes{v0.6}{2011/09/29}{neu (intern)}%^^A
% \changes{v3.27}{2019/02/25}{ersetzt durch Verwendung von
%   \cs{DeclareTOCStyleEntry}}%^^A
% \begin{macro}{\cpar@indent}
% \changes{v0.6}{2011/09/29}{neu (intern)}
% \changes{v3.27}{2019/02/25}{ersetzt durch Verwendung von
%   \cs{DeclareTOCStyleEntry}}%^^A
% Der Einzug und die Breite der Nummer für Inhaltsverzeichniseinträge kann
% über diese beiden Optionen bestimmt werden.
%    \begin{macrocode}
%<*options>
\KOMA@key{juratocnumberwidth}{%
  \DeclareTOCStyleEntry[numwidth=#1]{default}{cpar}%
  \FamilyKeyStateProcessed
  \KOMA@kav@replacevalue{.scrjura.sty}{juratocnumberwidth}{#1}%
}
\KOMA@kav@add{.scrjura.sty}{juratocnumberwidth}{2em}
\KOMA@key{juratocindent}{%
  \DeclareTOCStyleEntry[indent=#1]{default}{cpar}%
  \FamilyKeyStateProcessed
  \KOMA@kav@replacevalue{.scrjura.sty}{juratocindent}{#1}%
}
\KOMA@kav@add{.scrjura.sty}{juratocindent}{1.5em}%
%</options>
%    \end{macrocode}
% \end{macro}
% \end{macro}
% \end{option}
% \end{option}
%
% \begin{option}{juratitlepagebreak}
% \changes{v0.5b}{2010/04/05}{neue Option}
%   Mit dieser Option wird der Schalter |\if@juratitlepagebreak| auf |\iftrue|
%   gesetzt.
% \begin{macro}{\if@juratitlepagebreak}
%   Mit diesem Schalter wiederum wird erreicht, dass in den Überschriften von
%   Paragraphen ein Seitenumbruch erlaubt wird.
%    \begin{macrocode}
%<*options>
\KOMA@ifkey{juratitlepagebreak}{@juratitlepagebreak}
%</options>
%    \end{macrocode}
% \end{macro}
% \end{option}
%
% \begin{option}{parnumber}
% \changes{v0.6}{2011/09/29}{neue Option}%^^A
% \changes{v0.6a}{2012/10/15}{Meldung bei falschen Werten korrigiert}%^^A
% \changes{v0.7}{2013/11/04}{Verwendung der renovierten Schnittstelle mit
%     \cs{FamilyKeyStateProcessed}}%^^A
% \changes{v0.9a}{2015/03/09}{Wert wird in der internen Liste erfasst}%^^A
% Die (automatische) Absatznummerierung lässt sich nun auch per Option ein-
% und ausschalten.
%    \begin{macrocode}
%<*options>
\newif\ifparnumber
\KOMA@key{parnumber}[true]{%
  \ifstr{#1}{auto}{%
    \AutoPar
    \FamilyKeyStateProcessed
    \KOMA@kav@remove{.scrjura.sty}{parnumber}{manual}%
    \KOMA@kav@remove{.scrjura.sty}{parnumber}{auto}%
    \KOMA@kav@add{.scrjura.sty}{parnumber}{auto}%
  }{%
    \ifstr{#1}{manual}{%
      \ManualPar
      \FamilyKeyStateProcessed
      \KOMA@kav@remove{.scrjura.sty}{parnumber}{manual}%
      \KOMA@kav@remove{.scrjura.sty}{parnumber}{auto}%
      \KOMA@kav@add{.scrjura.sty}{parnumber}{manual}%
    }{%
      \KOMA@set@ifkey{parnumber}{parnumber}{#1}%
      \KOMA@kav@replacebool{.scrjura.sty}{parnumber}{parnumber}%
    }%
  }%
}
\KOMA@kav@add{.scrjura.sty}{parnumber}{true}
\KOMA@kav@add{.scrjura.sty}{parnumber}{auto}
%</options>
%    \end{macrocode}
% \end{option}
%
% \begin{option}{clausemark}
% \changes{v0.9h}{2016/04/11}{\texttt{paragraphmark} umbenannt in
%     \texttt{clausemark}}%^^A
% \begin{option}{paragraphmark}
% \changes{v0.7}{2013/11/04}{Verwendung der renovierten Schnittstelle mit
%     \cs{FamilyKeyStateProcessed}}%^^A
% \changes{v0.9a}{2015/03/09}{Wert wird in der internen Liste erfasst}%^^A
% \begin{option}{markright}
% \begin{option}{markboth}
% \begin{macro}{\Clausemark}
% \changes{v0.5e}{2011/08/31}{Beachtung von \cs{MakeMarkcase}}
% Mit diesen Optionen wird |\Clausemark| so umdefiniert, dass es entweder
% ein |\markright| oder ein |\markboth| ausführt. Im Gegensatz zu
% |\chaptermark| etc. erwartet |\Clausemark| neben dem Titel auch noch
% die zu verwendende Nummer (das könnte bei Bedarf noch geändert werden!)
%    \begin{macrocode}
%<*options>
\newcommand*{\Clausemark}[1]{}
\KOMA@key{clausemark}{%
  \begingroup
    \KOMA@set@ncmdkey{clausemark}{@tempa}{%
      {false}{0},{off}{0},{no}{0},%
      {forceright}{1},%
      {forceboth}{2},%
      {right}{3},%
      {both}{4}%
    }{#1}%
  \ifx\FamilyKeyState\FamilyKeyStateProcessed
    \ifcase\number\@tempa
      \endgroup
      \let\Clausemark\@gobble
    \or
      \endgroup
      \renewcommand*{\Clausemark}[1]{%
        \markright{\csname MakeMarkcase\endcsname{##1}}}%
    \or
      \endgroup
      \renewcommand*{\Clausemark}[1]{%
        \markboth{\csname MakeMarkcase\endcsname{##1}}%
                 {\csname MakeMarkcase\endcsname{##1}}}%
    \or
      \endgroup
      \renewcommand*{\Clausemark}[1]{%
        \ifx
          \@mkboth\@gobbletwo
        \else
          \markright{\csname MakeMarkcase\endcsname{##1}}%
        \fi}%
    \or
      \endgroup
      \renewcommand*{\Clausemark}[1]{%
        \@mkboth{\csname MakeMarkcase\endcsname{##1}}%
                {\csname MakeMarkcase\endcsname{##1}}}%
    \else
      \endgroup
    \fi
    \FamilyKeyStateProcessed
  \else
    \endgroup
    \FamilyKeyStateUnknownValue
  \fi
  \KOMA@kav@xreplacevalue{.scrjura.sty}{clausemark}{#1}%
}
\KOMA@kav@add{.scrjura.sty}{clausemark}{false}
\KOMA@DeclareDeprecatedOption[scrjura]{markright}{clausemark=forceright}
\KOMA@DeclareDeprecatedOption[scrjura]{markboth}{clausemark=forceboth}
\KOMA@key{paragraphmark}{%
  \PackageWarningNoLine{scrjura}{%
    You've used obsolete option `paragraphmark'.\MessageBreak
    Usage of this option is deprecated.\MessageBreak
    You should simply replace `paragraphmark'\MessageBreak
    by `clausemark'%
  }%
  \KOMAExecuteOptions[.scrjura.sty]{clausemark=#1}%
}
%</options>
%    \end{macrocode}
% \end{macro}
% \end{option}
% \end{option}
% \end{option}
% \end{option}
%
% \begin{option}{ref}
% \changes{v0.5d}{2010/06/07}{neue Einstellungen \texttt{nopar},
%     \texttt{nosentence}, \texttt{OnlyParagraph}}%^^A
% \changes{v0.7}{2013/11/04}{Verwendung der renovierten Schnittstelle mit
%     \cs{FamilyKeyStateProcessed}}%^^A
% \changes{v0.9a}{2015/03/09}{Wert wird in der internen Liste erfasst}%^^A
% \begin{option}{parcitename}
% \begin{option}{sentencecitename}
% Die Form, in der Absätze und Sätze referenziert werden. Es gibt eine lange,
% eine abgekürzte und eine nummerische Form.
%
% \begin{macro}{\parcite@fromat}
% \begin{macro}{\sentencecite@fromat}
% In der Voreinstellung wird das lange Format verwendet. Es gilt:
% 0 = lang, 1 = kurz, 2 = numerisch, -1 = gar nicht
%    \begin{macrocode}
%<*options>
\newcommand*{\parcite@format}{0}
\newcommand*{\sentencecite@format}{0}
%    \end{macrocode}
% \end{macro}
% \end{macro}
%
% Per Option kann die Voreinstellung verändert werden.
%    \begin{macrocode}
\KOMA@key{ref}{%
  \begingroup
    \KOMA@set@ncmdkey{ref}{@tempa}{%
      {parlong}{1},{longpar}{1},{ParL}{1},%
      {parshort}{2},{shortpar}{2},{ParS}{2},%
      {parnumeric}{3},{numericpar}{3},{ParN}{3},%
      {paroff}{4},{nopar}{4},%
      {sentencelong}{10},{longsentence}{10},{SentenceL}{10},%
      {sentenceshort}{20},{shortsentence}{20},{SentenceS}{20},%
      {sentencenumeric}{30},{numericsentence}{30},{SentenceN}{30},%
      {sentenceoff}{40},{nosentence}{40},%
      {long}{11},%
      {short}{22},%
      {numeric}{33},%
      {paragraphonly}{44},{onlyparagraph}{44},%
      {ParagraphOnly}{44},{OnlyParagraph}{44}%
    }{#1}%
    \ifx\FamilyKeyState\FamilyKeyStateProcessed
      \aftergroup\FamilyKeyStateProcessed
      \@tempcnta=\@tempa\relax
      \@tempcntb=\z@
      \@whilenum \@tempcnta>9 \do{%
        \advance\@tempcnta -10\relax
        \advance\@tempcntb \@ne\relax
      }%
      \ifcase \@tempcnta
      \or
        \aftergroup\def\aftergroup\parcite@format
        \aftergroup{\aftergroup0\aftergroup}%
      \or
        \aftergroup\def\aftergroup\parcite@format
        \aftergroup{\aftergroup1\aftergroup}%
      \or
        \aftergroup\def\aftergroup\parcite@format
        \aftergroup{\aftergroup2\aftergroup}%
      \or
        \aftergroup\def\aftergroup\parcite@format
        \aftergroup{\aftergroup-\aftergroup1\aftergroup}%
      \fi
      \ifcase \@tempcntb
      \or
        \aftergroup\def\aftergroup\sentencecite@format
        \aftergroup{\aftergroup0\aftergroup}%
      \or
        \aftergroup\def\aftergroup\sentencecite@format
        \aftergroup{\aftergroup1\aftergroup}%
      \or
        \aftergroup\def\aftergroup\sentencecite@format
        \aftergroup{\aftergroup2\aftergroup}%
      \or
        \aftergroup\def\aftergroup\sentencecite@format
        \aftergroup{\aftergroup-\aftergroup1\aftergroup}%
      \fi
    \else
      \aftergroup\FamilyKeyStateUnknownValue
    \fi
  \endgroup
  \ifx\FamilyKeyState\FamilyKeyStateProcessed
    \KOMA@kav@removekey{.scrjura.sty}{ref}%
    \ifcase\parcite@format
      \KOMA@kav@add{.scrjura.sty}{ref}{parlong}%
    \or
      \KOMA@kav@add{.scrjura.sty}{ref}{parshort}%
    \or
      \KOMA@kav@add{.scrjura.sty}{ref}{parnumeric}%
    \or
      \KOMAQkav@add{.scrjura.sty}{ref}{paroff}%
    \fi
    \ifcase\sentencecite@format
      \KOMA@kav@add{.scrjura.sty}{ref}{sentencelong}%
    \or
      \KOMA@kav@add{.scrjura.sty}{ref}{sentenceshort}%
    \or
      \KOMA@kav@add{.scrjura.sty}{ref}{sentencenumeric}%
    \or
      \KOMA@kav@add{.scrjura.sty}{ref}{sentenceoff}%
    \fi
  \fi
}
\KOMA@kav@add{.scrjura.sty}{ref}{parlong}%
\KOMA@kav@add{.scrjura.sty}{ref}{sentencelong}%
\KOMA@DeclareDeprecatedOption[scrjura]{parcitename}{ref=parlong}
\KOMA@DeclareDeprecatedOption[scrjura]{sentencecitename}{ref=sentencelong}
%</options>
%    \end{macrocode}
% \end{option}
% \end{option}
% \end{option}
%
% Optionen ausführen.
%    \begin{macrocode}
%<*postoptions>
\KOMAProcessOptions\relax
%</postoptions>
%    \end{macrocode}
%
% \begin{macro}{\Paragraph}
% \changes{1.0}{2014/11/22}{wird noch ein paar Versionen einen Fehler
%     melden}%^^A
% \begin{macro}{\SubParagraph}
% \changes{1.0}{2014/11/22}{wird noch ein paar Versionen einen Fehler
%     melden}%^^A
% \begin{macro}{\refParagraph}
% \changes{1.0}{2014/11/22}{wird noch ein paar Versionen einen Fehler
%     melden}%^^A
% \begin{macro}{\refParagraphN}
% \changes{1.0}{2014/11/22}{wird noch ein paar Versionen einen Fehler
%     melden}%^^A
% \begin{macro}{\DeprecatedParagraph}
% \changes{1.0}{2014/11/22}{wird noch ein paar Versionen einen Fehler
%     melden}%^^A
% \begin{macro}{\ParagraphCompatibilityHacks}
% \changes{1.0}{2014/11/22}{wird noch ein paar Versionen verbleiben}%^^A
%    \begin{macrocode}
%<*body>
\providecommand*{\DeprecatedParagraph}{%
  \PackageError{scrjura}{modification of old document needed}{%
    It seem that this document was made for scrjura up to version
    0.7a.\MessageBreak
    Since scrjura version 0.9 \string\Paragraph, \string\SubParagraph, and all
    depending\MessageBreak
    commands, options, and counters have been renamed.\MessageBreak
    You should replace the terms `Paragraph' and `paragraph` by `Clause`
    and\MessageBreak
    `clause` if they are part of the name of a scrjura feature, otherwise
    this\MessageBreak
    document may produce severall additional error messages and maybe the
    wrong\MessageBreak
    result. Sorry for the inconvenience.%
  }%
  \ParagraphCompatibilityHacks
}
\newcommand*{\ParagraphCompatibilityHacks}{%
  \PackageWarning{scrjura}{compatibility hacks for `\string\Paragraph'
    executed.\MessageBreak
    There is no support for documents using these hacks!\MessageBreak
    There is no warranty for real compatibility!\MessageBreak
    Even if the LaTeX run of the document doesn't report\MessageBreak
    any error, the result may be completely wrong.\MessageBreak
    Therefore it is recommended to solve the problem,\MessageBreak
    instead of trying to work around using the\MessageBreak
    compatibility hacks%
  }%
  \gdef\Paragraph{\Clause}%
  \gdef\SubParagraph{\SubClause}%
  \gdef\c@Paragraph{\c@Clause}%
  \gdef\cl@Paragraph{\cl@Clause}%
  \gdef\c@SubParagraph{\c@SubClause}%
  \gdef\cl@SubParagraph{\cl@SubClause}%
  \gdef\theParagraph{\theClause}%
  \gdef\theSubParagraph{\theSubClause}%
  \gdef\refParagraph{\refClause}%
  \gdef\refParagraphN{\refClauseN}%
  \aliaskomafont{Paragraph}{Clause}%
  \scr@ifundefinedorrelax{Paragraphmark}{}{%
    \global\let\Clausemark\Paragraphmark
  }%
}
\providecommand*{\Paragraph}{\DeprecatedParagraph\Paragraph}
\providecommand*{\SubParagraph}{\DeprecatedParagraph\SubParagraph}
\providecommand*{\refParagraph}{\DeprecatedParagraph\refParagraph}
\providecommand*{\refParagraphN}{\DeprecatedParagraph\refParagraphN}
%</body>
%    \end{macrocode}
% \end{macro}%^^A \ParagraphCompatibilityHacks
% \end{macro}%^^A \DeprecatedParagraph
% \end{macro}%^^A \refParagraphN
% \end{macro}%^^A \refParagraph
% \end{macro}%^^A \SubParagraph
% \end{macro}%^^A \Paragraph
%
% \begin{macro}{\scrjura@env@type}
% \changes{v0.5d}{2010/04/28}{neu (intern)}%^^A
% \changes{v0.7b}{2014/11/03}{\cs{jura@env@type} umbenannt}%^^A
% Dieses Makro wird in Abhängigkeit der gerade aktiven
% \textsf{scrjura}-Umgebung definiert.
%    \begin{macrocode}
%<*body>
\newcommand*{\scrjura@env@type}{}
%</body>
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\ellipsispar}
% \changes{v0.7}{2013/05/02}{neu}%^^A
% \changes{v0.7b}{2014/11/03}{\cs{thecontractAbsoluteClause}
%     flexibilisiert}%^^A
% \begin{macro}{\parellipsis}
% \changes{v0.7}{2013/05/02}{neu}%^^A
% \changes{v0.9g}{2016/03/25}{in die \texttt{aux}-Datei nur bei
%     \cs{if@filesw} schreiben}%^^A
% Paragraphen auslassen aber mit zählen.
%    \begin{macrocode}
%<*body>
\newcommand*{\ellipsispar}[1][1]{%
  \begingroup
    \KOMAoptions{parnumber=manual}\parellipsis\par
    \addtocounter{par}{#1}%
    \if@filesw
      \protected@write\@auxout{}{%
        \string\newmaxpar{\scrjura@env@type}%
                         {\csname the\scrjura@env@type 
                           AbsoluteClause\endcsname}%
                         {\thepar}%
      }%
    \fi
  \endgroup
  \addtocounter{par}{-1}\refstepcounter{par}%
  \ignorespaces
}
\newcommand*{\parellipsis}{%
  \scr@ifundefinedorrelax{textellipsis}{\dots}{\textellipsis}%
}
%</body>
%    \end{macrocode}
% \end{macro}
% \end{macro}
%
% \begin{environment}{contract}
% \begin{macro}{\contract}
% \changes{v0.5d}{2010/04/28}{fehlende Fehlermeldung ergänzt}%^^A
% \changes{v0.5d}{2010/04/28}{Umgebung definiert sich nicht mehr selbst
%     um}%^^A
% \changes{v0.5d}{2010/04/28}{\cs{jura@env@type} wird gesetzt}%^^A
% \begin{Counter}{contractClause}
% \begin{macro}{\thecontractClause}
% \changes{v0.9b}{2015/05/01}{muss unbedingt den Zähler \texttt{Clause}
%     statt \texttt{contractClause} verwenden}%^^A
% \begin{macro}{\contract@Clauseformat}
% \begin{macro}{\Clauseformat}
% \changes{v0.6b}{2013/04/16}{\cs{paragraphformat} umdefiniert}%^^A
% \begin{Counter}{contractSubClause}
% \changes{v0.9b}{2015/05/01}{muss unbedingt den Zähler \texttt{SubClause}
%     statt \texttt{contractSubClause} verwenden}%^^A
% \begin{macro}{\thecontractSubClause}
% \begin{Counter}{contractAbsoluteClause}
% \changes{v0.7}{2013/04/18}{neuer (interner) Zähler über alle Paragraphen,
%     um ggf. die Zählung neu beginnen zu können}%^^A
% Die Umgebung \texttt{contract} wird als Anweisung \cs{contract}
% definiert. Nichts desto trotz handelt es sich dabei um eine Umgebung und
% sollte sie immer als Umgebung verwendet werden!
% Die Umgebung kann nicht geschachtelt werden. Sie darf aber enden und dann
% erneut verwendet werden. Die Paragraphen werden jedoch über alle Verträge
% hinweg nummeriert. Das Ende eines Vertrags ist also genau genommen nur eine
% Unterbrechung.
%    \begin{macrocode}
%<*body>
\newcommand*{\contract}{%
  \ifx\scrjura@env@type\@empty
    \let\@doendpe\scrjura@doendpe
    \let\Clause\contract@paragraph
    \let\c@Clause\c@contractClause
    \edef\cl@Clause{\cl@Clause\cl@contractClause}%
    \let\SubClause\contract@subparagraph
    \let\c@SubClause\c@contractSubClause
    \edef\cl@SubClause{\cl@SubClause\cl@contractSubClause}%
    \let\Sentence\contract@sentence
    \renewcommand*{\scrjura@env@type}{contract}%
    \aliaskomafont{Clause}{contract.Clause}%
  \else
    \PackageError{scrjura}{nested `contract` detected}{%
      You may not use a `contract' environment inside\MessageBreak
      a `\scrjura@env@type' environment or after loading\MessageBreak
      package `scrjura' with option `\scrjura@env@type'!}%
  \fi
}
\let\if@scrjura@skiphyperref\iftrue
\let\cl@Clause\@empty
\let\cl@SubClause\@empty
\newcounter{contractClause}
\renewcommand*{\thecontractClause}{%
  {\contract@Clauseformat{\arabic{Clause}}}}
\DeclareRobustCommand*{\contract@Clauseformat}[1]{\Clauseformat{#1}}
\newcommand*{\Clauseformat}[1]{\S~#1}
\newcounter{contractSubClause}
\@addtoreset{SubClause}{Clause}
\renewcommand*{\thecontractSubClause}{%
  {\theClause\alph{SubClause}}}
\newcounter{contractAbsoluteClause}
%</body>
%    \end{macrocode}
% \end{Counter}
% \end{macro}
% \end{Counter}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{Counter}
% \end{macro}
% \end{environment}
%
% \begin{macro}{\DeclareNewJuraEnvironment}
% \changes{v0.9}{2014/11/12}{Neue Anweisung}
% \changes{v0.9h}{2016/04/12}{\cs{@ifnextchar} replaced by
%     \cs{kernel@ifnextchar}}%^^A
% Verwendet \cs{@defjuraenvironment} um eine neue juristische Umgebung zu
% definieren.
%    \begin{macrocode}
%<*body>
\newcommand*{\DeclareNewJuraEnvironment}[1]{%
  \@ifundefined{#1}{\expandafter\let\csname #1\expandafter\endcsname
    \csname end#1\endcsname}{}%
  \@ifundefined{#1}{\let\reserved@defjuraenvironment\@defjuraenvironment}{%
    \PackageError{scrjura}{ignorring declaration of `#1'}{%
      You've tried to declare jura environment `#1', but
      environment\MessageBreak
      `#1' or command
      \expandafter\string\csname #1\endcsname\space or
      \expandafter\string\csname end#1\endcsname\MessageBreak
      already exists.\MessageBreak
      Declaration will be ignored}%
    \long\def\reserved@defjuraenvironment##1[##2]##3##4{}%
  }%
  \kernel@ifnextchar [%]
    {\reserved@defjuraenvironment{#1}}{\reserved@defjuraenvironment{#1}[]}%
}
\@onlypreamble\DeclareNewJuraEnvironment
%    \end{macrocode}
% \begin{macro}{\@defjuraenvironment}
% \changes{v0.9}{2014/11/04}{Neue (interne) Anweisung}%^^A
% \changes{v3.25}{2017/12/08}{neue Option \texttt{ClauseFont}}%^^A
% \changes{v3.25}{2017/12/08}{\cs{reserved@defjuraenvironment} wird wieder
%   \cs{relax}}%^^A
% \changes{v3.25}{2017/12/08}{Umstellung von globalen auf lokale Optionen}%^^A
% Diese Anweisung dient dazu, weitere Umgebungen einfach definieren zu können.
% Dabei werden optional diverse Optionen unterstützt. Näheres ist der
% Anleitung zu entnehmen.
%    \begin{macrocode}
\DefineFamily{KOMAarg}
\DefineFamilyMember{KOMAarg}
\newcommand{\@defjuraenvironment}{}
\long\def\@defjuraenvironment#1[#2]#3#4{%
  \let\reserved@defjuraenvironment\relax
%    \end{macrocode}
% Die Zähler definieren:
%    \begin{macrocode}
  \newcounter{#1Clause}%
  \newcounter{#1AbsoluteClause}%
  \newcounter{#1SubClause}%
  \FamilyCSKey[.scrjura.sty]{KOMAarg}{Clause}{#1@Clause}%
  \FamilyCSKey[.scrjura.sty]{KOMAarg}{SubClause}{#1@SubClause}%
  \FamilyCSKey[.scrjura.sty]{KOMAarg}{Sentence}{#1@Sentence}%
  \DefineFamilyKey[.scrjura.sty]{KOMAarg}{ClauseNumberFormat}{%
    \expandafter\def\csname #1@Clauseformat \endcsname####1{##1{####1}}%
    \expandafter\edef\csname #1@Clauseformat\endcsname{%
      \noexpand\protect\expandafter\noexpand\csname #1@Clauseformat \endcsname
    }%
    \FamilyKeyStateProcessed
  }
  \DefineFamilyKey[.scrjura.sty]{KOMAarg}{ClauseFont}{%
    \IfExistskomafont{#1.Clause}{%
      \IfIsAliaskomafont{#1.Clause}{%
        \expandafter\let\csname scr@fnt@instead@#1.Clause\endcsname\relax
        \newkomafont{#1.Clause}{##1}%
      }{\setkomafont{#1.Clause}{##1}}%
    }{%
      \newkomafont{#1.Clause}{##1}%
    }%
  }
  \FamilyExecuteOptions[.scrjura.sty]{KOMAarg}{#2}%
  \RelaxFamilyKey[.scrjura.sty]{KOMAarg}{ClauseFont}%
  \RelaxFamilyKey[.scrjura.sty]{KOMAarg}{ClauseNumberFormat}%
  \RelaxFamilyKey[.scrjura.sty]{KOMAarg}{Sentence}%
  \RelaxFamilyKey[.scrjura.sty]{KOMAarg}{SubClause}%
  \RelaxFamilyKey[.scrjura.sty]{KOMAarg}{Clause}%
  \@ifundefined{#1@Clauseformat}{%
    \expandafter\DeclareRobustCommand\expandafter*%
    \csname #1@Clauseformat\endcsname[1]{\Clauseformat{##1}}%
  }{}%
%    \end{macrocode}
% \changes{v0.9c}{2015/05/13}{\cs{the\dots Clause} definiert}%^^A
% \changes{v0.9f}{2016/02/24}{\cs{protect}\cs{\@nameuse} statt
%     \cs{csname}\dots\cs{endcsname}}%^^A
%    \begin{macrocode}
  \expandafter\renewcommand\expandafter*\csname the#1Clause\endcsname{%
    \protect\@nameuse{#1@Clauseformat}{\arabic{#1Clause}}}%
%    \end{macrocode}
% Umgebung:
%    \begin{macrocode}
  \newenvironment{#1}{%
    \par
    \ifx\scrjura@env@type\@empty
      \edef\scrjura@env@type{#1}%
      \let\@doendpe\scrjura@doendpe
      \expandafter\let\expandafter\c@Clause\csname c@#1Clause\endcsname
      \edef\cl@Clause{\cl@Clause\csname cl@#1Clause\endcsname}%
      \expandafter\let\expandafter\c@SubClause
        \csname c@#1SubClause\endcsname
      \edef\cl@SubClause{\cl@SubClause
        \csname cl@#1SubClause\endcsname}%
      \@ifundefined{#1@Clause}{%
        \let\Clause\contract@paragraph
      }{%
        \expandafter\let\expandafter\Clause
        \csname #1@Clause\endcsname
      }%
      \@ifundefined{#1@SubClause}{%
        \let\SubClause\contract@subparagraph
      }{%
        \expandafter\let\expandafter\SubClause
        \csname #1@SubClause\endcsname
      }%
      \@ifundefined{#1@Sentence}{%
        \let\Sentence\contract@sentence
      }{%
        \expandafter\let\expandafter\Sentence\csname #1@Sentence\endcsname
      }%
      \@ifundefined{\scrjura@env@type @everypar}{%
        \expandafter\let
        \csname \scrjura@env@type @everypar\endcsname
        \contract@everypar
      }{}%
%    \end{macrocode}
% Jetzt wird noch ein Font-Alias für \texttt{Clause} gesetzt. Ist kein Font
% und kein Alias-Font für die neue Umgebung definiert, so wird
% \texttt{contract.Clause} verwendet.
% \changes{v3.25}{2017/12/08}{Fontalias korrigiert}%^^A
%    \begin{macrocode}
      \IfExistskomafont{#1.Clause}{%
        \IfIsAliaskomafont{#1.Clause}{%
          \aliaskomafont{Clause}{\csname scr@fnt@instead@#1.Clause\endcsname}%
        }{%
          \aliaskomafont{Clause}{#1.Clause}%
        }%
      }{%
        \aliaskomafont{Clause}{contract.Clause}%
      }%
      #3%
    \else
      \PackageError{scrjura}{nested scrjura environments detected}{%
        You must not use a `#1' environment inside\MessageBreak
        a `\scrjura@env@type' environment or after loading\MessageBreak
        package `scrjura' with option `\scrjura@env@type'!}%
    \fi
  }{%
    #4%
    \par
  }%
}
%</body>
%    \end{macrocode}
% \end{macro}%^^A \@dewjuraenvironment
% \end{macro}%^^A \DeclareNewJuraEnvironment
%
% \begin{macro}{\contract@paragraph}
%   Das ist das Macro, das in Verträgen |\Clause| zur Verfügung stellt.
%   Ein Vertrag besteht aus mehreren Paragraphen. Jeder Paragraph hat einige
%   optionale Elemente, die (auf dem Umweg über scrkbase) über das
%   keyval-Paket geregelt werden.
% \begin{option}{title}
% \begin{option}{head}
% \begin{option}{entry}
% \changes{v0.6}{2011/09/30}{Option veraltet}
% \begin{option}{tocentry}
% \changes{v0.6}{2011/09/30}{neue Option}
% \begin{option}{nohead}
% \begin{option}{noentry}
% \changes{v0.6}{2011/09/30}{Option veraltet}
% \begin{option}{notocentry}
% \changes{v0.6}{2011/09/30}{neue Option}
%   Der Titel, der Kolumnentitel und der Verzeichniseintrag des
%   Paragraphen. Der Titel setzt dabei zunächst auch die anderen beiden. Man
%   kann die beiden aber auf leer setzen. Insbesondere aber kann man sie mit
%   den |no|-Optionen auch abschalten.
%    \begin{macrocode}
%<*body>
\define@key{contract}{title}{%
  \def\contract@title{#1}%
  \ifx\contract@entry\relax\def\contract@entry{\contract@title}\fi
  \ifx\contract@head\relax\def\contract@head{\contract@title}\fi
}
\define@key{contract}{entry}{%
  \PackageWarning{scrjura}{deprecated option `entry'.\MessageBreak
    You should use option `tocentry' instead of\MessageBreak
    option `entry'%
  }%
  \def\contract@entry{#1}}
\define@key{contract}{tocentry}{\def\contract@entry{#1}}
\define@key{contract}{noentry}[]{%
  \PackageWarning{scrjura}{deprecated option `noentry'.\MessageBreak
    You should use option `notocentry' instead of\MessageBreak
    option `noentry'%
  }%
  \let\contract@entry\relax}
\define@key{contract}{notocentry}[]{\let\contract@entry\relax}
\define@key{contract}{head}{\def\contract@head{#1}}
\define@key{contract}{nohead}[]{\let\contract@head\relax}
%    \end{macrocode}
% \end{option}
% \end{option}
% \end{option}
% \end{option}
% \end{option}
% \end{option}
% \end{option}
% \begin{option}{number}
%   Die Nummer kann mit dieser Option frei gestaltet werden. Es sind jedoch
%   keine Paragraphen ohne Nummer erlaubt. Wird keine Nummer angegeben, so
%   wird die Nummer automatisch gesetzt.
%    \begin{macrocode}
\define@key{contract}{number}{\def\contract@number{#1}}
%    \end{macrocode}
% \end{option}
% \begin{macro}{\contract@preskip}
% \begin{macro}{\contract@postskip}
% \begin{option}{preskip}
% \begin{option}{postskip}
%   Über diese beiden Optionen kann der Abstand vor und nach einem Pragraphen
%   gesetzt werden. Wird nichts angegeben, so wird die globale Voreinstellung
%   verwendet, die übrigens mit |\setkeys{contract}{...}| gesetzt werden
%   kann.
%    \begin{macrocode}
\newcommand*{\contract@preskip}{2\baselineskip}
\newcommand*{\contract@postskip}{\baselineskip}
\define@key{contract}{preskip}{\def\contract@preskip{#1}}
\define@key{contract}{postskip}{\def\contract@postskip{#1}}
%    \end{macrocode}
% \end{option}
% \end{option}
% \end{macro}
% \end{macro}
% \begin{option}{dummy}
%   Über dies Option wird der Schalter |\ifcontract@dummy| auf |\iftrue|
%   gesetzt.
% \begin{macro}{\ifcontract@dummy}
%   Ist der Schalter |\iftrue|, dann wird der Paragraph nicht gesetzt. Es ist
%   jedoch darauf zu achten, dass Absätze und Sätze des Paragraphen auf diese
%   Weise nicht entfernt werden können. Werden jedoch Paragraphen gelöscht, so
%   kann man damit das Loch in der Nummerierung erzeugen.
%    \begin{macrocode}
\newif\ifcontract@dummy
\define@key{contract}{dummy}[true]{\csname contract@dummy#1\endcsname}
%    \end{macrocode}
% \end{macro}
% \end{option}
% \begin{macro}{\contract@paragraph@font}
% \changes{v3.25}{2017/12/08}{Es wird Element \texttt{Clause} statt
%   \texttt{contract.Clause} verwendet}%^^A
% Eigentlich müsste die Anweisung \cs{contract@paragraph@format} heißen. Da
% sie jedoch für irgendwelche Tricks verwendet wurde. will ich das ungern
% ändern. Ebenso müsste die Anweisung eigentlich je nach Vertragsumgebung
% neu definiert und dann jene Defintion verwendet werden.
%    \begin{macrocode}
\newkomafont{contract.Clause}{\sffamily\bfseries\large}
\newcommand*{\contract@paragraph@font}{\usekomafont{Clause}%
  \@hangfrom}
%    \end{macrocode}
% \end{macro}
% \begin{Counter}{@AbsClause}
% \begin{macro}{\theH@AbsClause}
% \begin{macro}{\theHClause}
% \begin{macro}{\theHSubClause}
%    \begin{macrocode}
%   \textsf{hyperref}-Code, der noch nicht getestet ist!
\newcounter{@AbsClause}
\newcommand*{\theH@AbsClause}{P-\arabic{@AbsClause}}
\newcommand*{\theHClause}{\theH@AbsClause}
\newcommand*{\theHSubClause}{\theH@AbsClause}
%    \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{Counter}
% Zunächst wird vorübergehend auf manuelle Absatznummern umgeschaltet, weil
% natürlich innerhalb der Überschrift keine Nummer gesetzt werden
% soll. Trotzdem werden generell die Absatznummern eingeschaltet. Dann werden
% die Optionen initialisiert und ausgeführt.
% \changes{v0.7}{2013/04/18}{Zähler \texttt{contractAbsoluteClause} wird
%     erhöht}%^^A
% \changes{v0.7b}{2014/11/03}{\texttt{contractAbsoluteClause}
%     flexibilisiert}%^^A
%    \begin{macrocode}
\newcommand*{\contract@paragraph}[1]{%
  \stepcounter{\scrjura@env@type AbsoluteClause}%
  \ManualPar\parnumbertrue
  \let\contract@title\relax
  \let\contract@entry\relax
  \let\contract@head\relax
  \let\contract@number\relax
  \contract@dummyfalse
  \ifx\relax#1\relax\else\setkeys{contract}{#1}\fi
%    \end{macrocode}
% Wenn es kein Blindparagraph ist, werden Vorbereitung für nach der
% Überschrift getroffen und der vertikale Abstand eingefügt.
% \changes{v0.6a}{2012/10/08}{fehlendes \cs{par} ergänzt}
%    \begin{macrocode}
  \ifcontract@dummy\else
    \par
    \@afterindentfalse
    \addvspace{\contract@preskip}%
  \fi
%    \end{macrocode}
% Wenn die Nummer nicht manuell gesetzt wurde, wird die nächste Nummer
% verwendet. Im anderen Fall muss die Nummer gesetzt und auch dafür gesorgt
% werden, dass sowohl ein Label als auch hyperref diese Nummer verwenden.
% \changes{v0.6b}{2013/04/16}{Verwendung von \cs{contract@Clauseformat}
%     auch bei manueller Nummerierung der Paragraphen.}%^^A
% \changes{v0.9c}{2015/05/13}{\cs{thecontractClause} durch
%     umgebungsabhängiges Macro ersetzt.}%^^A
%    \begin{macrocode}
  \ifx\contract@number\relax
    \let\p@Clause\@empty
    \expandafter\let\expandafter\theClause
      \csname the\scrjura@env@type Clause\endcsname
    \refstepcounter{Clause}%
  \else
    \begingroup
      \let\@elt\@stpelt
      \cl@Clause
    \endgroup
%    \end{macrocode}
% \changes{v0.9f}{2016/02/24}{\cs{protect}\cs{\@nameuse} statt
%     \cs{csname}\dots\cs{endcsname}}%^^A
%    \begin{macrocode}
    \protected@edef\theClause{%
      \protect\@nameuse{\scrjura@env@type @Clauseformat}{\contract@number}%
    }%
    \protected@edef\@currentlabel{\theClause}%
  \fi
  \stepcounter{@AbsClause}%
  \begingroup\expandafter\expandafter\expandafter\endgroup
  \expandafter\ifx\csname if@skiphyperref\endcsname\relax
  \else
    \expandafter\let\csname if@scrjura@skiphyperref\expandafter\endcsname
    \csname if@skiphyperref\endcsname
  \fi
  \if@scrjura@skiphyperref\else
    \hyper@refstepcounter{@AbsClause}%
    \typeout{absolute Nummer: \the@AbsClause^^JLabel: `\@currentHref'}%
  \fi
%    \end{macrocode}
% Zwecks Vereinfachung wird ab hier so getan, als wäre es ein Unterabschnitt.
%    \begin{macrocode}
  \let\theSubClause\theClause
%    \end{macrocode}
% Außer für Blindparagraphen wird dann die Überschrift gesetzt, die
% Verzeichniseinträge vorgenommen und der Kolumnentitel angepasst.
% \changes{v0.7}{2013/04/28}{Abstand nach der Nummer als Bestandteil der
%     Nummer setzen}%^^A
% \changes{v0.9i}{2017/02/23}{Verwendung von \cs{ext@toc}}%^^A
%    \begin{macrocode}
  \ifcontract@dummy\else
    \begingroup
      \if@juratitlepagebreak\else\interlinepenalty\@M\fi
      \contract@paragraph@font{\theClause
        \ifx\contract@title\relax\else\enskip\fi}%
      \contract@title
      \ifx\contract@entry\relax\else
        \expandafter\addxcontentsline\expandafter{\ext@toc}%
        {cpar}[\theClause]\contract@entry
        \addxcontentsline{cpa}{cpar}[\theClause]\contract@entry
      \fi
      \ifx\contract@head\relax\else
        \expandafter\Clausemark\expandafter{%
          \expandafter\theSubClause\expandafter\enskip\contract@head}%
      \fi
      \par
    \endgroup\nobreak\vskip\contract@postskip
%    \end{macrocode}
% Zum Schluss wird noch dafür gesorgt, dass auch die Absätze korrekt
% nummeriert werden können etc.
%    \begin{macrocode}
    \scrjura@afterheading
  \fi
}
%</body>
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\contract@subparagraph}
% \changes{v0.6a}{2012/10/08}{fehlendes \cs{par} ergänzt}%^^A
% \changes{v0.7}{2013/04/18}{Zähler \texttt{contractAbsoluteClause} wird
%     erhöht}%^^A
% \changes{v0.7}{2013/04/28}{Abstand nach der Nummer als Bestandteil der
%     Nummer setzen}%^^A
% \changes{v0.9i}{2017/02/23}{Verwendung von \cs{ext@toc}}%^^A
% Das entspricht bis auf wenige Kleinigkeiten, die Unterparagraphen betreffen,
% |\contract@paragraph|
%    \begin{macrocode}
%<*body>
\newcommand*{\contract@subparagraph}[1]{%
  \stepcounter{\scrjura@env@type AbsoluteClause}%
  \ManualPar\parnumbertrue
  \let\contract@title\relax
  \let\contract@entry\relax
  \let\contract@head\relax
  \let\contract@number\relax
  \contract@dummyfalse
  \ifx\relax#1\relax\else\setkeys{contract}{#1}\fi
  \ifcontract@dummy\else
    \par
    \@afterindentfalse
    \vskip\contract@preskip
  \fi
  \ifx\contract@number\relax
    \let\p@SubClause\@empty
    \let\theSubClause\thecontractSubClause
    \refstepcounter{SubClause}%
  \else
    \begingroup
      \let\@elt\@stpelt
      \cl@SubClause
    \endgroup
    \protected@edef\theSubClause{\theClause\contract@number}%
    \protected@edef\@currentlabel{\theSubClause}%
  \fi
  \stepcounter{@AbsClause}%
  \begingroup\expandafter\expandafter\expandafter\endgroup
  \expandafter\ifx\csname if@skiphyperref\endcsname\relax
  \else
    \expandafter\let\csname if@scrjura@skiphyperref\expandafter\endcsname
    \csname if@skiphyperref\endcsname
  \fi
  \if@scrjura@skiphyperref\else
    \hyper@refstepcounter{@AbsClause}%
    \typeout{absolute Nummer: \the@AbsClause^^JLabel: `\@currentHref'}%
  \fi
  \ifcontract@dummy\else
    \begingroup
      \if@juratitlepagebreak\else\interlinepenalty\@M\fi
      \contract@paragraph@font{\theSubClause
        \ifx\contract@title\relax\else\enskip\fi}%
      \contract@title
      \ifx\contract@entry\relax\else
        \expandafter\addxcontentsline\expandafter{\ext@toc}%
        {cpar}[\theSubClause]\contract@entry
        \addxcontentsline{cpa}{cpar}[\theSubClause]\contract@entry
      \fi
      \ifx\contract@head\relax\else
        \expandafter\Clausemark\expandafter{%
          \expandafter\theSubClause\expandafter\enskip\contract@head}%
      \fi
      \par
    \endgroup
    \nobreak\vskip\contract@postskip
    \scrjura@afterheading
  \fi
}
%</body>
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\AutoPar}
% \begin{macro}{\ManualPar}
% Automatische oder manuelle Absatznummern für alle Umgebungen aktivieren.
%    \begin{macrocode}
%<*body>
\newcommand*{\AutoPar}{%
  \expandafter\let\expandafter\scrjura@everypar
  \csname \scrjura@env@type @everypar\endcsname
}
\newcommand*{\ManualPar}{%
  \let\scrjura@everypar\relax
}
%</body>
%    \end{macrocode}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\scrjura@afterheading}
% \changes{v0.7b}{2014/11/03}{\cs{jura@afterheading} umbenannt}%^^A
% \changes{v0.7b}{2014/11/03}{benötigt kein Argument mehr}%^^A
% \changes{v3.27}{2019/02/25}{\cs{CheckCommand} für \cs{@afterheading}}%^^A
% Entspricht |\afterheading| mit Erweiterungen für automatischen
% Absatznummern.
%    \begin{macrocode}
%<*body>
\CheckCommand*{\@afterheading}{%
  \@nobreaktrue
  \everypar{%
    \if@nobreak
      \@nobreakfalse
      \clubpenalty \@M
      \if@afterindent \else
        {\setbox\z@\lastbox}%
      \fi
    \else
      \clubpenalty \@clubpenalty
      \everypar{}%
    \fi}%
}
\newcommand*{\scrjura@afterheading}{%
  \@nobreaktrue
  \everypar{%
    \if@nobreak
      \@nobreakfalse
      \clubpenalty \@M
      \if@afterindent \else
        {\setbox\z@\lastbox}%
      \fi
    \else
      \clubpenalty \@clubpenalty
      \everypar{%
        \scrjura@everypar
      }%
    \fi
    \scrjura@everypar
  }%
  \AutoPar
}
%    \end{macrocode}
% \begin{macro}{\scrjura@everypar}
% \changes{v0.7b}{2014/11/03}{\cs{jura@everypar} umbenannt}%^^A
% Die Anweisung, die am Anfang von jedem Absatz auszuführen ist, um die
% Nummer zu setzen. Außerhalb der Umgebungen ist das nichts.
%    \begin{macrocode}
\newcommand*{\scrjura@everypar}{}
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\@doendpe}
% Diese Anweisung wird von \LaTeX{} verwendet, um am Ende von Umgebungen die
% kurz-, mittel- und langwirkenden Absatzaktionen zurückzusetzen. Damit hier
% nicht die automatische Absatznummerierung abgeschaltet wird, wird sie neu
% eingefügt.
% \begin{macro}{\scrjura@doendpe}
% \begin{macro}{\IncludeInRelease}
% \changes{v0.9e}{2015/11/03}{wird temporär benötigt}%^^A
% \begin{macro}{\@gobble@IncludeInRelease}
% \changes{v0.9e}{2015/11/03}{wird temporär benötigt}%^^A
% \begin{macro}{\EndIncludeInRelease}
% \changes{v0.9e}{2015/11/03}{wird temporär benötigt}%^^A
% Seit \LaTeX{} 2015/01/01 ist \cs{@doendpe} abhängig von
% \textsf{latexrelease} etwas anders definiert. Das wird hier
% berücksichtigt. Damit das auch noch mit älteren Versionen von \LaTeX{}
% funktioniert, ohne dass man extra \textsf{latexrelease} nachinstalliert,
% wird hier ein wenig getrickst. Die Änderungen werden aber so temporär wie
% möglich gehalten.
%    \begin{macrocode}
\providecommand*{\IncludeInRelease}[3]{%
  \PackageInfo{scrjura}{temporary definition of \string\IncludeInRelease}%
  \ifstr{#1}{0000/00/00}{%
    \let\IncludeInRelease\@undefined
    \def\EndIncludeInRelease{\let\EndIncludeInRelease\@undefined}%
  }{%
    \let\EndIncludeInRelease\relax
    \long\def\@gobble@IncludeInRelease##1\EndIncludeInRelease{%
      \let\@gobble@IncludeInRelease\@undefined
    }%
    \expandafter\@gobble@IncludeInRelease
  }%
}
\IncludeInRelease{2015/01/01}{\@doendpe}{clubpenalty fix}
\CheckCommand*\@doendpe{\@endpetrue
     \def\par{\@restorepar
              \clubpenalty\@clubpenalty
              \everypar{}\par\@endpefalse}\everypar
               {{\setbox\z@\lastbox}%
                \everypar{}\@endpefalse}}
\newcommand*{\scrjura@doendpe}{%
  \@endpetrue
  \def\par{%
    \@restorepar
    \clubpenalty\@clubpenalty
    \everypar{%
      \csname scrjura@everypar\endcsname
    }%
    \par\@endpefalse
  }%
  \everypar{%
    {\setbox\z@\lastbox}\everypar{%
      \csname scrjura@everypar\endcsname
    }%
    \@endpefalse
  }%
}
\EndIncludeInRelease
\IncludeInRelease{0000/00/00}{\@doendpe}{clubpenalty fix}
\CheckCommand*\@doendpe{\@endpetrue
  \def\par{\@restorepar\everypar{}\par\@endpefalse}\everypar
  {{\setbox\z@\lastbox}\everypar{}\@endpefalse}}
\newcommand*{\scrjura@doendpe}{%
  \@endpetrue
  \def\par{%
    \@restorepar\everypar{%
      \csname scrjura@everypar\endcsname
    }%
    \par\@endpefalse
  }%
  \everypar{%
    {\setbox\z@\lastbox}\everypar{%
      \csname scrjura@everypar\endcsname
    }%
    \@endpefalse
  }%
}
\EndIncludeInRelease
%</body>
%    \end{macrocode}
% \end{macro}%^^A \EndIncludeInRelease
% \end{macro}%^^A \@gobble@IncludeInRelease
% \end{macro}%^^A \IncludeInRelease
% \end{macro}%^^A \scrjura@doendpe
% \end{macro}%^^A \doendpe
% \end{macro}%^^A \scrjura@everypar
%
% \begin{macro}{\l@cpar}
% Verzeichnis-Eintrag für einen Vertrags-Paragraphen.
% \changes{v3.27}{2019/02/25}{Verwendung von \textsf{tocbasic}}%^^A
% Da der Zähler \texttt{juratoclevel} bisher nicht dokumentiert war und auch
% bisher syntaktisch falsche Werte zu Fehlermeldungen geführt haben, können
% wir uns voll auf \textsf{tocbasic} stützen.
% Die Definition muss in den init-Teil, damit die Optionen die Einstellungen
% ändern können:
%    \begin{macrocode}
%<*init>
\DeclareTOCStyleEntry[%
  indent=1.5em,
  numwidth=2em,
  level=\maxdimen
]{default}{cpar}
%</init>
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\scrjura@separator}
% \changes{v0.7b}{2014/11/03}{\cs{jura@separator} umbenannt}%^^A
% Wird verwendet, damit Leerzeichen am Anfang oder Ende entfernt werden können.
%    \begin{macrocode}
%<*body>
\DeclareRobustCommand*{\scrjura@separator}[1]{#1}
%</body>
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\scrjura@usetype}
% \changes{v0.5d}{2010/04/28}{neu (intern)}%^^A
% \changes{v0.7b}{2014/11/03}{\cs{jura@usetype} umbenannt}%^^A
% In der Voreinstellung macht das erst einmal gar nichts, außer dass es robust
% ist und \cs{jura@@usetype} aufruft.
% \begin{macro}{\scrjura@@usetype}
% \changes{v0.5d}{2010/04/28}{neu (intern)}%^^A
% \changes{v0.7b}{2014/11/03}{\cs{jura@@usetype} umbenannt}%^^A
% Das wiederum ist nicht robust und kann dadurch einfacher umdefiniert
% werden. In der Voreinstellung macht das dann wirklich nichts, außer das
% Argument zu fressen.
%    \begin{macrocode}
%<*body>
\DeclareRobustCommand*{\scrjura@usetype}[1]{\scrjura@@usetype{#1}}
\newcommand*{\scrjura@@usetype}[1]{}
%</body>
%    \end{macrocode}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\contract@everypar}
% |\scrjura@everpar| für Verträge.
% \begin{macro}{\ifparnumber}
% \changes{v0.6}{2011/09/29}{Definition des Schalters in die Definition der
%   Option verschoben}%^^A
% \begin{Counter}{par}
% \begin{macro}{\thepar}
% \begin{macro}{\theHpar}
% \begin{macro}{\parformat}
% \changes{v0.7}{2013/06/07}{neues Font-Element \texttt{parnumber}}%^^A
% \begin{macro}{\parformatseparation}
% \changes{v0.9f}{2016/02/06}{neue Anweisung}%^^A
% \begin{macro}{\p@par}
% \changes{v0.5d}{2010/04/28}{\cs{jura@usetype} mit Argument
%   \cs{jura@env@type} eingefügt}%^^A
% \begin{macro}{\withoutparnumber}
% \changes{v3.25}{2017/12/19}{neu}%^^A
% Der Schalter gibt an, ob überhaupt mit Absatznummern gearbeitet werden
% soll. Sind Absatznummern deaktiviert, werden auch keine manuellen
% Absatznummern gesetzt. Die Absätze werden dann auch nicht gezählt. Ansonsten
% werden die Absätze mit |\thepar| nummeriert. Wichtig ist, dass der
% Absatzzähler mit den Paragraphen und den Unterparagraphen zurückgesetzt
% wird. Außerdem muss beim Zitieren als Elternobjekt der Paragraph mit
% ausgegeben werden.
%    \begin{macrocode}
%<*body>
\newcounter{par}
\renewcommand*{\thepar}{\arabic{par}}
\newcommand*{\theHpar}{\theH@AbsClause-\Roman{par}}
\newcommand*{\parformat}{(\thepar)}
\newcommand*{\parformatseparation}{\nobreakspace}
\newkomafont{parnumber}{}
\renewcommand*\p@par{{\scrjura@usetype{\scrjura@env@type}\theSubClause\scrjura@separator{\nobreakspace}}}
\@addtoreset{par}{Clause}
\@addtoreset{par}{SubClause}
\newcommand*{\withoutparnumber}{}
%</body>
%    \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{Counter}
% \end{macro}
% \changes{v0.5c}{2010/04/26}{erstes Argument von \cs{newmaxpar} und zweites
%     Argument von \cs{getmaxpar} ist \texttt{contract} nicht
%     \texttt{contractpars}}
% \changes{v0.5c}{2010/04/26}{\cs{contract@Clauseformat} expandiert beim
%     Schreiben zu seinem Argument}
% \changes{v0.7}{2013/04/18}{Zähler \texttt{contractAbsoluteClause} wird
%     verwendet}
% \changes{v0.7}{2013/05/23}{Satznummer bei manuell nummerierten Absätzen
%     auf 0 statt 1 initialisiert, weil \cs{Sentence} die Nummer als erstes
%     hochzählt.}
% \changes{v0.7}{2013/05/23}{Absatznummer von \cs{thisparnumber} beachtet}
% \changes{v0.7}{2013/06/06}{Im Fall von nicht rein nummerischen
%     Absatznummern die Absätze auf jeden Fall nummerieren}
% \changes{v0.7b}{2014/11/03}{\texttt{contractAbsoluteClause}
%     flexibilisiert}%^^A
% \changes{v0.9f}{2016/02/06}{\cs{nobreakspace} durch
%     \cs{parformatseparation} ersetzt}%^^A
% \changes{v0.9g}{2016/03/25}{in die \texttt{aux}-Datei nur bei
%     \cs{if@filesw} schreiben}%^^A
%    \begin{macrocode}
%<*body>
\newcommand*{\contract@everypar}{%
  \ifparnumber
    \ifx\scrjura@special@par\relax
      \ifx\scrjura@special@reset@par\relax\else
        \global\let\thepar\scrjura@special@reset@par
        \global\let\scrjura@special@reset@par\relax
      \fi
      \refstepcounter{par}%
      \refstepcounter{sentence}%
    \else
      \ifx\scrjura@special@reset@par\relax
        \global\let\scrjura@special@reset@par\thepar
      \fi
      \global\let\thepar\scrjura@special@par
      \global\let\scrjura@special@par\relax
      \setcounter{sentence}{0}\refstepcounter{sentence}%
    \fi
    \begingroup
      \if@filesw
        \protected@write\@auxout{%
          \expandafter\let\csname \scrjura@env@type @Clauseformat\endcsname
          \@firstofone
        }{%
          \string\newmaxpar{\scrjura@env@type}%
                           {\csname the\scrjura@env@type 
                             AbsoluteClause\endcsname}%
                           {\thepar}%
        }%
      \fi
      \getmaxpar\@tempa{\scrjura@env@type}%
                       {\csname the\scrjura@env@type AbsoluteClause\endcsname}%
      \typeout{Stored max is \@tempa}%
      \def\reserved@a##1\@nnil{\def\@tempa{##1}}%
      \afterassignment\reserved@a\@tempcnta=0\@tempa\relax\@nnil
      \ifnum \@tempcnta>\@ne
        {\usekomafont{parnumber}{\parformat\parformatseparation}}%
      \else
        \def\reserved@a{\relax}%
        \ifx\@tempa\reserved@a
          \withoutparnumber
        \else
          {\usekomafont{parnumber}{\parformat\parformatseparation}}%
        \fi
      \fi
    \endgroup
  \else
    \begingroup\withoutparnumber\endgroup
    \setcounter{sentence}{-1}\refstepcounter{sentence}%
  \fi
}
%</body>
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\thisparnumber}
% \changes{v0.7}{2013/05/23}{neue Anweisung}
% \begin{macro}{\scrjura@special@par}
% \changes{v0.7}{2013/05/23}{neue Anweisung (intern)}
% \begin{macro}{\scrjura@special@reset@par}
% \changes{v0.7}{2013/05/23}{neue Anweisung (intern)}
% Mit dieser Anweisung kann man eine Absatznummer manuell vergeben. Allerdings
% muss die Nummer voll expandierbar sein!
%    \begin{macrocode}
%<*body>
\newcommand*{\thisparnumber}[1]{%
  \def\scrjura@special@par{#1}%
}
\newcommand*{\scrjura@special@par}{}
\let\scrjura@special@par\relax
\newcommand*{\scrjura@special@reset@par}{}
\let\scrjura@special@reset@par\relax
%</body>
%    \end{macrocode}
% \end{macro}%^^A \scrjura@special@reset@par
% \end{macro}%^^A \scrjura@special@par
% \end{macro}%^^A\thisparnumber
%
%
% \begin{macro}{\refL}
% \changes{v0.9h}{2016/04/12}{\cs{@ifstar} durch \cs{kernel@ifstar}
%     ersetzt}%^^A
% \begin{macro}{\ref@L}
% Das gleiche wie |\ref| aber zwingend mit der Langform.
%    \begin{macrocode}
%<*body>
\newcommand*{\refL}{\kernel@ifstar {\ref@L*}{\ref@L{}}}
\newcommand*{\ref@L}[2]{%
  \begingroup
    \def\parcite@format{0}%
    \let\sentencecite@format\parcite@format
    \ref#1{#2}%
  \endgroup
}
%    \end{macrocode}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\refS}
% \changes{v0.9h}{2016/04/12}{\cs{@ifstar} durch \cs{kernel@ifstar}
%     ersetzt}%^^A
% \begin{macro}{\ref@S}
% Das gleiche wie |\ref| aber zwingend mit der Kurzform.
%    \begin{macrocode}
\newcommand*{\refS}{\kernel@ifstar {\ref@S*}{\ref@S{}}}
\newcommand*{\ref@S}[2]{%
  \begingroup
    \def\parcite@format{1}%
    \let\sentencecite@format\parcite@format
    \ref#1{#2}%
  \endgroup
}
%    \end{macrocode}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\refN}
% \changes{v0.9h}{2016/04/12}{\cs{@ifstar} durch \cs{kernel@ifstar}
%     ersetzt}%^^A
% \begin{macro}{\ref@N}
% Das gleiche wie |\ref| aber zwingend mit der numerischen Form.
%    \begin{macrocode}
\newcommand*{\refN}{\kernel@ifstar {\ref@N*}{\ref@N{}}}
\newcommand*{\ref@N}[2]{%
  \begingroup
    \def\parcite@format{2}%
    \let\sentencecite@format\parcite@format
    \ref#1{#2}%
  \endgroup
}
%    \end{macrocode}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\refClause}
% \changes{v0.9h}{2016/04/12}{\cs{@ifstar} durch \cs{kernel@ifstar}
%     ersetzt}%^^A
% \begin{macro}{\ref@Clause}
% Zitiert nur den Paragraphen eines Paragraphen, eines Absatzes oder eines
% Satzes. Für mehr Kompatibilität mit hyperref gibt es mit hyperref auch eine
% Sternform. Ohne hyperref produziert diese nur Unsinn.
%    \begin{macrocode}
\newcommand*{\refClause}{%
  \kernel@ifstar {\ref@Clause*}{\ref@Clause{}}
}
\newcommand*{\ref@Clause}[2]{%
  \expandafter\ifx\csname r@#2\endcsname\relax
    \ref#1{#2}%
  \else
    \begingroup
%    \end{macrocode}
% Alle Teile der Referenz bis auf den ersten in |\@tempb| ablegen.
%    \begin{macrocode}
      \expandafter\expandafter\expandafter\expandafter
      \expandafter\expandafter\expandafter\def
      \expandafter\expandafter\expandafter\expandafter
      \expandafter\expandafter\expandafter\@tempb
      \expandafter\expandafter\expandafter\expandafter
      \expandafter\expandafter\expandafter{%
        \expandafter\expandafter\expandafter\@gobble\csname r@#2\endcsname}%
%    \end{macrocode}
% Den ersten Teil der Referenz in |\@tempa| ablegen.
%    \begin{macrocode}
      \def\@tempc##1##2\@nil{##1}%
      \let\scrjura@separator\@gobble
      \protected@edef\@tempa{\expandafter\expandafter\expandafter\@tempc
        \csname r@#2\endcsname\noexpand\@nil}%
%    \end{macrocode}
% Den ersten Teil von |\@tempa| in |\@tempa| ablegen.
%    \begin{macrocode}
      \protected@edef\@tempa{\expandafter\expandafter\expandafter\@tempc
        \@tempa\@nil}%
      \let\@@protect\protect
      \let\protect\noexpand
      \expandafter\edef\csname r@#2\endcsname{{\@tempa}\@tempb}%
      \let\protect\@@protect
      \ref#1{#2}%
    \endgroup
  \fi
}
%    \end{macrocode}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\refClauseN}
% \changes{v0.9h}{2016/04/12}{\cs{@ifstar} durch \cs{kernel@ifstar}
%     ersetzt}%^^A
% \begin{macro}{\ref@ClauseN}
% Zitiert nur den Paragraphen eines Paragraphen, eines Absatzes oder eines
% Satzes. Für mehr Kompatibilität mit hyperref gibt es mit hyperref auch eine
% Sternform. Ohne hyperref produziert diese nur Unsinn.
%    \begin{macrocode}
\newcommand*{\refClauseN}{%
  \kernel@ifstar {\ref@ClauseN*}{\ref@ClauseN{}}
}
\newcommand*{\ref@ClauseN}[2]{%
  \begingroup
    \let\Clauseformat\relax
    \ref@Clause{#1}{#2}%
  \endgroup
}
%    \end{macrocode}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\refPar}
% \changes{v0.9h}{2016/04/12}{\cs{@ifstar} durch \cs{kernel@ifstar}
%     ersetzt}%^^A
% \begin{macro}{\ref@Par}
% Zitiert nur den Absatz eines Absatzes oder eines Satzes. Für mehr
% Kompatibilität mit hyperref gibt es mit hyperref auch eine Sternform. Ohne
% hyperref produziert diese nur Unsinn.
%    \begin{macrocode}
\newcommand*{\refPar}{%
  \kernel@ifstar {\ref@Par*}{\ref@Par{}}
}
\newcommand*{\ref@Par}[2]{%
  \expandafter\ifx\csname r@#2\endcsname\relax
    \ref#1{#2}%
  \else
    \begingroup
%    \end{macrocode}
% Alle Teile der Referenz bis auf den ersten in |\@tempb| ablegen.
%    \begin{macrocode}
      \expandafter\expandafter\expandafter\expandafter
      \expandafter\expandafter\expandafter\def
      \expandafter\expandafter\expandafter\expandafter
      \expandafter\expandafter\expandafter\@tempb
      \expandafter\expandafter\expandafter\expandafter
      \expandafter\expandafter\expandafter{%
        \expandafter\expandafter\expandafter\@gobble\csname r@#2\endcsname}%
%    \end{macrocode}
% Den ersten Teil der Referenz in |\@tempa| ablegen.
%    \begin{macrocode}
      \def\@tempc##1##2\@nil{##1}%
      \let\scrjura@separator\@gobble
      \protected@edef\@tempa{\expandafter\expandafter\expandafter\@tempc
        \csname r@#2\endcsname\noexpand\@nil}%
%    \end{macrocode}
% Den zweiten Teil von |\@tempa| in |\@tempa| ablegen.
%    \begin{macrocode}
      \def\@tempc##1##2##3\@nil{##2}%
      \protected@edef\@tempa{\expandafter\expandafter\expandafter\@tempc
        \@tempa{%
          \protect\G@refundefinedtrue
          \nfss@text{\reset@font\bfseries ??}%
          \@latex@warning{Reference `#2' on page \thepage \space
            with undefined par number}%
        }\noexpand\@nil}%
      \let\@@protect\protect
      \let\protect\noexpand
      \expandafter\edef\csname r@#2\endcsname{{\@tempa}\@tempb}%
      \let\protect\@@protect
      \ref#1{#2}%
    \endgroup
  \fi
}
%    \end{macrocode}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\refParL}
% \changes{v0.9h}{2016/04/12}{\cs{@ifstar} durch \cs{kernel@ifstar}
%     ersetzt}%^^A
% \begin{macro}{\ref@ParX}
%    \begin{macrocode}
% Das Gleiche zwingend lang.
\newcommand*{\refParL}{%
  \kernel@ifstar {\ref@ParX0*}{\ref@ParX0{}}
}
\newcommand*{\ref@ParX}[3]{%
  \begingroup
    \def\parcite@format{#1}%
    \let\sentencecite@format\parcite@format
    \ref@Par{#2}{#3}%
  \endgroup
}
%    \end{macrocode}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\refParS}
% \changes{v0.9h}{2016/04/12}{\cs{@ifstar} durch \cs{kernel@ifstar}
%     ersetzt}%^^A
% Das Gleiche zwingend kurz.
%    \begin{macrocode}
\newcommand*{\refParS}{%
  \kernel@ifstar {\ref@ParX1*}{\ref@ParX1{}}
}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\refParN}
% \begin{macro}{\ref@ParN}
% \changes{v0.9h}{2016/04/12}{\cs{@ifnextchar} replaced by
%     \cs{kernel@ifnextchar}}%^^A
% \changes{v0.9h}{2016/04/12}{\cs{@ifstar} durch \cs{kernel@ifstar}
%     ersetzt}%^^A
% \begin{macro}{\ref@@ParN}
% Das Gleiche zwingend nummerisch.
%    \begin{macrocode}
\newcommand*{\refParN}{%
  \kernel@ifstar {\ref@ParN2*}{\ref@ParN2{}}
}
\newcommand*{\ref@ParN}[2]{%
  \kernel@ifnextchar [%]
    {\ref@@ParN{#1}{#2}}%
    {\ref@ParX{#1}{#2}}%
}
\newcommand*{\ref@@ParN}{}
\def\ref@@ParN#1#2[#3]#4{%
  \begingroup
    \renewcommand*{\parnumericformat}[1]{%
      \csname @#3\endcsname{\number ##1\relax}%
    }%
    \ref@ParX{#1}{#2}{#4}%
  \endgroup
}
%    \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\refSentence}
% \changes{v0.9h}{2016/04/12}{\cs{@ifstar} durch \cs{kernel@ifstar}
%     ersetzt}%^^A
% \begin{macro}{\ref@Sentence}
% Zitiert nur den Satz eines Satzes. Für mehr
% Kompatibilität mit hyperref gibt es mit hyperref auch eine Sternform. Ohne
% hyperref produziert diese nur Unsinn.
%    \begin{macrocode}
\newcommand*{\refSentence}{%
  \kernel@ifstar {\ref@Sentence*}{\ref@Sentence{}}
}
\newcommand*{\ref@Sentence}[2]{%
  \expandafter\ifx\csname r@#2\endcsname\relax
    \ref#1{#2}%
  \else
    \begingroup
%    \end{macrocode}
% Alle Teile der Referenz bis auf den ersten in |\@tempb| ablegen.
%    \begin{macrocode}
      \expandafter\expandafter\expandafter\expandafter
      \expandafter\expandafter\expandafter\def
      \expandafter\expandafter\expandafter\expandafter
      \expandafter\expandafter\expandafter\@tempb
      \expandafter\expandafter\expandafter\expandafter
      \expandafter\expandafter\expandafter{%
        \expandafter\expandafter\expandafter\@gobble\csname r@#2\endcsname}%
%    \end{macrocode}
% Den ersten Teil der Referenz in |\@tempa| ablegen.
%    \begin{macrocode}
      \def\@tempc##1##2\@nil{##1}%
      \let\scrjura@separator\@gobble
      \protected@edef\@tempa{\expandafter\expandafter\expandafter\@tempc
        \csname r@#2\endcsname\noexpand\@nil}%
%    \end{macrocode}
% Den dritten Teil von |\@tempa| in |\@tempa| ablegen.
%    \begin{macrocode}
      \def\@tempc##1##2##3##4\@nil{##3}%
      \protected@edef\@tempa{\expandafter\expandafter\expandafter\@tempc
        \@tempa{}{%
          \protect\G@refundefinedtrue
          \nfss@text{\reset@font\bfseries ??}%
          \@latex@warning{Reference `#2' on page \thepage \space
            with undefined sentence number}%
        }\noexpand\@nil}%
      \let\@@protect\protect
      \let\protect\noexpand
      \expandafter\edef\csname r@#2\endcsname{{\@tempa}\@tempb}%
      \let\protect\@@protect
      \ref#1{#2}%
    \endgroup
  \fi
}
%    \end{macrocode}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\refSentenceL}
% \changes{v0.9h}{2016/04/12}{\cs{@ifstar} durch \cs{kernel@ifstar}
%     ersetzt}%^^A
% \begin{macro}{\ref@SentenceX}
%    \begin{macrocode}
% Das Gleiche zwingend lang.
\newcommand*{\refSentenceL}{%
  \kernel@ifstar {\ref@SentenceX0*}{\ref@SentenceX0{}}
}
\newcommand*{\ref@SentenceX}[3]{%
  \begingroup
    \def\parcite@format{#1}%
    \let\sentencecite@format\parcite@format
    \ref@Sentence{#2}{#3}%
  \endgroup
}
%    \end{macrocode}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\refSentenceS}
% \changes{v0.9h}{2016/04/12}{\cs{@ifstar} durch \cs{kernel@ifstar}
%     ersetzt}%^^A
% Das Gleiche zwingend kurz.
%    \begin{macrocode}
\newcommand*{\refSentenceS}{%
  \kernel@ifstar {\ref@SentenceX1*}{\ref@SentenceX1{}}
}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\refSentenceN}
% \changes{v0.9h}{2016/04/12}{\cs{@ifstar} durch \cs{kernel@ifstar}
%     ersetzt}%^^A
% Das Gleiche zwingend nummerisch.
%    \begin{macrocode}
\newcommand*{\refSentenceN}{%
  \kernel@ifstar {\ref@SentenceX2*}{\ref@SentenceX2{}}
}
%</body>
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\contract@sentence}
% \changes{v0.7a}{2014/01/28}{auf \cs{textsuperscript} umgestellt}%^^A
% \changes{v0.7a}{2014/01/28}{\cs{nobreak}\cs{hskip}\cs{z@} eingefügt, um
%     die Trennung des ersten Worts nach der Satzmarkierung zu ermöglichen}%^^A
% Sätze nummerieren.
% \begin{Counter}{sentence}
% \begin{macro}{\thesentence}
% \begin{macro}{\theHsentence}
% \begin{macro}{\p@sentence}
% \changes{v3.27}{2019/10/09}{Anpassung an \LaTeX{} 2019-10-01}%^^A
% Der Zähler wird für die Nummerierung der Sätze verwendet. Dabei ist wichtig,
% dass beim Zitieren der Sätze als Elternobjekt der Absatz mit ausgegeben
% wird. Die Methode, mit der ursprünglich dafür gesorgt wurde, dass
% \cs{thesentence} als Argument von \cs{p@sentence} verwendet werden konnte,
% funktioniert leider seit \LaTeX{} 2019-10-01 nicht mehr und führt seither zu
% einer Fehlermeldung. Daher musste der Code an der Stelle an die
% Neudefinition von \cs{refstepcounter} in \LaTeX{} 2019-10-01 angepasst
% werden und verwendet ab dieser \LaTeX-Version \cs{labelformat}. Wie ich dazu
% stehe, dass neuerdings \LaTeX{} kein Problem damit hat, existierende Pakete
% zu beschädigen, lassen wir dabei besser unausgeprochen.
%    \begin{macrocode}
%<*body>
\newcounter{sentence}[par]
\renewcommand*{\thesentence}{\arabic{sentence}}
\newcommand*{\theHsentence}{\theHpar-\arabic{sentence}}
\scr@ifundefinedorrelax{labelformat}{%
  \renewcommand*{\p@sentence}{\expandafter\p@@sentence}
  \newcommand*{\p@@sentence}[1]{\p@par{{\par@cite{\thepar}}%
      \scrjura@separator{\nobreakspace}}{\sentence@cite{#1}}}%
}{%
  \labelformat{sentence}{\p@par{{\par@cite{\thepar}}%
      \scrjura@separator{\nobreakspace}}{\sentence@cite{#1}}}%
}
\newcommand*{\contract@sentence}{%
%    \end{macrocode}
% \changes{v0.9e}{2015/11/04}{erst den Absatz beginnen, dann die Nummer
%   setzen}%^^A 
% \changes{v3.26}{2018/07/20}{neues Element \texttt{sentencenumber}}%^^A
% \changes{v3.26}{2018/07/20}{neue Formatierung \cs{sentencenumberformat}}%^^A
% Bei der Nummerierung ist wichtig, dass am Anfang des Absatzes die
% Satznummer nicht erhöht wird, weil das der Absatz bereits erledigt. Damit
% das funktioniert muss aber vor der Ausgabe erst einmal der Absatz begonnen
% werden. Befinden wir uns allerdings unmittelbar hinter einer
% \texttt{minipage}, einer Liste oder einer \cs{parbox} tun wir so, als wären
% wir nicht am Anfang des Absatzes.
%    \begin{macrocode}
  \ifvmode
    \if@endpe
      \refstepcounter{sentence}%
    \else
      \leavevmode
    \fi
  \else
    \refstepcounter{sentence}%
  \fi
  {\usekomafont{sentencenumber}{\sentencenumberformat}}%
  \nobreak\hskip\z@
}
%    \end{macrocode}
% \begin{macro}{\sentencenumberformat}
% \changes{v3.26}{2018/07/20}{neu}%^^A
% Formatierung und Schrift können über \cs{sentencenumberformat} und Element
% \texttt{sentencenumber} geändert werden. Voreinstellung für
% \cs{sentenceformat} ist \cs{textsuperscript}.
%    \begin{macrocode}
\newkomafont{sentencenumber}{}
\newcommand*{\sentencenumberformat}{\textsuperscript{\thesentence}}
%</body>
%    \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{Counter}
% \end{macro}
%
% \begin{macro}{\parciteformat}
% \changes{v0.5d}{2010/04/28}{Argument verschoben}
% Zitierstil für Absätze.
%    \begin{macrocode}
%<*body>
\DeclareRobustCommand*{\par@cite}[1]{\parciteformat{#1}}
\newcommand*{\parciteformat}[1]{%
  \ifcase \parcite@format
    \expandafter\parlongformat
  \or
    \expandafter\parshortformat
  \or
    \expandafter\parnumericformat
  \else
    \unskip\expandafter\@gobble
  \fi
  {#1}%
}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\sentenceciteformat}
% \changes{v0.5d}{2010/04/28}{Argument verschoben}
% Zitierstil für Sätze. In der Voreinstellung ist das |\@arabic|.
%    \begin{macrocode}
\DeclareRobustCommand*{\sentence@cite}[1]{\sentenceciteformat{#1}}
\newcommand*{\sentenceciteformat}[1]{%
  \ifcase \sentencecite@format
    \expandafter\sentencelongformat
  \or
    \expandafter\sentenceshortformat
  \or
    \expandafter\sentencenumericformat
  \else
    \unskip\expandafter\@gobble
  \fi
  {#1}%
}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\parlongformat}
% \begin{macro}{\parshortformat}
% \begin{macro}{\parnumericformat}
% \begin{macro}{\sentencelongformat}
% \begin{macro}{\sentenceshortformat}
% \begin{macro}{\sentencenumericformat}
% Formatierung in den sechs Formen.
%    \begin{macrocode}
\newcommand*{\parlongformat}[1]{\parname~#1}
\newcommand*{\parshortformat}[1]{\parshortname~#1}
\newcommand*{\parnumericformat}[1]{\@Roman{\number #1\relax}}
\newcommand*{\sentencelongformat}[1]{\sentencename~#1}
\newcommand*{\sentenceshortformat}[1]{\sentenceshortname~#1}
\newcommand*{\sentencenumericformat}[1]{\@arabic{\number #1\relax}.}
%</body>
%    \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\parname}
% \begin{macro}{\parshortname}
% \begin{macro}{\sentencename}
% \begin{macro}{\sentenceshortname}
% \begin{macro}{\scrjura@lang@error}
% \changes{v0.7}{2013/09/19}{Verwendung von \cs{PackageError} an Stelle von
%     \cs{PackageErrorNoLine}}%^^A
% \changes{v3.24}{2017/05/29}{Anpassung an Sprachänderung
%     (\texttt{usenglish} und \texttt{ukenglish} statt \texttt{USenglish} und
%     \texttt{UKenglish}) in \textsf{babel}~3.10}%^^A
% Der Name eines Absatzes und eines Satzes. Die englischen Namen wurden von
% »m.eik« beigesteuert.
%    \begin{macrocode}
%<*body>
\newcommand*{\parname}{Paragraph}
\AtBeginDocument{%
  \providecaptionname{german,ngerman,austrian,naustrian}\parname{Absatz}%
  \providecaptionname{german,ngerman,austrian,naustrian}\parshortname{Abs.}%
  \providecaptionname{german,ngerman,austrian,naustrian}\sentencename{Satz}%
  \providecaptionname{german,ngerman,austrian,naustrian}\sentenceshortname{S.}%
  \providecaptionname{english,american,british,canadian,%
    USenglish,UKenglish,usenglish,ukenglish}\parname{paragraph}%
  \providecaptionname{english,american,british,canadian,%
    USenglish,UKenglish,usenglish,ukenglish}\parshortname{par.}%
  \providecaptionname{english,american,british,canadian,%
    USenglish,UKenglish,usenglish,ukenglish}\sentencename{sentence}%
  \providecaptionname{english,american,british,canadian,%
    USenglish,UKenglish,usenglish,ukenglish}\sentenceshortname{sent.}%
}
\providecommand*{\parname}{\scrjura@lang@error{\parname}}
\providecommand*{\parshortname}{\scrjura@lang@error{\parshortname}}
\providecommand*{\sentencename}{\scrjura@lang@error{\sentencename}}
\providecommand*{\sentenceshortname}{\scrjura@lang@error{\sentenceshortname}}
\newcommand*{\scrjura@lang@error}[1]{%
  \PackageError{scrjura}{%
    current language not supported%
  }{%
    Currently scrjura only supports languages `german', `ngerman',
    `austrian',\MessageBreak
    `naustrian', `english', `american', `british', `canadian',
    `USenglish',\MessageBreak
    `UKenglish', `usenglish`, and `ukenglish'.\MessageBreak
    It seems, that you are using another language (maybe `\languagename') or
    that\MessageBreak
    your language selection isn't compatible to package `babel'.\MessageBreak
    Because of this you have to define `\string#1' by yourself!\MessageBreak
    It would be nice if you'll send your definitions to the author.%
  }%
  \textbf{??}%
}
%</body>
%    \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\newmaxpar}
% \changes{v0.6b}{2013/04/16}{\cs{\#1@Clauseformat} expandiert zu seinem
%     Argument}%^^A
% \begin{macro}{\getmaxpar}
% \changes{v0.6}{2011/09/30}{Argument 3 muss mit \cs{protected@edef}
%     expandiert werden}%^^A
% \changes{v0.5c}{2010/04/26}{\cs{protected@edef} durch \cs{edef}
%     ersetzt}%^^A
% \changes{v0.5c}{2010/04/26}{\cs{\#2@Clauseformat} expandiert zu seinem
%     Argument}%^^A
% Noch zwei Hilfsmakros, um Zähler in der aux-Datei zwischenzuspeichern und
% auch dann Werte zu holen, wenn sie nicht in der aux-Datei stehen.
%    \begin{macrocode}
%<*body>
\newcommand*{\newmaxpar}[3]{%
  \begingroup
    \expandafter\let\csname #1@Clauseformat\endcsname\@firstofone
    \protected@edef\@tempa{#2}\@onelevel@sanitize\@tempa
    \expandafter\xdef\csname max@#1@\@tempa\endcsname{#3}%
  \endgroup
}
\newcommand*{\getmaxpar}[3]{%
  \begingroup
    \expandafter\let\csname #2@Clauseformat\endcsname\@firstofone
    \protected@edef\@tempa{#3}%
    \@onelevel@sanitize\@tempa
    \expandafter\ifx \csname max@#2@\@tempa\endcsname\relax
      \edef\@tempa{\endgroup\edef\noexpand#1{\expandafter\the\value{par}}}%
    \else
      \edef\@tempa{\endgroup
        \edef\noexpand#1{\csname max@#2@\@tempa\endcsname}}%
    \fi
  \@tempa
}
%    \end{macrocode}
% \changes{v0.7b}{2014/11/10}{Notfallcode in die \texttt{aux}-Datei}%^^A
% \changes{v0.9g}{2015/03/25}{in die \texttt{aux}-Datei nur bei
%     \cs{if@filesw} schreiben}%^^A
% Da manche Anwender \texttt{scrjura} aus einem Dokument entfernen, ohne die
% \texttt{aux}-Dateien zu löschen, sehen wir eine Notlösung vor, um
% Fehlermeldungen wegen nicht definiertem \cs{newmaxpar} zu vermeiden.
%    \begin{macrocode}
\AtBeginDocument{%
  \if@filesw
    \immediate\write\@auxout{%
      \string\providecommand*\string\newmaxpar[3]{}
    }%
  \fi
}
%</body>
%    \end{macrocode}
% \end{macro}
% \end{macro}
%
% \iffalse
%</package>
% \fi
%
% \Finale
%
\endinput
%
% end of file `scrjura.dtx'
%%% Local Variables:
%%% mode: doctex
%%% coding: utf-8
%%% TeX-master: t
%%% End:
