diff options
author | Karl Berry <karl@freefriends.org> | 2008-11-12 00:44:32 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2008-11-12 00:44:32 +0000 |
commit | e0fa36719ae8b943d0c515ccc2a4f1e2670cc614 (patch) | |
tree | cfd7d451101897cf222cd885a36573ccacd922c4 /Master/texmf-dist/source/latex/koma-script/scrjura.dtx | |
parent | 6d06dddb5a2041f7c07b6502a3bfa973f0d86635 (diff) |
koma-script update (11nov08)
git-svn-id: svn://tug.org/texlive/trunk@11262 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/source/latex/koma-script/scrjura.dtx')
-rw-r--r-- | Master/texmf-dist/source/latex/koma-script/scrjura.dtx | 1306 |
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: |