%% 
% \iffalse metacomment%
%% Written by Lucas Wartenburger
%%
% This is a LaTeX2e package for handlung citations judgements and official documents. 
% It might be interesting primarily for papers about German law. Threrefore, the
% documentation will be in German.
%
% This material is copyrighted by Lucas Wartenburger. However, rights are granted
% according to version 2 of the GNU Public Licence (GPL). 
% This means in essence:
% - this file is freely distributable provided that it is not modified
% - it may be sold
% - it may be modified provided that the result is also placed under the GPL.
% (wherever these terms divert from the GPL, the latter shall prevail)
%
% Um eine Dokumentation zu erzeugen, lassen Sie einfach LaTeX2e "uber diese 
% Datei laufen.
% Wenn Sie das Package benutzen wollen, starten sie TeX mit der
% Datei abbreviations.ins und legen sie die so erzeugten Dateien in ein Verzeichnis, 
% wo sie TeX sp"ater findet.
%
% \fi
%
% \CheckSum{3332}
% 
% \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         \~}
%
%
% \ProvidesFile{jurarsp.dtx}[2006/03/04 v0.52 Documentation]
%
% \DoNotIndex{\@,\@@par,\@beginparpenalty,\@empty}
% \DoNotIndex{\@flushglue,\@gobble,\@input}
% \DoNotIndex{\@makefnmark,\@makeother,\@maketitle}
% \DoNotIndex{\@namedef,\@ne,\@spaces,\@tempa}
% \DoNotIndex{\@tempb,\@tempswafalse,\@tempswatrue}
% \DoNotIndex{\@thanks,\@thefnmark,\@topnum}
% \DoNotIndex{\@@,\@elt,\@forloop,\@fortmp,\@gtempa,\@totalleftmargin}
% \DoNotIndex{\",\/,\@ifundefined,\@nil,\@verbatim,\@vobeyspaces}
% \DoNotIndex{\|,\~,\ ,\active,\advance,\aftergroup,\begingroup,\bgroup}
% \DoNotIndex{\mathcal,\csname,\def,\documentstyle,\dospecials,\edef}
% \DoNotIndex{\egroup}
% \DoNotIndex{\else,\endcsname,\endgroup,\endinput,\endtrivlist}
% \DoNotIndex{\expandafter,\fi,\fnsymbol,\futurelet,\gdef,\global}
% \DoNotIndex{\hbox,\hss,\if,\if@inlabel,\if@tempswa,\if@twocolumn}
% \DoNotIndex{\ifcase}
% \DoNotIndex{\ifcat,\iffalse,\ifx,\ignorespaces,\index,\input,\item}
% \DoNotIndex{\jobname,\kern,\leavevmode,\leftskip,\let,\llap,\lower}
% \DoNotIndex{\m@ne,\next,\newpage,\nobreak,\noexpand,\nonfrenchspacing}
% \DoNotIndex{\obeylines,\or,\protect,\raggedleft,\rightskip,\rm,\sc}
% \DoNotIndex{\setbox,\setcounter,\small,\space,\string,\strut}
% \DoNotIndex{\strutbox}
% \DoNotIndex{\thefootnote,\thispagestyle,\topmargin,\trivlist,\tt}
% \DoNotIndex{\twocolumn,\typeout,\vss,\vtop,\xdef,\z@}
% \DoNotIndex{\,,\@bsphack,\@esphack,\@noligs,\@vobeyspaces,\@xverbatim}
% \DoNotIndex{\`,\catcode,\end,\escapechar,\frenchspacing,\glossary}
% \DoNotIndex{\hangindent,\hfil,\hfill,\hskip,\hspace,\ht,\it,\langle}
% \DoNotIndex{\leaders,\long,\makelabel,\marginpar,\markboth,\mathcode}
% \DoNotIndex{\mathsurround,\mbox,\newcount,\newdimen,\newskip}
% \DoNotIndex{\nopagebreak}
% \DoNotIndex{\parfillskip,\parindent,\parskip,\penalty,\raise,\rangle}
% \DoNotIndex{\section,\setlength,\TeX,\topsep,\underline,\unskip,\verb}
% \DoNotIndex{\vskip,\vspace,\widetilde,\\,\%,\@date,\@defpar}
% \DoNotIndex{\[,\{,\},\]}
% \DoNotIndex{\count@,\ifnum,\loop,\today,\uppercase,\uccode}
% \DoNotIndex{\baselineskip,\begin,\tw@}
% \DoNotIndex{\a,\b,\c,\d,\e,\f,\g,\h,\i,\j,\k,\l,\m,\n,\o,\p,\q}
% \DoNotIndex{\r,\s,\t,\u,\v,\w,\x,\y,\z,\A,\B,\C,\D,\E,\F,\G,\H}
% \DoNotIndex{\I,\J,\K,\L,\M,\N,\O,\P,\Q,\R,\S,\T,\U,\V,\W,\X,\Y,\Z}
% \DoNotIndex{\1,\2,\3,\4,\5,\6,\7,\8,\9,\0}
% \DoNotIndex{\!,\#,\$,\&,\',\(,\),\+,\.,\:,\;,\<,\=,\>,\?,\_}
% \DoNotIndex{\discretionary,\immediate,\makeatletter,\makeatother}
% \DoNotIndex{\meaning,\newenvironment,\par,\relax,\renewenvironment}
% \DoNotIndex{\repeat,\scriptsize,\selectfont,\the,\undefined}
% \DoNotIndex{\arabic,\do,\makeindex,\null,\number,\show,\write,\@ehc}
% \DoNotIndex{\@author,\@ehc,\@ifstar,\@sanitize,\@title,\everypar}
% \DoNotIndex{\if@minipage,\if@restonecol,\ifeof,\ifmmode}
% \DoNotIndex{\lccode,\newtoks,\onecolumn,\openin,\p@,\SelfDocumenting}
% \DoNotIndex{\settowidth,\@resetonecoltrue,\@resetonecolfalse,\bf}
% \DoNotIndex{\clearpage,\closein,\lowercase,\@inlabelfalse}
% \DoNotIndex{\selectfont,\mathcode,\newmathalphabet,\rmdefault}
% \DoNotIndex{\bfdefault}
% \DoNotIndex{\ifthenelse,\equal,\and,\or,\OR,\emph,\@for}
%
% \GetFileInfo{jurarsp.dtx}
% \title{Die Dokumentklasse |jurarsp|
% \thanks{Version \fileversion}}
% \author{Lucas Wartenburger}
% \date{\filedate}
% \maketitle
% \pagebreak[2]
%
% \begin{abstract}
%Zur Verwendung von Literatur in juristischen Dokumenten existiert bereits das umfangreiche
%|jurabib|-Paket von Jens Berger. Daneben enthalten juristische Texte jedoch häufig Zitate 
%anderer Quellen, insbesondere der Rechtsprechung (Urteile) sowie -- zumindest im Steuer- und 
%Europarecht -- amtlicher Dokumente (BMF-Schreiben etc.)
%Das vorliegende Paket ermöglicht es, diese Zitate aus einer \BibTeX-Datenbank zu erzeugen und
%automatisch in ein Verzeichnis aufzunehmen. 
%Das Paket versteht sich also als Ergänzung zu |jurabib|; i.d.R. werden beide Pakete nebeneinander
%zum Einsatz kommen.
% \end{abstract}
%
% \tableofcontents
%
% \section{Einführung}
% In juristischen Texten sind Zitate von Rechtsprechung und amtlichen Dokumenten oft ebenso 
% häufig wie "`normale"' Literatur-Zitate. Es liegt daher nahe, \LaTeX{} zur Automatisierung dieser 
% Zitate einzusetzen; insbesondere in Verbindung mit einer \BibTeX-Datenbank. So müssten die
% Urteile nur noch an einer Stelle eingegeben werden und wären danach in allen Dokumenten
% verfügbar. 
% \BibTeX{} ist jedoch auf das Zitieren von Literatur ausgelegt, daran ändert auch das |jurabib|
% Paket nichts. Rechtsprechung gehorcht jedoch -- (auch?) was die Zitierweise angeht -- 
% etwas anderen Gesetzen. So ist ein Urteil häufig an verschiedenen Stellen veröffentlicht. 
% Es gibt keinen "`Autor"' und keinen "`Herausgeber"' dafür andere wichtige Daten, wie 
% Aktenzeichen, Datum und -- im Reich des caselaw (einschl. EuGH) -- die Angabe der Parteien. 
% Das vorliegende Paket ist ein Versuch, die Fähigkeiten von \BibTeX{} und \LaTeX{} dennoch 
% für Rechtsprechung und amtliche Dokumente nutzbar zu machen. 
% \section{Einbindung des Paketes}
% \subsection{Installation der Dateien}
% Um die erforderlichen Dateien zu erzeugen, muss \TeX{} mit dem Aufruf
% \begin{quote}
% |tex jurarsp.ins| 
% \end{quote}
% gestartet werden. Die Datei |jurarsp.sty|
% muss so abgelegt werden, dass \LaTeX{} sie später findet. Die Datei |jurarsp.bst| muss 
% von \BibTeX gefunden werden, ist also i.d.R. unter |bibstyles| abzulegen. 
% Die Dateien |rsptest.tex| sowie |rsptest.bib| dienen als Beispiel.
% Die Datei |jurarsp.cfg| kann als Muster verwendet werden, ist aber 
% für den Ablauf nicht erforderlich.
%
% \subsection{Einbindung des Paketes}
% Um dieses Package zu verwenden, genügt eine Einbindung in den header des Dokuments 
% \begin{quote}
% |\usepackage{jurarsp}|
% \end{quote}
% An der Stelle im Dokument, an der später das Rechtsprechungsverzeichnis erscheinen
% soll, muss folgender Eintrag vorgenommen werden:
%\begin{quote}
%|\rspstyle{jurarsp}|\DescribeMacro{\rspstyle}
%
%|\rspdata{|\meta{Datenbankdatei}|}|\DescribeMacro{\rspdata}
%\end{quote}
% Benutzer von \BibTeX wird dieser Aufbau bekannt vorkommen, nur die Kommandos wurden leicht
% abgewandelt. 
% Die Datenbankdatei ist die |bib|-Datei, in der die Angaben enthalten sind, im Beispieldokument
% also |rsptest.bib|.
%
% Schließlich muss noch \BibTeX aufgerufen werden, um die Daten aus der Datenbank zu extrahieren. 
% Insgesamt sieht der Aufruf wie folgt aus:
%\begin{quote}
%|latex| \meta{Dateiname}
%
%|bibtex| \meta{Dateiname}|.rsp|
%
%|latex| \meta{Dateiname}
%
%|latex| \meta{Dateiname}
%\end{quote}
% Die Abgabe der Endung |.rsp| ist unbedingt nötig, damit 
% die Daten nicht mit denen einer normalen Literaturdatenbank durcheinander geraten. 
%
%\subsection{Probleme beim Umstieg auf Version 0.52}
%Wer ein Dokument zuvor mit Version 0.50 oder 0.51 bearbeitet hat und nun auf Version 0.52 umsteigt, wird anfangs u.U. mit einer Flut von Fehlermeldungen überhäuft. 
%
%Dies liegt i.d.R. daran, dass die bib-Datenbank nunmehr das Feld "`citeas"' erlaubt und daher die interne Struktur der temporären Daten geändert wurde. Man kann das Problem dadurch lösen, dass man die Dateien mit der Endung "`rsp.aux"', "`rsp.bbl"' und "`rsp.blg"' löscht. Danach sollte es funktionieren.
%
% \section{Aufbau der BibTeX-Datenbank}
% \subsection{Die Eintragstypen}
% Das Paket stellt vier eigene Eintragungstypen (entry-types) für \BibTeX{} zur Verfügung. 
% Die klassischen \BibTeX-entries (|article|, |book| etc.) funktionieren mit diesem 
% Paket \emph{nicht}.
% \subsubsection{Der Typ \texttt{judgement}} 
% \DescribeEnv{judgement} Der wichtigste neue Eintragstyp ist |judgement|. Er enthält Daten
% zu Urteilen. Das nachfolgende Beispiel sollte weitgehend selbsterklärend sein.
%\begin{verbatim}
%@JUDGEMENT{aaa:dummy,
%crossref = "bghz",
%courtspecial = {GrS},
%chamber = {Gro{\ss}er Senat},
%date = {01.08.1993},
%decision = {Urteil},
%officialvolume = {83},
%officialpages = {244 ff.},
%journal = njw,
%journalyear = {1994},
%journalpages = {1923 ff.},
%journaladditional = {= JZ 1995, 2323 ff.},
%name = {Dummy-Entscheidung},
%parties = {Meyer ./. M{\"u}ller},
%sign = {II ZR 233/91},
%language = {Deutsch},
%keyword = {Test},
%laws = {{\SS} 223 ff. BGB},
%commented = {abl. Anm. K{\"u}belb{\"o}ck, MDR 95, 223 ff.},
%note = {rkr.},
%annote = {Kopien in Ordner 23, noch lesen},
%citeas = {official},
%sortkeyu = {}}
%\end{verbatim}
% \DescribeEnv{crossref}
% Über das |crossref|-Feld wird der entsprechende |court|-Entry mit den Daten des Gerichts
% eingebunden, die für jedes Urteil gleich sein sollten. 
% \DescribeEnv{sortkeyu}
% |sortkeyu| enthält einen Sortierschlüssel auf Urteilsebene. Dieser wird benutzt, um die Urteile
% eines Gerichts untereinander abweichend von der normalen Reihenfolge zu sortieren. 
% \DescribeEnv{note}\DescribeEnv{annote}
% Die Felder |note| und |annote| dienen zum Ablegen von Kommentaren, die in einem Entwurfsmodus 
% auch mit ausgedruckt werden können. 
% \DescribeEnv{citeas}
% Das Feld |citeas| kennt derzeit nur die Einträge "`journal"' oder "`official"'; alle anderen Inhalte werden ignoriert bzw. haben keine Auswirkung. Wenn dort "`journal"' eingegeben ist, wird das System in jedem Fall das Zeitschrift-Zitat verwenden, egal ob Zeitschriften-Daten eingegeben sind oder nicht und -- was wichtiger ist -- egal, ob daneben auch Daten aus der amtlichen Sammlung angeben sind und "`preferofficial"' auf true steht. 
% \subsubsection{Der Typ \texttt{court}}
% \DescribeEnv{court}
% Der Eintragstyp |court| speichert Daten zum Gericht und steht zu den |judgement|-Einträgen 
% gewissermaßen in einer |1:n|-Beziehung, wobei |crossref| zum Herstellen der Beziehung dient.
% Beispiel:
%\begin{verbatim}
%@COURT{bghz,
%courtname = {Bundesgerichtshof},
%courtshort = {BGH},
%place = {Karlsruhe},
%official = {BGHZ},
%officialshort = {Z},
%sortkeyg = {015010010000},
%level = {Bundesgerichtshof},
%state = {Bundesrepublik Deutschland},
%jurisdiction = {Ordentliche Gerichtsbarkeit}}
%\end{verbatim}
% \DescribeEnv{sortkeyg}
% Das Feld |sortkeyg| beinhaltet den Sortierschlüssel auf Gerichtsebene und ist damit vorrangig
% zu |sortkeyu|. Die Felder |level|, |state| und |jurisdiction| dienen zur Gruppierung des 
% Rechtsprechungs-Verzeichnisses und werden dort erläutert.
% \DescribeEnv{official}
% |official| beinhaltet die amtliche Sammlung der Entscheidungen des Gerichts. Das Feld wird mit 
% |officialpages| und |officialvolume| aus dem |judgement|-Eintrag kombiniert.
% 
% \subsubsection{Die Typen \texttt{document} und \texttt{institution}}
% \DescribeEnv{document}\DescribeEnv{institution}
% |document| entspricht dem Typ |judgement|, beinhaltet aber keine Urteile, sondern 
% amtliche Dokumente (z.B. Entscheidungen der Kommission oder BMF-Schreiben). 
% |institution| enthält die entsprechenden Daten zu der öffentlichen Stelle
% und entspricht damit dem Typ |court|.
% Die Einträge könnten etwa so aussehen:
%\begin{verbatim}
%@DOCUMENT{bmf:st01:175,
%crossref = "bmf",
%date = {23.01.2001},
%decision = {\abbbmf{}-Schreiben},
%officialyear = {2001},
%officialpages = {175},
%name = {Schreiben betr. ertragsteuerliche Behandlung von Film- 
%und Fernsehfonds},
%sign = {IV A 6 --- S 2241 --- 8/01},
%language = {Deutsch},
%annote = {ge{\"a}nd. durch BMF v. 5.8.03
%in Beck Nr. 1 {\S} 5 / 4},
%sortkeyu = {0}}
%
%@INSTITUTION{bmf,
%courtname = {Bundesminister der Finanzen},
%courtshort = {BMF},
%place = {Berlin},
%official = {Bundessteuerblatt Teil I},
%officialshort = {BStBl. I},
%sortkeyg = {015020010000},
%level = {Bundesminister der Finanzen},
%state = {Bundesrepublik Deutschland},
%jurisdiction = {Finanzverwaltung}}
%\end{verbatim}
%
% \subsection{Das Rechtsprechungs-Verzeichnis}
% Ein Verzeichnis mit den beiden oben dargestellten Einträgen würde so aussehen:
%
% \rspstyle{jurarsp}
% \rspdata{rsptest}
% Hier die Zitate: \footnote{^^A
% \rcite[12]{aaa:dummy}, \rcite[13]{bmf:st01:175}.}
% \subsection{Ein Wort zur Datenbank}
% Dabei stellt sich freilich die Frage: Wie bearbeite ich die \BibTeX-Einträge am besten? Die
% gängigen Programme sind an |jurarsp| nicht angepasst, was aber durchaus möglich ist. Mir 
% persönlich waren diese jedoch alle etwas zu dubios, deshalb habe ich mir eine kleine
% Access-Datenbank gebastelt, die Literatur und Rechtsprechung aufnimmt und auf Kommando
% in eine \BibTeX-Datenbank exportiert. Wer daran interessiert ist, kann sich gerne an mich
% wenden. Ich kann die Datenbank aber nur als |mdw|-Datei herausgeben, da ich einiges an Code darin
% verwendet habe, der mir nicht selbst gehört. Ich persönlich traue einer relationalen Datenbank
% meine Daten einfach lieber an als einer Textdatei. Aber das ist Geschmackssache. 
%
% \section{Zitieren von Rechtsprechung und Dokumenten}
% Nachdem diese Arbeiten erledigt sind, kann die Datenbank im Dokument verwendet werden. Die 
% Befehle zum Aufrufen der Zitate sind recht ähnlich zu den Standard-\LaTeX-Befehlen.
% \subsection{Standardzitat}
% \DescribeMacro{\rcite}
% Der wichtigste Befehl ist |\rcite| und hört auf das Kommando:
%\begin{quote}
%|\rcite[|\meta{Fundstelle}|]{|\meta{Kennung}|}|
%\end{quote}
%Mit Kennung ist dabei die Eintragskennung aus der \BibTeX-Datenbank gemeint. Einen 
%Hinweis auf S. 25 des Beispielurteils
%von oben könnte man also erzeugen durch den Aufruf:
%\begin{quote}
%|\rcite[S.~25]{aaa:dummy}|
%\end{quote}
%Das Ergebnis wäre:
%\begin{quote}
%\rcite[S.~25]{aaa:dummy}
%\end{quote}
% \subsection{Sonderformen}
% \DescribeMacro{\rfullcite}
% Der Befehl |\rfullcite| erstellt ein komplettes Zitat mit zahlreichen Detailangaben.
%\begin{quote}
%|\rfullcite[S.~25]{aaa:dummy}|
%\end{quote}
%Das Ergebnis wäre:
%\begin{quote}
%\rfullcite[S.~25]{aaa:dummy}
%\end{quote}
% \DescribeMacro{\rleancite}
% |\rleancite| ist gewissermaßen das Gegenstück dazu und erstellt ein schlankes Zitat. Sinn macht
% dies etwa dann, wenn normalerweise (s.u.) voll zitiert wird und man diese Regel in einem Fall
% unterbrechen möchte. Beispiel:
%\begin{quote}
%|\rleancite[S.~25]{aaa:dummy}|
%\end{quote}
%Das Ergebnis wäre (da keine weiteren Optionen eingestellt sind) identisch mit einem Normalzitat:
%\begin{quote}
%\rleancite[S.~25]{aaa:dummy}
%\end{quote}
% \DescribeMacro{\rrepeatcite}
% Das Kommando |\rrepeatcite| ist für "`Wiederholungszitate"' vorgesehen, gemeint sind damit solche Fälle, in denen eine ganze Reihe von Urteilen des gleichen Gerichts hintereinander zitiert wird. 
% Der Name des Gerichts kann dann bei den Folgezitaten weggelassen werden. Man muss jedoch selbst darauf achten, dass das Ergebnis noch sinnvoll und lesbar ist. Später ließe sich dieser Punkt u.U. noch automatisieren, das ist aber nicht trivial.
%\begin{quote}
%|\rcite[33]{aaa:dummy}; \rrepeatcite[55]{aaa:dummy}|
%\end{quote}
%Das Ergebnis sieht so aus:
%\begin{quote}
%\rcite[33]{aaa:dummy}; \rrepeatcite[55]{aaa:dummy}
%\end{quote}
% \DescribeMacro{\rshortcite}
% |\rshortcite| funktioniert ähnlich wie |\rrepeatcite| und erzwingt im Zitat die Kurzform der
% amtlichen Sammlung. 
%\begin{quote}
%|so schon der BGH (\rshortcite[S.~25]{aaa:dummy})|
%\end{quote}
%Resultat:
%\begin{quote}
%so schon der BGH (\rshortcite[S.~25]{aaa:dummy})
%\end{quote}
% M.E. ist diese Zitierweise nicht sehr hilfreich, man sieht es aber dann und wann.
% \DescribeMacro{\rnocite}
% |\rspnocite| erzeugt gar kein Zitat, sorgt aber dafür, dass der Eintrag in das Verzeichnis 
% aufgenommen wird (allerdings ohne dass eine Seitenzahl daneben erscheint).
% \DescribeMacro{\rphantomcite}
% |\rphantomcite| erzeugt ein "`Phantom-Zitat"', also einen Eintrag, der im Rechtsprechungs-Verzeichnis mit Angabe einer Seite ("`zitiert auf S. \dots"') erscheint, aber kein Zitat. Sinnvoll könnte dies dann sein, wenn man ein Urteil allgemein bespricht, ohne sich auf eine konkrete Stelle zu beziehen (ob das guter Stil ist, ist freilich eine andere Frage). 
% Man beachte, wie sich dieses Phantomzitat auf die Seitenangabe oben im Verzeichnis auswirkt.
%\begin{quote}
%|\rphantomcite{bmf:st01:175}|
%\end{quote}
%\rphantomcite{bmf:st01:175}
%
% \section{Individuelles Anpassen der Zitierweise}
% Zahlreiche Eigenschaften des Paketes lassen sich durch den Aufruf von Optionen 
% konfigurieren. So sind die Zitate in den Standardeinstellungen minimal eingestellt: Wenn man
% schon man alles in der Datenbank hat, will man es ja auch ausdrucken. 
%
% \DescribeMacro{\rspsetup}
% Die Konfiguration geschieht über den Befehl |\rspsetup|, der ähnlich wie bei |jurabib|
% auf dem |keyval|-Paket basiert. Man kann also mehrere Optionen bündeln nach dem Muster
% \begin{verbatim}
%  ... showname={documents,documentslist} ...
% \end{verbatim}
% 
% \subsection{Ausführlichkeit der Informationen}
% Eine Gruppe von Optionen steuert die "`Informationsfülle"' in den Zitaten und in den Verzeichnissen. 
% Die Optionen sind dabei für alle Kommandos dieser Gruppe gleich: 
%\begin{description}
%	\item[all] Feld wird immer angezeigt (soweit vorhanden), ist zugleich default-Option
%	\item[never] Feld wird nie angezeigt
%	\item[documents] Feld wird in den Zitaten von Dokumenten angezeigt
%	\item[judgements] Feld wird in den Zitaten von Rechtsprechung angezeigt
%	\item[lists] Feld wird nur in den Verzeichnissen angezeigt
%	\item[documentslist] Feld wird nur im Dokumentenverzeichnis angezeigt
%	\item[judgementslist] Feld wird nur im Rechtsprechungsverzeichnis angezeigt      
%\end{description}
% \DescribeEnv{showname} steuert die Anzeige des Namens (\BibTeX-Feld |name|), was für Dokumente 
% sicher mehr Sinn macht als für Urteile.
%
% \DescribeEnv{showparties} steuert die Anzeige der Parteien (\BibTeX-Feld |parties|), für Dokumente
% kaum sinnvoll.
%
% \DescribeEnv{showsign} steuert die Anzeige des Aktenzeichens (\BibTeX-Feld |sign|).
%
% \DescribeEnv{showdate} steuert die Anzeige des Datums (\BibTeX-Feld |date|), ist für Dokumente
% ohnehin aktiviert.
%
% \DescribeEnv{showdecision} steuert die Anzeige des "`Entscheidungstyps"', also "`Urteil"', "`Beschluss"', "`BMF-Schreiben"' etc. (\BibTeX-Feld |decision|), ist für Dokumente per default aktiviert.
%
% \DescribeEnv{showadditional} zeigt, wenn möglich, weitere Quellen an, also z.B. den |journal|-Eintrag, wenn die amtl. Sammlung zitiert wurde, sowie das Feld |additional|.
%
% \DescribeEnv{showcommented} steuert die Anzeige von "`Urteilsanmerkungen"' (\BibTeX-Feld |commented|).
%
% \subsection{Weitere Einstellungen für Zitate}
%
% \DescribeEnv{longofficial} Diese Einstellung ermöglicht die Zitierung mit der Langform der
% Amtlichen Sammlung. Die Optionen sind identisch mit denen der oben dargestellten
% |show|-Einstellungen. Per Default wird die Langform bei Rechtsprechung verwendet, nicht jedoch 
% bei Dokumenten. Der Befehl |\rshortcite| erzwingt unabhängig von dieser Einstellung die Kurzform. 
%
% \DescribeEnv{preferofficial} 
% Diese Option kennt nur die Einstellungen |all|, |documents|, |judgements| und |never|. Die
% Zitate und die Verzeichnisse werden also zwingend gleich behandelt. Die Option bewirkt, dass 
% bevorzugt die amtliche Sammlung zitiert wird, wenn sowohl die Sammlung als auch eine 
% Zeitschriftenfundstelle erfasst sind. Anderenfalls wird die Zeitschrift bevorzugt zitiert. 
% Default-Wert ist |all|. 
% Die Einstellung in preferofficial hat keine Auswirkung wenn entweder Daten aus einer amtlichen Sammlung für das konkrete Urteil nicht vorhanden sind oder im Urteil "`citeas=journal"' angegeben ist.
%
% \DescribeEnv{conceptmode} bewirkt die Ausgabe der Felder |note| und |annote| für den Ausdruck von Entwürfen. Optionen sind |on| und |off|.
%
% \DescribeEnv{citationmode} Diese Option steuert die Trennung von Werk und (konkreter) Fundstelle. 
% Optionen sind |comma|, |colon|, |semicolon| und |brackets|. Beim Verwendung von |brackets| wird 
% die konkrete Seite in Klammern angegeben. 
%
% \DescribeEnv{citationfont} Diese steuert den Schriftschnitt, mit dem die konkrete Fundstelle ausgedruckt wird. Zur Verfügung stehen die Parameter |slanted|, |italics|, |bold| und |normal|.
%
% \subsection{Gruppierung der Verzeichnisse}
% Die folgenden vier Optionen beeinflussen die "`Gliederungstiefe"' der Verzeichnisse. Möglich sind bis zu vier Ebenen. Die übergeordnete Gruppierung nach "`documents"' und "`judgements"' lässt sich dagegen nicht abschalten. Die Optionen sind jeweils: 
%\begin{description}
%	\item[all] alle Verzeichnisse werden nach diesem Kriterium gruppiert
%	\item[never] kein Verzeichnis wird danach gruppiert
%	\item[documents] nur das Dokumentenverzeichnis wird gruppiert
%	\item[judgements] nur das Rechtsprechungsverzeichnis wird gruppiert
%\end{description}
% \DescribeEnv{groupbystate} steuert die Gruppierung nach dem Staat (Feld |state|)
%
% \DescribeEnv{groupbyjurisdiction} steuert die Gruppierung nach dem Gerichtszweig (bzw. dem Typ der Institutionen, Feld |jurisdiction|)
%
% \DescribeEnv{groupbylevel} steuert die Gruppierung nach der Hierarchie der Gerichte bzw. Behörden (Feld |level|)
%
% \DescribeEnv{groupbycourt} erstellt eine eigene Gruppierung für jedes Gericht (Feld |court|)
%
% Achtung! Diese Gruppierungen können nichts an der von \BibTeX{} vorgegebenen Sortierung ändern. Diese lässt sich nur durch entsprechend kluge Einstellungen in |sortkeyg| beeinflussen. Normalerweise geht \BibTeX{} davon aus, dass nach allen vier Ebenen gruppiert wird. Lässt man eine dazwischen weg, ohne die Sortierung entsprechend anzupassen, wird das Verzeichnis sehr unübersichtlich. 
% \subsection{Layout der Verzeichnisse}
% Mit den folgenden Optionen kann das Layout des Rechtsprechungs- und Dokumentenverzeichnisses angepasst werden:
%
% \DescribeEnv{listpages} Die Einstellung |listpages| steuert die horizontale Ausrichtung der Seitenzahl-Spalte der Verzeichnisse. Mögliche Einstellungen sind left, right und center.
%
% \DescribeEnv{pagestring} Die Einstellung |pagestring| steuert den "`Vorspann"' vor den einzelnen Einträgen in der Seitenzahl-Spalte. Ein möglicher Eintrag wäre also:
% 
% |pagestring={zit. auf S.~}|
%
% \section{Besondere Funktionen für Aufsätze}
% Mit den bisher gezeigten Optionen lassen sich die meisten Aufgaben bereits bewerkstelligen. 
% Die folgenden Funktionen erleichtern die Verwendung des Paketes zum Schreiben von Aufsätzen, in
% denen kein Verzeichnis gewünscht wird. Man kann dann die Zitate unterschiedlich ausführlich
% gestalten und u.U. wegen der Details nach oben verweisen. 
%
% Die ersten Optionen steuern die automatische Ausgabe von "`Vollzitaten"' (wie bei |\rfullcite|). 
% Parameter sind jeweils:
%\begin{description}
%	\item[never] niemals automatische Vollzitate
%	\item[all] immer voll zitieren
%	\item[first] das erste Zitat ist voll, Wiederholungszitate sind schlank
%	\item[chapter] das erste Zitat eines jeden Kapitels ist voll, Wiederholungszitate sind schlank
%	\item[section] das erste Zitat eines jeden Kapitels ist voll, Wiederholungszitate sind schlank
%\end{description}
%
% \DescribeEnv{judgementcitefull} steuert die Erstellung von Vollzitaten für Rechtsprechung
%
% \DescribeEnv{documentcitefull} steuert die Erstellung von Vollzitaten für Dokumente
%
% Es wird dennoch i.d.R. angezeigt sein, beide gleich einzustellen, um den Leser nicht 
% unnötig zu verwirren. 
%
% \DescribeEnv{rlookat}
% |rlookat| ermöglicht einen Verweis aus dem Wiederholungszitat auf die Fußnote oder (falls das Zitat im normalen Text war) auf die Seite des Vollzitats. Optionen sind auch hier |all|, |never|, |judgements| und |documents|. Die Option ist wirkungslos, wenn |documentcitefull| und |judgementcitefull| auf |all| oder |never| gestellt sind.
%
% \DescribeEnv{makelists}
% Diese Option steuert, ob das Rechtsprechungs- und / oder Dokumentenverzeichnis erstellt und angezeigt wird. Optionen sind wieder |all|, |never|, |judgements| und |documents|.
%
%
% Die folgenden zwei Optionen steuern den Inhalt eines |full|- oder |lean|-Zitats. 
% \DescribeEnv{fullcitecontent} Parameter sind |normal| (Voreinstellung), |full| (alle verfügbaren Informationen) und |likelists| (Vollzitat enthält gleiche Infos wie das jeweilige Verzeichnis)
%
% \DescribeEnv{leancitecontent}
% Parameter sind |normal| (Voreinstellung), |minimum| (minimales Zitat) und |likeentry| (so formatieren wie ein normales Zitat; dies macht sinn, wenn wegen |judgementcitefull=all| nie ein 
% normales Zitat erscheint.)
%
%
%\section{Kompatibilität}
% Das Paket verträgt sich gut mit dem "`großen Bruder"' |jurabib|, kann aber auch ohne 
% ihn existieren. In den Standarddokumentklassen sollte es funktionieren, getestet wurde aber
% bisher nur punktuell. Auch |jura.cls| sollte an sich gehen, aber ich schreibe keine 
% Hausarbeit und habe es daher noch nicht ausprobiert. Sehr gut klappt auch die Zusammenarbeit
% mit |juraabbrev|, so kann man etwa die Kürzel wie BGHZ gleich ins Abkürzungsverzeichnis
% aufnehmen lassen.
% Auch mit |juramisc| scheint es keine Probleme zu geben, allerdings überschreibt |jurarsp| das von |jurabook| eingestellte Fußnoten-Layout. 
%
% \section{Ausblick}
% \subsection{ToDo-List}
%
%\begin{itemize}
%	\item Einstellung von useofficial durch entsprechenden Eintrag auf Gerichts- oder Urteilsebene in der Bib-Datenbank -- erledigt in Version 0.52
%	\item bessere Formatierungsmöglichkeiten für die Verzeichnisse
%	\item gemeinsame Macros für Verzeichniseintrag und Fussnote zwecks leichterer Wartung
% -- erledigt in Version 0.52
%	\item ibidem-Funktion (sehr problematisch, vielleicht überhaupt nicht sinnvoll)
%	\item Setup per Datei 
% \item bessere Formatierung der "`Seitenzahlliste"'; Hyperref-Fkt.
% \item \TeX4ht-Unterstützung
% \item Abgleich des Layouts mit jurabib
% \item zusätzliche cite-Befehle oder Optionen
% \item Sortierung bei Gerichten mit Umlauten falsch
% \item Sortierungsreihenfolge bei verschiedenstelligen Zahlen
% \item Möglichkeit, auch bei officials den "`courtstring"' mit zu zitieren
% \item Zitieren von Entscheidungen ohne Journal o.ä, zB. unveröffentlichte oder im Internet veröffentlichte Entscheidungen
% \item Aktenzeichen nicht fest in Klammern anzeigen
% \item Zitieren von EG-Richtlinien und Kommissions-Dokumenten
%\end{itemize}
%
% \subsection{Kontakt}
% |jurarsp| nimmt zwar einige Anleihen bei |jurabib| und anderen Paketen, wurde aber 
% in den wesentlichen Teilen unabhängig davon entwickelt. Die Abweichungen zu |jurabib|
% im Anforderungsprofil waren so groß, dass es mir einfacher schien, das Paket neu zu 
% schreiben. An der |bst|-Datei mag die Herkunft noch am ehesten erkennbar sein. 
% Das Paket ist sicher noch nicht ausgereift und wird in der nächsten Zeit noch erweitert und 
% verbessert werden. Wer Vorschläge dazu hat, kann sich gerne an mich wenden. 
% Gleiches gilt selbstverständlich auch für Fehlerberichte. 
% Ich bin zu erreichen unter:
% \begin{quote}
% Lucas Wartenburger \texttt{<elwwa@gmx.net>}
% \end{quote}
%
% \StopEventually
% 
% \section{Die Implementierung}
% \changes{0.4}{old}{erste Version}
% \changes{0.5}{2004/08/21}{Dokumentation angef"ugt}
% \changes{0.52}{2004/09/04}{Dokumentation an hyperref angepasst}
% \begin{macro}{Dokumentation}
%    \begin{macrocode}
%<*driver>
\documentclass{ltxdoc}
\usepackage{german}
\usepackage[T1]{fontenc}
\usepackage[latin1]{inputenc}
\usepackage{jurarsp}
\usepackage{hyperref}
\hypersetup{pdftex,
pdftitle={Dokumentation jurarsp.sty},
pdfauthor={Lucas Wartenburger},
pdfsubject={LaTeX-package jurarsp},
pdfkeywords={TeX, LaTeX, jurarsp, jura, law}}
% \OnlyDescription     %nur Anleitung (ohne Index und History)
\CodelineIndex        %kein Index wenn auskommentiert
\EnableCrossrefs      %kein Index wenn auskommentiert
\RecordChanges        %keine History wenn auskommentiert
\begin{document}
\DocInput{jurarsp.dtx}
\end{document}
%</driver>
%    \end{macrocode}
% \end{macro}
% \subsection{Allgmeine Einstellungen}
% \begin{macro}{Header}
%    \begin{macrocode}
%<*package>
\NeedsTeXFormat{LaTeX2e}[1995/12/01]
\ProvidesPackage{jurarsp}[2006/03/04 v0.52]
\RequirePackage{ifthen}
\RequirePackage{keyval}
\RequirePackage{xspace}
\RequirePackage{calc}
%    \end{macrocode}
% \end{macro}
% \begin{macro}{Layout}
% \changes{0.52}{2005/05/15}{neu rsp@pagestring}
% \changes{0.52}{2005/05/15}{neu rsp@listpages}
% Anregungen von Ferdinand Grassmann
%    \begin{macrocode}
%\newcommand*{\rspleftcolumn}{\textwidth /3 *2}
%\newcommand*{\rsprightcolumn}{\textwidth-\rspleftcolumn-1.2cm-\parindent}
\newcommand*{\cite@datedelimiter}{v.}
\def\rcite@before{, } 
\def\rcite@after{}
\def\rsp@citefont{\relax}
\def\rsp@pkg@name{Rechtsprechungs- und Dokumentendatenbank}
\def\rsp@listpages{\relax}
\def\rsp@pagestring{zitiert auf S.~}
\newcommand*{\rsptitledocuments}{Verwendete amtliche Dokumente}
\newcommand*{\rsptitlejudgements}{Verwendete Rechtsprechung}
\newif\ifrsp@make@table\rsp@make@tabletrue 
%    \end{macrocode}
% \end{macro}
% \begin{macro}{Tools}
% Für die Zusammenstellung der Seitenzahlen und für die Speicherung der Querverweise
% werden eigene |namedef|-Varianten benötigt.
%    \begin{macrocode}
\def\rsp@namedef#1{\expandafter\edef\csname #1\endcsname}
\def\rsp@gnamedef#1{\expandafter\global\expandafter\edef\csname #1\endcsname}
%    \end{macrocode}
% \end{macro}
% \begin{macro}{Counter}
%    \begin{macrocode}
\newcounter{rspbeginpage}
\newcounter{rspendpage}
\newcounter{rspcitefull@d}
\newcounter{rspcitefull@j}
%    \end{macrocode}
% \end{macro}
% \begin{macro}{allgemeine Optionen}
% allgemein gilt hier:
% \begin{itemize}
% \item d=default für Dokumentenzitate
% \item j=default für Rechtsprechungszitate
% \item ld=default für Dokumentenverzeichnis
% \item lj=default für Rechtsprechungsverzeichnis
% \item ohne Kennung: aktueller Eintrag
% \end{itemize}
% Dokument oder Urteil?
%    \begin{macrocode}
\newif\ifcite@is@document
%    \end{macrocode}
% Default für Verwendung der amtl. Sammlung
%    \begin{macrocode}
\newif\ifcite@preferofficial@j\cite@preferofficial@jtrue
\newif\ifcite@preferofficial@d\cite@preferofficial@dtrue
%    \end{macrocode}
% Verwendung der amtl. Sammlung im konkreten Eintrag
%    \begin{macrocode}
\newif\ifcite@useofficial
%    \end{macrocode}
% \end{macro}
% \begin{macro}{Ausgabesteuerung}
% Verwendung der Langform der amtl. Sammlung
%    \begin{macrocode}
\newif\ifcite@longofficial@d\cite@longofficial@dfalse
\newif\ifcite@longofficial@j\cite@longofficial@jtrue
\newif\ifcite@longofficial@ld\cite@longofficial@ldfalse
\newif\ifcite@longofficial@lj\cite@longofficial@ljtrue
\newif\ifcite@longofficial
%    \end{macrocode}
% Wiederholungszitat (mit |\rrepeatcite|) ohne Gerichtsangabe
%    \begin{macrocode}
\newif\ifcite@repeated
%    \end{macrocode}
% Langform der Gerichtsbezeichnung?
%    \begin{macrocode}
\newif\ifcite@longcourt
%    \end{macrocode}
% Gerichtsbezeichnung unterdrücken (insb. dann, wenn die Bezeichnung 
% schon im |decision|-Feld steht)
%    \begin{macrocode}
\newif\ifcite@nocourt
%    \end{macrocode}
% Konzept drucken
%    \begin{macrocode}
\newif\ifcite@concept\cite@conceptfalse
%    \end{macrocode}
% Urteilsanmerkungen anzeigen
%    \begin{macrocode}
\newif\ifcite@showcommented@d\cite@showcommented@dfalse
\newif\ifcite@showcommented@j\cite@showcommented@jfalse
\newif\ifcite@showcommented@ld\cite@showcommented@ldfalse
\newif\ifcite@showcommented@lj\cite@showcommented@ljfalse
\newif\ifcite@commented 
%    \end{macrocode}
% "`Titel"' des Urteils / Doks anzeigen
%    \begin{macrocode}
\newif\ifcite@showname@d\cite@showname@dfalse
\newif\ifcite@showname@j\cite@showname@jfalse
\newif\ifcite@showname@ld\cite@showname@ldfalse
\newif\ifcite@showname@lj\cite@showname@ljfalse
\newif\ifcite@name
%    \end{macrocode}
% Parteien anzeigen
%    \begin{macrocode}
\newif\ifcite@showparties@d\cite@showparties@dfalse
\newif\ifcite@showparties@j\cite@showparties@jfalse
\newif\ifcite@showparties@ld\cite@showparties@ldfalse
\newif\ifcite@showparties@lj\cite@showparties@ljfalse
\newif\ifcite@parties
%    \end{macrocode}
% Datum anzeigen
%    \begin{macrocode}
\newif\ifcite@showdate@d\cite@showdate@dtrue
\newif\ifcite@showdate@j\cite@showdate@jfalse
\newif\ifcite@showdate@ld\cite@showdate@ldtrue
\newif\ifcite@showdate@lj\cite@showdate@ljfalse
\newif\ifcite@date
%    \end{macrocode}
% Aktenzeichen anzeigen
%    \begin{macrocode}
\newif\ifcite@showsign@d\cite@showsign@dfalse
\newif\ifcite@showsign@j\cite@showsign@jfalse
\newif\ifcite@showsign@ld\cite@showsign@ldfalse
\newif\ifcite@showsign@lj\cite@showsign@ljfalse
\newif\ifcite@sign
%    \end{macrocode}
% Urteil / Beschluss anzeigen
%    \begin{macrocode}
\newif\ifcite@showdecision@d\cite@showdecision@dtrue
\newif\ifcite@showdecision@j\cite@showdecision@jfalse
\newif\ifcite@showdecision@ld\cite@showdecision@ldtrue
\newif\ifcite@showdecision@lj\cite@showdecision@ljfalse
\newif\ifcite@decision
%    \end{macrocode}
% ergänzende Fundstellen anzeigen
%    \begin{macrocode}
\newif\ifcite@showadditional@d\cite@showadditional@dfalse
\newif\ifcite@showadditional@j\cite@showadditional@jfalse
\newif\ifcite@showadditional@ld\cite@showadditional@ldfalse
\newif\ifcite@showadditional@lj\cite@showadditional@ljfalse
\newif\ifcite@additional
%    \end{macrocode}
% \end{macro}
% \begin{macro}{Fullciteoptions}
% automatische Vollzitate
%    \begin{macrocode}
\newif\ifrsp@firstcite@full@d\rsp@firstcite@full@dfalse
\newif\ifrsp@firstcite@full@j\rsp@firstcite@full@jfalse
\newif\ifrsp@all@full@d\rsp@all@full@dfalse
\newif\ifrsp@all@full@j\rsp@all@full@jfalse
%    \end{macrocode}
% Erstzitat oder Wiederholungszitat
%    \begin{macrocode}
\newif\ifrsp@firstcite
%    \end{macrocode}
% Verweise nach oben (auf Fn. oder Seite)
%    \begin{macrocode}
\newif\ifrsp@lookat@j\rsp@lookat@jfalse
\newif\ifrsp@lookat@d\rsp@lookat@dfalse
\newif\ifrsp@lookat@use
%    \end{macrocode}
% Verzeichnisse anzeigen?
%    \begin{macrocode}
\newif\ifrsp@showlist@d\rsp@showlist@dtrue
\newif\ifrsp@showlist@j\rsp@showlist@jtrue
\newif\ifrsp@showlist
%    \end{macrocode}
% Inhalt eines Vollzitats
%    \begin{macrocode}
\def\rcite@fulloptions{\cite@signtrue\cite@namefalse%
		\cite@partiestrue\cite@datetrue%
    \cite@decisiontrue\cite@commentedfalse\cite@additionaltrue}  
%    \end{macrocode}
% Inhalt eines schlanken Zitats
%    \begin{macrocode}
\protect\def\rcite@leanoptions{\cite@signfalse%
		\cite@namefalse\cite@partiesfalse%
    \cite@commentedfalse\cite@additionalfalse%
    \ifcite@is@document\else\cite@decisionfalse\cite@datefalse\fi}
%    \end{macrocode}
% \end{macro}
% \begin{macro}{Gruppierungssteuerung}
% Gruppierungsebenen der Verzeichnisse
%    \begin{macrocode}
\newif\ifgroup@court@d\group@court@dfalse   
\newif\ifgroup@court@j\group@court@jfalse
\newif\ifgroup@level@d\group@level@dfalse   
\newif\ifgroup@level@j\group@level@jfalse
\newif\ifgroup@jurisdiction@d\group@jurisdiction@dfalse
\newif\ifgroup@jurisdiction@j\group@jurisdiction@jfalse
\newif\ifgroup@state@d\group@state@dfalse
\newif\ifgroup@state@j\group@state@jfalse
%    \end{macrocode}
% \end{macro}
% \begin{macro}{hyperref}
% \changes{0.52}{2004/09/04}{Unterstützung für hyperref}
% Idee von jurabib übernommen
%    \begin{macrocode}
\providecommand\hyper@natlinkstart[1]{}%
\providecommand\hyper@natlinkend{}%
\providecommand\hyper@natanchorstart[1]{}%
\providecommand\hyper@natanchorend{}%
\def\hyper@rsplinkstart{\hyper@natlinkstart}
\def\hyper@rsplinkend{\hyper@natlinkend}
\def\hyper@rspanchorstart{\hyper@natanchorstart}
\def\hyper@rspanchorend{\hyper@natanchorend}
%    \end{macrocode}
% \end{macro}
% \begin{macro}{@makefntext}
% Dieses if zeigt an, ob man sich gerade in einer Fussnote befindet (für lookat-Zwecke). 
% Das Konzept ist von |jurabib| abgeschaut.
%    \begin{macrocode}
\newif\ifrsp@fn\rsp@fnfalse
%    \end{macrocode}
% Die neue Definition von |@makefntext| stellt das |ifrsp@fn| und ein schöneres 
% Layout gibt's gratis dazu. Vielen Dank an Matthias Eckermann, der diesen Code
% spendiert hat.
% \changes{0.52}{2004/10/06}{thinspace nach FN-mark eingefügt}
%    \begin{macrocode}
\long\def\@makefntext#1{% 
  \rsp@fntrue%
  \@setpar{\@@par
  \@tempdima = \hsize
  \advance\@tempdima-15pt
  \parshape \@ne 15pt \@tempdima}%
  \par
  \parindent 1em\noindent
  \hbox to \z@{\hss\@makefnmark\thinspace}#1}
%    \end{macrocode}
% \end{macro}
% \begin{macro}{Debug}
% Auch dieser Code wurde weitgehend von |jurabib| kopiert.
%    \begin{macrocode}
\newif\ifrsp@debug\rsp@debugfalse
\let\rsp@typeout\typeout
\let\rsp@package@warning\PackageWarning
\let\rsp@package@warningNoLine\PackageWarningNoLine
\def\rsp@info#1{\PackageInfo{\rsp@pkg@name}{#1}}%
\newcommand*{\rspsilent}{%
  \rsp@info{*** Silent Mode ON ***}%
  \let\rsp@package@warning\@gobbletwo
  \let\rsp@package@warningNoLine\@gobbletwo
  \let\rsp@typeout\@gobble%
}%
%    \end{macrocode}
% \end{macro}
% \begin{macro}{Tokens}
% Aufteilung der von \BibTeX übergebenen Felder 
% Dieser Code wurde ebenfalls von |jurabib| inspiriert.
%
% Aufteilung von sechs Tokens 
%    \begin{macrocode}
\newcommand*{\rsp@firstofsix}   [6]{#1}
\newcommand*{\rsp@secondofsix}  [6]{#2}
\newcommand*{\rsp@thirdofsix}   [6]{#3}
\newcommand*{\rsp@fourthofsix}  [6]{#4}
\newcommand*{\rsp@fifthofsix}   [6]{#5}
\newcommand*{\rsp@sixthofsix}   [6]{#6}
%    \end{macrocode}
% von fünf Tokens
%    \begin{macrocode}
\newcommand*{\rsp@firstoffive}  [5]{#1}
\newcommand*{\rsp@secondoffive} [5]{#2}
\newcommand*{\rsp@thirdoffive}  [5]{#3}
\newcommand*{\rsp@fourthoffive} [5]{#4}
\newcommand*{\rsp@fifthoffive}  [5]{#5}
%    \end{macrocode}
% von vier Tokens
%    \begin{macrocode}
\newcommand*{\rsp@firstoffour}  [4]{#1}
\newcommand*{\rsp@secondoffour} [4]{#2}
\newcommand*{\rsp@thirdoffour}  [4]{#3}
\newcommand*{\rsp@fourthoffour} [4]{#4}
%    \end{macrocode}
% von drei Tokens
%    \begin{macrocode}
\newcommand*{\rsp@firstofthree}  [3]{#1}
\newcommand*{\rsp@secondofthree} [3]{#2}
\newcommand*{\rsp@thirdofthree}  [3]{#3}
%    \end{macrocode}
% von zwei Tokens
%    \begin{macrocode}
\newcommand*{\rsp@firstoftwo}  [2]{#1}
\newcommand*{\rsp@secondoftwo} [2]{#2}
%    \end{macrocode}
% "`strippen"' einer überflüssigen Klammer
%    \begin{macrocode}
\newcommand*{\rsp@firstofone}  [1]{#1}
%    \end{macrocode}
% Aufteilung der \BibTeX-Infos in einzelne logische Gruppen ("`Zeilen"')
%    \begin{macrocode}
\def\rsp@splitlines#1{%
 \protected@edef\rsp@general{\expandafter\rsp@firstofsix#1}%
 \protected@edef\rsp@court{\expandafter\rsp@secondofsix#1}%
 \protected@edef\rsp@decision{\expandafter\rsp@thirdofsix#1}%
 \protected@edef\rsp@official{\expandafter\rsp@fourthofsix#1}%
 \protected@edef\rsp@journal{\expandafter\rsp@fifthofsix#1}%
 \protected@edef\rsp@notes{\expandafter\rsp@sixthofsix#1}%
}
%    \end{macrocode}
% Aufteilung der 1. Zeile (allg. Angaben)
%    \begin{macrocode}
\def\rsp@@type{\expandafter\rsp@firstofsix\rsp@general}
\def\rsp@@state{\expandafter\rsp@secondofsix\rsp@general}
\def\rsp@@jurisdiction{\expandafter\rsp@thirdofsix\rsp@general}
\def\rsp@@level{\expandafter\rsp@fourthofsix\rsp@general}
\def\rsp@@place{\expandafter\rsp@fifthofsix\rsp@general}
\def\rsp@@court{\expandafter\rsp@sixthofsix\rsp@general}
%    \end{macrocode}
% Aufteilung der 2. Zeile (Angaben zum Gericht)
%    \begin{macrocode}
\def\rsp@@short{\expandafter\rsp@firstofthree\rsp@court}
\def\rsp@@special{\expandafter\rsp@secondofthree\rsp@court}
\def\rsp@@chamber{\expandafter\rsp@thirdofthree\rsp@court}
%    \end{macrocode}
% Aufteilung der 3. Zeile (Angaben zum Urteil)
%    \begin{macrocode}
\def\rsp@@date{\expandafter\rsp@firstoffive\rsp@decision}
\def\rsp@@sign{\expandafter\rsp@secondoffive\rsp@decision}
\def\rsp@@parties{\expandafter\rsp@thirdoffive\rsp@decision}
\def\rsp@@name{\expandafter\rsp@fourthoffive\rsp@decision}
\def\rsp@@decision{\expandafter\rsp@fifthoffive\rsp@decision}
%    \end{macrocode}
% Aufteilung der 4. Zeile (Funstelle in der amtl. Sammlung)
%    \begin{macrocode}
\def\rsp@@offlong{\expandafter\rsp@firstofthree\rsp@official}
\def\rsp@@offshort{\expandafter\rsp@secondofthree\rsp@official}
\def\rsp@@offpages{\expandafter\rsp@thirdofthree\rsp@official}
%    \end{macrocode}
% Aufteilung der 5. Zeile (Funstelle in Zeitschriften)
%    \begin{macrocode}
\def\rsp@@jname{\expandafter\rsp@firstofthree\rsp@journal}
\def\rsp@@jpages{\expandafter\rsp@secondofthree\rsp@journal}
\def\rsp@@additional{\expandafter\rsp@thirdofthree\rsp@journal}
%    \end{macrocode}
% Aufteilung der 6. Zeile (Anmerkungen)
% \changes{0.52}{2005/11/01}{Anpassung an neues "`citeas"'-Feld}
%    \begin{macrocode}
\def\rsp@@note{\expandafter\rsp@firstoffour\rsp@notes}
\def\rsp@@annote{\expandafter\rsp@secondoffour\rsp@notes}
\def\rsp@@commented{\expandafter\rsp@thirdoffour\rsp@notes}
\def\rsp@@citeas{\expandafter\rsp@fourthoffour\rsp@notes}
%    \end{macrocode}
% \end{macro}
% \subsection{Setup}
% \begin{macro}{rspsetup}
% Der folgende Code bearbeitet die einzelnen Optionen. 
% Auch hier stand unverkennbar |jurabib| Pate.
%    \begin{macrocode}
\def\rspsetup{\setkeys{rsp}}
\let\rsp@origExecuteOptions\ExecuteOptions
\let\ExecuteOptions\rspsetup
\def\ProcessOptionsWithKV#1{%
  \let\@tempa\@empty
  \@for\CurrentOption:=\@classoptionslist\do{%
  \@ifundefined{KV@#1@\CurrentOption}%
  {}{\edef\@tempa{\@tempa,\CurrentOption,}}}%
  \edef\@tempa{%
  \noexpand\setkeys{#1}{\@tempa\@ptionlist{\@currname.\@currext}}}%
  \@tempa%
  \AtEndOfPackage{\let\@unprocessedoptions\relax}%
}%
\ProcessOptionsWithKV{rsp}%
\let\ExecuteOptions\rsp@origExecuteOptions
\newif\ifrsp@kv@recognized\rsp@kv@recognizedfalse
\newcommand*{\rsp@kv@warning}[2]{%
  \rsp@package@warningNoLine{\rsp@pkg@name}{%
   unrecognized value `#1'\MessageBreak
   for key `#2' ignored}}
%    \end{macrocode}
% \end{macro}
% \begin{macro}{citationmode}
% Trennung zwischen Zitat und konkreter Fundstelle
%    \begin{macrocode}
\define@key{rsp}{citationmode}[brackets]{%
 \@for\rsp@val:=#1\do{%
  \rsp@kv@recognizedfalse
  \ifthenelse{\equal{\rsp@val}{colon}}{%
    \def\rcite@before{: }
    \def\rcite@after{}
    \rsp@kv@recognizedtrue
  }{\relax}%
  \ifthenelse{\equal{\rsp@val}{comma}}{%
    \def\rcite@before{, }
    \def\rcite@after{}
    \rsp@kv@recognizedtrue
  }{\relax}%
  \ifthenelse{\equal{\rsp@val}{semicolon}}{%
    \def\rcite@before{; }
    \def\rcite@after{}    
    \rsp@kv@recognizedtrue
  }{\relax}%
  \ifthenelse{\equal{\rsp@val}{brackets}}{%
    \def\rcite@before{ {\rsp@citefont(}}
    \def\rcite@after{{\rsp@citefont)}}
    \rsp@kv@recognizedtrue
  }{\relax}%
  \ifrsp@kv@recognized\else\rsp@kv@warning{\rsp@val}{citationmode}\fi
 }%
}%
%    \end{macrocode}
% \end{macro}
% \begin{macro}{citationfont}
% Formatierung der Fundstelle
%    \begin{macrocode}
\define@key{rsp}{citationfont}[slanted]{%
 \@for\rsp@val:=#1\do{%
  \rsp@kv@recognizedfalse
  \ifthenelse{\equal{\rsp@val}{normal}}{%
	  \def\rsp@citefont{\relax}
    \rsp@kv@recognizedtrue
  }{\relax}%
  \ifthenelse{\equal{\rsp@val}{italics}}{%
	  \def\rsp@citefont{\itshape}
    \rsp@kv@recognizedtrue
  }{\relax}%
  \ifthenelse{\equal{\rsp@val}{slanted}}{%
	  \def\rsp@citefont{\slshape}
    \rsp@kv@recognizedtrue
  }{\relax}%
  \ifthenelse{\equal{\rsp@val}{bold}}{%
	  \def\rsp@citefont{\bfseries}
    \rsp@kv@recognizedtrue
  }{\relax}%
  \ifrsp@kv@recognized\else\rsp@kv@warning{\rsp@val}{citationfont}\fi
 }%
}%
%    \end{macrocode}
% \end{macro}
% \begin{macro}{preferofficial}
% Amtl. Sammlung oder Zeitschrift bevorzugen?
%    \begin{macrocode}
\define@key{rsp}{preferofficial}[all]{%
 \@for\rsp@val:=#1\do{%
  \rsp@kv@recognizedfalse
  \ifthenelse{\equal{\rsp@val}{all}}{%
    \cite@preferofficial@jtrue
    \cite@preferofficial@dtrue
    \rsp@kv@recognizedtrue
  }{\relax}%
  \ifthenelse{\equal{\rsp@val}{judgements}}{%
    \cite@preferofficial@jtrue
    \cite@preferofficial@dfalse
    \rsp@kv@recognizedtrue
  }{\relax}%  
  \ifthenelse{\equal{\rsp@val}{documents}}{%
    \cite@preferofficial@jfalse
    \cite@preferofficial@dtrue
    \rsp@kv@recognizedtrue
  }{\relax}%
  \ifthenelse{\equal{\rsp@val}{never}}{%
    \cite@preferofficial@jfalse
    \cite@preferofficial@dfalse
    \rsp@kv@recognizedtrue
  }{\relax}%
  \ifrsp@kv@recognized\else\rsp@kv@warning{\rsp@val}{preferofficial}\fi
 }%
}%
%    \end{macrocode}
% \end{macro}
% \begin{macro}{conceptmode}
% Konzept ausdrucken?
%    \begin{macrocode}
\define@key{rsp}{conceptmode}[on]{%
 \@for\rsp@val:=#1\do{%
  \rsp@kv@recognizedfalse
  \ifthenelse{\equal{\rsp@val}{on}}{%
    \cite@concepttrue
    \rsp@kv@recognizedtrue
  }{\relax}%
  \ifthenelse{\equal{\rsp@val}{off}}{%
    \cite@conceptfalse
    \rsp@kv@recognizedtrue
  }{\relax}%
  \ifrsp@kv@recognized\else\rsp@kv@warning{\rsp@val}{conceptmode}\fi
 }%
}%
%    \end{macrocode}
% \end{macro}
% \begin{macro}{fullcitecontent}
% Inhalt eines Vollzitats
%    \begin{macrocode}
\define@key{rsp}{fullcitecontent}[full]{% 
 \@for\rsp@val:=#1\do{%
  \rsp@kv@recognizedfalse
%    \end{macrocode}
% alles so lassen wie oben voreingestellt
%    \begin{macrocode}
  \ifthenelse{\equal{\rsp@val}{normal}}{%
    \relax
    \rsp@kv@recognizedtrue
  }{\relax}%
%    \end{macrocode}
% |\rcite@fulloptions| statisch einstellen
%    \begin{macrocode}
  \ifthenelse{\equal{\rsp@val}{full}}{%
    \def\rcite@fulloptions{\cite@signtrue\cite@nametrue%
      \cite@partiestrue\cite@datetrue%
      \cite@decisiontrue\cite@commentedtrue\cite@additionaltrue}
    \rsp@kv@recognizedtrue
  }{\relax}%
%    \end{macrocode}
% |\rcite@fulloptions| dynamisch einstellen
%    \begin{macrocode}
  \ifthenelse{\equal{\rsp@val}{likelist}}{%
    \protect\def\rcite@fulloptions{\rsp@makeentry@defaults}
    \rsp@kv@recognizedtrue
  }{\relax}%
  \ifrsp@kv@recognized\else\rsp@kv@warning{\rsp@val}{fullcitecontent}\fi
 }%
}%
%    \end{macrocode}
% \end{macro}
% \begin{macro}{leancitecontent}
% Inhalt eines Schlankzitats
%    \begin{macrocode}
\define@key{rsp}{leancitecontent}[normal]{% 
 \@for\rsp@val:=#1\do{%
%    \end{macrocode}
% alles so lassen wie oben voreingestellt
% zeigt bei docs auch decision und datum an
%    \begin{macrocode}
  \rsp@kv@recognizedfalse
  \ifthenelse{\equal{\rsp@val}{normal}}{% 
    \rsp@kv@recognizedtrue
  }{\relax}%
%    \end{macrocode}
% |\rcite@leanoptions| statisch einstellen
%    \begin{macrocode}
  \ifthenelse{\equal{\rsp@val}{minimum}}{%
    \def\rcite@leanoptions{\cite@signfalse\cite@namefalse%
     \cite@partiesfalse\cite@commentedfalse\cite@additionalfalse%
     \cite@decisionfalse\cite@datefalse}
    \rsp@kv@recognizedtrue
  }{\relax}%
%    \end{macrocode}
% |\rcite@leanoptions| dynamisch einstellen, macht nur Sinn, wenn die Normalzitierweise wegen fullcite=all nicht benutzt wird
%    \begin{macrocode}
  \ifthenelse{\equal{\rsp@val}{likeentry}}{% 
    \protect\def\rcite@leanoptions{\rsp@makecite@defaults}
    \rsp@kv@recognizedtrue
  }{\relax}%
  \ifrsp@kv@recognized\else\rsp@kv@warning{\rsp@val}{leancitecontent}\fi
 }%
}%
%    \end{macrocode}
% \end{macro}
% \begin{macro}{documentcitefull}
% automatische Vollzitate von Dokumenten
%    \begin{macrocode}
\define@key{rsp}{documentcitefull}[first]{%
 \@for\rsp@val:=#1\do{%
  \rsp@kv@recognizedfalse
  \ifthenelse{\equal{\rsp@val}{never}}{%
    \rsp@firstcite@full@dfalse
    \rsp@all@full@dfalse
    \rsp@kv@recognizedtrue
  }{\relax}%
  \ifthenelse{\equal{\rsp@val}{first}}{%
    \rsp@firstcite@full@dtrue
    \rsp@all@full@dfalse
    \rsp@kv@recognizedtrue
  }{\relax}%
  \ifthenelse{\equal{\rsp@val}{chapter}}{%
    \@ifundefined{chapter}{%
     \ClassError{\rsp@pkg@name}{%
      Sorry, `documentcitefull=chapter' makes no sense for\MessageBreak
      classes without \string\chapter%
     }{Try `documentcitefull=section' for an article class}}{}%
%    \end{macrocode}
% schön wäre |\setkeys{rsp}{documentcitefull=first}|, aber das funktioniert irgendwie nicht
%    \begin{macrocode}
    \rsp@firstcite@full@dtrue%
    \rsp@all@full@dfalse%
    \@addtoreset{rspcitefull@d}{chapter}%
    \def\rsp@resetfor@d{chapter}%
    \def\rsp@reset@look@label@for@d{\thechapter}% 
    \rsp@kv@recognizedtrue
  }{\relax}%
  \ifthenelse{\equal{\rsp@val}{section}}{%
    \rsp@firstcite@full@dtrue%
    \rsp@all@full@dfalse%
    \@addtoreset{rspcitefull@d}{section}%
    \def\rsp@resetfor@d{section}%
    \def\rsp@reset@look@label@for@d{\thesection}% 
    \rsp@kv@recognizedtrue
  }{\relax}%
  \ifthenelse{\equal{\rsp@val}{all}}{%
    \rsp@firstcite@full@dfalse
    \rsp@all@full@dtrue
    \rsp@kv@recognizedtrue
  }{\relax}%
  \ifrsp@kv@recognized\else\rsp@kv@warning{\rsp@val}{documentcitefull}\fi
 }%
}%
%    \end{macrocode}
% \end{macro}
% \begin{macro}{judgementcitefull}
% automatische Vollzitate von Urteilen
%    \begin{macrocode}
\define@key{rsp}{judgementcitefull}[first]{%
 \@for\rsp@val:=#1\do{%
  \rsp@kv@recognizedfalse
  \ifthenelse{\equal{\rsp@val}{never}}{%
    \rsp@firstcite@full@jfalse
    \rsp@all@full@jfalse
    \rsp@kv@recognizedtrue
  }{\relax}%
  \ifthenelse{\equal{\rsp@val}{first}}{%
    \rsp@firstcite@full@jtrue
    \rsp@all@full@jfalse
    \rsp@kv@recognizedtrue
  }{\relax}%
  \ifthenelse{\equal{\rsp@val}{chapter}}{%
    \@ifundefined{chapter}{%
     \ClassError{\rsp@pkg@name}{%
      Sorry, `documentcitefull=chapter' makes no sense for\MessageBreak
      classes without \string\chapter%
     }{Try `documentcitefull=section' for an article class}}{}%
%    \end{macrocode}
% schön wäre |\setkeys{rsp}{judgementcitefull=first}|, aber das funktioniert irgendwie nicht
%    \begin{macrocode}
    \rsp@firstcite@full@jtrue
    \rsp@all@full@jfalse
    \@addtoreset{rspcitefull@j}{chapter}%
    \def\rsp@resetfor@j{chapter}%
    \def\rsp@reset@look@label@for@j{\thechapter}% 
    \rsp@kv@recognizedtrue
  }{\relax}%
  \ifthenelse{\equal{\rsp@val}{section}}{%
    \rsp@firstcite@full@jtrue
    \rsp@all@full@jfalse
    \@addtoreset{rspcitefull@j}{section}%
    \def\rsp@resetfor@j{section}%
    \def\rsp@reset@look@label@for@j{\thesection}% 
    \rsp@kv@recognizedtrue
  }{\relax}%
  \ifthenelse{\equal{\rsp@val}{all}}{%
    \rsp@firstcite@full@jfalse
    \rsp@all@full@jtrue
    \rsp@kv@recognizedtrue
  }{\relax}%
  \ifrsp@kv@recognized\else\rsp@kv@warning{\rsp@val}{judgementcitefull}\fi
 }%
}%
%    \end{macrocode}
% \end{macro}
% \begin{macro}{makelists}
%  Verzeichnisse erstellen? 
%    \begin{macrocode}
\define@key{rsp}{makelists}[never]{%
\rsp@showlist@jfalse
\rsp@showlist@dfalse
 \@for\rsp@val:=#1\do{%
  \rsp@kv@recognizedfalse
  \ifthenelse{\equal{\rsp@val}{never}}{%
    \rsp@kv@recognizedtrue
  }{\relax}%
  \ifthenelse{\equal{\rsp@val}{all}}{%
    \rsp@showlist@jtrue
    \rsp@showlist@dtrue
    \rsp@kv@recognizedtrue
  }{\relax}%
  \ifthenelse{\equal{\rsp@val}{documents}}{%
		\rsp@showlist@dtrue
    \rsp@kv@recognizedtrue
  }{\relax}%
  \ifthenelse{\equal{\rsp@val}{judgements}}{%
    \rsp@showlist@jtrue
    \rsp@kv@recognizedtrue
  }{\relax}%
  \ifrsp@kv@recognized\else\rsp@kv@warning{\rsp@val}{makelists}\fi
 }%
}%
%    \end{macrocode}
% \end{macro}
% \begin{macro}{listpages}
% Ausrichtung der Seitenzahl-Spalte in den Listen
% \changes{0.52}{2005/05/15}{neue Parameter}
% Anregung von Ferdinand Grassmann
%    \begin{macrocode}
\define@key{rsp}{listpages}[right]{%
 \@for\rsp@val:=#1\do{%
  \rsp@kv@recognizedfalse
  \ifthenelse{\equal{\rsp@val}{right}}{%
    \let\rsp@listpages=\raggedleft
    \rsp@kv@recognizedtrue
  }{\relax}%
  \ifthenelse{\equal{\rsp@val}{left}}{%
    \let\rsp@listpages=\raggedright
    \rsp@kv@recognizedtrue
  }{\relax}%
  \ifthenelse{\equal{\rsp@val}{center}}{%
		\let\rsp@listpages=\centering
    \rsp@kv@recognizedtrue
  }{\relax}%
  \ifrsp@kv@recognized\else\rsp@kv@warning{\rsp@val}{listpages}\fi
 }%
}%
%    \end{macrocode}
% \end{macro}
% \begin{macro}{pagestring}
% konfiguriert die Anzeige der Seitenzahlen
% (zitiert auf S. ...)
% Anregung von Ferdinand Grassmann
% \changes{0.52}{2005/05/15}{neue Funktion}
%    \begin{macrocode}
\define@key{rsp}{pagestring}{%
 \@for\rsp@val:=#1\do{%
  \ifthenelse{\equal{\rsp@val}{}}{%
   \rsp@kv@warning{empty value}{pagestring}}{%
   \let\rsp@pagestring=\rsp@val}%
 }%
}%
%    \end{macrocode}
% \end{macro}
% \begin{macro}{rlookat}
% In Folgezitaten nach oben verweisen?
%    \begin{macrocode}
\define@key{rsp}{rlookat}[all]{%
 \@for\rsp@val:=#1\do{%
  \rsp@kv@recognizedfalse
  \ifthenelse{\equal{\rsp@val}{never}}{%
    \rsp@lookat@jfalse
    \rsp@lookat@dfalse
    \rsp@kv@recognizedtrue
  }{\relax}%
  \ifthenelse{\equal{\rsp@val}{all}}{%
    \rsp@lookat@jtrue
    \rsp@lookat@dtrue
    \rsp@kv@recognizedtrue
  }{\relax}%
  \ifthenelse{\equal{\rsp@val}{documents}}{%
    \rsp@lookat@jfalse
    \rsp@lookat@dtrue
    \rsp@kv@recognizedtrue
  }{\relax}%
  \ifthenelse{\equal{\rsp@val}{judgements}}{%
    \rsp@lookat@jtrue
    \rsp@lookat@dfalse
    \rsp@kv@recognizedtrue
  }{\relax}%
  \ifrsp@kv@recognized\else\rsp@kv@warning{\rsp@val}{rlookat}\fi
 }%
}%
%    \end{macrocode}
% \end{macro}
% \begin{macro}{showname}
% Name anzeigen?
%    \begin{macrocode}
\define@key{rsp}{showname}[all]{%
    \cite@showname@jfalse
    \cite@showname@dfalse
    \cite@showname@ljfalse
    \cite@showname@ldfalse
 \@for\rsp@val:=#1\do{%
  \rsp@kv@recognizedfalse
  \ifthenelse{\equal{\rsp@val}{all}}{%
    \cite@showname@jtrue
    \cite@showname@dtrue
    \cite@showname@ljtrue
    \cite@showname@ldtrue
    \rsp@kv@recognizedtrue
  }{\relax}%
  \ifthenelse{\equal{\rsp@val}{judgements}}{%
    \cite@showname@jtrue
    \rsp@kv@recognizedtrue
  }{\relax}%  
  \ifthenelse{\equal{\rsp@val}{documents}}{%
    \cite@showname@dtrue
    \rsp@kv@recognizedtrue
  }{\relax}%
  \ifthenelse{\equal{\rsp@val}{never}}{%
    \rsp@kv@recognizedtrue
  }{\relax}%
  \ifthenelse{\equal{\rsp@val}{lists}}{%
    \cite@showname@ljtrue
    \cite@showname@ldtrue
    \rsp@kv@recognizedtrue
  }{\relax}%
  \ifthenelse{\equal{\rsp@val}{documentslist}}{%
    \cite@showname@ldtrue
    \rsp@kv@recognizedtrue
  }{\relax}%
  \ifthenelse{\equal{\rsp@val}{judgementslist}}{%
    \cite@showname@ljtrue
    \rsp@kv@recognizedtrue
  }{\relax}%
  \ifrsp@kv@recognized\else\rsp@kv@warning{\rsp@val}{showname}\fi
 }%
}%
%    \end{macrocode}
% \end{macro}
% \begin{macro}{showparties}
% Parteien anzeigen?
%    \begin{macrocode}
\define@key{rsp}{showparties}[{judgements,judgementslist}]{%
    \cite@showparties@jfalse
    \cite@showparties@dfalse
    \cite@showparties@ljfalse
    \cite@showparties@ldfalse
 \@for\rsp@val:=#1\do{%
  \rsp@kv@recognizedfalse
  \ifthenelse{\equal{\rsp@val}{all}}{%
    \cite@showparties@jtrue
    \cite@showparties@dtrue
    \cite@showparties@ljtrue
    \cite@showparties@ldtrue
    \rsp@kv@recognizedtrue
  }{\relax}%
  \ifthenelse{\equal{\rsp@val}{judgements}}{%
    \cite@showparties@jtrue
    \rsp@kv@recognizedtrue
  }{\relax}%  
  \ifthenelse{\equal{\rsp@val}{documents}}{%
    \cite@showparties@dtrue
    \rsp@kv@recognizedtrue
  }{\relax}%
  \ifthenelse{\equal{\rsp@val}{never}}{%
    \rsp@kv@recognizedtrue
  }{\relax}%
  \ifthenelse{\equal{\rsp@val}{lists}}{%
    \cite@showparties@ljtrue
    \cite@showparties@ldtrue
    \rsp@kv@recognizedtrue
  }{\relax}%
  \ifthenelse{\equal{\rsp@val}{documentslist}}{%
    \cite@showparties@ldtrue
    \rsp@kv@recognizedtrue
  }{\relax}%
  \ifthenelse{\equal{\rsp@val}{judgementslist}}{%
    \cite@showparties@ljtrue
    \rsp@kv@recognizedtrue
  }{\relax}%
  \ifrsp@kv@recognized\else\rsp@kv@warning{\rsp@val}{showparties}\fi
 }%
}%
%    \end{macrocode}
% \end{macro}
% \begin{macro}{showdate}
% Datum anzeigen?
%    \begin{macrocode}    
\define@key{rsp}{showdate}[all]{%
    \cite@showdate@jfalse
    \cite@showdate@dfalse
    \cite@showdate@ljfalse
    \cite@showdate@ldfalse
 \@for\rsp@val:=#1\do{%
  \rsp@kv@recognizedfalse
  \ifthenelse{\equal{\rsp@val}{all}}{%
    \cite@showdate@jtrue
    \cite@showdate@dtrue
    \cite@showdate@ljtrue
    \cite@showdate@ldtrue
    \rsp@kv@recognizedtrue
  }{\relax}%
  \ifthenelse{\equal{\rsp@val}{judgements}}{%
    \cite@showdate@jtrue
    \rsp@kv@recognizedtrue
  }{\relax}%  
  \ifthenelse{\equal{\rsp@val}{documents}}{%
    \cite@showdate@dtrue
    \rsp@kv@recognizedtrue
  }{\relax}%
  \ifthenelse{\equal{\rsp@val}{never}}{%
    \rsp@kv@recognizedtrue
  }{\relax}%
  \ifthenelse{\equal{\rsp@val}{lists}}{%
    \cite@showdate@ljtrue
    \cite@showdate@ldtrue
    \rsp@kv@recognizedtrue
  }{\relax}%
  \ifthenelse{\equal{\rsp@val}{documentslist}}{%
    \cite@showdate@ldtrue
    \rsp@kv@recognizedtrue
  }{\relax}%
  \ifthenelse{\equal{\rsp@val}{judgementslist}}{%
    \cite@showdate@ljtrue
    \rsp@kv@recognizedtrue
  }{\relax}%
  \ifrsp@kv@recognized\else\rsp@kv@warning{\rsp@val}{showdate}\fi
 }%
}%
%    \end{macrocode}
% \end{macro}
% \begin{macro}{showdecision}
% Entscheidungstyp anzeigen?
%    \begin{macrocode}
\define@key{rsp}{showdecision}[all]{%
    \cite@showdecision@jfalse
    \cite@showdecision@dfalse
    \cite@showdecision@ljfalse
    \cite@showdecision@ldfalse
 \@for\rsp@val:=#1\do{%
  \rsp@kv@recognizedfalse
  \ifthenelse{\equal{\rsp@val}{all}}{%
    \cite@showdecision@jtrue
    \cite@showdecision@dtrue
    \cite@showdecision@ljtrue
    \cite@showdecision@ldtrue
    \rsp@kv@recognizedtrue
  }{\relax}%
  \ifthenelse{\equal{\rsp@val}{judgements}}{%
    \cite@showdecision@jtrue
    \rsp@kv@recognizedtrue
  }{\relax}%  
  \ifthenelse{\equal{\rsp@val}{documents}}{%
    \cite@showdecision@dtrue
    \rsp@kv@recognizedtrue
  }{\relax}%
  \ifthenelse{\equal{\rsp@val}{never}}{%
    \rsp@kv@recognizedtrue
  }{\relax}%
  \ifthenelse{\equal{\rsp@val}{lists}}{%
    \cite@showdecision@ljtrue
    \cite@showdecision@ldtrue
    \rsp@kv@recognizedtrue
  }{\relax}%
  \ifthenelse{\equal{\rsp@val}{documentslist}}{%
    \cite@showdecision@ldtrue
    \rsp@kv@recognizedtrue
  }{\relax}%
  \ifthenelse{\equal{\rsp@val}{judgementslist}}{%
    \cite@showdecision@ljtrue
    \rsp@kv@recognizedtrue
  }{\relax}%
  \ifrsp@kv@recognized\else\rsp@kv@warning{\rsp@val}{showdecision}\fi
 }%
}%
%    \end{macrocode}
% \end{macro}
% \begin{macro}{showsign}
% Aktenzeichen anzeigen?
%    \begin{macrocode}
\define@key{rsp}{showsign}[all]{%
    \cite@showsign@jfalse
    \cite@showsign@dfalse
    \cite@showsign@ljfalse
    \cite@showsign@ldfalse
 \@for\rsp@val:=#1\do{%
  \rsp@kv@recognizedfalse
  \ifthenelse{\equal{\rsp@val}{all}}{%
    \cite@showsign@jtrue
    \cite@showsign@dtrue
    \cite@showsign@ljtrue
    \cite@showsign@ldtrue
    \rsp@kv@recognizedtrue
  }{\relax}%
  \ifthenelse{\equal{\rsp@val}{judgements}}{%
    \cite@showsign@jtrue
    \rsp@kv@recognizedtrue
  }{\relax}%  
  \ifthenelse{\equal{\rsp@val}{documents}}{%
    \cite@showsign@dtrue
    \rsp@kv@recognizedtrue
  }{\relax}%
  \ifthenelse{\equal{\rsp@val}{never}}{%
    \rsp@kv@recognizedtrue
  }{\relax}%
  \ifthenelse{\equal{\rsp@val}{lists}}{%
    \cite@showsign@ljtrue
    \cite@showsign@ldtrue
    \rsp@kv@recognizedtrue
  }{\relax}%
  \ifthenelse{\equal{\rsp@val}{documentslist}}{%
    \cite@showsign@ldtrue
    \rsp@kv@recognizedtrue
  }{\relax}%
  \ifthenelse{\equal{\rsp@val}{judgementslist}}{%
    \cite@showsign@ljtrue
    \rsp@kv@recognizedtrue
  }{\relax}%
  \ifrsp@kv@recognized\else\rsp@kv@warning{\rsp@val}{showsign}\fi
 }%
}%
%    \end{macrocode}
% \end{macro}
% \begin{macro}{showcommented}
% Urteilsanmerkungen anzeigen?
%    \begin{macrocode}
\define@key{rsp}{showcommented}[all]{%
    \cite@showcommented@jfalse
    \cite@showcommented@dfalse
    \cite@showcommented@ljfalse
    \cite@showcommented@ldfalse
 \@for\rsp@val:=#1\do{%
  \rsp@kv@recognizedfalse
  \ifthenelse{\equal{\rsp@val}{all}}{%
    \cite@showcommented@jtrue
    \cite@showcommented@dtrue
    \cite@showcommented@ljtrue
    \cite@showcommented@ldtrue
    \rsp@kv@recognizedtrue
  }{\relax}%
  \ifthenelse{\equal{\rsp@val}{judgements}}{%
    \cite@showcommented@jtrue
    \rsp@kv@recognizedtrue
  }{\relax}%  
  \ifthenelse{\equal{\rsp@val}{documents}}{%
    \cite@showcommented@dtrue
    \rsp@kv@recognizedtrue
  }{\relax}%
  \ifthenelse{\equal{\rsp@val}{never}}{%
    \rsp@kv@recognizedtrue
  }{\relax}%
  \ifthenelse{\equal{\rsp@val}{lists}}{%
    \cite@showcommented@ljtrue
    \cite@showcommented@ldtrue
    \rsp@kv@recognizedtrue
  }{\relax}%
  \ifthenelse{\equal{\rsp@val}{documentslist}}{%
    \cite@showcommented@ldtrue
    \rsp@kv@recognizedtrue
  }{\relax}%
  \ifthenelse{\equal{\rsp@val}{judgementslist}}{%
    \cite@showcommented@ljtrue
    \rsp@kv@recognizedtrue
  }{\relax}%
  \ifrsp@kv@recognized\else\rsp@kv@warning{\rsp@val}{showcommented}\fi
 }%
}%
%    \end{macrocode}
% \end{macro}
% \begin{macro}{showadditional}
% ergänzende Fundstellen anzeigen?
%    \begin{macrocode} 
\define@key{rsp}{showadditional}[all]{%
    \cite@showadditional@jfalse
    \cite@showadditional@dfalse
    \cite@showadditional@ljfalse
    \cite@showadditional@ldfalse
 \@for\rsp@val:=#1\do{%
  \rsp@kv@recognizedfalse
  \ifthenelse{\equal{\rsp@val}{all}}{%
    \cite@showadditional@jtrue
    \cite@showadditional@dtrue
    \cite@showadditional@ljtrue
    \cite@showadditional@ldtrue
    \rsp@kv@recognizedtrue
  }{\relax}%
  \ifthenelse{\equal{\rsp@val}{judgements}}{%
    \cite@showadditional@jtrue
    \rsp@kv@recognizedtrue
  }{\relax}%  
  \ifthenelse{\equal{\rsp@val}{documents}}{%
    \cite@showadditional@dtrue
    \rsp@kv@recognizedtrue
  }{\relax}%
  \ifthenelse{\equal{\rsp@val}{never}}{%
    \rsp@kv@recognizedtrue
  }{\relax}%
  \ifthenelse{\equal{\rsp@val}{lists}}{%
    \cite@showadditional@ljtrue
    \cite@showadditional@ldtrue
    \rsp@kv@recognizedtrue
  }{\relax}%
  \ifthenelse{\equal{\rsp@val}{documentslist}}{%
    \cite@showadditional@ldtrue
    \rsp@kv@recognizedtrue
  }{\relax}%
  \ifthenelse{\equal{\rsp@val}{judgementslist}}{%
    \cite@showadditional@ljtrue
    \rsp@kv@recognizedtrue
  }{\relax}%
  \ifrsp@kv@recognized\else\rsp@kv@warning{\rsp@val}{showadditional}\fi
 }%
}%
%    \end{macrocode}
% \end{macro}
% \begin{macro}{longofficial}
% Lanform der amtl. Sammlung anzeigen?
%    \begin{macrocode}
\define@key{rsp}{longofficial}[all]{%
    \cite@longofficial@jfalse
    \cite@longofficial@dfalse
    \cite@longofficial@ljfalse
    \cite@longofficial@ldfalse
 \@for\rsp@val:=#1\do{%
  \rsp@kv@recognizedfalse
  \ifthenelse{\equal{\rsp@val}{all}}{%
    \cite@longofficial@jtrue
    \cite@longofficial@dtrue
    \cite@longofficial@ljtrue
    \cite@longofficial@ldtrue
    \rsp@kv@recognizedtrue
  }{\relax}%
  \ifthenelse{\equal{\rsp@val}{judgements}}{%
    \cite@longofficial@jtrue
    \rsp@kv@recognizedtrue
  }{\relax}%  
  \ifthenelse{\equal{\rsp@val}{documents}}{%
    \cite@longofficial@dtrue
    \rsp@kv@recognizedtrue
  }{\relax}%
  \ifthenelse{\equal{\rsp@val}{never}}{%
    \rsp@kv@recognizedtrue
  }{\relax}%
  \ifthenelse{\equal{\rsp@val}{lists}}{%
    \cite@longofficial@ljtrue
    \cite@longofficial@ldtrue
    \rsp@kv@recognizedtrue
  }{\relax}%
  \ifthenelse{\equal{\rsp@val}{documentslist}}{%
    \cite@longofficial@ldtrue
    \rsp@kv@recognizedtrue
  }{\relax}%
  \ifthenelse{\equal{\rsp@val}{judgementslist}}{%
    \cite@longofficial@ljtrue
    \rsp@kv@recognizedtrue
  }{\relax}%
  \ifrsp@kv@recognized\else\rsp@kv@warning{\rsp@val}{longofficial}\fi
 }%
}%
%    \end{macrocode}
% \end{macro}
% \begin{macro}{groupbystate}
% Verzeichnis nach Staaten gruppieren?
%    \begin{macrocode}
\define@key{rsp}{groupbystate}[all]{%
 \@for\rsp@val:=#1\do{%
  \rsp@kv@recognizedfalse
  \ifthenelse{\equal{\rsp@val}{all}}{%
    \group@state@jtrue
    \group@state@dtrue
    \rsp@kv@recognizedtrue
  }{\relax}%
  \ifthenelse{\equal{\rsp@val}{judgements}}{%
    \group@state@jtrue
    \group@state@dfalse
    \rsp@kv@recognizedtrue
  }{\relax}%  
  \ifthenelse{\equal{\rsp@val}{documents}}{%
    \group@state@jfalse
    \group@state@dtrue
    \rsp@kv@recognizedtrue
  }{\relax}%
  \ifthenelse{\equal{\rsp@val}{never}}{%
    \group@state@jfalse
    \group@state@dfalse
    \rsp@kv@recognizedtrue
  }{\relax}%
  \ifrsp@kv@recognized\else\rsp@kv@warning{\rsp@val}{groupbystate}\fi
 }%
}%
%    \end{macrocode}
% \end{macro}
% \begin{macro}{groupbyjurisdiction}
% Verzeichnis nach Gerichtszweigen gruppieren?
%    \begin{macrocode}
\define@key{rsp}{groupbyjurisdiction}[all]{%
 \@for\rsp@val:=#1\do{%
  \rsp@kv@recognizedfalse
  \ifthenelse{\equal{\rsp@val}{all}}{%
    \group@jurisdiction@jtrue
    \group@jurisdiction@dtrue
    \rsp@kv@recognizedtrue
  }{\relax}%
  \ifthenelse{\equal{\rsp@val}{judgements}}{%
    \group@jurisdiction@jtrue
    \group@jurisdiction@dfalse
    \rsp@kv@recognizedtrue
  }{\relax}%  
  \ifthenelse{\equal{\rsp@val}{documents}}{%
    \group@jurisdiction@jfalse
    \group@jurisdiction@dtrue
    \rsp@kv@recognizedtrue
  }{\relax}%
  \ifthenelse{\equal{\rsp@val}{never}}{%
    \group@jurisdiction@jfalse
    \group@jurisdiction@dfalse
    \rsp@kv@recognizedtrue
  }{\relax}%
  \ifrsp@kv@recognized\else\rsp@kv@warning{\rsp@val}{groupbyjurisdiction}\fi
 }%
}%
%    \end{macrocode}
% \end{macro}
% \begin{macro}{groupbylevel}
% Verzeichnis nach Hierarchie gruppieren?
%    \begin{macrocode}
\define@key{rsp}{groupbylevel}[all]{%
 \@for\rsp@val:=#1\do{%
  \rsp@kv@recognizedfalse
  \ifthenelse{\equal{\rsp@val}{all}}{%
    \group@level@jtrue
    \group@level@dtrue
    \rsp@kv@recognizedtrue
  }{\relax}%
  \ifthenelse{\equal{\rsp@val}{judgements}}{%
    \group@level@jtrue
    \group@level@dfalse
    \rsp@kv@recognizedtrue
  }{\relax}%  
  \ifthenelse{\equal{\rsp@val}{documents}}{%
    \group@level@jfalse
    \group@level@dtrue
    \rsp@kv@recognizedtrue
  }{\relax}%
  \ifthenelse{\equal{\rsp@val}{never}}{%
    \group@level@jfalse
    \group@level@dfalse
    \rsp@kv@recognizedtrue
  }{\relax}%
  \ifrsp@kv@recognized\else\rsp@kv@warning{\rsp@val}{groupbylevel}\fi
 }%
}%
%    \end{macrocode}
% \end{macro}
% \begin{macro}{groupbycourt}
% Verzeichnis nach einzelnen Gerichten / Behörden gruppieren?
%    \begin{macrocode}
\define@key{rsp}{groupbycourt}[all]{%
 \@for\rsp@val:=#1\do{%
  \rsp@kv@recognizedfalse
  \ifthenelse{\equal{\rsp@val}{all}}{%
    \group@court@jtrue
    \group@court@dtrue
    \rsp@kv@recognizedtrue
  }{\relax}%
  \ifthenelse{\equal{\rsp@val}{judgements}}{%
    \group@court@jtrue
    \group@court@dfalse
    \rsp@kv@recognizedtrue
  }{\relax}%  
  \ifthenelse{\equal{\rsp@val}{documents}}{%
    \group@court@jfalse
    \group@court@dtrue
    \rsp@kv@recognizedtrue
  }{\relax}%
  \ifthenelse{\equal{\rsp@val}{never}}{%
    \group@court@jfalse
    \group@court@dfalse
    \rsp@kv@recognizedtrue
  }{\relax}%
  \ifrsp@kv@recognized\else\rsp@kv@warning{\rsp@val}{groupbycourt}\fi
 }%
}%
%    \end{macrocode}
% \end{macro}
% \subsection{Erstellung der Verzeichnisse}
%Verarbeitung der Daten aus der rsp.bbl-Datei (\BibTeX-Output) 
%Output erscheint im Dokument bei |\rspstyle|
%
% \begin{macro}{thersplist}
%Liste der verwendeten Rechtsprechung (Header / Footer)
% \changes{0.52}{2004/09/24}{neue Spaltenberechnung}
%    \begin{macrocode}
\newenvironment{thersplist}%
{\ifthenelse{\boolean{rsp@showlist@j}\or\boolean{rsp@showlist@d}}{%
	 \begingroup
   \ifrsp@debug \ifrsp@fn Fussnote \else keine Fussnote \fi \fi%
   \ifrsp@make@table%
  		\newdimen\leftsize
			\newdimen\middistance
			\newdimen\rightsize
			\newdimen\interdistance
			\leftskip=0pt%
			\rightskip=0pt%
			\middistance=1pc%
			\interdistance=.5ex%
			\leftsize=.66\hsize
			\rightsize=\hsize
			\advance\rightsize by-\leftsize
			\advance\rightsize by-\leftskip
			\advance\rightsize by-\middistance
			\advance\rightsize by-\rightskip
   \else%
       \begin{description}\sloppy%
   \fi%
  }%
{}}%
{\ifthenelse{\boolean{rsp@showlist@j}\or\boolean{rsp@showlist@d}}{%
  \ifrsp@make@table\bigskip
      \else\def\@noitemerr{\@latex@warning{Empty `rsplist' environment}}
      \end{description}\fi
  \endgroup
  }%
{}}%
%    \end{macrocode}
% \end{macro}
% \begin{macro}{rspitem}
% Die von \BibTeX erzeugte Zeile |\rspitem| in der Datei |.rsp.bbl| erzeugt 
% eine Eintragung in das Verzeichnis 
% der zitierten Rechtssprechung sowie einen Aufruf |\rspcite| in der Datei |.rsp.aux|
% Dieser erzeugt dann die Makros für die einzelnen Zitate.
%    \begin{macrocode}
\def\rspitem{\@ifnextchar[\@lrspitem\@rspitem}
%    \end{macrocode}
% Da \BibTeX{} immer Einträge der Form
%\begin{quote}
%	|\rspitem[|\meta{Daten}|]{|\meta{Kürzel}|}|
%\end{quote}
% erzeugt, wird |\@rspitem| derzeit nicht verwendet. 
%    \begin{macrocode}
\def\@rspitem#1{\item\if@filesw \immediate\write\@auxout
       {\string\rspcite{#1}{\the\value{\@listctr}}}\fi\ignorespaces}
%    \end{macrocode}
% |\@lrspitem| macht die eigentliche Arbeit
% Argumente: 
%\begin{description}
%	\item[1] Inhalt der Zitatdaten aus Bibtex
%	\item[2] Zitatkürzel
%\end{description}
%    \begin{macrocode}
\def\@lrspitem[#1]#2{%
 \if@filesw
%    \end{macrocode}
% die Daten werden in Zeilen zerlegt und anschließend ein Eintrag in der Liste erstellt
%    \begin{macrocode}
  {\def\rsp@tempa{#1}% Daten
   \def\rsp@tempb{#2}% Kürzel
   \rsp@splitlines{\rsp@tempa}
   \rsp@makeentry{\rsp@tempb}{\rsp@tempa}
%    \end{macrocode}
% |\rspcite|-Kommando in rsp.aux eintragen (mit Inhalt von |\rsp@tempb|)
%\begin{quote}
%	|\rspcite{|\meta{Kürzel}|}{|\meta{Daten}|}|
%\end{quote}
%    \begin{macrocode}
   \let\protect\noexpand\immediate
     \write\@rspaux{\string\rspcite{#2}{#1}}}\fi\ignorespaces}
%     \write\@rspaux{\string\rspcite{\rsp@tempb}{\rsp@tempa}}}\fi\ignorespaces}
%    \end{macrocode}
% \end{macro}
% \begin{macro}{rsp@makeentry}
% rsp@makeentry formatiert den Eintrag im Verzeichnis. Argumente: 
%\begin{description}
%	\item[1] Kuerzel
%	\item[2] Daten
%\end{description}
%    \begin{macrocode}
\DeclareRobustCommand{\rsp@makeentry}[2]{%
%    \end{macrocode}
% feststellen, ob das jeweilige Verzeichnis überhaupt angezeigt werden soll
%    \begin{macrocode}
 \ifthenelse{\equal{\rsp@@type}{document}}%
  {\cite@is@documenttrue\ifrsp@showlist@d
   \rsp@showlisttrue\else\rsp@showlistfalse\fi}%
  {\cite@is@documentfalse\ifrsp@showlist@j
   \rsp@showlisttrue\else\rsp@showlistfalse\fi}%
\ifrsp@showlist%
%    \end{macrocode}
% Wenn ja: Gruppierungsebenen prüfen
%
% zunächst für Dokumente:
%    \begin{macrocode}
 \ifcite@is@document%
%    \end{macrocode}
% |\rsp@title@type|: Überschrift der obersten Gruppierungsebene (Rechtsprechung oder Dokumente)
%    \begin{macrocode}
   \def\rsp@title@type{\rsptitledocuments}
%    \end{macrocode}
% zweite Ebene: Gruppierung nach Staat, wenn anderer Staat oder Typ als bei letzten Eintrag
%    \begin{macrocode}
   \ifgroup@state@d%
    \ifthenelse%
     {\equal{\rsp@@state}{\rsp@@laststate}%
      \and\equal{\rsp@@type}{\rsp@@lasttype}}%
   	 {\def\rsp@title@state{}}%gleicher staat
   	 {\def\rsp@title@state{\rsp@@state}}%neu
   \else%
    \def\rsp@title@state{}%
   \fi%
%    \end{macrocode}
% dritte Ebene: Gruppierung nach Zweig, wenn anderer Staat oder Typ als bei letzten Eintrag
%    \begin{macrocode}
   \ifgroup@jurisdiction@d%
    \ifthenelse%
     {\equal{\rsp@@jurisdiction}{\rsp@@lastjurisdiction}%
      \and\equal{\rsp@title@state}{}%
      \and\equal{\rsp@@type}{\rsp@@lasttype}}%
   	 {\def\rsp@title@jurisdiction{}}%gleiche jurisdiction
   	 {\def\rsp@title@jurisdiction{\rsp@@jurisdiction}}%neu
   \else%
    \def\rsp@title@jurisdiction{}%
   \fi%
%    \end{macrocode}
% vierte Ebene: Gruppierung nach Level, wenn neu 
%    \begin{macrocode}
   \ifgroup@level@d%
    \ifthenelse%
     {\equal{\rsp@@level}{\rsp@@lastlevel}%
      \and\equal{\rsp@title@jurisdiction}{}%
      \and\equal{\rsp@title@state}{}%
      \and\equal{\rsp@@type}{\rsp@@lasttype}}%
   	 {\def\rsp@title@level{}}%gleiches level
   	 {\def\rsp@title@level{\rsp@@level}}%neu
   \else%
    \def\rsp@title@level{}%
   \fi%
%    \end{macrocode}
% fünfte Ebene: Gruppierung nach Gericht, wenn neu 
%    \begin{macrocode}
   \ifgroup@court@d%
    \ifthenelse%
     {\equal{\rsp@@court}{\rsp@@lastcourt}%
      \and\equal{\rsp@title@level}{}%      
      \and\equal{\rsp@title@jurisdiction}{}%
      \and\equal{\rsp@title@state}{}%
      \and\equal{\rsp@@type}{\rsp@@lasttype}}%
   	 {\def\rsp@title@court{}}%gleiches gericht
   	 {\def\rsp@title@court{\rsp@@court}}%neu
   \else%
    \def\rsp@title@court{}%
   \fi%
  \else%
%    \end{macrocode}
% Gruppierung für Rechtsprechungsverzeichnis 
%    \begin{macrocode}
   \def\rsp@title@type{\rsptitlejudgements}
   \ifgroup@state@j%
    \ifthenelse%
     {\equal{\rsp@@state}{\rsp@@laststate}%
      \and\equal{\rsp@@type}{\rsp@@lasttype}}%
   	 {\def\rsp@title@state{}}%gleicher staat
   	 {\def\rsp@title@state{\rsp@@state}}%neu
   \else%
    \def\rsp@title@state{}%
   \fi%
   \ifgroup@jurisdiction@j%
    \ifthenelse%
     {\equal{\rsp@@jurisdiction}{\rsp@@lastjurisdiction}%
      \and\equal{\rsp@title@state}{}%
      \and\equal{\rsp@@type}{\rsp@@lasttype}}%
   	 {\def\rsp@title@jurisdiction{}}%gleiche jurisdiction
   	 {\def\rsp@title@jurisdiction{\rsp@@jurisdiction}}%neu
   \else%
    \def\rsp@title@jurisdiction{}%
   \fi%
   \ifgroup@level@j%
    \ifthenelse%
     {\equal{\rsp@@level}{\rsp@@lastlevel}%
      \and\equal{\rsp@title@jurisdiction}{}%
      \and\equal{\rsp@title@state}{}%
      \and\equal{\rsp@@type}{\rsp@@lasttype}}%
   	 {\def\rsp@title@level{}}%gleiches level
   	 {\def\rsp@title@level{\rsp@@level}}%neu
   \else%
    \def\rsp@title@level{}%
   \fi%
   \ifgroup@court@j%
    \ifthenelse%
     {\equal{\rsp@@court}{\rsp@@lastcourt}%
      \and\equal{\rsp@title@level}{}%      
      \and\equal{\rsp@title@jurisdiction}{}%
      \and\equal{\rsp@title@state}{}%
      \and\equal{\rsp@@type}{\rsp@@lasttype}}%
     {\def\rsp@title@court{}}%gleiches gericht
   	 {\def\rsp@title@court{\rsp@@court}}%neu
   \else%
    \def\rsp@title@court{}%
   \fi%
  \fi% 
%    \end{macrocode}
% nun werden nach diesen Voreinstellungen die Gruppierungsüberschriften erstellt
%
% 1. Ebene
%    \begin{macrocode}
 \ifthenelse{\equal{\rsp@@type}{\rsp@@lasttype}}{}%gleicher typ
 {%neuer typ
  \section*{\rsp@title@type%
   \@mkboth{\MakeUppercase\rsp@title@type}{\MakeUppercase\rsp@title@type}}}%
%    \end{macrocode}
% 2. Ebene
%    \begin{macrocode}
 \ifthenelse{\equal{\rsp@title@state}{}}%
  {}% kein neuer staat
  {{\noindent\bfseries\rsp@title@state}\par}%
%    \end{macrocode}
% 3. Ebene
%    \begin{macrocode}
 \ifthenelse{\equal{\rsp@title@jurisdiction}{}}%
  {}% kein neuer gerichtszweig
  {{\noindent\bfseries\itshape\rsp@title@jurisdiction}\par}%
%    \end{macrocode}
% 4. Ebene
%    \begin{macrocode}
 \ifthenelse{\equal{\rsp@title@level}{}}%
  {}% kein neues level
  {{\noindent\itshape\rsp@title@level}\par}%
%    \end{macrocode}
% 5. Ebene
% Hier wird auch dann keine Überschrift erstellt, wenn der Gerichtstitel identisch mit Level ist.
% So kann man eine Gliederung der Form "`BGH"', "`sonstige Zivilgerichte"' erstellen
%    \begin{macrocode}
 \ifthenelse{\equal{\rsp@title@court}{}}%
  {}% kein neues gericht
  {\ifthenelse{\equal{\rsp@title@court}{\rsp@title@level}}%
   {}% kein neues gericht
   {{\noindent\slshape\rsp@title@court}\par}}%
%    \end{macrocode}
% Nachdem nun alle Gruppierungen abgearbeitet sind, kann der eigentliche Eintrag erstellt werden. 
% Zunächst wird, wenn der Eintrag schon mindestens einmal mit Seitenverweis zitiert wurde, 
% |\rsp@pushpages| noch einmal aufgerufen. Ansonsten würde die letzte "`Serie"' von Seitenzahlen
% verloren gehen: Beim letzten Aufruf von |\rsprealcitation| weiss das Programm noch nicht, 
% dass keine weiteren Zitate folgen. Dies wird erst bei der Erstellung des Verzeichnisses definitiv.
%    \begin{macrocode}
 \@ifundefined{p@#1}{}{\rsp@pushpages{#1}}%
%    \end{macrocode}
% nun wird der Eintrag in Tabellen- oder Descriptionform erstellt.
% Die Daten in der linken Spalte werden von |\rsp@makeentry@content| formatiert.
% \changes{0.52}{2004/09/04}{hyper-anchor eingefügt}
% \changes{0.52}{2004/09/24}{Umstellung auf boxes statt minipages}
%    \begin{macrocode}
 \ifrsp@make@table
 %\medskip
 \noindent
%  \hspace{\parindent}
%  \begin{minipage}[b]{\rspleftcolumn}
   \hbox{\hskip\leftskip%
	 \vtop{\hsize=\leftsize\noindent%
    \hyper@rspanchorstart{#1}\strut\rsp@makeentry@content
    \strut\hyper@rspanchorend
   }\hskip\middistance
%  \end{minipage}
%  \hspace{10mm}
%  \begin{minipage}[b]{\rsprightcolumn}
  \vtop{\hsize=\rightsize\noindent%
%   \begin{flushright}%
    \rsp@listpages\strut\rsp@getpage{#1}\strut
%   \end{flushright}%
  }\hskip\rightskip
 }\par\vskip\interdistance
%  \end{minipage}
 \else
  \item[#2] \rsp@getpage{#1}
 \fi
%    \end{macrocode}
% Die Einstellungen des Eintrages werden aufgehoben, damit mit dem nächsten Eintrag 
% bei der Formatierung der Gruppierung verglichen werden können.
%    \begin{macrocode}
 \global\edef\rsp@@lasttype{\rsp@@type}
 \global\edef\rsp@@laststate{\rsp@@state}
 \global\edef\rsp@@lastjurisdiction{\rsp@@jurisdiction}
 \global\edef\rsp@@lastlevel{\rsp@@level}
 \global\edef\rsp@@lastcourt{\rsp@@court}
\fi
}%
%    \end{macrocode}
% \end{macro}
% \begin{macro}{rsp@makeentry@defaults}
% Diese Funktion stellt die Defaults aus dem Setup für die Erstellung des Verzeichnisses ein. 
% Sie muss aber bei jedem Eintrag neu aufgerufen werden, da die Einstellungen wie 
% |\cite@useofficialtrue| 
% später bei der Formatierung wieder geändert werden, wenn gar keine Angaben zur Amtl. Sammlung
% vorhanden sind.
%    \begin{macrocode}
\def\rsp@makeentry@defaults{%
     \ifcite@is@document%
		  \ifcite@preferofficial@d\cite@useofficialtrue\else\cite@useofficialfalse\fi
  		\ifcite@showdate@ld\cite@datetrue\else\cite@datefalse\fi
  		\ifcite@showsign@ld\cite@signtrue\else\cite@signfalse\fi
  		\ifcite@showname@ld\cite@nametrue\else\cite@namefalse\fi
  		\ifcite@showparties@ld\cite@partiestrue\else\cite@partiesfalse\fi
  		\ifcite@showadditional@ld\cite@additionaltrue\else\cite@additionalfalse\fi
  		\ifcite@showcommented@ld\cite@commentedtrue\else\cite@commentedfalse\fi
  		\ifcite@showdecision@ld\cite@decisiontrue\cite@nocourttrue\else%
                        \cite@decisionfalse\cite@nocourtfalse\fi
  		\ifcite@longofficial@ld\cite@longofficialtrue\else\cite@longofficialfalse\fi
 		 \else
  		\ifcite@preferofficial@j\cite@useofficialtrue\else\cite@useofficialfalse\fi
  		\ifcite@showdate@lj\cite@datetrue\else\cite@datefalse\fi
  		\ifcite@showsign@lj\cite@signtrue\else\cite@signfalse\fi
  		\ifcite@showname@lj\cite@nametrue\else\cite@namefalse\fi
  		\ifcite@showparties@lj\cite@partiestrue\else\cite@partiesfalse\fi
  		\ifcite@showadditional@lj\cite@additionaltrue\else\cite@additionalfalse\fi
  		\ifcite@showcommented@lj\cite@commentedtrue\else\cite@commentedfalse\fi
  		\ifcite@showdecision@lj\cite@decisiontrue\else\cite@decisionfalse\fi 
  		\ifcite@longofficial@lj\cite@longofficialtrue\else\cite@longofficialfalse\fi
  		\cite@nocourtfalse
 		 \fi%
}
%    \end{macrocode}
% \end{macro}
% \begin{macro}{@makeentrysequence}
% \changes{0.52}{2006/03/04}{neue Funktion}
% ermöglicht die leichtere Formatierung der Verzeichniseinträge
% und erleichtert die Wartung, indem für Zitate und Verzeichniseinträge weitgehend die 
% gleiche Macros verwendet werden können.
%    \begin{macrocode}
\def\@makeentrysequence{%
% Zitat aus amtl. Sammlung erstellen
  \rsp@delimspacefalse
  \ifcite@useofficial
   \ifcite@decision\@makecite@court{\delimspace}{}\else
    \ifcite@date\@makecite@court{\delimspace}{}\else
     \ifcite@sign\@makecite@court{\delimspace}{}\else
      \ifcite@parties\@makecite@court{\delimspace}{}\fi
     \fi
    \fi
   \fi
   \@makecite@decision{\delimspace}{}%
   \@makecite@date{\delimspace}{}%
   \@makecite@sign{\delimspace (}{)}%
   \@makecite@parties{\delimspace}{}%
   \@makecite@official{\delimspace}{}%
   \delimspace\rsp@@offpages
   \@makecite@additional{\space(}{)}%
   \@makecite@name{\bgroup\emph -- "`}{"' -- \egroup}%
   \@makecite@commented{,\space}{}%
   \@makecite@concept{}{}%
% Zeitschrift-Zitat erstellen
  \else
   \@makecite@court{\delimspace}{}%
   \@makecite@decision{\delimspace}{}%
   \@makecite@date{\delimspace}{}%
   \@makecite@sign{\delimspace (}{)}%
   \@makecite@parties{\delimspace}{}%
   \delimspace\rsp@@jname\space\rsp@@jpages
   \@makecite@additional{\space(}{)}%
   \@makecite@name{\bgroup\emph -- "`}{"' -- \egroup}%
   \@makecite@commented{,\space}{}%
   \@makecite@concept{}{}%
  \fi
}%
%    \end{macrocode}
% \end{macro}
% \begin{macro}{rsp@makeentry@content}
% Dieses Makro formatiert die Verzeichniseinträge für |\rsp@makeentry|.
% \changes{0.52}{2006/03/04}{komplett neu geschrieben}
%    \begin{macrocode}
\def\rsp@makeentry@content{%
% Defaults einstellen
 \rsp@makeentry@defaults
% useofficial korrigieren je nach gegebenheiten; grundsätzlich wird 
% also nach "`default"' zitiert; wenn dies nicht vorhanden ist, 
% dann der jeweils andere Datensatz
 \ifcite@useofficial
  \ifthenelse{\equal{\rsp@@offpages}{}\and\not\equal{\rsp@@jpages}{}}%
  {\cite@useofficialfalse}{\cite@useofficialtrue}%
 \else
  \ifthenelse{\equal{\rsp@@jpages}{}\and\not\equal{\rsp@@offpages}{}}%
  {\cite@useofficialtrue}{\cite@useofficialfalse}%
 \fi
% in jedem Fall geht die individuelle Einstellung im Eintrag vor
 \ifthenelse{\equal{\rsp@@citeas}{official}}{\cite@useofficialtrue}{%
  \ifthenelse{\equal{\rsp@@citeas}{journal}}{\cite@useofficialfalse}{}}%
% Datum
  \ifthenelse{\equal{\rsp@@date}{}}{\cite@datefalse}{}%
% Aktenzeichen
  \ifthenelse{\equal{\rsp@@sign}{}}{\cite@signfalse}{}%
% Entscheidungs-Typ
  \ifthenelse{\equal{\rsp@@decision}{}}{\cite@decisionfalse}{}%
% Parteien
   \ifthenelse{\equal{\rsp@@parties}{}}{\cite@partiesfalse}{}%
% ergänzende angaben
   \ifthenelse{\equal{\rsp@@name}{}}{\cite@namefalse}{}%
   \ifthenelse{\equal{\rsp@@commented}{}}{\cite@commentedfalse}{}%
% schließlich die Ausgabe der Daten 
 \@makeentrysequence
}%
%    \end{macrocode}
% \end{macro}
%
% \subsection{Verarbeitung der Daten aus der \texttt{.rsp.aux}-Datei}
%Die Datei |.rsp.aux| wird am Anfang des Dokumentes gelesen und erzeugt keine Ausgabe. 
%Hier werden die Befehle erstellt, die das zitieren in der Fußnote ermöglichen. 
%Außerdem werden die Seitenzahlen gesammelt und formatiert.
%
%Unter einer "`Serie"' wird hier eine ununterbrochene Folge von Seiten verstanden, 
%auf denen ein bestimmter Eintrag (Urteil / Dokument) jeweils mindestens 1x zitiert wird.
%
% \begin{macro}{rspcite}
%  Aus |\rspcite{bgh103}{|\meta{Daten}|}| wird |\j@bgh103{|\meta{Daten}|}|
%    \begin{macrocode}
\def\rspcite{\@newl@bel j}
%    \end{macrocode}
% \end{macro}
% \begin{macro}{rsprealcitation}
% |\rsprealcitation| übernimmt zwei Argumente: 
%\begin{description}
%	\item[1] Zitatkürzel
%	\item[2] Seite des Zitats
%\end{description}
% Es wird ein Befehl der Form |\p@|\meta{Kürzel}|{|\meta{Seitenzahlen}|}| erstellt.
%    \begin{macrocode}
\def\rsprealcitation#1#2{%
  \@ifundefined{p@#1}%
%    \end{macrocode}
% erster aufruf:
%\begin{description}
%	\item[p@kürzel] sammelt alle Seiten, wird aber erst am Ende der Serie gefüllt
%	\item[beg@kürzel] speichert die erste Seite der aktuellen Serie
%	\item[end@kürzel] speichert die (vorerst) letzte Seite der aktuellen Serie   
%\end{description}
%    \begin{macrocode}
  {%
    \@namedef{p@#1}{}% 
    \@namedef{beg@#1}{#2}% 
    \@namedef{end@#1}{#2}%      
  }%
%    \end{macrocode}
%bei mehrfacher Zitierung auf einer Seite soll die Seite nur einfach erscheinen
%ansonsten wird hier nur geprüft, ob die Serie ununterbrochen fortgesetzt wird.
%wenn eine neue Serie anfängt, wird die alte Serie in |\p@kürzel| gespeichert.
%    \begin{macrocode}
  {% 
   \ifthenelse{\equal{\rsp@endpage{#1}}{#2}}
    {}%gleiche seite mit mehrf. zitat
    {% neue Seite
     \setcounter{rspendpage}{\rsp@endpage{#1}}
     \stepcounter{rspendpage}
     \ifthenelse{\equal{\therspendpage}{#2}}
      {% current page = end page + 1 -> Serie geht weiter
       \@namedef{end@#1}{#2} % setze neues Serienende
      }%
      {% current page > end page + 1 -> Serie ist vorbei
       \rsp@pushpages{#1}% Serie in p@kürzel sichern
       % neue Serie eintragen
       \@namedef{beg@#1}{#2}
       \@namedef{end@#1}{#2}
      }%
    }% 
  }%
}%
%    \end{macrocode}
% \end{macro}
% \begin{macro}{rspnocitation}
% |\rspnocitation| wird von |rnocite| erzeugt. Ein solches "`Nichtzitat"' soll auch keine Seitenzahl im Verzeichnis erzeugen. 
%    \begin{macrocode}
\def\rspnocitation#1#2{\relax}
%    \end{macrocode}
% \end{macro}
% \begin{macro}{rspphantomcitation}
% |\rspphantomcitation| wird von |rphantomcite| erzeugt und entspricht (vorerst) |\rsprealcitation|,
% da auch die "`Phantome"' mit Seitenzahl im Verzeichnis erscheinen sollen.
%    \begin{macrocode}
\def\rspphantomcitation{\rsprealcitation}
%    \end{macrocode}
% \end{macro}
% \begin{macro}{rsp@pushpages}
% Dieses Makro fügt eine neue "`Serie"' an |\p@kürzel| an.
%    \begin{macrocode}
\def\rsp@pushpages#1{%
       \ifthenelse{\equal{\rsp@beginpage{#1}}{\rsp@endpage{#1}}}%
        {% nur einfache Seite
         \def\rsp@newpage{\rsp@beginpage{#1}}%         
        }%
        {% Serie
         \setcounter{rspbeginpage}{\rsp@beginpage{#1}}
         \stepcounter{rspbeginpage}
         \ifthenelse{\equal{\therspbeginpage}{\rsp@endpage{#1}}}
         {% endpage = beginpage + 1 (kurze Serie)
          \def\rsp@newpage{\rsp@beginpage{#1}~f.}% 
         }%
         {% endpage > beginpage + 1 (lange Serie)
          \def\rsp@newpage{\rsp@beginpage{#1}~ff.}% 
         }%
        }%
%    \end{macrocode}
% Alternativ könnte man hier auch schreiben: 
% \begin{quote}
% |\def\rsp@newpage{\rsp@beginpage{#1}-\rsp@endpage{#1}}|
% \end{quote}
% Damit würde nicht mehr erscheinen "`S. 20 ff."', sondern "`S. 20-24"'
%
% Nun kann der Seitenstring erstellt bzw. ergänzt werden. Dabei wird mit |\edef| gearbeitet, 
% damit sich die Angaben nicht mehr nachträglich verschieben. 
% \changes{0.52}{2005/05/15}{Umstellung auf rsp@pagestring}
%    \begin{macrocode}
       \edef\rsp@oldpage{\rsp@getpage{#1}}%
       \ifthenelse{\equal{\rsp@oldpage}{}}% erste Serie?
        {\rsp@namedef{p@#1}{\rsp@pagestring\expandafter\rsp@newpage}}% 
        {\rsp@namedef{p@#1}{\expandafter\rsp@oldpage, \expandafter\rsp@newpage}}% 
}
%    \end{macrocode}
% \end{macro}
% \begin{macro}{rsp@getpage}
% Die folgenden Befehle liefern jeweils den Inhalt der gespeicherten 
% Seitenzahlen. |\rsp@getpage| liefert dabei die gesamte Seitenliste
%    \begin{macrocode}
\def\rsp@getpage#1{\csname p@#1\endcsname}
%    \end{macrocode}
% |\rsp@beginpage| liefert die erste Seite der aktuellen Serie
%    \begin{macrocode}
\def\rsp@beginpage#1{\csname beg@#1\endcsname}
%    \end{macrocode}
% |\rsp@endpage| liefert die letzte Seite der aktuellen Serie
%    \begin{macrocode}
\def\rsp@endpage#1{\csname end@#1\endcsname}
%    \end{macrocode}
% \end{macro}
%
% \subsection{Erstellung der konkreten Zitate}
% \subsubsection{Die \texttt{rcite}-Befehle}
% Grundsätzlich werden in |\rcite@useroptions| die konkreten, vom Anwender vorgegebenen
% Einstellungen für ein Zitat gespeichert. Diese überschreiben dann die "`Default"'-Werte aus dem 
% Setup und ermöglichen es so, dass in einem Dokument ein Eintrag auf verschiedene Weise zitiert
% werden kann. 
% \begin{macro}{rcite}
% normales Zitat mit default-Angaben
%    \begin{macrocode}
\DeclareRobustCommand\rcite{% 
  \def\rcite@useroptions{\relax}%
  \@ifnextchar [{\@rcitex}{\@rcitex[]}}
%    \end{macrocode}
% \end{macro}
% \begin{macro}{rfullcite}
%  Vollzitat mit allen Angaben
%    \begin{macrocode}
\DeclareRobustCommand\rfullcite{%
   \def\rcite@useroptions{\rcite@fulloptions}%
   \@ifnextchar [{\@rcitex}{\@rcitex[]}}
%    \end{macrocode}
% \end{macro}
% \begin{macro}{rleancite}
% schlankes Zitat mit Minimalangaben
%    \begin{macrocode}
\DeclareRobustCommand\rleancite{% 
   \def\rcite@useroptions{\rcite@leanoptions}%
   \@ifnextchar [{\@rcitex}{\@rcitex[]}}
%    \end{macrocode}
% \end{macro}
% \begin{macro}{rrepeatcite}
%  Ketten-Zitat
% ohne Angabe der amtl. Sammlung
% ohne Angabe des Gerichts vor der Zeitschrift
%    \begin{macrocode}
\DeclareRobustCommand\rrepeatcite{%
   \def\rcite@useroptions{\cite@repeatedtrue\cite@nocourttrue}%
   \@ifnextchar [{\@rcitex}{\@rcitex[]}}
%    \end{macrocode}
% \end{macro}
% \begin{macro}{ranglocite}
% \changes{0.52}{2005/05/11}{neue Funktion eingefügt}
%  Zitat für englische Rechtsprechung
% ohne Angabe des Gerichts; mit parties
% Anregung von Ferdinand Grassmann
%    \begin{macrocode}
\DeclareRobustCommand\ranglocite{%
   \def\rcite@useroptions{\cite@nocourttrue\cite@partiestrue}%
   \@ifnextchar [{\@rcitex}{\@rcitex[]}}
%    \end{macrocode}
% \end{macro}
% \begin{macro}{rshortcite}
% erzwingt die Kurzform der amtl. Sammlung
% zB nur Z statt BGHZ 
% bei Zeitschriften Verhalten wie |\rrepeatcite|
%    \begin{macrocode}
\DeclareRobustCommand\rshortcite{% 
   \def\rcite@useroptions{\cite@longofficialfalse\cite@nocourttrue}%
   \@ifnextchar [{\@rcitex}{\@rcitex[]}}
%    \end{macrocode}
% \end{macro}
% \begin{macro}{rnocite}
% nocite-Kommando, wenn im Verzeichnis nicht zitierte Quellen
% erscheinen sollen, ohne Seitenangabe
%    \begin{macrocode}
\def\rnocite#1{\@bsphack
  \@for\@rspciteb:=#1\do{%
    \edef\@rspciteb{\expandafter\@firstofone\@rspciteb}%
     \if@filesw\immediate\write\@rspaux{\string\citation{\@rspciteb}}%
     \immediate\write\@rspaux{\string\rspnocitation{\@rspciteb}{\thepage}}\fi
     \@ifundefined{j@\@rspciteb}{\G@refundefinedtrue
        \@latex@warning{No-Citation `\@rspciteb' undefined}}{}}%
  \@esphack%
  \ifrsp@debug \ifrsp@fn Fussnote \else keine Fussnote \fi \fi%
  }
%    \end{macrocode}
% \end{macro}
% \begin{macro}{rphantomcite}
% ein "`phantom"' erscheint mit Seitenangabe im Verzeichnis, aber nicht im Text
% (etwa wenn ohne echtes Zitat auf eine Entsch. Bezug genommen wird)
% \changes{0.52}{2004/10/11}{nicht immediate, sonst falsche Seitenzahl}
%    \begin{macrocode}
\def\rphantomcite#1{\@bsphack
  \@for\@rspciteb:=#1\do{%
    \edef\@rspciteb{\expandafter\@firstofone\@rspciteb}%
     \if@filesw\immediate\write\@rspaux{\string\citation{\@rspciteb}}%
 \edef\rsp@tmp{\string\rspphantomcitation{\@rspciteb}{\noexpand\thepage}}% 
\if@filesw\expandafter\expandafter\expandafter\write\@rspaux\expandafter{\rsp@tmp}\fi      %\immediate\write\@rspaux{\string\rspphantomcitation{\@rspciteb}{\thepage}}\fi
     \@ifundefined{j@\@rspciteb}{\G@refundefinedtrue
        \@latex@warning{Phantom-Citation `\@rspciteb' undefined}}{}}%
  \@esphack%
  \ifrsp@debug \ifrsp@fn Fussnote \else keine Fussnote \fi \fi%
  }
%    \end{macrocode}
% \end{macro}
% \begin{macro}{@rcitex}
% bearbeitet die Zitate und übergibt den Output an |\@rcite|, der die Ausgabe des Zitats erstellt
%Parameter:
%\begin{description}
%	\item[1]   konkrete Fundstelle aus dem User-Aufruf
%	\item[2]   Kuerzel des Zitats (später |\@rciteb|
%\end{description}
% \changes{0.51}{2004/08/24}{Struktur umgestellt, überfl. Latex-Code entfernt}
% \changes{0.52}{2006/03/03}{nochmals weitgehend umgeschrieben und vereinfacht}
%    \begin{macrocode}
\def\@rcitex[#1]#2{%
  \def\@rcitea{#1}%Seitenzahl  
  \edef\@rciteb{#2}%Kürzel
  %    \end{macrocode}
% eintragen in rsp.aux, dass Quelle verwendet wird, damit \BibTeX{} den Eintrag heraussucht
%    \begin{macrocode}
  \if@filesw\immediate\write\@rspaux{\string\citation{\@rciteb}}\fi
%    \end{macrocode}
% weiterhin auch die Seitenzahl eintragen 
% \changes{0.52}{2004/10/11}{nicht immediate, da sonst falsche Seitenzahl}
%    \begin{macrocode}  
   \edef\rsp@tmp{\string\rsprealcitation{\@rciteb}{\noexpand\thepage}}% 
   \if@filesw\expandafter\expandafter\expandafter
    \write\@rspaux\expandafter{\rsp@tmp}\fi   
%    \end{macrocode}
% testen, ob das j@-Kommando per rspcite definiert wurde;
% falls nicht: Fragezeichen drucken und Warnung ausgeben
%    \begin{macrocode}
     \@ifundefined{j@\@rciteb}%
      {\mbox{\reset@font\bfseries ?}%
       \G@refundefinedtrue
       \@latex@warning
       {RSP-Citation `\@rciteb' on page \thepage \space undefined}}%
      {\@makecite{\csname j@\@rciteb\endcsname}}%
	\ifrsp@debug \ifrsp@fn Fussnote \else keine Fussnote \fi \fi
}%
%    \end{macrocode}
% \end{macro}
% \begin{macro}{@rcite}
%Parameter:
%\begin{description}
%	\item[1]Zitat (Daten vor der Fundstelle)
%	\item[2]Daten nach der konkreten Fundstelle
%	\item[3]konkrete Fundstelle (Seite)   
%\end{description}
% \end{macro}
%\subsubsection{Formatierung der Zitate}
% \begin{macro}{rsp@makecite@defaults}
% setzt Defaults fuer Zitat
%    \begin{macrocode}
\def\rsp@makecite@defaults{%
 \ifcite@is@document%
  \ifcite@preferofficial@d\cite@useofficialtrue\else\cite@useofficialfalse\fi
  \ifcite@showdate@d\cite@datetrue\else\cite@datefalse\fi
  \ifcite@showsign@d\cite@signtrue\else\cite@signfalse\fi
  \ifcite@showname@d\cite@nametrue\else\cite@namefalse\fi
  \ifcite@showparties@d\cite@partiestrue\else\cite@partiesfalse\fi
  \ifcite@showadditional@d\cite@additionaltrue\else\cite@additionalfalse\fi
  \ifcite@showcommented@d\cite@commentedtrue\else\cite@commentedfalse\fi
  \ifcite@showdecision@d\cite@decisiontrue\cite@nocourttrue\else%
                        \cite@decisionfalse\cite@nocourtfalse\fi%
%    \end{macrocode}
%bei amtl. Dokumenten kommt der Name der Organisation im
%Typ des Dokuments oft noch mal vor (zB BMF-Schreiben)
%    \begin{macrocode}
  \ifcite@longofficial@d\cite@longofficialtrue\else\cite@longofficialfalse\fi
 \else
  \ifcite@preferofficial@j\cite@useofficialtrue\else\cite@useofficialfalse\fi
  \ifcite@showdate@j\cite@datetrue\else\cite@datefalse\fi
  \ifcite@showsign@j\cite@signtrue\else\cite@signfalse\fi
  \ifcite@showname@j\cite@nametrue\else\cite@namefalse\fi
  \ifcite@showparties@j\cite@partiestrue\else\cite@partiesfalse\fi
  \ifcite@showadditional@j\cite@additionaltrue\else\cite@additionalfalse\fi
  \ifcite@showcommented@j\cite@commentedtrue\else\cite@commentedfalse\fi
  \ifcite@showdecision@j\cite@decisiontrue\else\cite@decisionfalse\fi 
  \ifcite@longofficial@j\cite@longofficialtrue\else\cite@longofficialfalse\fi
  \cite@nocourtfalse
 \fi%
}
%    \end{macrocode}
% \end{macro}
% \begin{macro}{@makecitesequence}
% \changes{0.52}{2005/11/01}{neue Funktion}
% Um die Reihenfolge der anzuzeigenden Daten flexibel zu gestalten, wird ein Macro eingesetzt, das die "`default"'-Reihenfolge enthält. 
% Wenn im Einzelfall eine andere Reihenfolge gewünscht wird, kann der rcite-Aufruf dieses Macro überschreiben und dadurch die Reihenfolge manipulieren. 
% So können auch spezielle Anforderungen erfüllt werden, ohne das ganze System umzuschreiben. Versierte User könnten sich die individuelle rcite-Funktion auch selbst basteln.
%    \begin{macrocode}
\def\@makecitesequence{\@defaultcitesequence}
%    \end{macrocode}
% \end{macro}
% \begin{macro}{delimspace}
% \changes{0.52}{2006/03/03}{neue Funktion}
% Dieses einfache Makro sorgt dafür, dass am Anfang eines Zitates keine überflüssigen 
% Leerzeichen erscheinen. Gerade im Zusammenhang mit "`nocourt"' ist es gelegentlich 
% im Zitat nicht leicht festzustellen, ob schon zuvor Daten stehen. Um die citesequence 
% möglichst schlank zu halten, wurde diese Prüfung ausgelagert.
%    \begin{macrocode}
\newif\ifrsp@delimspace\rsp@delimspacefalse 
\def\delimspace{%
 \ifrsp@delimspace\space\else\rsp@delimspacetrue\fi}
%    \end{macrocode}
% \end{macro}
% \begin{macro}{@defaultcitesequence}
% \changes{0.52}{2006/03/03}{neue Funktion}
% Hier wird das Zitat aus den einzelnen Bestandteilen zusammen gebastelt. 
% An sich wird hier nur die Reihenfolge festgelegt; die "`Intelligenz"' 
% der Anwendung wurde ausgelagert, damit hier einfache Manipulationen möglich sind.
%    \begin{macrocode}
\def\@defaultcitesequence{%
% Zitat aus amtl. Sammlung erstellen
  \rsp@delimspacefalse
  \ifcite@useofficial
   \ifcite@decision\@makecite@court{\delimspace}{}\else
    \ifcite@date\@makecite@court{\delimspace}{}\else
     \ifcite@sign\@makecite@court{\delimspace}{}\else
      \ifcite@parties\@makecite@court{\delimspace}{}\else
       \ifrsp@lookat@use\@makecite@court{\delimspace}{}\fi
      \fi
     \fi
    \fi
   \fi
   \@makecite@decision{\delimspace}{}%
   \@makecite@date{\delimspace}{}%
   \@makecite@sign{\delimspace (}{)}%
   \@makecite@parties{\delimspace}{}%
   \@makecite@official{\delimspace}{}%
   \delimspace\hyper@rsplinkstart{\@rciteb}\rsp@@offpages\hyper@rsplinkend
    \ifthenelse{\equal{\@rcitea}{}}{}%
     {\rcite@before{\rsp@citefont \@rcitea}\rcite@after}%
   \@makecite@additional{\space(}{)}%
   \@makecite@name{\bgroup\emph -- "`}{"' -- \egroup}%
   \@makecite@commented{,\space}{}%
   \@makecite@concept{}{}%
% Zeitschrift-Zitat erstellen
  \else
   \@makecite@court{\delimspace}{}%
   \@makecite@decision{\delimspace}{}%
   \@makecite@date{\delimspace}{}%
   \@makecite@sign{\delimspace (}{)}%
   \@makecite@parties{\delimspace}{}%
   \delimspace\rsp@@jname
   \space\hyper@rsplinkstart{\@rciteb}\rsp@@jpages\hyper@rsplinkend
   \ifthenelse{\equal{\@rcitea}{}}{}%
     {\rcite@before{\rsp@citefont \@rcitea}\rcite@after}%
   \@makecite@additional{\space(}{)}%
   \@makecite@name{\bgroup\emph -- "`}{"' -- \egroup}%
   \@makecite@commented{,\space}{}%
   \@makecite@concept{}{}%
  \fi
%    \end{macrocode}
% \changes{0.51}{2004/08/24}{bei nocourt Auffangfunktion für lookat}
% Dieser Fall kann nur vorkommen, wenn |nocourt| durch |repeatcite| oder |shortcite| 
% entgegen |rlookat| doch wieder auf |true| gesetzt wird. Es handelt sich um eine 
% echte Notoption; diese Zitate sehen nicht besonders toll aus. Besser sollte man 
% |repeatcite| oder |shortcite| in |lookat|-Umgebungen gar nicht verwenden. 
%    \begin{macrocode}
 \ifcite@nocourt
  \ifrsp@lookat@use\space\rsp@lookatstring\fi
 \fi
}%
%    \end{macrocode}
% \end{macro}
% \begin{macro}{@makecite@court}
% \changes{0.52}{2005/11/01}{neue Funktion}
% Angaben zum Gericht basteln
%    \begin{macrocode}
\def\@makecite@court#1#2{%
   \ifcite@nocourt\else
    \ifcite@longcourt
     \ifthenelse{\equal{\rsp@@chamber}{}}{#1\rsp@@court}%
       {#1\rsp@@court\space\rsp@@chamber}%   
    \else
     \ifthenelse{\equal{\rsp@@special}{}}{#1\rsp@@short}%
       {#1\rsp@@short\space\rsp@@special}%
    \fi
    \ifrsp@lookat@use\space\rsp@lookatstring\fi#2%
   \fi}%
%    \end{macrocode}
% \end{macro}
% \begin{macro}{@makecite@date}
% \changes{0.52}{2006/03/03}{neue Funktion}
% Datums- und Entscheidungstyp-Angaben
% 
%    \begin{macrocode}
\def\@makecite@date#1#2{%
  \ifcite@date
   \ifcite@decision
    #1\rsp@@decision\space\cite@datedelimiter\space\rsp@@date#2%
   \else
    #1\rsp@@date#2%
   \fi
  \fi}%
%    \end{macrocode}
% \end{macro}
% \begin{macro}{@makecite@decision}
% \changes{0.52}{2006/03/03}{neue Funktion}
% Entscheidungstyp-Angabe, wenn kein Datum angegeben ist
% 
%    \begin{macrocode}
\def\@makecite@decision#1#2{%
 \ifcite@date\else
  \ifcite@decision
   #1\rsp@@decision#2\fi
 \fi}%
%    \end{macrocode}
% \end{macro}
% \begin{macro}{makecite@sign}
% \changes{0.52}{2006/03/03}{neue Funktion}
% Angabe Aktenzeichen
% 
%    \begin{macrocode}
\def\@makecite@sign#1#2{%
 \ifcite@sign
  #1\rsp@@sign#2\fi
}%
%    \end{macrocode}
% \end{macro}
% \begin{macro}{makecite@parties}
% \changes{0.52}{2006/03/03}{neue Funktion}
% Parteien-Angaben
% 
%    \begin{macrocode}
\def\@makecite@parties#1#2{%
 \ifcite@parties
  #1\rsp@@parties#2\fi
}%
%    \end{macrocode}
% \end{macro}
% \begin{macro}{@makecite@official}
% \changes{0.52}{2006/03/03}{neue Funktion}
% amtl. Sammlung
% 
%    \begin{macrocode}
\def\@makecite@official#1#2{%
 \ifcite@repeated
  \else
  \ifcite@longofficial #1\rsp@@offlong#2%
   \else #1\rsp@@offshort#2%
  \fi
 \fi
}%
%    \end{macrocode}
% \end{macro}
% \begin{macro}{makecite@additional}
% \changes{0.52}{2006/03/03}{neue Funktion}
% Parallel-Fundstellen, soweit vorhanden
% 
%    \begin{macrocode}
\def\@makecite@additional#1#2{%
% parallel-Fundstellen angeben?
 \ifcite@additional 
  \ifthenelse{\equal{\rsp@@additional}{}}%
  {% keine Extra-Angabe
   \ifcite@useofficial
    \ifthenelse{\equal{\rsp@@jpages}{}}{}%
     {#1=\space\rsp@@jname\space\rsp@@jpages #2}%
   \else%
    \ifthenelse{\equal{\rsp@@offpages}{}}{}%
     {#1=\ifcite@longofficial\rsp@@offlong\else%
      \rsp@@offshort\fi\space\rsp@@offpages #2}%
   \fi%
  }%
  {% Extra-Angabe vorhanden
   \ifcite@useofficial%
    \ifthenelse{\equal{\rsp@@jpages}{}}%
     {#1\space\rsp@@additional #2}%
     {#1=\space\rsp@@jname\space\rsp@@jpages\space\rsp@@additional #2}%
   \else
    \ifthenelse{\equal{\rsp@@offpages}{}}%
     {#1\rsp@@additional #2}%
     {#1=\ifcite@longofficial\rsp@@offlong\else
      \rsp@@offshort\fi\space\rsp@@offpages
    \space\rsp@@additional #2}%
   \fi%
  }%    
 \fi%
} 
%    \end{macrocode}
% \end{macro}
% \begin{macro}{@makecite@name}
% \changes{0.52}{2006/03/03}{neue Funktion}
% "`Name"' der Entscheidung
% 
%    \begin{macrocode}
\def\@makecite@name#1#2{% 
% Name angeben?
 \ifcite@name
   #1\rsp@@name #2\fi}
%    \end{macrocode}
% \end{macro}
% \begin{macro}{@makecite@commented}
% \changes{0.52}{2006/03/03}{neue Funktion}
% Anmerkungs-Fundstellen
% 
%    \begin{macrocode}
\def\@makecite@commented#1#2{% 
% Anmerkungen angeben?
 \ifcite@commented #1\rsp@@commented #2\fi}%
%    \end{macrocode}
% \end{macro}
% \begin{macro}{@makecite@concept}
% \changes{0.52}{2006/03/03}{neue Funktion}
% ergänzende Infos für Konzept-Ausdrucke
% 
%    \begin{macrocode}
\def\@makecite@concept#1#2{%
% Konzept drucken?
 \ifcite@concept% 
  \ifthenelse{\equal{\rsp@@note}{}}%
   {%
    \ifthenelse{\equal{\rsp@@annote}{}}%
   	{}%
   	{#1\emph{\rsp@@annote}#2}%
   }%
   {%
    \ifthenelse{\equal{\rsp@@annote}{}}%
   	{#1\emph{\rsp@@note}#2}%
   	{#1\emph{\rsp@@note, \rsp@@annote}#2}%   
   }%
 \fi}%
%    \end{macrocode}
% \end{macro}
% \begin{macro}{@makecite}
% \changes{0.52}{2005/11/01}{neue citeas-Funktion eingeführt}
% \changes{0.52}{2006/03/03}{Funktion komplett umgeschrieben}
% Dieses Makro ermittelt über mehrere Stufen, wie das Zitat zusammengesetzt sein soll, 
% also welche Angaben angezeigt werden sollen. Die Anzeige selbst geschieht dann über 
% den Aufruf von @makecitesequence am Ende.
%    \begin{macrocode}
\def\@makecite#1{%
 \protected@edef\rsp@all{\expandafter\rsp@firstofone#1}% 
 \rsp@splitlines\rsp@all
 \ifthenelse{\equal{\rsp@@type}{document}}%
  {\cite@is@documenttrue}%
  {\cite@is@documentfalse}%
% Defaults einstellen
 \rsp@makecite@defaults
% defaults ueberschreiben bei fullcite 
 \ifcite@is@document 
  \ifrsp@all@full@d\rcite@fulloptions\fi
  \ifrsp@firstcite@full@d\rsp@firstcite@full\fi
 \else
  \ifrsp@all@full@j\rcite@fulloptions\fi
  \ifrsp@firstcite@full@j\rsp@firstcite@full\fi
 \fi
% useofficial korrigieren je nach gegebenheiten; 
% grundsätzlich wird also nach "`default"' zitiert; 
% wenn dies nicht vorhanden ist, dann der jeweils andere Datensatz
 \ifcite@useofficial
  \ifthenelse{\equal{\rsp@@offpages}{}\and\not\equal{\rsp@@jpages}{}}%
  {\cite@useofficialfalse}{\cite@useofficialtrue}%
 \else
  \ifthenelse{\equal{\rsp@@jpages}{}\and\not\equal{\rsp@@offpages}{}}%
  {\cite@useofficialtrue}{\cite@useofficialfalse}%
 \fi
% in jedem Fall geht die individuelle Einstellung im Eintrag vor
 \ifthenelse{\equal{\rsp@@citeas}{official}}{\cite@useofficialtrue}{%
  \ifthenelse{\equal{\rsp@@citeas}{journal}}{\cite@useofficialfalse}{}}%
% normal kein wiederholer-Zitat
 \cite@repeatedfalse
%    \end{macrocode}
% User-Options können die Einstellung |useofficial| überschreiben
% ansonsten werden die User-Options aber durch das System wieder überschrieben,
% wenn die gewünschten Daten im Eintrag nicht vorhanden sind
%    \begin{macrocode}
 \rcite@useroptions 
% Datum
  \ifthenelse{\equal{\rsp@@date}{}}{\cite@datefalse}{}%
% Aktenzeichen
  \ifthenelse{\equal{\rsp@@sign}{}}{\cite@signfalse}{}%
% Entscheidungs-Typ
  \ifthenelse{\equal{\rsp@@decision}{}}{\cite@decisionfalse}{}%
% Parteien
   \ifthenelse{\equal{\rsp@@parties}{}}{\cite@partiesfalse}{}%
% ergänzende angaben
   \ifthenelse{\equal{\rsp@@name}{}}{\cite@namefalse}{}%
   \ifthenelse{\equal{\rsp@@commented}{}}{\cite@commentedfalse}{}%
% schließlich die Ausgabe der Daten 
 \@makecitesequence}%
%    \end{macrocode}
% \end{macro}
% \begin{macro}{@makeciteb}
% \changes{0.51}{2004/08/23}{Spaces entfernt}
% \changes{0.52}{2006/03/03}{Funtion entfallen}
% stellt die Daten zusammen, die im Zitat hinter der konkreten Fundstelle erscheinen
% \end{macro}
% \subsubsection{Sonderfunktionen für Vollzitate und Querverweise}
% \begin{macro}{Tokenlisten}
% Der nachfolgende Code dient der Verwaltung von Tokenlisten zur Speicherung der 
% Erstzitate. Wurde ebenfalls weitgehend von |jurabib| übernommen. 
%    \begin{macrocode}
\newcommand*{\rsp@list@d}{}
\newcommand*{\rsp@list@j}{}
\newtoks\rsp@temptoks
\newcommand*{\rsp@@append}[2]{%
    \ifthenelse{\equal{#2}{}}{%
        \protected@xdef#2{#1}%
    }{%
        \rsp@temptoks=\expandafter{#2}%
        \protected@xdef#2{\the\rsp@temptoks,#1}%
    }%
}%
\newcommand*{\rsp@append}[2]{%
    \rsp@if@elem{#1}{#2}{%
    }{%
        \rsp@@append{#1}{#2}%
    }%
}%
\newcommand*{\rsp@list@tempa}{}
\newcommand*{\rsp@list@tempb}{}
\newcommand*{\rsp@test@cmd}{}
\newcommand*{\rsp@if@elem}[2]{%
    \protected@edef\rsp@list@tempa{#1}%
    \let\rsp@test@cmd\@secondoftwo
    \@for\rsp@list@tempb:=#2\do{%
        \ifx\rsp@list@tempa\rsp@list@tempb
             \let\rsp@test@cmd\@firstoftwo
        \fi
    }%
    \rsp@test@cmd
}%
%    \end{macrocode}
% \end{macro}
% \begin{macro}{rsp@undefineall}
% leert die Tokenliste, wenn bei firstcite=chapter etc. ein Neuanfang gesetzt werden muss. 
% Stammt im Prinzip auch von |jurabib|, wurde aber stark vereinfacht.
% 1. Arg: die Liste der zu loeschenden Makros,
% 2. Arg: chapter oder section,
% 3. Arg: docu oder judgement
%    \begin{macrocode}
\newcommand*{\rsp@undefineall}[3]{%
    \ifthenelse{\equal{#2}{chapter}}{%
                \rsp@info{Resetting citefirst on #3
                     for Chapter \thechapter}%
                \@for\rsp@list@tempa:=#1\do{%
                    \expandafter\gdef\csname\rsp@list@tempa\endcsname{}%
                }%
    }{%
                \rsp@info{Resetting citefirst on #3
                     for Section \thesection}%
                \@for\rsp@list@tempa:=#1\do{%
                    \expandafter\gdef\csname\rsp@list@tempa\endcsname{}%
                }%
    }%
}%
%    \end{macrocode}
% \end{macro}
% \begin{macro}{rsp@firstcite@full}
% Gibt ein Vollzitat aus, wenn es sich um das erste Zitat des Dokuments / Chapter / Section
% handelt und ermöglicht ansonsten die Querverweise auf das Vollzitat.
%    \begin{macrocode}
\def\rsp@firstcite@full{%
%    \end{macrocode}
%reset fuer chapter und section
%    \begin{macrocode}
 \ifcite@is@document
  \@ifundefined{rsp@resetfor@d}{}{%
   \ifrsp@debug DOCRESET MOEGLICH\fi%
   \ifthenelse{\value{rspcitefull@d}=0}% 
% erstes dok im kapitel / section: RESET
     {\ifrsp@debug DOCRESET TATSAECHLICH\fi% 
      \rsp@undefineall{\rsp@list@d}{\rsp@resetfor@d}{documents}%
     }%     
     {}% kein reset
   }%
 \else%
  \@ifundefined{rsp@resetfor@j}{}{%
   \ifrsp@debug URTEILRESET MOEGLICH\fi%
   \ifthenelse{\value{rspcitefull@j}=0}% 
% erstes urteil im kapitel / section: RESET
     {\ifrsp@debug URTEILRESET TATSAECHLICH\fi%
      \rsp@undefineall{\rsp@list@j}{\rsp@resetfor@j}{judgements}%
     }%
     {}% kein reset
   }%
 \fi%
%    \end{macrocode}
% Vollzitat? wenn f@... noch nicht definiert ist
% oder wenn es (nach reset) leer ist
%    \begin{macrocode} 
 \@ifundefined{f@\@rciteb}{\rsp@firstcitetrue}%
  {%
   \ifthenelse{\equal{\@nameuse{f@\@rciteb}}{}}%
    {\rsp@firstcitetrue}%
    {\rsp@firstcitefalse}%
  }%
%    \end{macrocode}
% ja: fullcite erzwingen
% ref. setzen
% Seitenref. immer moeglich (1. Argument von f@kuerzel)
% Fn.-Ref. nur wenn in Fussnote (2. Argument von f@kuerzel)
%    \begin{macrocode}
 \ifrsp@firstcite
  \ifrsp@debug VOLLZITAT\fi
  \rcite@fulloptions
  \rsp@gnamedef{f@\@rciteb}{%
   {\thepage}% 
    \ifrsp@fn
     {\thempfn}%	
    \else
     {}% 
    \fi
   }%
   \ifrsp@debug\rsp@info{Referenz gesetzt fuer 
    \@rciteb: \expandafter\csname f@\@rciteb\endcsname}\fi
   \ifcite@is@document
    \rsp@append{f@\@rciteb}{\rsp@list@d}%
   \else
    \rsp@append{f@\@rciteb}{\rsp@list@j}%
   \fi
  \rsp@lookat@usefalse
 \else
  \ifrsp@debug NORMALZITAT\fi%
%    \end{macrocode}
% nein: normal-Zitat
% ref. benutzen?
%    \begin{macrocode}
  \ifcite@is@document
   \ifrsp@lookat@d
    \rsp@lookat@usetrue
    \cite@nocourtfalse
   \else
    \rsp@lookat@usefalse
   \fi
  \else
   \ifrsp@lookat@j
    \rsp@lookat@usetrue
    \cite@nocourtfalse
   \else
    \rsp@lookat@usefalse
   \fi
  \fi
  \relax
 \fi
%    \end{macrocode}
%Counter nach jedem Zitat weitersetzen
%    \begin{macrocode}
 \ifcite@is@document
  \stepcounter{rspcitefull@d}%
 \else
  \stepcounter{rspcitefull@j}%
 \fi 
}%
%    \end{macrocode}
% \end{macro}
% \begin{macro}{rsp@lookatstring}
% erzeugt den String mit dem Verweis auf die Seite / Fussnote des Vollzitats
%    \begin{macrocode}
\def\rsp@lookatstring{%
   \edef\rsp@reference{\@nameuse{f@\@rciteb}}% {{seite}{fn}}
   \def\rsp@refpage{\expandafter\rsp@firstoftwo\rsp@reference}%
   \def\rsp@refnote{\expandafter\rsp@secondoftwo\rsp@reference}%
   \ifthenelse{\equal{\rsp@refnote}{}}%
     {(oben S.~\rsp@refpage )}% without note
     {(oben Fn.~\rsp@refnote )}% with note
}%
%    \end{macrocode}
% \end{macro}
% \subsection{Initialisierung}
% \begin{macro}{AtBeginDocument}
% Initialisierung
%    \begin{macrocode}
\AtBeginDocument{%
% Merkposten für die Gruppierung zurücksetzen
 \global\edef\rsp@@lasttype{start}
 \global\edef\rsp@@laststate{start}
 \global\edef\rsp@@lastjurisdiction{start}
 \global\edef\rsp@@lastlevel{start}
 \global\edef\rsp@@lastcourt{start}
% Aux-Datei öffnen
  \newwrite\@rspaux
  \@input{\jobname.rsp.aux}%
  \if@filesw
    \immediate\openout\@rspaux\jobname.rsp.aux
    \immediate\write\@rspaux{\relax}%
  \fi}
%    \end{macrocode}
% \end{macro}
% \begin{macro}{rspdata}
%Mitteilung an \BibTeX, woher die Daten kommen (bib) 
%    \begin{macrocode}
\def\rspdata#1{%
  \if@filesw
    \immediate\write\@rspaux{\string\bibdata{#1}}%
  \fi}
%    \end{macrocode}
% \end{macro}
% \begin{macro}{rspstyle}
% Formatdatei an \BibTeX übergeben;
% einfuegen der rsp.bbl-Datei (dort wird dann das Verzeichnis erstellt)
%    \begin{macrocode}
\def\rspstyle#1{%
  \ifx\@begindocumenthook\@undefined\else
    \expandafter\AtBeginDocument
  \fi
    {\if@filesw
       \immediate\write\@rspaux{\string\bibstyle{#1}}%
     \fi}
  \@input@{\jobname.rsp.bbl}}
%    \end{macrocode}
% j@Kuerzel-Kommandos loeschen
%    \begin{macrocode}
\expandafter\let\csname j@*\endcsname\@empty
%</package>
%    \end{macrocode}
% \end{macro}
% \section{Die BibTeX-Styledatei}
% \changes{0.52}{2005/11/01}{neues Feld "`citeas"' eingeführt}
%    \begin{macrocode}
%<*bibstyle>
ENTRY{
	state			% DE
	jurisdiction		% Ord. Gerichtsbarkeit
	level			% Bundesgerichte
	place			% Karlsruhe
	courtname		% Bundesgerichtshof oder Bundesmin. der Fin. 
	courtshort		% BGH oder BMF
	courtspecial		% GrS
	chamber			% ("X ZR")
	date			% 26.9.1996
	decision		% Urteil / Beschluss / Vorlagebeschl.

	official		% Slg. 
	officialshort		% E (statt BVerfGE)
	officialyear		% 1996
	officialvolume		% I
	officialpages		% 4551, 4570 

	journal			% ("ZStW")
	journalyear		% ("1983")
	journalvolume		% ("94")
	journalpages		% ("493 ff.")

	journaladditional	% ("=JZ 93, 333")

	name			% Kimberly Clark
	parties			% Frankreich / Kommission
	sign			% C-241/94
	language		% FR
	keyword			% Selectivitätskriterium im Beihilfenrecht
	laws			% Artt. 87 ff. EG
	commented		% Pacteau, GdP 1845, 233 ff.
	note			% wohl Fehlurteil
	annote			% Kopien in Ordner R23
	
	citeas			% journal / official (j/o)
	
	sortkeyg		% manueller Sortierschluessel (Ger-Ebene)
  sortkeyu		% manueller Sortierschluessel (Urt-Ebene)
  }
  { }
  { }


FUNCTION {not}
{   { #0 }
  { #1 }
  if$
}

FUNCTION {and}
{   'skip$
  { pop$ #0 }
  if$
}

FUNCTION {or}
{   { pop$ #1 }
  'skip$
  if$
}

FUNCTION {output.bibitem}
{ newline$
  "\rspitem[%" write$
  newline$
  " {" write$
    type$ empty$
	{ "{}" write$ }
	{ "{" type$ * "}" * write$ }
    if$
    state empty$
	{ "{}" write$ }
	{ "{" state * "}" * write$ }
    if$
    jurisdiction empty$
	{ "{}" write$ }
	{ "{" jurisdiction * "}" * write$ }
    if$
    level empty$
	{ "{}" write$ }
	{ "{" level * "}" * write$ }
    if$
    place empty$
	{ "{}" write$ }
	{ "{" place * "}" * write$ }
    if$
    courtname empty$
	{ "{}" write$ }
	{ "{" courtname * "}" * write$ }
    if$
  "}%" write$
  newline$

  " {" write$
    courtshort empty$
	{ "{}" write$ }
	{ "{" courtshort * "}" * write$ }
    if$
    courtspecial empty$
	{ "{}" write$ }
	{ "{" courtspecial * "}" * write$ }
    if$
    chamber empty$
	{ "{}" write$ }
	{ "{" chamber * "}" * write$ }
    if$
  "}%" write$
  newline$
}


FUNCTION {output.bibitem2}
{
  " {" write$
    date empty$
	{ "{}" write$ }
	{ "{" date * "}" * write$ }
    if$
    sign empty$
	{ "{}" write$ }
	{ "{" sign * "}" * write$ }
    if$
    parties empty$
	  	{"{}" write$ }
  		{"{" parties * "}" * write$}
	  if$
	  name empty$
	  	{"{}" write$ }
  		{"{" name * "}" * write$}
	  if$
    decision empty$
	{ "{}" write$ }
	{ "{" decision * "}" * write$ }
    if$

  "}%" write$
  newline$

  " {" write$
    official empty$
	{ "{}" write$ }
	{ "{" official * "}" * write$ }
    if$
    officialshort empty$
	{ "{}" write$ }
	{ "{" officialshort * "}" * write$ }
    if$
    officialpages empty$
    	{
	     officialvolume empty$
	     	{ 
	     	  officialyear empty$
	     	   { "{}" write$ }
	     	   { "{" officialyear * "}" * write$ }
	     	  if$
	     	}
	     	{
	     	  officialyear empty$
		       { "{" officialvolume * "}" * write$ }
		       { "{" officialyear * " " * officialvolume * "}" * write$ }
	        if$
	      }
	     if$
	    }
	    { 
       officialvolume empty$
		    {
		      officialyear empty$
		       { "{" officialpages * "}" * write$ }
		       { "{" officialyear * ", " * officialpages * "}" * write$ }
		      if$
		    }
		    {
		      officialyear empty$
		       { "{" officialvolume * ", " * officialpages * "}" * write$ }
	         { "{" officialyear * " " * officialvolume * ", " * officialpages * "}" * write$ }
	        if$
	      }
	     if$
	    }
    if$
  "}%" write$
  newline$

  " {" write$
    journal empty$
	{ "{}" write$ }
	{ "{" journal * "}" * write$ }
    if$
    journalpages empty$
	{ 
	  journalyear empty$
		{"{}" write$}
		{"{" journalyear * "}" * write$ }
	  if$
	}
	{
	  journalyear empty$
	  	{"{" journalpages * "}" * write$ }
		{"{" journalyear * ", " * journalpages * "}" * write$ }
	  if$
	}
    if$
    journaladditional empty$
	{ "{}" write$ }
	{ "{" journaladditional * "}" * write$ }
    if$
  "}%" write$
  newline$
}

FUNCTION {output.bibitem3}
{
  " {" write$
  note empty$
   { "{}" write$ }
   { "{" note * "}" * write$ }
  if$
  annote empty$
   { "{}" write$ }
   { "{" annote * "}" * write$ }
  if$
  commented empty$
   { "{}" write$ }
   { "{" commented * "}" * write$ }
  if$
  citeas empty$
   { "{}" write$ }
   { "{" citeas * "}" * write$ }
  if$    
  "}%" write$  
  newline$
  "]%" write$
  newline$
  "{" cite$ * "}%" * write$
  newline$
}

FUNCTION {judgement}
{ output.bibitem 
  output.bibitem2
  output.bibitem3
}

FUNCTION {court}{}

FUNCTION {institution}{}

FUNCTION {document}{
  output.bibitem 
  output.bibitem2
  output.bibitem3
}

FUNCTION {default.type}{judgement}

READ

FUNCTION {sortify}{ purify$ "l" change.case$ }

FUNCTION {field.or.null}
{ duplicate$ empty$
  { pop$ "" }
  'skip$
  if$
}



FUNCTION {presort}
{ 
  type$ field.or.null sortify
  "    "
  *
  sortkeyg empty$ 
  {
     state field.or.null sortify
  }
  {
     sortkeyg field.or.null sortify
  }
  if$
  *
  "    "
  *
  jurisdiction field.or.null sortify
  *
  "    "
  *
  level field.or.null sortify
  *
  "    "
  *
  courtshort field.or.null sortify
  *
  "    "
  *
 
  sortkeyu empty$
  {  
    officialpages empty$
	{
		journal field.or.null sortify
	}
	{
		officialshort field.or.null sortify
	}
    if$
  }
  {
    sortkeyu field.or.null sortify
  }
  if$
  *
  "    "
  *

    officialpages empty$
	{
		journalyear field.or.null sortify
		*
		"    "
		*
		journalvolume field.or.null sortify
		*
		"    "
		*
		journalpages field.or.null sortify
	}
	{
		officialyear field.or.null sortify
		*
		"    "
		*
		officialvolume field.or.null sortify
		*
		"    "
		*
		officialpages field.or.null sortify
	}
    if$
    *
  #1 entry.max$ substring$
  'sort.key$ :=
}


ITERATE {presort}

FUNCTION {before.sort} { "BEFORE SORT:" top$ }
EXECUTE {before.sort}
FUNCTION {print.sort.keys} {sort.key$ top$}
ITERATE {print.sort.keys}

SORT

FUNCTION {after.sort} {"AFTER SORT:" top$}
EXECUTE {after.sort}
ITERATE {print.sort.keys}


FUNCTION {begin.bib}
{ preamble$ empty$
    'skip$
    { "%" write$ newline$
      "% This bibliography was produced by using jurarsp.bst" write$ newline$
      "%" write$ newline$
      preamble$ write$ newline$
    }
  if$
  "\begin{thersplist}{}" write$ newline$
}

EXECUTE {begin.bib}

ITERATE {call.type$}

FUNCTION {end.bib}
{ newline$
  "\end{thersplist}" write$ newline$
}

EXECUTE {end.bib}
%</bibstyle>
%    \end{macrocode}
% \section{Beispieldateien}
% \subsection{Das Beispieldokument}
%    \begin{macrocode}
%<*example>
\documentclass[english]{scrreprt}
\usepackage[T1]{fontenc}
\usepackage[latin1]{inputenc}
\usepackage{babel}
\usepackage{german}
\usepackage{calc}
\usepackage{jurarsp}
\usepackage{hyperref}
%
\begin{document}

\rspstyle{jurarsp}
\rspdata{rsptest}

\newpage

Beispiel für ein Rechtsprechungs-Zitat:\footnote{%
So schon 
\rcite[33 ff.]{aaa:dummy}.}

Beispiel für ein Dokument-Zitat:\footnote{%
\rcite[222]{bmf:st01:175}.}

BGH Zitat noch einmal vollständig.%
\footnote{Vgl. auch dazu \rfullcite[223 ff.]{aaa:dummy}.}

\newpage

BGH Zitat noch einmal.%
\footnote{Vgl. auch dazu \rcite[223 ff.]{aaa:dummy}.}

BGH Zitat noch einmal.%
\footnote{So der BGH erstmals in 
\rshortcite[223 ff.]{aaa:dummy}, 
spaeter dann st. Rsp., vgl. \rcite[223 ff.]{aaa:dummy}; 
\rrepeatcite[223 ff.]{aaa:dummy}; ebenso nun \rcite[222]{bmf:st01:175}.}

\end{document}
%</example>
%    \end{macrocode}
% \subsection{Die BibTeX-Datenbank für das Beispieldokument}
%    \begin{macrocode}
%<*bibfile>
@JUDGEMENT{aaa:dummy,
crossref = "bghz",
courtspecial = {GrS},
chamber = {Gro{\ss}er Senat},
date = {01.08.1993},
decision = {Urteil},
officialvolume = {83},
officialpages = {244 ff.},
journal = {NJW},
journalyear = {1994},
journalpages = {1923 ff.},
journaladditional = {= JZ 1995, 2323 ff.},
name = {Dummy-Entscheidung},
parties = {Meyer ./. M{\"u}ller},
sign = {II ZR 233/91},
language = {Deutsch},
keyword = {Test},
laws = {{\S\S} 223 ff. BGB},
commented = {abl. Anm. K{\"u}belb{\"o}ck, MDR 95, 223 ff.},
note = {rkr.},
annote = {Kopien in Ordner 23, noch lesen},
citeas = {official},
sortkeyu = {}}

@COURT{bghz,
courtname = {Bundesgerichtshof},
courtshort = {BGH},
place = {Karlsruhe},
official = {BGHZ},
officialshort = {Z},
sortkeyg = {015010010000},
level = {Bundesgerichtshof},
state = {Bundesrepublik Deutschland},
jurisdiction = {Ordentliche Gerichtsbarkeit}}

@DOCUMENT{bmf:st01:175,
crossref = "bmf",
date = {23.01.2001},
decision = {BMF-Schreiben},
officialyear = {2001},
officialpages = {175},
name = {Schreiben betr. ertragsteuerliche Behandlung von Film- und Fernsehfonds},
sign = {IV A 6 --- S 2241 --- 8/01},
language = {Deutsch},
annote = {ge{\"a}nd. durch BMF v. 5.8.03 in Beck Nr. 1 {\S} 5 / 4},
sortkeyu = {0}}

@INSTITUTION{bmf,
courtname = {Bundesminister der Finanzen},
courtshort = {BMF},
place = {Berlin},
official = {Bundessteuerblatt Teil I},
officialshort = {BStBl. I},
sortkeyg = {015020010000},
level = {Bundesminister der Finanzen},
state = {Bundesrepublik Deutschland},
jurisdiction = {Finanzverwaltung}}
%</bibfile>
%    \end{macrocode}
% \subsection{Die BibTeX-Datenbank für die Dokumentation}
% Diese Datei muss extra mit geliefert werden, damit die Dokumentation die 
% Features von |jurarsp| zeigen kann (ansonsten funktionieren die Kommentarzeichen
% im |doc|-style nicht!
%    \begin{macrocode}
%<*bblfile>
\begin{thersplist}{}

\rspitem[^^A
 {{document}{Bundesrepublik Deutschland}{Finanzverwaltung}{Bundesminister der
  Finanzen}{Berlin}{Bundesminister der Finanzen}}^^A
 {{BMF}{}{}}^^A
 {{23.01.2001}{IV A 6 --- S 2241 --- 8/01}{}{Schreiben betr. ertragsteuerliche
  Behandlung von Film- und Fernsehfonds}{BMF-Schreiben}}^^A
 {{Bundessteuerblatt Teil I}{BStBl. I}{2001, 175}}^^A
 {{}{}{}}^^A
 {{}{ge{\"a}nd. durch BMF v. 5.8.03 in Beck Nr. 1 {\S} 5 / 4}{}{}}^^A
]^^A
{bmf:st01:175}^^A

\rspitem[^^A
 {{judgement}{Bundesrepublik Deutschland}{Ordentliche
  Gerichtsbarkeit}{Bundesgerichtshof}{Karlsruhe}{Bundesgerichtshof}}^^A
 {{BGH}{GrS}{Gro{\ss}er Senat}}^^A
 {{01.08.1993}{II ZR 233/91}{Meyer ./.
  M{\"u}ller}{Dummy-Entscheidung}{Urteil}}^^A
 {{BGHZ}{Z}{83, 244 ff.}}^^A
 {{NJW}{1994, 1923 ff.}{= JZ 1995, 2323 ff.}}^^A
 {{rkr.}{Kopien in Ordner 23, noch lesen}{abl. Anm. K{\"u}belb{\"o}ck, MDR 95,
  223 ff.}{official}}^^A
]^^A
{aaa:dummy}^^A

\end{thersplist}
%</bblfile>
%    \end{macrocode}
% \subsection{Die Konfigurationsdatei}
%    \begin{macrocode}
%<*config>
%% Funktion wird noch nicht unterstützt 
\rspsetup{}
%</config>
%    \end{macrocode}
%
% \Finale
% \PrintChanges 
% \PrintIndex