You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
2163 lines
72 KiB
2163 lines
72 KiB
% \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 3390 2019-11-18 17:09:35Z 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-11-18 18:09:35 +0100 (Mon, 18 Nov 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
|
|
% \changes{v3.28}{2019/11/18}{\cs{ifstr} umbenannt in \cs{Ifstr}}%^^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
|
|
% \changes{v3.28}{2019/11/18}{\cs{ifstr} umbenannt in \cs{Ifstr}}%^^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:
|
|
|