summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/source/latex/koma-script/scrjura.dtx
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/source/latex/koma-script/scrjura.dtx')
-rw-r--r--Master/texmf-dist/source/latex/koma-script/scrjura.dtx1306
1 files changed, 1306 insertions, 0 deletions
diff --git a/Master/texmf-dist/source/latex/koma-script/scrjura.dtx b/Master/texmf-dist/source/latex/koma-script/scrjura.dtx
new file mode 100644
index 00000000000..b6be929fe1f
--- /dev/null
+++ b/Master/texmf-dist/source/latex/koma-script/scrjura.dtx
@@ -0,0 +1,1306 @@
+% \CheckSum{938}
+% \iffalse meta-comment
+% scrjura.sty
+%
+% Copyright (c) Markus Kohm, 2007-2008
+% This is a alpha verion, therefor: All rights reserved.
+%
+% Dieses Paket geht auf eine Anregung von cookie170 zurück.
+% \fi
+%
+% \CharacterTable
+% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+% Digits \0\1\2\3\4\5\6\7\8\9
+% Exclamation \! Double quote \" Hash (number) \#
+% Dollar \$ Percent \% Ampersand \&
+% Acute accent \' Left paren \( Right paren \)
+% Asterisk \* Plus \+ Comma \,
+% Minus \- Point \. Solidus \/
+% Colon \: Semicolon \; Less than \<
+% Equals \= Greater than \> Question mark \?
+% Commercial at \@ Left bracket \[ Backslash \\
+% Right bracket \] Circumflex \^ Underscore \_
+% Grave accent \` Left brace \{ Vertical bar \|
+% Right brace \} Tilde \~}
+%
+% \iffalse
+%%% From File: scrjura.dtx
+%<*dtx>
+\def\LaTeXformat{LaTeX2e}
+\ifx\fmtname\LaTeXformat\def\MainBodyWork{%
+\ProvidesFile{scrjura.dtx}
+%</dtx>
+%<package>\NeedsTeXFormat{LaTeX2e}[1995/06/01]
+%<driver>\ProvidesFile{scrjura.drv}
+%<package>\ProvidesPackage{scrjura}
+%<*dtx|package|driver>
+ [2008/01/23 v0.4b alpha
+%</dtx|package|driver>
+%<driver> (driver)%
+%<package> (package)%
+%<*dtx>
+ (dtx)%
+%</dtx>
+%<*dtx|package|driver>
+ ]
+%</dtx|package|driver>
+%<*dtx|driver>
+\IfFileExists{scrdoc.cls}{%
+ \documentclass[halfparskip-]{scrdoc}
+}{%
+ \documentclass{ltxdoc}
+}
+\providecommand*{\DescribeOption}{\DescribeMacro}
+\providecommand*{\DescribeCounter}{\DescribeMacro}
+\usepackage[latin1]{inputenc}
+\usepackage[ngerman]{babel}
+\IfFileExists{scrjura.sty}{%
+ \usepackage{scrjura}
+}{}
+\CodelineIndex
+\RecordChanges
+\GetFileInfo{scrjura.dtx}
+\DocInput{\filename}
+\end{document}
+%</dtx|driver>
+%<*dtx>
+}\else\let\MainBodyWork\relax\fi
+
+\MainBodyWork
+
+\def\batchfile{scrjura.dtx}
+%</dtx>
+%<ins>\def\batchfile{scrjura.ins}
+%<*dtx|ins>
+\input docstrip.tex
+
+\let\ifbeta=\iffalse
+
+\ifToplevel{\ifx\generate\undefined
+ \errhelp{Install a new version of docstrip.}
+ \errmessage{Old docstrip in input path}
+ \batchmode
+ \csname @@end\endcsname
+ \fi
+ \Msg{************************************************************}
+ \Msg{*}
+ \Msg{* KOMA-Script}
+ \Msg{* a versatile LaTeX2e bundle}
+ \Msg{*}
+ \Msg{* This is `\batchfile', a batchfile to unpack some or all}
+ \Msg{* parts of KOMA-Script. See `liesmich.txt' (german) or}
+ \Msg{* `readme.txt' (english) for additional information.}
+ \Msg{*}
+ \Msg{* If some - maybe old - files of KOMA-Script are already}
+ \Msg{* installed, you will be ask, if it is allowed to overwrite}
+ \Msg{* them. Answering `yes' doesn't mean, that `\batchfile'}
+ \Msg{* WILL overwrite such files. It means only, that}
+ \Msg{* `\batchfile' or installation MAY overwrite them.}
+ \Msg{*}
+ \Msg{************************************************************}
+}
+
+% ---------- some docstrip switchs -------------------------------------
+
+\ifToplevel{%
+ \keepsilent
+ \askforoverwritefalse
+ \ifx\askonceonly\undefined\else\askonceonly\fi
+}
+
+% ---------- defining preambles ----------------------------------------
+
+\preamble
+
+Copyright (c) 2007-2008
+Markus Kohm and any individual authors listed elsewhere in this file.
+
+This file was generated from file(s) of the KOMA-Script bundle.
+---------------------------------------------------------------
+
+This work may be distributed and/or modified under the conditions of
+the LaTeX Project Public License, version 1.3b of the license.
+The latest version of this license is in
+ http://www.latex-project.org/lppl.txt
+and version 1.3b or later is part of all distributions of LaTeX
+version 2005/12/01 or later and of this work.
+
+This work has the LPPL maintenance status "author-maintained".
+
+The Current Maintainer and author of this work is Markus Kohm.
+
+This file may only be distributed together with the files
+`scrlogo.dtx' and `scrjura.dtx'. You may however distribute the files
+`scrlogo.dtx' and `scrjura.dtx' without this file.
+See also `scrjura.dtx' for additional information.
+
+If this file is a beta version, you are not allowed to distribute it.
+
+Currently there is only a short german manual at `scrjura.dtx', that
+should also be found as `scrjura.pdf'.
+
+The KOMA-Script bundle (but maybe not this file) was based upon the
+LaTeX2.09 Script family created by Frank Neukam 1993 and the LaTeX2e
+standard classes created by The LaTeX3 Project 1994-1996.
+
+\endpreamble
+
+% ---------- File generation -------------------------------------------
+
+\generate{\usepreamble\defaultpreamble
+ \file{scrjura.ins}{%
+ \from{scrjura.dtx}{ins}%
+ }%
+% \file{scrjura.drv}{%
+% \from{scrjura.dtx}{driver}%
+% }%
+ \file{scrjura.sty}{%
+ \from{scrjura.dtx}{package}%
+ \from{scrlogo.dtx}{logo}%
+ }%
+}%
+
+% ---------- end of docstrip process -----------------------------------
+
+\ifToplevel{%
+ \Msg{************************************************************}
+ \Msg{*}
+ \Msg{* KOMA-Script}
+ \Msg{* a versatile LaTeX2e bundle}
+ \Msg{*}
+ \ifbeta
+ \Msg{* THIS IS AN ALPHA VERSION. YOU SHOULD NOT INSTALL OR USE IT!}
+ \Msg{* THERE MAY BE A LOT OF BUGS AT THIS VERSION!}
+% \Msg{* PLEASE INSTALL THE RELEASE YOU CAN FIND AT CTAN!}
+ \else
+ \Msg{* To finish the installation you have to move some}
+ \Msg{* files into a directory searched by TeX.}
+ \Msg{* See INSTALL.TXT (english) or INSTALLD.TXT (german)}
+ \Msg{* from KOMA-Script bundle for additional information.}
+ \Msg{*}
+ \Msg{* You may also produce the implementation documentation}
+ \Msg{* including also a short version of the english manual.}
+ \Msg{* To produce it, do}
+ \Msg{* \space\space pdflatex scrjura.dtx}
+ \Msg{* \space\space mkindex scrjura}
+ \Msg{* \space\space pdflatex scrjura.dtx}
+ \Msg{* after finishing the installation.}
+ \Msg{*}
+ \Msg{* Happy TeXing}
+ \fi
+ \Msg{*}
+ \Msg{************************************************************}
+}
+
+\bye
+%</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}}
+% \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}
+%
+% \tableofcontents
+%
+% \section{Rechtlicher Hinweis}
+% Dieser Teil von \KOMAScript{} darf ohne die restlichen Teile von
+% \KOMAScript{} verteilt werden. Dazu dürfen die Dateien
+% »\texttt{scrlogo.dtx}« und »\texttt{scrjura.dtx}« unter den Bedingungen der
+% \LaTeX{} Project Public License, wahlweise Version 1.3b oder (nach Ihrer
+% Entscheidung) jede spätere Version, verteilt und verändert werden. Die
+% aktuelle Version dieser Lizenz ist unter
+% \mbox{http://www.latex-project.org/lppl.txt} zu finden und Version~1.3b oder
+% neuer ist Teil von \LaTeX{} Version 2005/12/01 oder neuer. Es ist nicht
+% gestattet die Datei »\texttt{scrjura.dtx}« ohne die Datei
+% »\texttt{scrlogo.dtx}« zu verteilen. Eine Verteilung ist nur zusammen
+% gestattet.
+%
+% Zu \KOMAScript{} existiert eine ausführliche Anleitung in Deutsch und
+% Englisch. Die Anleitung zum Paket \textsf{scrjura} existiert derzeit jedoch
+% nur in dieser deutschen Kurzform.
+%
+% Das komplette \KOMAScript-Paket ist unter
+% CTAN:/\mbox{macros}/""\mbox{latex}/""\mbox{contrib}/""\mbox{koma-script}/ zu
+% finden, wobei »CTAN:« ein abkürzendes Synonym für das Verzeichnos
+% »tex-archive« jedes CTAN-Servers oder -Spiegels, beispielsweise
+% \mbox{ftp://ftp.dante.de/tex-archive/} darstellt. Siehe
+% \mbox{http://www.ctan.org} für eine Liste aller CTAN-Server und -Spiegel.
+%
+% \section{Das Paket »scrjura«}
+% \subsection{Überblick}
+% Das Paket \textsf{scrjura} ist in erster Linie für den Satz von
+% Verträgen gedacht.
+% Über eine Reihe von Optionen kann die Wirkung des Pakets
+% verändert werden. Innerhalb von Verträgen steht eine Reihe von Befehlen zur
+% Verfügung.
+%
+% Wer juristische Dokumente verfasst, steht oft unter hohem
+% Zeitdruck. Überraschende Fehlermeldungen von \LaTeXe{} kann man da nicht
+% brauchen. Erfreulicherweise setzt \textsf{scrjura} lediglich das keyval"=Paket voraus.
+%
+% \textsf{scrjura} bietet zwei Modi:
+% \begin{enumerate}
+% \item den \glqq Vertragsmodus": das gesamte Dokument wird als Vertrag
+% gesetzt;
+% \item den \glqq Umgebungsmodus": Nur der Text innerhalb der
+% |contract|"=Umgebung wird als Vertrag gesetzt.
+% \end{enumerate}
+% Der \emph{Vertragsmodus} wird durch die Option |contract| beim Laden des
+% Pakets dauerhaft eingeschaltet. Also: Mit |\usepackage[contract]{scrjura}|
+% wird Text nach |\begin{document}| als Vertrag gesetzt. Der
+% \emph{Umgebungsmodus} wird dagegen wie jede andere Umgebung mit
+% |\begin{contract}| begonnen und ist entsprechend mit |\end{contract}| zu
+% beenden. Beide Modi können nicht im gleichen Dokument verwendet werden.
+%
+% Ein Inhaltsverzeichnis wird wie üblich mit |\tableofcontents| erzeugt und
+% enthält -- neben etwaigen anderen Überschriften -- auch alle
+% Paragraphentitel, sofern |scrjura| mit der Option |juratotoc| geladen
+% wurde. Automatische Kolumnentitel sind ebenfalls möglich.
+%
+% Jeder Paragraph hat einen Titel, z.\,B.: |\Paragraph{title=Besitz}|. Die
+% Nummerierung der Paragraphen erfolgt automatisch, kann aber auch manuell
+% vorgenommen werden.
+%
+% Enthält ein Paragraph mehr als einen Absatz, werden alle Absätze automatisch
+% nummeriert. Die Nummerierung kann fallweise abgeschaltet werden. Es ist
+% darüber hinaus möglich, die Sätze eines Absatzes nummerieren zu lassen.
+%
+% Paragraphen, Absätze und Sätze können referenziert werden. Bei Absätzen
+% besteht die Wahl, wie die Ausgabe erfolgt; es ist sowohl möglich,
+% beispielsweise "`§ 16 Absatz 3 Satz 1"' als auch "`§ 16 III 1"' als Ausgabe
+% zu erhalten.
+%
+% \textsf{scrjura} unterstützt das |hyperref|"=Paket, ist damit aber hier noch nicht ausfürlich
+% getestet worden. Wie immer, wird |hyperref| zuletzt geladen. Andernfalls gibt es faszinierende
+% Fehlermeldungen. Wird |hyperref| wieder entfernt, muss die *.aux-Datei gelöscht werden.
+%
+% \subsection{Die Optionen beim Laden des Pakets}
+%
+% \DescribeOption{contract}%
+% Die Option \texttt{contract} sorgt dafür, dass das gesamte Dokument als
+% Vertrag interpretiert wird. Innerhalb des Dokuments ist dann keine weitere
+% Vertragsumgebung zu verwenden. Dasselbe Verhalten kann erreicht werden,
+% indem unmittelbar nach |\begin{document}| eine \texttt{contract}-Umgebung
+% begonnen und unmittelbar vor |\end{document}| wieder beendet wird.
+%
+% \DescribeOption{juratotoc}%
+% \DescribeCounter{juratoclevel}%
+% Die Option \texttt{juratotoc} sorgt dafür, dass die Paragraphen in das
+% Inhaltsverzeichnis eingetragen werden. Dabei wird in der Voreinstellung die
+% Gliederungstiefe 2 für diese Einträge verwendet. Über den Zähler
+% |juratoclevel| kann auch eine andere Gliederungstiefe vorgegeben werden. Das
+% Paket greift hier auf die Routinen von \LaTeX{} zur Erstellung eines
+% Inhaltsverzeichnisses zurück. Bei dreistelligen Paragraphennummern kann im
+% Inhaltsverzeichnis die Nummer in den Überschriftstext hineinragen.
+%
+% Die einfachste Abhilfe gegen diesen Fehler besteht darin, die Box mit der Gliederungsnummer zu
+% verbreitern, beispielsweise mit
+%
+% |\renewcommand{\numberline}[1]{\makebox[6em][l]{#1}}|.
+%
+% Die Breite der Box lässt den jeweiligen Gegebenheiten anpassen.
+%
+% Eine andere Abhilfe bei der Verwendung einer Komascript"=Klasse besteht
+% darin, die Option |tocleft| zu verwenden. Zuletzt kann man
+% selbstverständlich auf die verschiedenen Pakete zurückgreifen, mit denen
+% sich das Inhaltsverzeichnis anpassen lässt. Den Gewinn an Möglichkeiten
+% erkauft man sich allerdings mit einem erhöhten Risiko, dass Fehler
+% auftreten.
+%
+% Im deutschen Recht werden \textit{Absätze} in Normen zwar arabisch nummeriert,
+% aber mit römischen Nummern referenziert.
+% \DescribeOption{parcitename}%
+% Mit der Option \texttt{parcitename} kann dafür gesorgt werden, dass
+% \textsf{scrjura} Absätze anders, nämlich in der Form |\parname~|\meta{Nummer} referenziert.
+%
+% \DescribeOption{sentencecitename}%
+% Normalerweise werden \textit{Sätze} mit arabischen Nummern gezählt und referenziert. Es kann
+% jedoch mit der Option \texttt{sentencecitename} auch dafür gesorgt werden,
+% dass sie in der Form |\sentencename~|\meta{Nummer} referenziert werden.
+%
+%
+% \subsection{Der Paragraph}
+% \label{sec:paragraph}
+% \textsf{scrjura} führt zwei Gliederungsebenen ein: Paragraph und
+% Subparagraph. Selbstverständlich funktioniert deren im folgenden
+% beschriebene Befehle im \textit{Umgebungsmodus} nur innerhalb der
+% Vertragsumgebung.
+%
+% \DescribeMacro{\Paragraph}%
+% Für die Paragraphenüberschrift stehen verschiedene optionale Argumente zur
+% Verfügung, die -- ungewohnterweise -- in einer durch Kommata zu trennenden
+% key=value-Liste angegeben werden:
+%
+% \bigskip\renewcommand{\arraystretch}{1.3}
+% \begin{tabular}{lp{0.4\linewidth}l}\hline
+% Eintrag & Erklärung & Eintrag unterdrücken\\\hline
+% |title = <Titel>| & Titel des Paragraphen & |dummy|\\
+% |head =| \dots & Kolumnentitel des Paragraphen & |nohead|\\
+% |entry =| \dots & Eintrag im Inhaltsverzeichnis& |noentry|\\
+% |number=| \dots & die Paragraphennummer & -\\
+% \end{tabular}\bigskip
+%
+% Beispiele: |\Paragraph{title=Gattungsschuld, number=244}| gibt "`§ 244
+% Gattungsschuld"' aus. |\Paragraph{title=Gattungsschuld}| als erster
+% Paragraph gibt "`§ 1 Gattungsschuld"' aus, während |\Paragraph{}| an
+% gleicher Stelle zu "`§ 1"' führt, also einer Paragraphenzählung ohne Titel.
+%
+% Will man aber beginnend von beispielsweise § 244 an eine Reihe von
+% Paragraphen setzen, empfiehlt es sich nicht, die Option |number=| zu
+% verwenden, denn die Option lässt den Zähler |Paragraph| unberührt. Will man
+% nicht alle Paragraphen per Hand nummerieren, kann mit
+% |\setcounter{Paragraph}{243}| der Startpunkt für eine automatische Zählung
+% gesetzt werden. Bei |\SubParagraph| ist der Zähler natürlich mit einer
+% arabischen Zahl anzugeben, auch wenn die Ausgabe dann in Kleinbuchstaben
+% erfolgt.
+%
+%
+% \DescribeMacro{\SubParagraph}%
+% Sofern ein Paragraph eingeschoben werden soll, kann dieses Makro verwendet
+% werden, es verhält sich im übrigen wie |\Paragraph|. Die Nummerierung fügt
+% der zuletzt verwendeten Paragraphennummer einen Kleinbuchstaben hinzu.
+%
+% Die Nummerierung für |\SubParagraph| erfolgt in \textsf{scrjura.sty} über
+% folgende Definition:
+%
+% |\renewcommand*{\thecontractSubParagraph}{%|\\
+% |{\theParagraph\alph{contractSubParagraph}}}|
+%
+% Wer zwischen Paragraphenzahl und dem Kleinbuchstaben einen Abstand wünscht,
+% sowie nach dem Kleinbuchstaben eine runde Klammer, kann in die Präambel also
+% einfügen:
+%
+% |\renewcommand*{\thecontractSubParagraph}{%|\\
+% |{\theParagraph~\alph{contractSubParagraph})}}|.
+%
+% \DescribeOption{preskip}%
+% \DescribeOption{postskip}%
+% Abstände vor und nach der Paragraphen-Überschrift können derzeit über
+% |\setkeys{contract}{preskip=|\dots|, postskip=|\dots|}| gesetzt werden.
+%
+% Es ist möglich, einen Vertrag in Abschnitte zu unterteilen unter Verwendung
+% z.\,B. von |\section{}|. Allerdings muss entweder vorher die
+% contract"=Umgebung beendet und danach fortgesetzt werden (die
+% Paragraphenzählung wird dadurch nicht zurückgesetzt), oder man setzt davor
+% ein |\parnumberfalse| und danach ein |\parnumbertrue|. Vergisst man dies,
+% wird der Abschnitt zum ersten als Paragraphenabsatz und dann als Abschnitt
+% nummeriert.
+%
+% \subsection{Kolumnentitel}
+% Bei langen Verträgen können automatische Kolumnentitel hilfreich
+% sein. Allerdings hängt die Ausgabe hier davon ab, wie die diese erzeugt
+% werden. \DescribeOption{markboth}%
+% \DescribeOption{markright}%
+% \textsf{scrjura} unterstützt diese \LaTeXe"=Befehle sowie die darauf
+% aufbauenden |\rightmark| und |\leftmark|. Mit dem Paket |scrpage2| könnte
+% beispielsweise in der Präambel angegeben werden
+%
+% |\usepackage[juratotoc, markboth]{scrjura}|\\
+% |\usepackage[automark]{scrpage2}|\\
+% |\pagestyle{scrheadings}|\\
+% |\ihead{\rightmark}|\\
+% |\chead{}|\\
+% |\ohead{\leftmark}|\\
+%
+% \DescribeMacro{\Paragraphmark}%
+% Hiermit können -- ähnlich wie bei |\chaptermark{}| -- Kolumnentitel per Hand
+% gesetzt werden.
+%
+% \subsection{Verweise}
+% \label{sec:referenzierung}
+% \textsf{scrjura} verfügt über einige sehr praktische Möglichkeiten, sich im
+% Vertragstext auf andere Paragraphen, Absätze und Sätze zu beziehen:
+% \begin{itemize}
+% \item |\ref{}| (in der Klammer ist jeweils das Label anzugeben)
+% verweist in der Form Paragraph Absatz Satz (z.\,B. § 2 III 1) auf die
+% genaue Stelle des Labels |\label{}|.
+% \item |\refParagraph{}| druckt nur den Paragraphen,
+% \item |\refPar{}| druckt nur den Absatz und
+% \item |\refSentence{}| nur den Satz.
+% \end{itemize}
+%
+% Daraus kann man problemlos Anweisungen wie:
+%
+% |\newcommand*{\refPARabs}[1]{\refParagraph{#1}~\refPar{#1}}| \\
+% ableiten. |\refPARabs{}| würde die Stelle des Labels mit Paragraph und
+% Absatz beschreiben.
+
+% \subsection{Absatz- und Satznummerierung}
+% \label{sec:abs-u-satznummerierung}
+% \DescribeMacro{\parnumbertrue}%
+% \DescribeMacro{\parnumberfalse}%
+% Absätze in Paragraphen werden automatisch nummeriert. Mit |\parnumberfalse|
+% kann die Nummerierung ab- und mit |\parnumbertrue| wieder eingeschaltet
+% werden.
+%
+% \DescribeMacro{\Sentence} Auch alle einzelnen Sätze eines Absatzes können
+% durch eine hochgestellte Ziffer nummeriert werden. Allerdings kann dies
+% nicht automatisch geschehen. Am einfachsten gestaltet sich die
+% Satznummerierung unter Zuhilfenahme des Befehls |\useshorthands| aus dem
+% ohnehin bei deutschen Texten notwendigen babel"=Paket:
+%
+% \begin{verbatim}
+% \usepackage[...]{babel}
+% \useshorthands{'}
+% \defineshorthand{'S}{\Sentence\ignorespaces}
+% \defineshorthand{'.}{. \Sentence\ignorespaces}
+% \end{verbatim}
+%
+% Die Sätze lassen sich mit einem vorangestellten |'S| nummerieren. Alternativ
+% kann der Satzendepunkt apostrophiert gesetzt werden: |'.|, damit wird dann
+% der nächste Satz nummeriert.
+% %
+% \subsection{kile anpassen}
+% Bei langen Verträgen ist es sehr hilfreich, die Gliederung und die Paragraphentitel
+% auf dem Bildschirm einblenden zu können. Wer kile als Editor verwendet,
+% der kann sich -- Open Source sei Dank! -- selbst helfen. Bei Version 2.0.0
+% von kile genügt es, in der Datei |kiledocumentinfo.cpp| an geeigneter Stelle
+% zwei Zeilen einzufügen:
+% \begin{verbatim}
+% m_dictStructLevel["\\Paragraph"]=
+% KileStructData(5, KileStruct::Sect, "Paragraph");
+%
+% m_dictStructLevel["\\SubParagraph"]=
+% KileStructData(6, KileStruct::Sect, "SubParagraph");
+% \end{verbatim}
+% (Einzufügen ohne Zeilenumbruch.)
+%
+%
+% Zahlen über 7 sind eine schlechte Idee. Nach dem Speichern der Datei folgt der übliche
+% Dreisprung: configure, make, make install (oder checkinstall \dots). kile zeigt danach
+% Paragraphen und »Unterparagraphen« als Dokumentenstruktur an. Vielleicht
+% findet ein Anwender ja heraus, wie dies mit tecniccenter zu bewerkstelligen ist.
+%
+% \subsection{Sonstiges}
+%\label{sec:else}
+%
+%
+% \DescribeMacro{\parname}%
+% \DescribeMacro{\sentencename}%
+% Sprachabhängiger Name von Absatz und Satz.
+%
+% \DescribeMacro{\thecontractParagraph}%
+% \DescribeMacro{\thecontractSubParagraph}%
+% Ausgabe der automatischen Zähler für Paragraph und eingeschobener Paragraph
+% bei Verträgen.
+%
+% \DescribeMacro{\AutoPar}%
+% \DescribeMacro{\ManualPar}%
+% \DescribeMacro{\Par}%
+% Automatische und manuelle Absatznummerierung.
+%
+%
+% \DescribeMacro{\ifparnumber}%
+% \DescribeMacro{\parnumbertrue}%
+% \DescribeMacro{\parnumberfalse}%
+% Absatznummern ein- und ausschalten.
+%
+% \DescribeCounter{par}%
+% \DescribeMacro{\thepar}%
+% \DescribeMacro{\parformat}%
+% \DescribeMacro{\parciteformat}%
+% Zähler für die Absatznummern und dessen Ausgabe und Formatierung und
+% Formatierung der Referenz. ACHTUNG: |\thepar| muss bei unverändertem
+% |\parciteformat| eine arabische Zahl sein!
+%
+% \DescribeMacro{\refParagraph}%
+% So etwas wie |\ref| nur für den Paragraphen.
+%
+% \DescribeMacro{\refPar}%
+% So etwas wie |\ref| nur für den Absatz.
+%
+% \DescribeMacro{\refSentence}%
+% So etwas wie |\ref| nur für den Satz.
+%
+% \DescribeCounter{sentence}%
+% \DescribeMacro{\thesentence}%
+% \DescribeMacro{\sentenceciteformat}%
+% Zähler für die Satznummer und dessen Ausgabe, sowie Formatierung der
+% Referenz. ACHTUNG: |\thesentence| muss bei unverändertem
+% |\sentenceciteformat| eine arabische Zahl sein!
+%
+% \DescribeMacro{\newmaxpar}%
+% \DescribeMacro{\getmaxpar}%
+% Werden intern verwendet und müssen deshalb allenfalls für Paketautoren
+% dokumentiert werden.
+%
+% \section{Bekannte Probleme}
+%
+% Automatische Absatznummerierung kann gestört werden. Paket \textsf{hyperref}
+% darf nicht vor \textsf{scrjura} geladen werden. Noch nicht alles
+% implementiert. Kein Support, da Alpha-Version.
+%
+%
+%
+% \StopEventually{\PrintIndex\PrintChanges}
+%
+% \section{Implementierung}
+%
+% \iffalse
+%<*package>
+% \fi
+%
+% \begin{macrocode}
+\@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.}%
+}
+% \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}
+\DeclareOption{contract}{%
+ \g@addto@macro\document\contract%
+}
+% \end{macrocode}
+% \end{option}
+%
+% \begin{option}{juratotoc}
+% Mit dieser Option wird der Schalter |\if@juratotoc| auf |\iftrue| gesetzt.
+% \begin{macro}{\if@juratotoc}
+% Mit dem Schalter wiederum wird erreicht, dass Paragraphen in das
+% Inhaltsverzeichnis ausgenommen werden.
+% \begin{macrocode}
+\newif\if@juratotoc
+\DeclareOption{juratotoc}{\@juratotoctrue}
+% \end{macrocode}
+% \end{macro}
+% \end{option}
+%
+% \begin{option}{markright}
+% \begin{option}{markboth}
+% \begin{macro}{\Paragraphmark}
+% Mit diesen Optionen wird |\Paragraphmark| so umdefiniert, dass es entweder
+% ein |\markright| oder ein |\markboth| ausführt. Im Gegensatz zu
+% |\chaptermark| etc. erwartet |\Paragraphmark| neben dem Titel auch noch
+% die zu verwendende Nummer (das könnte bei Bedarf noch geändert werden!)
+% \begin{macrocode}
+\newcommand*{\Paragraphmark}[1]{}
+\DeclareOption{markright}{%
+ \renewcommand*{\Paragraphmark}[1]{\markright{#1}}%
+}
+\DeclareOption{markboth}{%
+ \renewcommand*{\Paragraphmark}[1]{\markboth{#1}{#1}}%
+}
+% \end{macrocode}
+% \end{macro}
+% \end{option}
+% \end{option}
+%
+% \begin{option}{parcitename}
+% \begin{option}{sentencecitename}
+% In der Voreinstellung werden die Absätze über römische Zahlen zitiert. Man
+% kann sie aber auch über den Namen zitieren, also in der Form »Absatz 3«
+% statt »III«. Das gleiche gibt es dann auch noch für Sätze.
+% \begin{macrocode}
+\DeclareOption{parcitename}{%
+ \AtEndOfPackage{\renewcommand*{\parciteformat}[1]{\parname~#1}}%
+}
+\DeclareOption{sentencecitename}{%
+ \AtEndOfPackage{\renewcommand*{\sentenceciteformat}[1]{\sentencename~#1}}%
+}
+% \end{macrocode}
+% \end{option}
+% \end{option}
+%
+% Optionen ausführen.
+% \begin{macrocode}
+\ProcessOptions\relax
+% \end{macrocode}
+%
+% Es wird das Paket \textsf{keyval} benötigt, weil alles weitere darauf
+% aufbaut.
+% \begin{macrocode}
+\RequirePackage{keyval}
+% \end{macrocode}
+%
+% \begin{environment}{contract}
+% \begin{macro}{\contract}
+% 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}
+\newcommand*{\contract}{%
+ \renewcommand*{\contract}{%
+ \contract@nest@error{contract}%
+ }%
+ \let\@doendpe\contract@doendpe
+ \let\Paragraph\contract@paragraph
+ \let\c@Paragraph\c@contractParagraph
+ \edef\cl@Paragraph{\cl@Paragraph\cl@contractParagraph}%
+ \let\SubParagraph\contract@subparagraph
+ \let\c@SubParagraph\c@contractSubParagraph
+ \edef\cl@SubParagraph{\cl@SubParagraph\cl@contractSubParagraph}%
+ \let\Par\contract@everypar
+ \let\Sentence\contract@sentence
+}
+\let\if@jura@skiphyperref\iftrue
+\let\cl@Paragraph\@empty
+\let\cl@SubParagraph\@empty
+\newcounter{contractParagraph}
+\renewcommand*{\thecontractParagraph}{%
+ {\S~\arabic{contractParagraph}}}
+\newcounter{contractSubParagraph}
+\@addtoreset{SubParagraph}{Paragraph}
+\renewcommand*{\thecontractSubParagraph}{%
+ {\theParagraph\alph{contractSubParagraph}}}
+% \end{macrocode}
+% \end{macro}
+% \end{environment}
+%
+% \begin{macro}{\contract@paragraph}
+% Das ist das Macro, das in Verträgen |\Paragraph| zur Verfügung stellt.
+% Ein Vertrag besteht aus mehreren Paragraphen. Jeder Paragraph hat einige
+% optionale Elemente, die über das keyval-Paket geregelt werden.
+% \begin{option}{title}
+% \begin{option}{head}
+% \begin{option}{entry}
+% \begin{option}{nohead}
+% \begin{option}{noentry}
+% 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}
+\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}{\def\contract@entry{#1}}
+\define@key{contract}{noentry}[]{\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}
+% \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}
+% Das muss noch auf die Element-Schnittstelle von \KOMAScript{} umgestellt
+% werden!
+% \begin{macrocode}
+\newcommand*{\contract@paragraph@font}{\sffamily\bfseries\large\@hangfrom}
+% \end{macrocode}
+% \end{macro}
+% \begin{Counter}{@AbsParagraph}
+% \begin{macro}{\theH@AbsParagraph}
+% \begin{macro}{\theHParagraph}
+% \begin{macro}{\theHSubParagraph}
+% \begin{macrocode}
+% \textsf{hyperref}-Code, der noch nicht getestet ist!
+\newcounter{@AbsParagraph}
+\newcommand*{\theH@AbsParagraph}{P-\arabic{@AbsParagraph}}
+\newcommand*{\theHParagraph}{\theH@AbsParagraph}
+\newcommand*{\theHSubParagraph}{\theH@AbsParagraph}
+% \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.
+% \begin{macrocode}
+\newcommand*{\contract@paragraph}[1]{%
+ \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.
+% \begin{macrocode}
+ \ifcontract@dummy\else
+ \@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.
+% \begin{macrocode}
+ \ifx\contract@number\relax
+ \let\p@Paragraph\@empty
+ \let\theParagraph\thecontractParagraph
+ \refstepcounter{Paragraph}%
+ \else
+ \begingroup
+ \let\@elt\@stpelt
+ \cl@Paragraph
+ \endgroup
+ \protected@edef\theParagraph{\S~\contract@number}%
+ \protected@edef\@currentlabel{\theParagraph}%
+ \fi
+ \stepcounter{@AbsParagraph}%
+ \begingroup\expandafter\expandafter\expandafter\endgroup
+ \expandafter\ifx\csname if@skiphyperref\endcsname\relax
+ \else
+ \expandafter\let\csname if@jura@skiphyperref\expandafter\endcsname
+ \csname if@skiphyperref\endcsname
+ \fi
+ \if@jura@skiphyperref\else
+ \hyper@refstepcounter{@AbsParagraph}%
+ \typeout{absolute Nummer: \the@AbsParagraph^^JLabel: `\@currentHref'}%
+ \fi
+% \end{macrocode}
+% Zwecks Vereinfachung wird ab hier so getan, als wäre es ein Unterabschnitt.
+% \begin{macrocode}
+ \let\theSubParagraph\theParagraph
+% \end{macrocode}
+% Außer für Blindparagraphen wird dann die Überschrift gesetzt, die
+% Verzeichniseinträge vorgenommen und der Kolumnentitel angepasst.
+% \begin{macrocode}
+ \ifcontract@dummy\else
+ \begingroup
+ \contract@paragraph@font \theParagraph
+ \ifx\contract@title\relax\else\enskip\contract@title\fi
+ \endgroup
+ \ifx\contract@entry\relax\else
+ \addcontentsline{toc}{cpar}{%
+ \protect\numberline{\theParagraph}\contract@entry
+ }%
+ \addcontentsline{cpa}{cpar}{%
+ \protect\numberline{\theParagraph}\contract@entry
+ }%
+ \fi
+ \ifx\contract@head\relax\else
+ \expandafter\Paragraphmark\expandafter{%
+ \expandafter\theSubParagraph\expandafter\enskip\contract@head}%
+ \fi
+ \par\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}
+ \jura@afterheading{contract}%
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{contract@subparagraph}
+% Das entspricht bis auf wenige Kleinigkeiten, die Unterparagraphen betreffen,
+% |\contract@paragraph|
+% \begin{macrocode}
+\newcommand*{\contract@subparagraph}[1]{%
+ \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
+ \@afterindentfalse
+ \vskip\contract@preskip
+ \fi
+ \ifx\contract@number\relax
+ \let\p@SubParagraph\@empty
+ \let\theSubParagraph\thecontractSubParagraph
+ \refstepcounter{SubParagraph}%
+ \else
+ \begingroup
+ \let\@elt\@stpelt
+ \cl@SubParagraph
+ \endgroup
+ \protected@edef\theSubParagraph{\theParagraph\contract@number}%
+ \protected@edef\@currentlabel{\theSubParagraph}%
+ \fi
+ \stepcounter{@AbsParagraph}%
+ \begingroup\expandafter\expandafter\expandafter\endgroup
+ \expandafter\ifx\csname if@skiphyperref\endcsname\relax
+ \else
+ \expandafter\let\csname if@jura@skiphyperref\expandafter\endcsname
+ \csname if@skiphyperref\endcsname
+ \fi
+ \if@jura@skiphyperref\else
+ \hyper@refstepcounter{@AbsParagraph}%
+ \typeout{absolute Nummer: \the@AbsParagraph^^JLabel: `\@currentHref'}%
+ \fi
+ \ifcontract@dummy\else
+ \begingroup
+ \contract@paragraph@font \theSubParagraph
+ \ifx\contract@title\relax\else\enskip\contract@title\fi
+ \endgroup
+ \ifx\contract@entry\relax\else
+ \addcontentsline{toc}{cpar}{%
+ \protect\numberline{\theSubParagraph}\contract@entry
+ }%
+ \addcontentsline{cpa}{cpar}{%
+ \protect\numberline{\theSubParagraph}\contract@entry
+ }%
+ \fi
+ \ifx\contract@head\relax\else
+ \expandafter\Paragraphmark\expandafter{%
+ \expandafter\theSubParagraph\expandafter\enskip\contract@head}%
+ \fi
+ \par\nobreak\vskip\contract@postskip
+ \jura@afterheading{contract}%
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\AutoPar}
+% \begin{macro}{\ManualPar}
+% Automatische oder manuelle Absatznummern für alle Umgebungen aktivieren.
+% \begin{macrocode}
+\newcommand*{\AutoPar}{%
+ \expandafter\let\expandafter\jura@everypar
+ \csname \jura@type @everypar\endcsname
+}
+\newcommand*{\ManualPar}{%
+ \let\jura@everypar\relax
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\jura@afterheading}
+% Entspricht |\afterheading| mit Erweiterungen für automatischen
+% Absatznummern.
+% \begin{macrocode}
+\newcommand*{\jura@afterheading}[1]{%
+ \@nobreaktrue
+ \everypar{%
+ \if@nobreak
+ \@nobreakfalse
+ \clubpenalty \@M
+ \if@afterindent \else
+ {\setbox\z@\lastbox}%
+ \fi
+ \else
+ \clubpenalty \@clubpenalty
+ \everypar{%
+ \jura@everypar
+ }%
+ \fi
+ \jura@everypar
+ }%
+ \def\jura@type{#1}%
+ \AutoPar
+}
+% \end{macrocode}
+% \begin{macro}{\jura@everypar}
+% 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*{\jura@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{macrocode}
+\CheckCommand*\@doendpe{\@endpetrue
+ \def\par{\@restorepar\everypar{}\par\@endpefalse}\everypar
+ {{\setbox\z@\lastbox}\everypar{}\@endpefalse}}
+\newcommand*{\contract@doendpe}{%
+ \@endpetrue
+ \def\par{%
+ \@restorepar\everypar{%
+ \csname jura@everypar\endcsname
+ }%
+ \par\@endpefalse
+ }%
+ \everypar{%
+ {\setbox\z@\lastbox}\everypar{%
+ \csname jura@everypar\endcsname
+ }%
+ \@endpefalse
+ }%
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\l@cpar}
+% Verzeichnis-Eintrag für einen Vertrags-Paragraphen.
+% \begin{macrocode}
+\newcommand*{\l@cpar}[2]{%
+ \if@juratotoc
+ \@dottedtocline{\value{juratoclevel}}{1.5em}{2em}{#1}{#2}%
+ \fi
+}
+% \end{macrocode}
+% \begin{Counter}{juratoclevel}
+% Dieser Zähler gibt an, in welcher Ebene die Verzeichniseinträge für die
+% Paragraphen erfolgen. Voreinstellung ist Ebene 2.
+% \begin{macrocode}
+\newcounter{juratoclevel}
+\setcounter{juratoclevel}{2}%
+% \end{macrocode}
+% \end{Counter}
+% \end{macro}
+%
+% \begin{macro}{\jura@separator}
+% Wird verwendet, damit Leerzeichen am Anfang oder Ende entfernt werden können.
+% \begin{macrocode}
+\DeclareRobustCommand*{\jura@separator}[1]{#1}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\contract@everypar}
+% |\jura@everpar| für Verträge.
+% \begin{macro}{\ifparnumber}
+% \begin{Counter}{par}
+% \begin{macro}{\thepar}
+% \begin{macro}{\theHpar}
+% \begin{macro}{\p@par}
+% 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}
+\newif\ifparnumber
+\newcounter{par}
+\renewcommand*{\thepar}{\arabic{par}}
+\newcommand*{\theHpar}{\theH@AbsParagraph-\Roman{par}}
+\newcommand*{\parformat}{(\thepar)}
+\renewcommand*\p@par{{\theSubParagraph\jura@separator{\nobreakspace}}}
+\@addtoreset{par}{Paragraph}
+\@addtoreset{par}{SubParagraph}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{Counter}
+% \end{macro}
+% \begin{macrocode}
+\newcommand*{\contract@everypar}{%
+ \ifparnumber
+ \refstepcounter{par}%
+ \refstepcounter{sentence}%
+ \begingroup
+ \protected@write\@auxout{}{%
+ \string\newmaxpar{contractpars}{\theSubParagraph}{\arabic{par}}}%
+ \getmaxpar\@tempa{contractpars}{\theSubParagraph}%
+ \typeout{Stored max is \@tempa}%
+ \ifnum \@tempa>\@ne
+ \parformat\nobreakspace
+ \fi
+ \endgroup
+ \else
+ \setcounter{sentence}{0}\refstepcounter{sentence}%
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\refParagraph}
+% Zitiert nur den Paragraphen einer Paragraphen, eines Absatzes oder eines
+% Satzes.
+% \begin{macrocode}
+\newcommand*{\refParagraph}[1]{%
+ \expandafter\ifx\csname r@#1\endcsname\relax
+ \ref{#1}%
+ \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@#1\endcsname}%
+% \end{macrocode}
+% Den ersten Teil der Referenz in |\@tempa| ablegen.
+% \begin{macrocode}
+ \def\@tempc##1##2\@nil{##1}%
+ \let\jura@separator\@gobble
+ \protected@edef\@tempa{\expandafter\expandafter\expandafter\@tempc
+ \csname r@#1\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@#1\endcsname{{\@tempa}\@tempb}%
+ \let\protect\@@protect
+ \ref{#1}%
+ \endgroup
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\refPar}
+% Zitiert nur den Absatz eines Absatzes oder eines Satzes.
+% \begin{macrocode}
+\newcommand*{\refPar}[1]{%
+ \expandafter\ifx\csname r@#1\endcsname\relax
+ \ref{#1}%
+ \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@#1\endcsname}%
+% \end{macrocode}
+% Den ersten Teil der Referenz in |\@tempa| ablegen.
+% \begin{macrocode}
+ \def\@tempc##1##2\@nil{##1}%
+ \let\jura@separator\@gobble
+ \protected@edef\@tempa{\expandafter\expandafter\expandafter\@tempc
+ \csname r@#1\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 `#1' on page \thepage \space
+ with undefined par number}%
+ }\noexpand\@nil}%
+ \let\@@protect\protect
+ \let\protect\noexpand
+ \expandafter\edef\csname r@#1\endcsname{{\@tempa}\@tempb}%
+ \let\protect\@@protect
+ \ref{#1}%
+ \endgroup
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\refSentence}
+% Zitiert nur den Satz eines Satzes.
+% \begin{macrocode}
+\newcommand*{\refSentence}[1]{%
+ \expandafter\ifx\csname r@#1\endcsname\relax
+ \ref{#1}%
+ \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@#1\endcsname}%
+% \end{macrocode}
+% Den ersten Teil der Referenz in |\@tempa| ablegen.
+% \begin{macrocode}
+ \def\@tempc##1##2\@nil{##1}%
+ \let\jura@separator\@gobble
+ \protected@edef\@tempa{\expandafter\expandafter\expandafter\@tempc
+ \csname r@#1\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 `#1' on page \thepage \space
+ with undefined sentence number}%
+ }\noexpand\@nil}%
+ \let\@@protect\protect
+ \let\protect\noexpand
+ \expandafter\edef\csname r@#1\endcsname{{\@tempa}\@tempb}%
+ \let\protect\@@protect
+ \ref{#1}%
+ \endgroup
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\contract@sentence}
+% Sätze nummerieren.
+% \begin{Counter}{sentence}
+% \begin{macro}{\thesentence}
+% \begin{macro}{\theHsentence}
+% \begin{macro}{\p@sentence}
+% 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.
+% \begin{macrocode}
+\newcounter{sentence}[par]
+\renewcommand*{\thesentence}{\arabic{sentence}}
+\newcommand*{\theHsentence}{\theHpar-\arabic{sentence}}
+\renewcommand*{\p@sentence}{\expandafter\p@@sentence}
+\newcommand*{\p@@sentence}[1]{\p@par{{\par@cite{\thepar}}%
+ \jura@separator{\nobreakspace}}{\sentence@cite{#1}}}
+\newcommand*{\contract@sentence}{%
+ \refstepcounter{sentence}%
+ \ensuremath{^{\mbox{\fontsize\sf@size\z@\selectfont\thesentence}}}%
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{Counter}
+% \end{macro}
+%
+% \begin{macro}{\parciteformat}
+% Zitierstil für Absätze. In der Voreinstellung ist das |\@Roman|.
+% \begin{macrocode}
+\DeclareRobustCommand*{\par@cite}[1]{\parciteformat{#1}}
+\newcommand*{\parciteformat}[1]{\@Roman{\numexpr #1\relax}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\sentenceciteformat}
+% Zitierstil für Sätze. In der Voreinstellung ist das |\@arabic|.
+% \begin{macrocode}
+\DeclareRobustCommand*{\sentence@cite}[1]{\sentenceciteformat{#1}}
+\newcommand*{\sentenceciteformat}[1]{\@arabic{\numexpr #1\relax}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\parname}
+% \begin{macro}{\sentencename}
+% Der Name eines Absatzes und eines Satzes.
+% \begin{macrocode}
+\newcommand*{\parname}{Paragraph}
+\AtBeginDocument{%
+ \@ifundefined{captionsgerman}{}{%
+ \addto\captionsgerman{\def\parname{Absatz}}%
+ \addto\captionsgerman{\def\sentencename{Satz}}%
+ \ifnum \l@german=\language\selectlanguage{german}\fi
+ }%
+ \@ifundefined{captionsngerman}{}{%
+ \addto\captionsngerman{\def\parname{Absatz}}%
+ \addto\captionsngerman{\def\sentencename{Satz}}%
+ \ifnum \l@ngerman=\language\selectlanguage{ngerman}\fi
+ }%
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\newmaxpar}
+% \begin{macro}{\getmaxpar}
+% 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}
+\newcommand*{\newmaxpar}[3]{%
+ \begingroup
+ \protected@edef\@tempa{#2}\@onelevel@sanitize\@tempa
+ \expandafter\xdef\csname max@#1@\@tempa\endcsname{#3}%
+ \endgroup
+}
+\newcommand*{\getmaxpar}[3]{%
+ \begingroup
+ \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}
+% \end{macro}
+% \end{macro}
+%
+% \iffalse
+%</package>
+% \fi
+%
+% \Finale
+%
+\endinput
+%
+% end of file `scrjura.dtx'
+%%% Local Variables:
+%%% mode: doctex
+%%% coding: iso-latin-1
+%%% TeX-master: t
+%%% End: