diff options
Diffstat (limited to 'Master/texmf-dist/doc')
-rw-r--r-- | Master/texmf-dist/doc/latex/contract/LICENSE.md | 19 | ||||
-rw-r--r-- | Master/texmf-dist/doc/latex/contract/MANIFEST.md | 107 | ||||
-rw-r--r-- | Master/texmf-dist/doc/latex/contract/README.md | 238 | ||||
-rw-r--r-- | Master/texmf-dist/doc/latex/contract/contract-example-de.pdf | bin | 0 -> 56928 bytes | |||
-rw-r--r-- | Master/texmf-dist/doc/latex/contract/contract-example-de.tex | 145 | ||||
-rw-r--r-- | Master/texmf-dist/doc/latex/contract/contract-example-en.pdf | bin | 0 -> 58111 bytes | |||
-rw-r--r-- | Master/texmf-dist/doc/latex/contract/contract-example-en.tex | 143 | ||||
-rw-r--r-- | Master/texmf-dist/doc/latex/contract/contract.dtx | 3551 | ||||
-rw-r--r-- | Master/texmf-dist/doc/latex/contract/contract.pdf | bin | 0 -> 770987 bytes |
9 files changed, 4203 insertions, 0 deletions
diff --git a/Master/texmf-dist/doc/latex/contract/LICENSE.md b/Master/texmf-dist/doc/latex/contract/LICENSE.md new file mode 100644 index 00000000000..99a6973749b --- /dev/null +++ b/Master/texmf-dist/doc/latex/contract/LICENSE.md @@ -0,0 +1,19 @@ +---------------------------------------------------------------------------- + +This work may be distributed and/or modified under the conditions of the +LaTeX Project Public License, version 1.3c of the license. The latest +version of this license is in http://www.latex-project.org/lppl.txt and +version 1.3c or later is part of all distributions of LaTeX 2005/12/01 +or later. This work has the LPPL maintenance status “maintained”. +The current maintainer and author of this work is Markus Kohm. + +---------------------------------------------------------------------------- + +Dieses Werk darf nach den Bedingungen der LaTeX Project Public Lizenz +in der Version 1.3c, verteilt und/oder verändert werden. Die aktuelle +Version dieser Lizenz ist http://www.latex-project.org/lppl.txt und +Version 1.3c oder später ist Teil aller Verteilungen von LaTeX 2005/12/01 +oder später. Dieses Werk hat den LPPL-Verwaltungs-Status „maintained” +Der aktuelle Verwalter und Autor dieses Werks ist Markus Kohm. + +---------------------------------------------------------------------------- diff --git a/Master/texmf-dist/doc/latex/contract/MANIFEST.md b/Master/texmf-dist/doc/latex/contract/MANIFEST.md new file mode 100644 index 00000000000..576495de9dc --- /dev/null +++ b/Master/texmf-dist/doc/latex/contract/MANIFEST.md @@ -0,0 +1,107 @@ +# Manifest for contract + +This file is a listing of all files considered to be part of this package. +It is automatically generated with `l3build manifest`. + + +## Repository manifest + +The following groups list the files included in the development repository of the package. +Files listed with a ‘†’ marker are included in the TDS but not CTAN files, and files listed +with ‘‡’ are included in both. + +### Source files + +These are source files for a number of purposes, including the `unpack` process which +generates the installation files of the package. Additional files included here will also +be installed for processing such as testing. + +* contract.dtx ‡ + +### Documentation files + +These files form part of the documentation but are not typeset. Generally they will be +additional input files for the typeset documentation files listed above. + +* contract-example-en.tex ‡ +* contract.dtx ‡ +* contract-example-de.tex ‡ +* contract-example-en.pdf ‡ +* contract-example-de.pdf ‡ +* contract.pdf ‡ + +### Text files + +Plain text files included as documentation or metadata. + +* LICENSE.md ‡ +* MANIFEST.md ‡ +* README.md ‡ + +### Derived files + +The files created by ‘unpacking’ the package sources. This typically includes +`.sty` and `.cls` files created from DocStrip `.dtx` files. + +* contract.sty † + +### Test files + +These files form the test suite for the package. `.lvt` or `.lte` files are the individual +unit tests, and `.tlg` are the stored output for ensuring changes to the package produce +the same output. These output files are sometimes shared and sometime specific for +different engines (pdfTeX, XeTeX, LuaTeX, etc.). + +* env-contract-std.lvt +* env-contract.lvt +* env-contract-std.tlg +* env-contract.tlg + + +## TDS manifest + +The following groups list the files included in the TeX Directory Structure used to install +the package into a TeX distribution. + +### Source files (TDS) + +All files included in the `contract/source` directory. + +* contract.dtx + +### TeX files (TDS) + +All files included in the `contract/tex` directory. + +* contract.sty + +### Doc files (TDS) + +All files included in the `contract/doc` directory. + +* LICENSE.md +* MANIFEST.md +* README.md +* contract-example-de.pdf +* contract-example-de.tex +* contract-example-en.pdf +* contract-example-en.tex +* contract.dtx +* contract.pdf + + +## CTAN manifest + +The following group lists the files included in the CTAN package. + +### CTAN files + +* LICENSE.md +* MANIFEST.md +* README.md +* contract-example-de.pdf +* contract-example-de.tex +* contract-example-en.pdf +* contract-example-en.tex +* contract.dtx +* contract.pdf diff --git a/Master/texmf-dist/doc/latex/contract/README.md b/Master/texmf-dist/doc/latex/contract/README.md new file mode 100644 index 00000000000..56b9784c5b4 --- /dev/null +++ b/Master/texmf-dist/doc/latex/contract/README.md @@ -0,0 +1,238 @@ +# The LaTeX package `contract` + +Copyright © 2007–2024 Markus Kohm + +Release: 2024-02-07 v0.91 + +License: LPPL 1.3c + +KOMA presents the KOMA-Script spin-off `contract`. Package `contract` provides +environments for legal contracts, sections, paragraphs and similar. It is the +official successor to the former KOMA-Script package `scrjura`. + +---------------------------------------------------------------------------- + +This work may be distributed and/or modified under the conditions of +the LaTeX Project Public License, version 1.3c of the license. +The latest version of this license is in + http://www.latex-project.org/lppl.txt +and version 1.3c or later is part of all distributions of LaTeX +version 2005/12/01 or later. + +The Current Maintainer and author of this work is Markus Kohm. + +This work consists of the files listed in MANIFEST.md. + +---------------------------------------------------------------------------- + +# Abstract + +For several years +[KOMA-Script](https://www.sourceforge.net/project/koma-script) provides +package `scrjura`. The package was developed at the request of and in +co-operation with a German lawyer. In 2024, the package was separated from +KOMA-Script and has since been called `contract`. The new name was chosen to +avoid confusion with KOMA-Script packages. Secondly, it better reflects the +purpose of the package. + +# Installation for Users + +If you are a user, I would usually say, that you should wait until the +package has been added to your preferred TeX distribution. Then you can use +the package manager of your TeX distribution to install the package. But in +case of `contract` it currently seems, that it could not be uploaded to CTAN +and therefore will never be part of any TeX distribution. So if you would like +to use the package, you would need to + + - [Download the current +release](https://github.com/komascript/latex-contract/releases) + You can either use the file named “**Source code** (zip)” or the file “**Source + code** (tar.gz)”. Windows users are recommended to use the zip. By + downloading the file you will get something like `latex-contract-0.91.zip` + resp. `latex-contract-0.91.tar.gz`. + + - Unpack the downloaded file + The downloaded file is an archive, that contains several files. Despite the + Windows File Explorer and also Mac-OS, KDE's Dolphin, Gnome's Nautilus and + many other file managers are able to open such archive files, you should + instead right-click on it to extract it. I recommend to keep the directory + structure while extracting. This gives a new directory + `latex-contract-<version>`, e.g., `latex-contract-0.91`. + + - Open a shell/terminal in the new directory `latex-contract-<version>`. + + - Use `l3build` to install the package and the documentation: + + l3build install --full + + +If you don't get an error message, the installation was successful and you +should be able to use LaTeX package `contract`. To test, that LaTeX is able to +find the file, try: + + kpsewhich contract.sty + +This should show you the whole path of the LaTeX package file. + +**Note:** The installation above is currently tested only with TeX +Live. MiKTeX users may also need to run the `MiKTeX Console` to update the +filename database. See the MiKTeX manual for more information. + +**Note:** The installation described above, does not work for a snapshot +archive or a git clone of the `main` branch. It only works for the `release` +branch resp. [a release +download](https://github.com/komascript/latex-contract/releases). For +installation of a snapshot or git clone of the `main` branch see “[Unpacking +and Installation for Developers](#unpacking-and-installation-for-developers)” +below. For some reasons it also does not work for release v0.9. If you need to +use release v0.9 see “[Unpacking and Installation for +Developers](#unpacking-and-installation-for-developers)”. + +# Unpacking for Distributors + +Distributors should [download the current +release](https://github.com/komascript/latex-contract/releases). See +[`MANIFEST.md`](https://github.com/komascript/latex-contract/blob/main/MANIFEST.md) +for information about the files, that build the distribution. + +If distributors also want to distribute `contract.sty`, they can +unpack it using: + + tex contract.dtx + +For a temporary local installation see “[Installation for +Users](#installation-for-users)” above. + +# Unpacking and Installation for Developers + +Developers who want the current developer version of the code to be installed +for testing, should clone [the `latex-contract` +repository](https://github.com/komascript/latex-contract), e.g., +using + + git clone https://github.com/komascript/latex-contract.git + +You can than unpack and install `contract` using: + + l3build install + +from within the main directory of the cloned respository. + +**Important Note:** The user manual of `contract` uses some packages, which +are still under development and therefore currently may not be available on +CTAN. So you usually cannot use `l3build doc` to generate the documentation or +`l3build install --full` to install `contract` with the documentation. Instead +you either have to read `contract.dtx` or use the `contract.pdf` available at +the newest [`contract` +release](https://github.com/komascript/latex-contract/releases) or [the +`release` +branch](https://github.com/komascript/latex-contract/tree/release). You can +copy such PDFs to the `doc/latex/contract/` folder of any TEXMF tree. + +# How to get the Manual + +After installation of `contract` and the user manual you can use: + + texdoc contract + +Without installation you can get `contract.pdf` as part of the corresponding +[`contract` +release](https://github.com/komascript/latex-contract/releases) or [the +`release` +branch](https://github.com/komascript/latex-contract/tree/release). + +# How to Contribute + +To become a contributor, e.g., do heavy testing. If you find an issue, please +[report it](#how-to-report-issues). You can also become a developer and, e.g., +make new test files to the packageP. See the +[`l3build`](https://ctan.org/pkg/l3build) manual for more information about +tests. If you've created a new test and think that it would be useful, please +either do a pull request or [add a new issue](#how-to-report-issues) and +include your test file. + +If you would like to have the package on CTAN and also in TeX distributions, +you can become the CTAN release agent of `latex-contract`. To do this, +however, you must first convince the CTAN team that `contract` is a suitable, +not too generic name for a new LaTeX package. Unfortunately, I was not able to +do this. Queries to me about this and about possible renaming of the package +are undesirable and risk further stalling the development of this LaTeX +package and all my other LaTeX packages. + + +# How to Report Issues + +If you think you have found a bug (or another kind of issue) using +`contract` you should use [the issue +tracker](https://github.com/komascript/latex-contract/issues). Please +first search for similar issues already reported and maybe also already fixed +and closed. Maybe the replies to such a similar report would help you too. + +If your issue is new, you should report it also using [the issue +tracker](https://github.com/komascript/latex-contract/issues). Please be kind, +not only when writing the report but also when reading replies and commenting +or answering. And please always add a minimal working example and usually the +relevant parts of the `log`-file to your report. Please use the [markdown for +code](https://docs.github.com/en/get-started/writing-on-github/working-with-advanced-formatting/creating-and-highlighting-code-blocks) +to add such files into the text of your report. The correct language +identifier for LaTeX code would be `latex`. For `log`-files you won't need any +language identifier. Usually you should not use attachments for code or +`log`-files unless you've been asked to do so. And please note, reports should +always be self-containing. External links often break and so the report become +useles. + +# How to Say Thank You for my Work + +Hey, I'm doing this as a hobby. So no need to say thank you. But I'm a vain +fop, so I'm certainly up for a quick thank you by email. On komascript.de you +can find an [explanation of my wishes](https://komascript.de/wunschliste) if +you want to give more. If you don't understand German, just click to links at +that page. + +# Milestones + +The development has just begun. Currently [the first +milestone](https://github.com/komascript/latex-contract/milestone/1): + + - [x] creating a new repository + - [x] copying `scrjura.dtx` from KOMA-Script as `contract.dtx` to the new + repository + - [x] creating a new build environment: + - [x] `README.md` + - [x] `LICENSE.md` + - [x] `MANIFEST.md` + - [x] `build.lua` + - [x] test files + - [x] renaming several internals of `contract` + - [x] adding user documentation based on the `scrjura` chapters of the English + KOMA-Script manual + - [x] improving user documentation + +has been reached. + +Further milestones could be: + + - [ ] replacing `scrjura` by a `contract` wrapper in KOMA-Script for + compatibility only + - [ ] reimplementing several internals of `contract`: + - [ ] replacing KOMA-Script options by LaTeX key-value options + - [ ] replacing \newkomafont, \setkomafont by something not KOMA-Script + related or alterntively internally uses `scrkbase` by `scrextend`, + - [ ] using `expl3`, + - [ ] using the new paragraph hooks of LaTeX, + - [ ] using the extended referencing mechanism of LaTeX. + +# From `scrjura` to `contract` + +If you have been using the `scrjura` package and are now switching to the +`contract` package, you should read chapter “From `scrjura` to `contract`” in +the `contract` user manual. The most important and incompatible change IMHO +is, that the argument of `\Clause` and `\SubClause` isn't mandaroty any longer +but optional. So the syntax has changed to `\Clause[<options>]` +resp. `\SubClause[<options>]`. + +**Note:** For a transitional period, KOMA-Script will continue to contain a +package `scrjura`, which is a wrapper to `contract` and attempts to increase +compatibility. With this package, the argument of `\Clause` and `\SubClause` +will remain mandatory for the time being. However, this package is expected to +disappear from KOMA-Script after a reasonable period of smooth transition. diff --git a/Master/texmf-dist/doc/latex/contract/contract-example-de.pdf b/Master/texmf-dist/doc/latex/contract/contract-example-de.pdf Binary files differnew file mode 100644 index 00000000000..386eaffe600 --- /dev/null +++ b/Master/texmf-dist/doc/latex/contract/contract-example-de.pdf diff --git a/Master/texmf-dist/doc/latex/contract/contract-example-de.tex b/Master/texmf-dist/doc/latex/contract/contract-example-de.tex new file mode 100644 index 00000000000..1be3a02c2d1 --- /dev/null +++ b/Master/texmf-dist/doc/latex/contract/contract-example-de.tex @@ -0,0 +1,145 @@ +\documentclass[fontsize=12pt,parskip=half] + {scrartcl} + +\usepackage[ngerman]{babel} + +\usepackage[T1]{fontenc} +% Hinweis: Nur einer der beiden folgenden Zeilen wird benötigt. +\usepackage{lmodern} +\usepackage{charter,helvet} + +\usepackage{enumerate} + +\usepackage[clausemark=forceboth, + juratotoc, juratocnumberwidth=2.5em] + {contract} +\useshorthands{'} +\defineshorthand{'S}{\Sentence\ignorespaces} +\defineshorthand{'.}{. \Sentence\ignorespaces} + +\pagestyle{myheadings} + +\begin{document} + +\subject{Satzung} +\title{VfVmai} +\subtitle{Verein für Vereinsmaierei mit ai n.\,e.\,V.} +\date{11.\,11.\,2011} +\maketitle + +\tableofcontents + +\addsec{Präambel} + +Die Vereinslandschaft in Deutschland ist vielfältig. +Doch leider mussten wir feststellen, dass es dabei oft +am ernsthaften Umgang mit der Ernsthaftigkeit krankt. + +\appendix + +\section{Allgemeines} + +\begin{contract} +\Clause[title={Name, Rechtsform, Sitz des Vereins}] + +Der Verein führt den Namen »Verein für Vereinsmaierei mit +ai n.e.V.« und ist in keinem Vereinsregister eingetragen. + +'S Der Verein ist ein nichtwirtschaftlicher, unnützer +Verein'. Er hat keinen Sitz und muss daher stehen. + +Geschäftsjahr ist vom 31.~März bis zum 1.~April. + +\Clause[title={Zweck des Vereins}] + +'S Der Verein ist zwar sinnlos, aber nicht zwecklos'. +Vielmehr soll er den ernsthaften Umgang mit der +Ernsthaftigkeit auf eine gesunde Basis stellen. + +Zu diesem Zweck kann der Verein +\begin{enumerate}[\qquad a)] +\item in der Nase bohren, +\item Nüsse knacken, +\item am Daumen lutschen. +\end{enumerate} + +Der Verein ist selbstsüchtig und steht dazu. + +Der Verein verfügt über keinerlei Mittel.\label{a:mittel} + +\Clause[title={Vereinsämter}] + +Die Vereinsämter sind Ehrenämter. + +'S Würde der Verein über Mittel verfügen +(siehe \ref{a:mittel}), so könnte er einen +hauptamtlichen Geschäftsführer bestellen'. Ohne +die notwendigen Mittel ist dies nicht möglich. + +\Clause[title={Vereinsmaier},dummy] +\label{p.maier} +\end{contract} + +\section{Mitgliedschaft} + +\begin{contract} +\Clause[title={Mitgliedsarten},dummy] + +\Clause[title={Erwerb der Mitgliedschaft}] + +Die Mitgliedschaft kann jeder zu einem angemessenen +Preis von einem der in \refClause{p.maier} +genannten Vereinsmaier erwerben.\label{a.preis} + +'S Zum Erwerb der Mitgliedschaft ist ein formloser +Antrag erforderlich'. Dieser Antrag ist in grüner +Tinte auf rosa Papier einzureichen. + +Die Mitgliedschaft kann nicht abgelehnt werden. + +\SubClause[title={Ergänzung zu vorstehendem + Paragraphen}] + +'S Mit Abschaffung von \refClause{p.maier} verliert +\ref{a.preis} seine Umsetzbarkeit'. Mitgliedschaften +können ersatzweise vererbt werden. + +\Clause[title={Ende der Mitgliedschaft}] + +'S Die Mitgliedschaft endet mit dem Leben'. Bei nicht +lebenden Mitgliedern endet die Mitgliedschaft nicht. + +\Clause[title={Mitgliederversammlung}] + +Zweimal jährlich findet eine Mitgliederversammlung statt. + +Der Abstand zwischen zwei Mitgliederversammlungen +beträgt höchstens 6~Monate, 1~Woche und 2~Tage. + +Frühestens 6~Monate nach der letzten Mitgliederversammlung +hat die Einladung zur nächsten Mitgliederversammlung zu +erfolgen. + +\SubClause[title={Ergänzung zur Mitgliederversammlung}] + +Die Mitgliederversammlung darf frühstens 2~Wochen nach +letztem Eingang der Einladung abgehalten werden. +\end{contract} + +\section{Gültigkeit} + +\begin{contract} +\Clause[title={In Kraft treten}] + +Diese Satzung tritt am 11.\,11.\,2011 um 11:11~Uhr +in Kraft. + +'S Sollten irgendwelche Bestimmungen dieser Satzung im +Widerspruch zueinander stehen, tritt die Satzung am +11.\,11.\,2011 um 11:11~Uhr und 11~Sekunden wieder +außer Kraft'. Der Verein ist in diesem Fall als +aufgelöst zu betrachten. + +\end{contract} + +\end{document} diff --git a/Master/texmf-dist/doc/latex/contract/contract-example-en.pdf b/Master/texmf-dist/doc/latex/contract/contract-example-en.pdf Binary files differnew file mode 100644 index 00000000000..aa4fe752c80 --- /dev/null +++ b/Master/texmf-dist/doc/latex/contract/contract-example-en.pdf diff --git a/Master/texmf-dist/doc/latex/contract/contract-example-en.tex b/Master/texmf-dist/doc/latex/contract/contract-example-en.tex new file mode 100644 index 00000000000..f1d17d19941 --- /dev/null +++ b/Master/texmf-dist/doc/latex/contract/contract-example-en.tex @@ -0,0 +1,143 @@ +\documentclass[fontsize=12pt,parskip=half] + {scrartcl} + +\usepackage[british]{babel} + +\usepackage[T1]{fontenc} +% Note: Only one of the following two lines is needed. +\usepackage{lmodern} +\usepackage{charter,helvet} + +\usepackage{enumerate} + +\usepackage[clausemark=forceboth, + juratotoc, + juratocnumberwidth=2.5em] + {contract} +\useshorthands{'} +\defineshorthand{'S}{\Sentence\ignorespaces} +\defineshorthand{'.}{. \Sentence\ignorespaces} + +\pagestyle{myheadings} + +\begin{document} + +\subject{By-Laws} +\title{CfCH} +\subtitle{Club for Club Hoppers} +\date{11.\,11.\,2011} +\maketitle + +\tableofcontents + +\addsec{Preamble} + +The club landscape in England is diverse. But we have +unfortunately been forced to conclude that it often +suffers seriously when dealing with seriousness. + +\appendix + +\section{Overview} + +\begin{contract} +\Clause[title={Name, Legal Form, Headquarters}] + +The name of this club shall be the ``Club for Club +Hoppers'' and is not registered in any club register. + +'S The club is a non-economic, useless club'. It has no +headquarters because its members heads are in their +hindquarters. + +The fiscal year is from March 31st through April 1st. + +\Clause[title={Purpose of the Club}] + +'S The club is pointless but not useless'. Rather, +it should put the serious handling of seriousness on a +sound footing. + +For this purpose, the club members can +\begin{enumerate}[\qquad a)] +\item pick their noses, +\item crack nuts, +\item such their thumbs. +\end{enumerate} + +The club is selfish and stands by it. + +The club has no financial means.\label{a:mittel} + +\Clause[title={Club Officers}] + +The club officers hold honorary positions. + +'S If the club had resources (see \ref{a:mittel}), it +could afford a full-time manager'. Without the necessary +funds, this is not possible. + +\Clause[title={Club Hopper},dummy] +\label{p.maier} +\end{contract} + +\section{Membership} + +\begin{contract} +\Clause[title={Types of Members},dummy] + +\Clause[title={Becoming a Member}] + +Everyone can purchase a membership from one of the +associations listed in \refClause{p.maier}.\label{a.preis} + +'S To become a member, an informal application is +required'. This application should be submitted in green +ink on pink paper. + +Membership applications cannot be rejected. + +\SubClause[title={Amendment to the Previous Clause}] + +'S With the repeal of \refClause{p.maier}, +\ref{a.preis} has become impractical'. In its place, +memberships can be inherited. + +\Clause[title={Termination of Membership}] + +'S Membership ends with one's life'. For non-living +members, membership does not end. + +\Clause[title={General Meeting}] + +A general meeting shall take place twice per year. + +The interval between two general meetings shall be +no more than 6~months, 1~week, and 2~days. + +The invitation to the next general meeting shall be sent +no earlier than 6~months from the previous general +meeting. + +\SubClause[title={Amendment to the General Meeting}] + +The general meeting may be held at the earliest 2~weeks after +the invitation is received. +\end{contract} + +\section{Validity} + +\begin{contract} +\Clause[title={Effective Date}] + +These articles will enter into force on 11.\,11.\,2011 at +11:11~am. + +'S If any provision of these by-laws is in conflict with +any other, the by-laws will be repealed on +11.\,11.\,2011 at 11:11~am and 11~seconds'. The club is +considered to be dissolved in this case. + +\end{contract} + +\end{document} diff --git a/Master/texmf-dist/doc/latex/contract/contract.dtx b/Master/texmf-dist/doc/latex/contract/contract.dtx new file mode 100644 index 00000000000..cc83aa1df18 --- /dev/null +++ b/Master/texmf-dist/doc/latex/contract/contract.dtx @@ -0,0 +1,3551 @@ +% \iffalse meta-comment +% ====================================================================== +% contract.dtx +% Copyright (c) 2007–2024 Markus Kohm +% +% This file is part of the LaTeX2e KOMA-Script bundle. +% +% This work may be distributed and/or modified under the conditions of +% the LaTeX Project Public License, version 1.3c of the license. +% The latest version of this license is in +% http://www.latex-project.org/lppl.txt +% and version 1.3c or later is part of all distributions of LaTeX +% version 2005/12/01 or later and of this work. +% +% This work has the LPPL maintenance status "author-maintained". +% +% The Current Maintainer and author of this work is Markus Kohm. +% +% This work consists of the files listed in MANIFEST.md. +% ====================================================================== +%<identify>%%% --- docstrip run: identify --- +%<doc>%%% --- docstrip run: doc --- +%<init>%%% --- docstrip run: init --- +%<options>%%% --- docstrip run: options --- +%<postoptions>%%% --- docstrip run: postoptions --- +%<body>%%% --- docstrip run: body --- +%<final>%%% --- docstrip run: final --- +%<*dtx> +\expandafter\ifx\csname ProvidesFile\endcsname\relax + \def\ProvidesFile#1[#2]{} +\fi +\ProvidesFile{contract.dtx}[% +%</dtx> +%<package&identify>\NeedsTeXFormat{LaTeX2e}[2020/10/01] +%<package&identify>\ProvidesPackage{contract}[% +%<*dtx|(package&identify)> + 2024-02-07 v0.91 +%<*dtx> + source of +%</dtx> + package for jurists +] +%</dtx|(package&identify)> +%<*dtx> +\ifx\documentclass\undefined +%</dtx> +%<*ins> + \input docstrip.tex + \generate{\usepreamble\defaultpreamble +% \file{contract.ins}{% +% \from{contract.dtx}{ins}% +% }% + \file{contract.sty}{% + \from{contract.dtx}{package,identify}% + \from{contract.dtx}{package,init}% + \from{contract.dtx}{package,options}% + \from{contract.dtx}{package,postoptions}% + \from{contract.dtx}{package,body}% + \from{contract.dtx}{package,final}% + }% + }% +%</ins> +%<*dtx> +\else + \let\endbatchfile\relax +\fi +%</dtx> +%<*ins> +\endbatchfile +%</ins> +%<*dtx> +\documentclass[USenglish]{koma-script-source-doc} +\usepackage[T1]{fontenc} +\usepackage{lmodern} +\usepackage[ngerman,main=USenglish]{babel} +\usepackage{hvlogos} +\usepackage{tabularx} +\usepackage{graphicx} + +% Note: The scrguide-… packages may currently not be available in any TeX +% distribution. +\usepackage[colorize]{scrguide-listings} +\usepackage{scrguide-doclink} +\usepackage{scrguide-index} + +\usepackage{booktabs} +\usepackage{csquotes} +\usepackage[style=alphabetic,autolang=other]{biblatex} +\begin{filecontents}{\jobname.bib} +@online{pkg:babel, + author={Bezos López, Javier and Braams, Johannes L.}, + version={24.1}, + date={2024-01-07}, + title={\pkg*{babel} --- Multilingual support for \LaTeX, Lua\LaTeX, + \XeLaTeX{} and Plain \TeX}, + url={https://ctan.org/pkg/babel}, + urldate={2024-01-08}, + note={This package manages culturally-determined typographical (and other) + rules for a wide range of languages. A document may select a single + language to be supported, or it may select several, in which case the + document may switch from one language to another in a variety of ways. + + Babel uses contributed configuration files that provide the detail of + what has to be done for each language, as well as \file{.ini} files + for about 300 languages from around the World, including many written + in non-Latin and RTL scripts. Many of them work with pdf\LaTeX, as + well as with \XeLaTeX{} and Lua\LaTeX, out of the box. A few even + work with plain formats.}, +} +@online{pkg:koma-script, + author={Markus Kohm}, + version={3.41}, + date={2023-07-07}, + title={{\KOMAScript} --- A bundle of versatile classes and packages}, + url={https://ctan.org/pkg/koma-script}, + urldate={2023-07-14}, + note={The \KOMAScript{} bundle provides replacements for the \cls*{article}, + \cls*{report}, and \cls*{book} classes with emphasis on typography and + versatility. There is also a letter class.}, +} +@manual{pkg:koma-script:manual:de, + langid={ngerman}, + author={Markus Kohm}, + date={2023-06-16}, + title={{\KOMAScript}}, + subtitle={Die Anleitung}, + url={http://mirrors.ctan.org/macros/latex/contrib/koma-script/scrguide-de.pdf} +, + urldate={2023-07-04}, +} +@manual{pkg:koma-script:manual:en, + author={Markus Kohm}, + date={2023-06-16}, + title={{\KOMAScript}}, + subtitle={The Guide}, + url={http://mirrors.ctan.org/macros/latex/contrib/koma-script/scrguide-en.pdf}, + urldate={2023-07-14}, +} +@book{bk:koma-script, + langid ={ngerman}, + author ={Kohm, Markus}, + title ={{\KOMAScript}}, + subtitle ={Eine Sammlung von Klassen und Paketen für {\LaTeXe}}, + year =2020, + edition =7, + publisher={Lehmanns Media}, + address ={Berlin}, + series ={Edition DANTE}, + isbn ={978-3-96543-097-6}, + note ={Print-Ausgabe}, +} +@book{ebk:koma-script, + langid ={ngerman}, + author ={Kohm, Markus}, + title ={{\KOMAScript}}, + subtitle ={Eine Sammlung von Klassen und Paketen für {\LaTeXe}}, + year =2020, + edition =7, + publisher={Lehmanns Media}, + address ={Berlin}, + series ={Edition DANTE}, + isbn ={978-3-96543-103-4}, + note ={eBook-Ausgabe}, +} +\@online{pkg:parskip, + author ={Frank Mittelbach and Robin Fairbairns and H. Partl}, + version ={2.0h}, + date ={2021-03-14}, + title ={\pkg*{parskip} --- Layout with zero \len{parindent}, non-zero \len{parskip}}, + url ={https://www.ctan.org/pkg/parskip}, + urldate ={2024-01-19}, + note ={Simply changing \len{parskip} and \len{parindent} leaves a + layout that is untidy; this package (though it is no + substitute for a properly-designed class) helps alleviate this + untidiness.}, +} +@manual{pkg:parskip:manual, + author ={Frank Mittelbach}, + title ={The \pkg*{parskip} package}, + date ={2021-03-14}, + abstract ={The \pkg*{parskip} package helps in implementing paragraph + layouts where the paragraphs are separated by a vertical space + instead of (or in addition to) indenting them. + + The package can be used with any document class at any size. + By default it produces the following paragraph layout: Zero + \len{parindent} and non-zero \len{parskip}. The stretchable + glue in \len{parskip} helps \LaTeX{} in finding the best place + for page breaks}, + url ={http://mirrors.ctan.org/macros/latex/contrib/parskip/parskip.pdf}, + urldate ={2024-01-19}, +} +\end{filecontents} +\addbibresource{\jobname.bib} +\setcounter{StandardModuleDepth}{2} +\setcounter{IndexColumns}{2} +\setcounter{GlossaryColumns}{2} +\providecommand*\targ[1]{\texttt{\char`\{#1\char`\}}} +\providecommand*\toarg[1]{\texttt{[#1]}} +\newenvironment{syntax}{% + \list{}{% + \listparindent -\leftmargin + \rightmargin \leftmargin + \leftmargin 2\leftmargin + \itemindent \listparindent + \parsep 0pt plus 1pt + }% + \def\obeyedlinedline{\item\relax}% + \obeylines + \obeyedlinedline + \MacroFont +}{% + \endlist +} +\makeatletter +\newenvironment{desctabular}{% + \renewcommand*{\arraystretch}{1.25}% + \newcommand{\entry}[2]{% + \l@addto@macro\desctab@content{% + \relax + \renewcommand*\arraystretch{1}\begin{tabular}[t]{@{}l@{}}##1\end{tabular} + & ##2\tabularnewline + }% + } + \newcommand\desctab@content{\begin{tabularx}{\linewidth}{@{}lX@{}}\toprule}% +}{% + \desctab@content + \bottomrule + \end{tabularx} +} +\makeatother +\newenvironment{desclist}{% + \newcommand*{\desccaption}[2]{% + \par + \vspace{5\baselineskip}\pagebreak[2]\vspace{-5\baselineskip}\nopagebreak + \captionof{table}{##1}\nopagebreak + \begin{desctabular} + }% +}{% + \end{desctabular} +} +\newenvironment{Example}{% + \lstset{belowskip=0pt plus 1pt minus .5pt}% + \labeling{{\usekomafont{disposition}\Examplename:}} + \item[{\usekomafont{disposition}\Examplename:}]% +}{% + \endlabeling +} +\newcaptionname{USenglish}{\Examplename}{Example} + +\DeclareTOCStyleEntry[dynnumwidth,dynindent]{section}{section} +\DeclareTOCStyleEntries[dynnumwidth,dynindent]{subsection} + {subsection,subsubsection} + +\DeclareLinkFallback{Counter}{tocdepth} + {https://en.wikibooks.org/wiki/LaTeX/Tables_of_Contents_and_Lists_of_Figures} +\DeclareLinkFallback{Macro}{arabic} + {https://en.wikibooks.org/wiki/LaTeX/Counters#Counter_style} +\DeclareLinkFallback{Macro}{begin} + {https://en.wikibooks.org/wiki/LaTeX/Basics#LaTeX_environments} +\DeclareLinkFallback{Macro}{bfseries} + {https://en.wikibooks.org/wiki/LaTeX/Fonts#Font_styles} +\DeclareLinkFallback{Macro}{end} + {https://en.wikibooks.org/wiki/LaTeX/Basics#LaTeX_environments} +\DeclareLinkFallback{Macro}{refstepcounter} + {https://en.wikibooks.org/wiki/LaTeX/Counters#Counter_manipulation} +\DeclareLinkFallback{Macro}{sffamily} + {https://en.wikibooks.org/wiki/LaTeX/Fonts#Font_styles} + +\DeclareLinkFallback{Macro}{newcommand} + {https://mirrors.ctan.org/macros/latex/base/usrguide-historic.pdf#subsection.3.4} +\DeclareLinkFallback{Macro}{renewcommand} + {https://mirrors.ctan.org/macros/latex/base/usrguide-historic.pdf#subsection.3.4} + +\DeclareLinkFallback{Macro}{defineshorthand} + {http://mirrors.ctan.org/macros/latex/required/babel/base/babel.pdf#subsection.1.10} +\DeclareLinkFallback{Macro}{useshorthands} + {http://mirrors.ctan.org/macros/latex/required/babel/base/babel.pdf#subsection.1.10} + +\DeclareLinkFallback{Macro}{setkeys} + {https://mirrors.ctan.org/macros/latex/required/graphics/keyval.pdf#section.3} + +\DeclareLinkFallback{Macro}{documentclass} + {http://mirrors.ctan.org/info/lshort/english/lshort.pdf#12} +\DeclareLinkFallback{Macro}{dots} + {http://mirrors.ctan.org/info/lshort/english/lshort.pdf#a7} +\DeclareLinkFallback{Macro}{label} + {http://mirrors.ctan.org/info/lshort/english/lshort.pdf#2b} +\DeclareLinkFallback{Macro}{large} + {http://mirrors.ctan.org/info/lshort/english/lshort.pdf#b3} +\DeclareLinkFallback{Macro}{pageref} + {http://mirrors.ctan.org/info/lshort/english/lshort.pdf#2b} +\DeclareLinkFallback{Macro}{paragraph} + {http://mirrors.ctan.org/info/lshort/english/lshort.pdf#2a} +\DeclareLinkFallback{Macro}{ref} + {http://mirrors.ctan.org/info/lshort/english/lshort.pdf#2b} +\DeclareLinkFallback{Macro}{section} + {http://mirrors.ctan.org/info/lshort/english/lshort.pdf#2a} +\DeclareLinkFallback{Macro}{subparagraph} + {http://mirrors.ctan.org/info/lshort/english/lshort.pdf#2a} +\DeclareLinkFallback{Macro}{usepackage} + {http://mirrors.ctan.org/info/lshort/english/lshort.pdf#13} + +\DeclareLinkFallback{Macro}{addsec} + {http://mirrors.ctan.org/macros/latex/contrib/koma-script/doc/scrguide-en.pdf#desc:maincls.cmd.addsec} +\DeclareLinkFallback{Macro}{markboth} + {http://mirrors.ctan.org/macros/latex/contrib/koma-script/doc/scrguide-en.pdf#desc:maincls.cmd.markboth} +\DeclareLinkFallback{Macro}{markright} + {http://mirrors.ctan.org/macros/latex/contrib/koma-script/doc/scrguide-en.pdf#desc:maincls.cmd.markright} + +\DeclareLinkFallback{Macro}{newkomafont} + {http://mirrors.ctan.org/macros/latex/contrib/koma-script/doc/scrguide-en.pdf#desc:maincls-experts.cmd.newkomafont} + +\DeclareLinkFallback{Macro}{providecaptionname} + {http://mirrors.ctan.org/macros/latex/contrib/koma-script/doc/scrguide-en.pdf#desc:scrbase.cmd.providecaptionname} + +\DeclareLinkFallback{Macro}{KOMAoption} + {http://mirrors.ctan.org/macros/latex/contrib/koma-script/doc/scrguide-en.pdf#desc:scrextend.cmd.KOMAoption} +\DeclareLinkFallback{Macro}{KOMAoptions} + {http://mirrors.ctan.org/macros/latex/contrib/koma-script/doc/scrguide-en.pdf#desc:scrextend.cmd.KOMAoptions} +\DeclareLinkFallback{Macro}{addtokomafont} + {http://mirrors.ctan.org/macros/latex/contrib/koma-script/doc/scrguide-en.pdf#desc:scrextend.cmd.addtokomafont} +\DeclareLinkFallback{Macro}{setkomafont} + {http://mirrors.ctan.org/macros/latex/contrib/koma-script/doc/scrguide-en.pdf#desc:scrextend.cmd.setkomafont} +\DeclareLinkFallback{Macro}{usekomafont} + {http://mirrors.ctan.org/macros/latex/contrib/koma-script/doc/scrguide-en.pdf#desc:scrextend.cmd.usekomafont} +\DeclareLinkFallback{Macro}{usekomafont} + {http://mirrors.ctan.org/macros/latex/contrib/koma-script/doc/scrguide-en.pdf#desc:maincls-experts.cmd.newkomafont} + +\DeclareLinkFallback{Macro}{DeclareTOCStyleEntry} + {http://mirrors.ctan.org/macros/latex/contrib/koma-script/doc/scrguide-en.pdf#desc:tocbasic.cmd.DeclareTOCStyleEntry} +\begin{document} + \nocite{pkg:koma-script} + \DocInput{contract.dtx} +\end{document} +%</dtx> +% \fi +% +% \changes{v0.0.1}{2023-10-10}{new \KOMAScript{} spin-off} +% \changes{v0.9}{2024-02-02}{first release as standalone package} +% +% \GetFileInfo{contract.dtx} +% \title{\LaTeX{} Package \pkg*{contract}\thanks{% +% The repository of this package can be found at +% \url{https://github.com/komascript/latex-contract} where you also should +% report issues.%^^A +% }%^^A +% } +% \date{Version \fileversion{} of \filedate} +% \author{\href{mailto:komascript@gmx.info}{Markus Kohm}} +% \maketitle +% \begin{abstract} +% The \pkg*{contract} package is intended for cautelar jurisprudence. It is +% intended to provide flexible help for lawyers and notaries in drafting +% contracts, statutes and legal commentaries. It has been developed in +% cooperation with Dr~Alexander Willand, and is still in the process of +% development. +% +% Package \pkg*{contract} is a +% \href{https://www.ctan.org/pkg/koma-script}{\KOMAScript} spin-off. It has +% been released from 2011 till 2023 as \pkg*{scrjura}. With +% \href{https://www.ctan.org/pkg/koma-script}{\KOMAScript} 3.42 +% \pkg*{scrjura} is removed from +% \href{https://www.ctan.org/pkg/koma-script}{\KOMAScript} and released as +% new package \pkg*{contract}. +% \end{abstract} +% +% \tableofcontents +% \listoftables +% \listoffigures +% +% \addpart{User Manual} +% +% If you want to write a contract\Index{contract}, the articles of association +% for a company or an association, a law, or a legal commentary, the package +% \pkg*{contract} will provide typographical support. Although \pkg*{contract} +% is intended to provide general help for legal documents, the contract is the +% central element of the package. Particular attention is paid to +% clauses\Index{clause}, titles, and numbered provisions\,---\,if there are +% several of them in a clause\,---, numbered sentences, entries in the table +% of contents, and cross references according to German standards. +% +% The package has been developed in cooperation with Dr Alexander Willand of +% Karls\-ruhe. Many of its features go back to constructive inquiries from +% Prof Heiner Richter of the Hochschule Stralsund University of Applied +% Sciences. +% +% Some of you may search for the German user manual formally available in +% \cite{pkg:koma-script:manual:de}. The author's acute overload has resulted +% in this no longer being freely available. However, the corresponding chapter +% in \cite{bk:koma-script} and \cite{ebk:koma-script} is still accessible and +% applicable with appropriate adjustments to the package name. +% +% +% \section{Package Loading and Option Setting} +% +% You can load the package as common using: +% \begin{syntax} +% \cs{usepackage}\oarg{options}|{contract}|\quad. +% \end{syntax} +% In case of package \pkg*{contract} the \meta{options} are +% \meta{key}|=|\meta{value} options. +% \begin{description} +% \item[Note:] In case of using package \pkg*{contract} with package +% \pkg{hyperref} you should load \pkg{hyperref} always after +% \pkg*{contract}. +% \end{description} +% +% \DescribeCommand\contractSetup +% To change options after loading the package, you should use: +% \begin{syntax} +% \cs{contractSetup}\marg{options} +% \end{syntax} +% with \meta{options} is a comma separated list of \meta{key}=\meta{value} +% options as explained before. +% \begin{description} +% \item[Note:] Currently the options are still implemented using the internal +% \href{https://www.ctan.org/pkg/koma-script}{\KOMAScript} package +% \href{https://www.ctan.org/pkg/koma-script}{\pkg*{scrkbase}}. Therefore +% you could also setup \meta{options} using the +% \href{https://www.ctan.org/pkg/koma-script}{\KOMAScript} commands +% \cs{KOMAoptions} or \cs{KOMAoption}, which are described in +% \cite{pkg:koma-script:manual:en}. Moreover, because of the implementation, +% currently \cs{contractSetup} could also be used to setup other +% \href{https://www.ctan.org/pkg/koma-script}{\KOMAScript} options not +% related to package \pkg*{contract}. However, you should avoid this, +% because it will fail, when the implementation will be changed. +% \end{description} +% +% \section{Changing the Fonts of Elements} +% \label{sec:textmarkup} +% +% Currently package \pkg*{contract} still uses the font selection features of +% the internal \href{https://www.ctan.org/pkg/koma-script}{\KOMAScript} +% package \pkg{scrkbase}. So the commands \cs{setkomafont}, +% \cs{addtokomafont}, and \cs{usekomafont}, which are described in +% \cite{pkg:koma-script:manual:en}, can be used to change the fonts of the +% following elements: +% \begin{description}\setkomafont{descriptionlabel}{} +% \item[{\fnt{Clause}:}] \hfill\\ +% Alias for \fnt{\meta{environment}.Clause} within any contract environment, +% e.\,g., \fnt{contract.Clause} within environment \env{contract}. If no +% corresponding element is defined, \fnt{contract.Clause} is used. +% \item[{\fnt{contract.Clause}:}] +% \hfill\mbox{(Default: \cs{sffamily}\cs{bfseries}\cs{large})}\\ +% The heading of a \cs{Clause} within the environment \env{contract}. +% \item[{\fnt{\meta{environment}.Clause}:}] +% \hfill\mbox{(Default: \emph{none})}\\ +% The heading of a \cs{Clause} within environment \meta{environment}, which +% has been defined using \cs{DeclareNewJuraEnvironment}, if the font has +% been setup using property |ClauseFont| or the element has been defined +% explicitly. +% \item[{\fnt{parnumber}:}] +% \hfill\mbox{(Default: \emph{empty})}\\ +% The paragraph number within a contract environment. +% \item[{\fnt{sentencenumber}:}] +% \hfill\mbox{(Default: \emph{empty})}\\ +% The sentence number printed by \cs{Sentence}. +% \end{description} +% +% \begin{description} +% \item[Note:] There are plans to no longer use package \pkg*{scrkbase}, but +% maybe package \pkg{scrextend} instead, if \pkg*{scrjura} is used with a +% non-\KOMAScript{} class. So the commands \cs{setkomafont}, +% \cs{addtokomafont} and \cs{usekomafont} would still be available in +% future. +% \end{description} +% +% \section{Clauses in the Table of Contents} +% \label{sec:toc} +% +% The headings of clauses can also be added automatically to the table of +% contents, if desired. For this the package uses command +% \cs{DeclareTOCStyleEntry} of +% \href{https://www.ctan.org/pkg/koma-script}{\KOMAScript} package +% \pkg{tocbasic} to define an entry level named |cpar|. Usage of package +% \pkg{tocbasic} also means, that you should not use another package to +% configure the Table of Contents, e.g., \pkg{tocloft}, \pkg{tocstyle} etc. +% +% \DescribeOption{juratotoc} +% \SpecialOptionIndex{juratotoc\quotechar=\meta{boolean}} +% \SpecialOptionIndex{juratotoc\quotechar=\meta{integer}} +% Clauses\Index{clause} are shown in the table of contents only if their +% level number is less than or equal to the +% \cnt{tocdepth} counter. By default, the level +% number is \len{maxdimen}, which is also used if the option is switched +% off using \opt[element=juratotoc]{juratotoc=false}. Because the +% \cnt{tocdepth} counter usually has a one-digit value, +% clause entries are therefore not normally displayed in the table of contents. +% +% If you switch on the option using the +% \opt[element=juratotoc]{juratotoc=true}, the level number 2 is used so that +% clauses are shown in the table of contents on the same level as +% subsections. For the default setting of \cnt{tocdepth}, clauses are then +% shown in all \href{https://www.ctan.org/pkg/koma-script}{\KOMAScript} +% classes or standard classes. +% +% You can also use \opt[element=juratotoc]{juratotoc=\meta{integer}} to use +% \meta{integer} instead of \len{maxdimen} or 2 as level number. +% +% Internally usage of this option results in a call of +% \begin{syntax} +% \cs{DeclareTOCStyleEntry}\toarg{level=\meta{integer}}\targ{default}\targ{cpar} +% \end{syntax} +% respectively +% \begin{syntax} +% \cs{DeclareTOCStyleEntry}\toarg{level=2}\targ{default}\targ{cpar} +% \end{syntax} +% respectively +% \begin{syntax} +% \cs{DeclareTOCStyleEntry}\toarg{level=\cs{maxdimen}}\targ{default}\targ{cpar}\quad. +% \end{syntax} +% +% \DescribeOption[noindex]{juratocindent} +% \SpecialOptionIndex{juratocindent\quotechar=\meta{length}} +% \DescribeOption[noindex]{juratocnumberwidth} +% \SpecialOptionIndex{juratocnumberwidth\quotechar=\meta{length}} +% These options determine the indentation and spacing for clause entries in +% the table of contents. Any valid \meta{length} can be assigned. The defaults +% are the same as for subsection entries in \cls{scrartcl}. +% +% Internally, usage of these options results in calls to: +% \begin{syntax} +% \cs{DeclareTOCStyleEntry}\toarg{indent=\meta{length}}\targ{default}\targ{cpar} +% \end{syntax} +% respective +% \begin{syntax} +% \cs{DeclareTOCStyleEntry}\toarg{numwidth=\meta{length}}\targ{default}\targ{cpar}\quad. +% \end{syntax} +% +% \section{Environment for Contracts} +% \label{sec:contract} +% +% The essential mechanisms of package \pkg*{contract} are available only +% inside contract environments, either the predefined \env{contract} or any +% other environment defined with command \cs{DeclareNewJuraEnvironment}. +% +% \DescribeEnv{contract}^^A +% Currently, this is the one and only predefined environment for +% \pkg*{contract}. Using it activates automatic numbering of paragraphs and +% the \cs{Clause} and \cs{SubClause} commands, which will be documented below, +% are given concrete form. +% +% The \env{contract} environment must +% not be nested within itself. Within a document, however, you can use the +% environment several times. The clauses within these environments are treated +% as if they were within a single environment. As a result, ending the +% environment really only temporarily interrupts it, and the old environment is +% continued by the beginning of a new environment. However, you cannot end the +% environment within a clause. If you want instead print several contracts, +% you would need to define several contract environments using command +% \cs{DeclareNewJuraEnvironment}. +% +% \DescribeOption{contract} +% The whole document becomes a contract\Index{contract} if you use this option +% while loading the package with: +% \begin{syntax} +% \cs{usepackage}\toarg{\opt{contract}}\targ{contract} +% \end{syntax} +% or as a global option with \cs{documentclass}. The document then behaves +% exactly as if it would contain one \env{contract} environment. +% +% +% \subsection{Clauses} +% \label{sec:clause} +% +% Clauses^^A +% \Index[see{clause}]{section}^^A +% \Index[see{clause}]{paragraph}^^A +% \Index[indexmain]{clause}^^A +% \footnote{%^^A +% In English, a ``clause'' in a legal document is a section, paragraph, or +% phrase that relates to a particular point. Although it is common in English +% to also use the terms ``article'' or ``section'' for what we here call a +% ``clause'', we use the latter term throughout to avoid confusion with the +% \cls{article} class and the \cs{section} and +% \cs{paragraph} sectioning divisions of most document +% classes.} in a legal sense are defined in package \pkg*{contract} only +% within contracts\Index{contract}, that is inside the +% \env{contract} environment or other environments declared +% with \cs{DeclareNewJuraEnvironment}. +% +% \DescribeCommand{\Clause} +% \DescribeCommand{\SubClause} +% Each clause starts either with \cs{Clause}\oarg{property list} or +% \cs{SubClause}\oarg{property list}. The optional argument \meta{property +% list} is a comma separated list of \meta{key}|=|\meta{value}. +% +% These are the most important commands inside of a contract. Without using +% any additional \meta{key}, \cs{Clause} creates the heading of a clause, +% which consists of the sign ``\S'', followed by its number. In contrast, +% \cs{SubClause} creates the heading of a clause with the last number used by +% \cs{Clause} and adds a lower-case letter. \cs{SubClause} is mainly intended +% for cases where an act or a contract is amended and not only are clauses +% changed or deleted but new clauses are inserted between existing ones +% without completely changing the numbering. +% +% Both commands accept a comma-separated list of \meta{key}|=|\meta{value} +% properties and also some \meta{key}s without value. An overview +% of the available properties is shown in \autoref{tab:Clause.options}. +% The most important of them will be discussed in more detail. +% +% \begin{table} +% \captionabove{Available properties for the optional argument of +% \cs{Clause} and \cs{SubClause}}%^^A +% \label{tab:Clause.options} +% \begin{desctabular} +% \entry{|dummy|}{%^^A +% The heading will not be printed but is counted in the automatic +% numbering.%^^A +% }%^^A +% \entry{|head=|\meta{running head}}{%^^A +% If running heads are active, this \meta{running head} is used instead +% of the clause \meta{title}.%^^A +% }%^^A +% \entry{|nohead|}{%^^A +% The running head stays unchanged.%^^A +% }%^^A +% \entry{|notocentry|}{%^^A +% Does not make an entry into the table of contents.%^^A +% }%^^A +% \entry{|number=|\meta{number}}{%^^A +% Uses \meta{number} for the output of the clause number.%^^A +% }%^^A +% \entry{|preskip=|\meta{skip}}{%^^A +% Changes the vertical \meta{skip} before the clause heading.%^^A +% }%^^A +% \entry{|postskip=|\meta{skip}}{%^^A +% Changes the vertical \meta{skip} after the clause heading.%^^A +% }%^^A +% \entry{|title=|\meta{title}}{%^^A +% The clause \meta{title} will be printed in addition to the clause +% number. This is also used as the default for the \meta{running head} +% and the \meta{entry} in the table of contents.%^^A +% }%^^A +% \entry{|tocentry=|\meta{entry}}{%^^A +% Regardless of the clause \meta{title}, an \meta{entry} into the +% table of contents will be made, if such entries are activated (see +% option \opt{juratotoc}).%^^A +% }%^^A +% \end{desctabular} +% \end{table} +% +% By default, a skip of two lines is inserted before the heading and a skip of +% one line afterwards. You can change the size of these skips with the +% |preskip| and |postskip| properties. The new values apply not only +% to the current clause but from the current clause until the end of the +% current contract environment. You can also make the appropriate settings in +% advance with +% \begin{syntax} +% \cs{setkeys}\targ{\env{contract}}%^^A +% \targ{preskip=\meta{skip},postskip=\meta{skip}} +% \end{syntax} +% regardless of the specific clause and outside of a contract environment. You +% can also set these options inside the preamble after loading +% \pkg*{contract}, but you cannot set them while loading the package or by +% using \cs{contractSetup}. +% +% By default, clause headings use the font style +% \cs{sffamily}\cs{bfseries}\cs{large}. See \autoref{sec:textmarkup} for +% information about how to change the font for element \fnt{contract.Clause}. +% +% With the |title|, |head|, and |tocentry| property, you can title a clause in +% addition to the number. You should enclose the \meta{value} of each property +% inside curly brackets. Otherwise, for example, commas which are meant to be +% part of the \meta{value} will be confused with the delimiters between +% different properties of the \meta{property list}. Empty values for |head| +% and |tocentry| cause empty entries. If you want to avoid an entry, use the +% |nohead| resp. |notocentry| property. +% +% Instead of consecutive numbers, you can also set a clause number manually +% with the |number| property. However, this does not affect the numbers of +% the subsequent clauses. Empty numbers are not possible. Fragile commands +% inside |number| have to be protected with \cs{protect}. You should use +% only numbers and letters as a |number|. +% +% With the |dummy| property, you can suppress the output of the whole heading +% of a clause. The automatic numbering, however, will still count this +% clause. In this way, you can skip an automatically numbered clause with +%\begin{syntax} +% \cs{Clause}\toarg{dummy} +%\end{syntax} +% in case the clause corresponding clause has been deleted in a later version +% of a contract. +% +% Note that the |dummy| property only accepts the \meta{value}s |true| and +% |false|. All other \meta{value}s are usually ignored, but can lead to an +% error message in the worst case scenario. +% +% \DescribeCommand{\Clauseformat} +% As already mentioned, clauses and subclauses are normally numbered. The +% number is formatted with the help of the \cs{Clauseformat} command, which +% expects the \meta{number} as the only argument. The default is the +% following: +%\begin{syntax} +% \cs{newcommand*}\targ{\cs{Clauseformat}}\toarg{1}\targ{\cs{S}~\#1} +%\end{syntax} +% This produces the section mark, \cs{S} (\S), followed by a non-breaking +% space and the number. If you redefine this command, be sure it remains +% expandable. +% +% \DescribeOption{juratitlepagebreak}^^A +% \SpecialOptionIndex{juratitlepagebreak\quotechar=\meta{boolean}}^^A +% Usually, page breaks are prohibited within heading of all kinds. However, +% some lawyers require page breaks within clause headings. You can allow such +% a break by using option \opt{juratitlepagebreak} or +% \opt[element=juratitlepagebreak]{juratitlepagebreak=\meta{boolean}}. Boolean +% values of \texttt{true} or \texttt{false} can be used to toggle the option +% on or off. Using the option without a value is the same as using +% \texttt{true}. The option can be used as an optional argument of +% \cs{documentclass}, \cs{usepackage} when loading package \pkg*{contract}, or +% as an argument of \cs{contractSetup}. +% +% \DescribeOption[noindex]{clausemark} +% \SpecialOptionIndex{clausemark\quotechar=\meta{value}} +% Since clauses are a subordinate structure with independent numbering, they +% do not produce running heads by default. You can, however, create running +% heads with various settings using: +% \begin{syntax} +% \opt{clausemark}=\meta{value} +% \end{syntax} +% as an optional argument of \cs{documentclass}, \cs{usepackage} when loading +% package \pkg*{contract}, or as an argument of \cs{contractSetup}. You can +% find the available \meta{value}s and their meanings in +% \autoref{tab:clausemark}. +% \begin{table} +% \captionabove{Available values for the \opt{clausemark} option to +% activate running heads}%^^A +% \label{tab:clausemark}%^^A +% \begin{desctabular} +% \entry{\optvalue{both}}{%^^A +% Clauses generate left and right marks for running heads, if the +% document provides automatic running heads.%^^A +% \SpecialOptionIndex{clausemark\quotechar=both}%^^A +% }%^^A +% \entry{\optvalue{false}, \optvalue{off}, \optvalue{no}}{%^^A +% Clauses do not generate marks for running heads and therefore do not +% change running heads.%^^A +% \SpecialOptionIndex{clausemark\quotechar=false}%^^A +% }%^^A +% \entry{\optvalue{forceboth}}{%^^A +% Clauses use \cs{markboth} to generate left and right +% marks for running heads even if the document does not provide +% automatic running heads for the current page style.%^^A +% \SpecialOptionIndex{clausemark\quotechar=forceboth}%^^A +% }%^^A +% \entry{\optvalue{forceright}}{%^^A +% Clauses use \cs{markright} to generate right marks for +% running heads even if the document does not provide automatic running +% heads for the current page style.%^^A +% \SpecialOptionIndex{clausemark\quotechar=forceright}%^^A +% }%^^A +% \entry{\optvalue{right}}{%^^A +% Clauses generate right marks for running heads, if the document +% provides automatic running heads.%^^A +% \SpecialOptionIndex{clausemark\quotechar=right}%^^A +% }%^^A +% \end{desctabular} +% \end{table} +%^^A +% +% +% \subsection{Paragraphs} +% \label{sec:par} +% \Index{paragraph>numbering}%^^A +% Within clauses, \pkg*{contract} usually numbers paragraphs automatically. +% With this, the paragraphs provide a powerful structuring element, similar to +% \cs{paragraph} or \cs{subparagraph} in +% normal documents. For this reason, contracts usually use a vertical skip +% between paragraphs. The \pkg*{contract} package does not provide its own +% mechanism for this. Instead, you should uses the +% \opt{parskip}\SpecialOptionIndex{parskip} option of the +% \href{https://www.ctan.org/pkg/koma-script}{\KOMAScript} +% classes. If you do not use a +% \href{https://www.ctan.org/pkg/koma-script}{\KOMAScript} class, see the +% documentation of the used class or package \pkg{parskip} +% \nocite{pkg:parskip}\cite{pkg:parskip:manual}. +% +% +% \DescribeOption{parnumber} +% \SpecialOptionIndex{parnumber\quotechar=\meta{value}} +% The option can be used as an optional argument of \cs{documentclass}, +% \cs{usepackage} when loading package \pkg*{contract}, or as an argument of +% \cs{contractSetup}. +% +% The default numbering of paragraphs is +% \opt[element=parnumber]{parnumber=auto}\SpecialOptionIndex{parnumber\quotechar=auto} +% and +% \opt[element=parnumber]{parnumber=true}\SpecialOptionIndex{parnumber\quotechar=true}. Sometimes +% you may need to disable the automatic numbering. You can do this with +% \opt[element=parnumber]{parnumber=false}\SpecialOptionIndex{parnumber\quotechar=false}. +% In this case, only the sentence numbering is reset. +% +% To implement this option, it has been necessary to hook into the +% paragraph-building mechanism of \LaTeX. In some rare cases, this can have a +% negative effect. If so, you can undo the change with +% \opt[element=parnumber]{parnumber=manual}\SpecialOptionIndex{parnumber\quotechar=manual}. +% On the other hand, \LaTeX{} itself sometimes undoes the change. In those +% cases you can activate it again with +% \opt[element=parnumber]{parnumber=auto}\SpecialOptionIndex{parnumber\quotechar=auto}. +% +% Clauses that consist of a single paragraph do not automatically receive a +% paragraph number. For this to work, there must not be two clauses with an +% identical number in a document. However should you ever need such numbering, +% you should switch to another contract environment (see +% \cs{DeclareNewJuraEnvironment}). Note that the number of +% paragraphs in a clause is not available before the end of the +% clause. Therefore you need a least two \LaTeX{} runs before the automatic +% paragraph numbering is correct. +% +% +% \DescribeCounter{par} +% \DescribeCommand{\thepar} +% \DescribeCommand{\parformat} +% \DescribeCommand{\parformatseparation} +% For numbering the paragraphs inside a clause we use the \cnt{par} counter. +% The output of \cs{thepar} will display an Arabic number, because the +% default is \cs{arabic}\targ{par}. \cs{parformat} provides the +% format, which is \cs{thepar} in rounded brackets. When numbering a +% paragraph manually, you should also use \cs{parformat}. It makes sense to +% call \cs{parformat} with a subsequent \cs{parformatseparation}, or at +% least a \cs{nobreakspace} or tilde. +% +% With automatic numbering, \cs{parformat} is followed by +% \cs{parformatseparation}, which currently consists of +% \cs{nonbreakspace}, the non-breakable space. +% +% The paragraph number is usually printed using the currently active font. +% See \autoref{sec:textmarkup} for information how to change the font of the +% \fnt{parnumber} element. +% +% \begin{description} +% \item{Note:} \pkg*{contract} currently assumes internally that +% \cs{thepar} is an Arabic number. Therefore you should definitely not +% redefine it! +% \end{description} +% +% +% \DescribeCommand{\withoutparnumber} +% If the paragraph number is not printed, \pkg*{contract} executes the +% \cs{withoutparnumber} command at the beginning of the new paragraph. The +% initial definition of this command is empty. This means it is a kind of +% dummy command that does nothing. It has been implemented because of a user +% request. Most users can ignore this command. +% +% +% \DescribeCommand{\ellipsispar} +% \DescribeCommand{\parellipsis} +% Sometimes\,---\,particularly in comparative commentaries\,---\,it is +% desirable to omit paragraphs but to mark the omission. Those omitted +% paragraphs\Index{paragraph>omission} should be taken into account by the +% paragraph counter. The package \pkg*{contract} provides the command +% \cs{ellipsispar} to do this. +% +% By default, \cs{ellipsispar} omits precisely one paragraph. Using the +% optional argument of +% \begin{syntax} +% \cs{ellipsispar}\oarg{number} +% \end{syntax} +% you can omit multiple paragraphs. In any case, the output shows just one +% unnumbered paragraph, which consists only of the ellipsis defined by +% \cs{parellipsis}. The automatic numbering of paragraphs takes the +% \meta{number} of omitted paragraphs into account. +% \begin{Example} +% Suppose you are writing a comment on the German\footnote{Please remember, +% this translation does not refer to an existing law but is only an example +% of how you might realise such a commentary with \pkg*{contract}.} penal +% code, but only on paragraph 3 of \S~2. Nevertheless, you'd like to +% indicate the omission indirectly. You can do this with: +%\begin{lstcode}[gobble=1] +% \documentclass[parskip=half]{scrartcl} +% \usepackage{contract} +% \begin{document} +% \begin{contract} +% \Clause{title={Temporal application},number=2} +% \ellipsispar[2] +% +% If the law that applies at the time the criminal act is +% committed is changed before the verdict, then the most +% lenient law shall be applicable. +% +% \ellipsispar[3] +% \end{contract} +% \end{document} +%\end{lstcode} +% To see the result, just give it a try. +% \end{Example} +% +% The ellipsis is by default \cs{textellipsis}, if such a command is +% defined. If not, \cs{dots} is used. You can redefine \cs{parellipsis} at any +% time with \cs{renewcommand}. +% +% +% \subsection{Sentences} +% \label{sec:sentence} +% +% \Index{sentence>number}%^^A +% Paragraphs in contracts consist of one or more sentences, some of which may +% also be numbered. However, as automatic numbering is cumbersome and +% error-prone, it has not yet been implemented in +% \pkg*{contract}. Semi-automatic numbering, however, is supported. +% +% \DescribeCounter{sentence} +% \DescribeCommand{\thesentence} +% \DescribeCommand{\sentencenumberformat} +% \DescribeCommand{\Sentence} +% Manual numbering of sentences is done with the \cs{Sentence} command. It +% adds one to the \cnt{sentence} counter. By default, +% \cs{sentencenumberformat} prints \cs{thesentence} as an Arabic number in +% superscript. +% +% The sentence number is usually printed using the currently active font. +% See \autoref{sec:textmarkup} for information how to change the font of the +% \fnt{sentencenumber} element. +% +% Using \pkg{babel} offers an easy way to define a shorthand for +% \cs{Sentence}:%^^A +% \phantomsection\label{sec:shorthandexample}%^^A +%\begin{lstcode}[moretexcs={useshorthands,defineshorthand},gobble=1] +% \useshorthands{'} +% \defineshorthand{'S}{\Sentence\ignorespaces} +%\end{lstcode} +% With this definition, any space after \lstinline|'S| will be ignored. You +% can even use the dot as an abbreviation for a dot and a new sentence number: +%\begin{lstcode}[moretexcs={useshorthands,defineshorthand},gobble=1] +% \defineshorthand{'.}{. \Sentence\ignorespaces} +%\end{lstcode} +% For details regarding \cs{useshorthands} and \cs{defineshorthand}, +% please consult the manual of the \pkg{babel} package (see +% \cite{pkg:babel}). You can find an example of their application in +% \autoref{sec:example}, \autopageref{sec:example}.%^^A +% +% +% \section{Cross References} +% \label{sec:ref} +% +% The conventional mechanism to set cross references using \cs{label}, +% \cs{ref}, and \cs{pageref} does not suffice for clauses, paragraphs, and +% sentences. Therefore \pkg*{contract} provides additional commands. +% +% \DescribeCommand{\ref} +% \DescribeCommand{\refL} +% \DescribeCommand{\refS} +% \DescribeCommand{\refN} +% The commands +% \begin{syntax} +% \cs{ref}\marg{label} +% \cs{refL}\marg{label} +% \cs{refS}\marg{label} +% \cs{refN}\marg{label} +% \end{syntax} +% give a full reference to clause, paragraph and sentence. \cs{refL} is a long +% text, \cs{refS} a short text, and \cs{refN} an abbreviated, numeric form. +% \cs{ref} defaults to \cs{refL}. +% +% +% \DescribeCommand{\refClause} +% \DescribeCommand{\refClauseN} +% The commands +% \begin{syntax} +% \cs{refClause}\marg{label} +% \cs{refClauseN}\marg{label} +% \end{syntax} +% reference a clause without displaying the paragraph or +% sentences. \cs{refClause} puts a section mark (\S) in front of the +% reference, while \cs{refClauseN} does not. +% +% +% \DescribeCommand{\refPar} +% \DescribeCommand{\refParL} +% \DescribeCommand{\refParS} +% \DescribeCommand{\refParN} +% The commands +% \begin{syntax} +% \cs{refPar}\marg{label} +% \cs{refParL}\marg{label} +% \cs{refParS}\marg{label} +% \cs{refParN}\oarg{number format}\marg{label} +% \end{syntax} +% reference a paragraph of a clause. The differences between the forms +% correspond to the differences between \cs{refL}, \cs{refN} and \cs{refS}. A +% feature worth noting is the optional argument of \cs{refParN}. Usually the +% numeric reference to a paragraph uses a Roman number. You can, however, +% specify a different \meta{number format} in the optional argument. This +% option primarily makes sense to use Arabic numbers. By default, \cs{refPar} +% is \cs{refParL}. +% +% +% \DescribeCommand{\refSentence} +% \DescribeCommand{\refSentenceL} +% \DescribeCommand{\refSentenceS} +% \DescribeCommand{\refSentenceN} +% The commands +% \begin{syntax} +% \cs{refSentence}\marg{label} +% \cs{refSentenceL}\marg{label} +% \cs{refSentenceS}\marg{label} +% \cs{refSentenceN}\marg{label} +% \end{syntax} +% reference a sentence of a paragraph. Again, there is a long text form, a +% short text form, and a numerical form. By default, \cs{refSentence} is +% \cs{refSentenceL}.%^^A +% +% +% \DescribeOption[noindex]{ref} +% \SpecialOptionIndex{ref\quotechar=\meta{value}} +% The results of \cs{ref}, \cs{refPar}, and \cs{refSentence} depend on the +% option +% \begin{syntax} +% \opt{ref}|=|\meta{value} +% \end{syntax} +% that can be used as an optional argument of \cs{documentclass}, +% \cs{usepackage} when loading package \pkg*{contract}, or as an argument of +% \cs{contractSetup}. The default is \opt[element=ref]{ref=long} and +% therefore \cs{refL}, \cs{refParL} and \cs{refSentenceL}. You can find the +% available \meta{value}s for his option and their meaning in +% \autoref{tab:ref}.%^^A +% %^^A +% \begin{table} +% \captionabove[{%^^A +% Available values for the \opt{ref} option to configure the +% cross reference format%^^A +% }]{%^^A +% Available values for the \opt{ref} option to configure the +% cross reference format of \cs{ref}, +% \cs{refPar}, and \cs{refSentence}%^^A +% \label{tab:ref}%^^A +% }%^^A +% \begin{desctabular} +% \entry{\optvalue{long}}{%^^A +% A combination of \optvalue{parlong} and \optvalue{sentencelong}.%^^A +% \SpecialOptionIndex{ref\quotechar=long}%^^A +% }%^^A +% \entry{\optvalue{numeric}}{%^^A +% A combination of \optvalue{parnumeric} and +% \optvalue{sentencenumeric}.%^^A +% \SpecialOptionIndex{ref\quotechar=numeric}%^^A +% }%^^A +% \entry{\optvalue{clauseonly}, \optvalue{onlyclause},\\ +% \optvalue{ClauseOnly}, \optvalue{OnlyClause}}{%^^A +% A combination of \optvalue{paroff} and \optvalue{sentenceoff}. Note +% that \cs{refPar} and \cs{refSentence} +% produce empty results!%^^A +% \SpecialOptionIndex{ref\quotechar=long}%^^A +% }%^^A +% \entry{\optvalue{parlong}, \optvalue{longpar},\\ +% \optvalue{ParL}}{%^^A +% Paragraphs are referenced in long textual form.%^^A +% \SpecialOptionIndex{ref\quotechar=parlong}%^^A +% }%^^A +% \entry{\optvalue{parnumeric}, \optvalue{numericpar}, \optvalue{ParN}}{%^^A +% Paragraphs are referenced in simple numerical form.%^^A +% \SpecialOptionIndex{ref\quotechar=parnumeric}%^^A +% }%^^A +% \entry{\optvalue{paroff}, \optvalue{nopar}}{%^^A +% Paragraphs have no reference. Note that \cs{refPar} +% produces an empty result!%^^A +% \SpecialOptionIndex{ref\quotechar=paroff}%^^A +% }%^^A +% \entry{\optvalue{parshort}, \optvalue{shortpar}, \optvalue{ParS}}{%^^A +% Paragraphs are referenced in short textual form.%^^A +% \SpecialOptionIndex{ref\quotechar=parshort}%^^A +% }%^^A +% \entry{\optvalue{sentencelong}, \optvalue{longsentence}, \\ +% \optvalue{SentenceL}}{%^^A +% Sentences are referenced in long textual form.%^^A +% \SpecialOptionIndex{ref\quotechar=parlong}%^^A +% }%^^A +% \entry{\optvalue{sentencenumeric}, \optvalue{numericsentence},\\ +% \optvalue{SentenceN}}{%^^A +% Sentences are referenced in simple numeric form.%^^A +% \SpecialOptionIndex{ref\quotechar=sentencenumeric}%^^A +% }%^^A +% \entry{\optvalue{sentenceoff}, \optvalue{nosentence}}{%^^A +% Sentences have no reference. Note that +% \cs{refSentence} produces an empty result!%^^A +% \SpecialOptionIndex{ref\quotechar=sentenceoff}%^^A +% }%^^A +% \entry{\optvalue{sentenceshort}, \optvalue{shortsentence},\\ +% \optvalue{SentenceS}}{%^^A +% Sentences are referenced in short textual form.%^^A +% \SpecialOptionIndex{ref\quotechar=sentenceshort}%^^A +% }%^^A +% \entry{\optvalue{short}}{%^^A +% A combination of \optvalue{parshort} and \optvalue{sentenceshort}.%^^A +% \SpecialOptionIndex{ref\quotechar=value}%^^A +% }%^^A +% \end{desctabular} +% \end{table} +% +% \begin{Example} +% Suppose you always want to reference paragraphs in the form ``paragraph 1 +% in clause 1''. As there is no predefined command for this, you have to +% create your own definition from the available options. You can achieve +% this easily with:%^^A +%\begin{lstcode}[gobble=1] +% \newcommand*{\refParM}[1]{% +% paragraph~\refParN[arabic]{#1} +% in clause~\refClauseN{#1}% +% } +%\end{lstcode} +% This new command can be used in the same way as +% \cs{refParL}.%^^A +% \end{Example}%^^A +% +% You can find examples of results of the basic commands\,---\,this means the +% commands, that are independent from option \opt{ref}\,---\,in +% \autoref{tab:refexamples}.%^^A +% %^^A +% \begin{table} +% \KOMAoptions{captions=topbeside}%^^A +% \setcapindent{0pt}%^^A +% \begin{captionbeside}{Example outputs of the \opt{ref}-independent +% cross reference commands}[l] +% \begin{tabular}[t]{ll} +% \toprule +% Command & Example output \\ +% \midrule +% \cs{refL}\marg{label} & \S{} 1 paragraph 1 sentence 1 \\ +% \cs{refS}\marg{label} & \S{} 1 par. 1 sent. 1 \\ +% \cs{refN}\marg{label} & \S{} 1 I 1. \\ +% \cs{refClause}\marg{label} & \S{} 1 \\ +% \cs{refClauseN}\marg{label} & 1 \\ +% \cs{refParL}\marg{label} & paragraph 1 \\ +% \cs{refParS}\marg{label} & par. 1 \\ +% \cs{refParN}\marg{label} & I \\ +% \cs{refParN}\toarg{arabic}\marg{label} & 1 \\ +% \cs{refParN}\toarg{roman}\marg{label} & i \\ +% \cs{refSentenceL}\marg{label} & sentence 1 \\ +% \cs{refSentenceS}\marg{label} & sent. 1 \\ +% \cs{refSentenceN}\marg{label} & 1. \\ +% \bottomrule +% \end{tabular} +% \end{captionbeside} +% \label{tab:refexamples} +% \end{table} +% +% +% \section{Additional Contract Environments} +% \label{sec:newenv} +% +% Some users do not use \pkg*{contract} to draft contracts or commentaries on +% individual laws but to examine different types of laws, which may not +% necessarily use the section prefix (\S) before the title of each clause but +% perhaps something like ``Art.'' or ``IAS'', and so forth. An independent +% counter is also required for each of these different clause types. +% +% \DescribeCommand{\DeclareNewJuraEnvironment} +% You can use: +% \begin{syntax} +% \cs{DeclareNewJuraEnvironment}\marg{environment}\oarg{property list}\\%^^A +% \marg{start commands}\marg{end commands} +% \end{syntax} +% to define new and independent environments for contracts or other legal +% texts. The argument \meta{environment} is the name of the new environment, +% of course. The \meta{start commands} are commands which will be executed at +% the beginning of the environment, as if they were added directly after +% \cs{begin}\marg{environment}. Correspondingly \meta{end commands} will be +% executed at the end of the environment, as if added directly before +% \cs{end}\marg{environment}. Without a \meta{property list} the new +% environment behaves like the \env{contract} environment, but with its own +% counters. You can use several \meta{key}|=|\meta{value} properties as a +% comma-separated \meta{property list}. See +% \autoref{tab:DeclareNewJuraEnvironment} for the currently supported +% \meta{options}. +% +% \begin{table} +% \captionabove{Properties provided by \cs{DeclareNewJuraEnvironment} for +% new contract environments}\label{tab:DeclareNewJuraEnvironment}%^^A +% \begin{desctabular} +% \entry{|Clause=|\meta{command}}{%^^A +% Defines the \meta{command} to which the \cs{Clause} +% command is mapped within the environment. This \meta{command}, like the +% one documented for \env{contract}, expects exactly one +% argument. To use it correctly requires advanced knowledge of the +% \pkg*{contract}'s internal functioning. Furthermore, the requirements +% for the \meta{command} may change in future versions. Therefore it is +% recommended not to use this option!%^^A +% }%^^A +% \entry{|ClauseFont=|\meta{commands}}{%^^A +% If this property is used, a new \fnt{\meta{environment}.Clause} +% element is defined with the +% \meta{commands} used as its default setting. If the element was +% previously defined as an alias, it will become an independent element +% instead. If it has already been defined as an independent element, the +% \meta{commands} are used as new font settings. Please note the +% limitations for font settings in \autoref{sec:textmarkup}.%^^A +% }%^^A +% \entry{|SubClause=|\meta{command}}{%^^A +% Defines the \meta{command} to which the +% \cs{SubClause} command is mapped within the +% environment. This \meta{command}, like the one documented for +% \env{contract}, expects exactly one argument. To use it +% correctly requires advanced knowledge of the \pkg*{contract}'s internal +% functioning. Furthermore, the requirements for the \meta{command} may +% change in future versions. Therefore it is recommended not to use this +% property!%^^A +% }%^^A +% \entry{|Sentence=|\meta{command}}{%^^A +% Defines the \meta{command} to which the \cs{Sentence} +% is mapped within the environment. This \meta{command} must not have an +% argument. Typically it should add one to the +% \cnt{sentence} (using \cs{refstepcounter}) counter and display it +% appropriately. It is particularly important to avoid adding unwanted +% spaces.%^^A +% }%^^A +% \entry{|ClauseNumberFormat=|\meta{command}}{%^^A +% Formats the numbers of clauses within the environment. The +% \meta{command} should expect exactly one argument: the number of the +% clause. If the \meta{command} implements a series of commands and the +% number is the last argument of a that series, you can directly use the +% series of commands as \meta{command}.%^^A +% } +% \end{desctabular} +% \end{table} +% \begin{Example} +% To define the environment for articles we mentioned in the preface of this +% section, it is sufficient to write: +%\begin{lstcode}[gobble=1] +% \DeclareNewJuraEnvironment{Article}[ClauseNumberFormat=Art.~]{}{} +%\end{lstcode} +% If we are using a \href{https://www.ctan.org/pkg/koma-script}{\KOMAScript} +% class and want to separate the paragraphs in this environment with space +% instead of using paragraph indentation, we can use: +%\begin{lstcode}[gobble=1] +% \DeclareNewJuraEnvironment{Article}[ClauseNumberFormat=Art.~] +% {\KOMAoptions{parskip}}{} +%\end{lstcode} +% In cross references, ``Art.'' will of course be used instead of ``\S''.%^^A +% +% The new environment is used like \env{contract}: +%\begin{lstcode}[gobble=1] +% \begin{Article} +% \Clause{} +% Human dignity is inviolable. To respect and protect people is a +% duty of all state authority. +% \end{Article} +%\end{lstcode} +% \end{Example} +% +% +% \section{Support for Different Languages} +% \label{sec:babel} +% +% The \pkg*{contract} package has been developed in cooperation with a German +% lawyer. Therefore it initially supported only the languages |german|, +% |ngerman|, |austrian|, and |naustrian|. Nevertheless, it has been designed +% to support common language packages like \pkg{babel}. Users can easily make +% changes by using \cs{providecaptionname}. If you have definitive information +% about the correct legal terms and conventions of a language, please contact +% the \href{https://www.ctan.org/pkg/koma-script}{\KOMAScript} author. Support +% for English has been added in this way, and so \pkg*{contract} now also +% provides terms for the languages |english|, |american|, |british|, +% |canadian|, |USenglish|, and |UKenglish|. +% +% \DescribeCommand{\parname} +% \DescribeCommand{\partshortname} +% \DescribeCommand{\sentencename} +% \DescribeCommand{\sentenceshortname} +% These are the language-dependent terms used by \pkg*{contract}. The meaning +% of the terms and their English defaults are shown in +% \autoref{tab:captionnames}. The package itself defines them by +% using \cs{providecaptionname} inside +% \cs{begin}\targ{document} only if other requirements have not already +% been met. If you use \pkg*{contract} with an unsupported language, the +% package will throw an error.%^^A +% %^^A +% \begin{table} +% \KOMAoptions{captions=topbeside}%^^A +% \setcapindent{0pt}%^^A +% \begin{captionbeside} +% [{%^^A +% Meanings and English defaults of language-dependent terms%^^A +% }]{%^^A +% Meanings and English defaults of language-dependent terms, if not +% already defined%^^A +% } [l] +% \begin{tabular}[t]{lll} +% \toprule +% Command & Meaning & Default \\ +% \midrule +% \cs{parname} & long form ``paragraph'' & paragraph \\ +% \cs{parshortname} & short form ``paragraph'' & par. \\ +% \cs{sentencename} & long form ``sentence'' & sentence \\ +% \cs{sentenceshortname} & short form ``sentence'' & sent. \\ +% \bottomrule +% \end{tabular} +% \end{captionbeside} +% \label{tab:captionnames} +% \end{table} +% +% +% +% \section{A Detailed Example} +% \label{sec:example} +% +% You may remember the letter from the \cls{scrlttr2} chapter of the +% \href{https://www.ctan.org/pkg/koma-script}{\KOMAScript} manual +% \cite{pkg:koma-script:manual:en}, in which a club member wanted to remind +% the board about an overdue meeting that was prescribed by the club's +% by-laws. Such club by-laws are a kind of contract, and you can create them +% using \pkg*{contract}. +% +% \lstinputcode[{xleftmargin=2em,%^^A +% linerange=1-2}]{contract-example-en.tex}%^^A +% We use class \cls{scrartcl}. Because paragraph distance instead of paragraph +% indentation is usual in club by-laws, we load the class with option +% \opt[element=parskip]{parskip=half}. +% +% \lstinputcode[{xleftmargin=2em,%^^A +% linerange=4-4}]{contract-example-en.tex}%^^A +% The club rules are in British English. Therefore we load the \pkg{babel} +% package with the \opt{british} option too. +% +% \lstinputcode[{xleftmargin=2em,%^^A +% linerange={6-6,8-8}}]{contract-example-en.tex}%^^A +% We make some default font settings. Earlier versions of the example also +% loaded the \pkg{textcomp} package here for an improved section mark +% (\S). Since \LaTeX{} 2020/02/01, however, the desired functionality is +% directly integrated in the \LaTeX{} kernel. +% +% \lstinputcode[{xleftmargin=2em,%^^A +% linerange=11-11}]{contract-example-en.tex}%^^A +% Later in the document, we want lists numbered not with Arabic numbers but with +% lower-case letters. We can do this easily with the \pkg{enumerate} +% package. Alternatively, we could have used the \pkg{enumitem} package. +% +% \lstinputcode[{moretexcs={useshorthands,defineshorthand},%^^A +% xleftmargin=2em,%^^A +% linerange=13-21}]{contract-example-en.tex}%^^A +% Now it is time for \pkg*{contract}. The +% \opt[element=clausemark]{clausemark=forceboth}\SpecialOptionIndex{clausemark=forceboth} +% option forces clauses to create left and right marks for the running +% head. On the other hand, we do not want \cs{section} to change the marks for +% the running head. Therefore we use the \pstyle{myheadings} page style. This +% page style generally does not provide automatic running heads. +% +% Later, we also want a table of contents with the clauses. This can be +% achieved with the \opt{juratotoc} option. Doing so we will see that the +% default width for these numbers is insufficient for the clause numbers in +% the table of contents. With +% \opt[element=juratocnumberwidth]{juratocnumberwidth=2.5em}\SpecialOptionIndex{juratocnumberwidth\quotechar=\meta{length}}, +% we reserve more space. +% +% The definition of shorthands has already been explained in +% \autoref{sec:shorthandexample}. In this example we do the same thing +% to simplify the input. +% +% \lstinputcode[{xleftmargin=2em,%^^A +% linerange=23-23}]{contract-example-en.tex}%^^A +% It is time to begin the actual document. +% +% \lstinputcode[{xleftmargin=2em,%^^A +% linerange=25-29}]{contract-example-en.tex}%^^A +% Like other documents, the by-laws have a title. We created it with the usual +% \href{https://www.ctan.org/pkg/koma-script}{\KOMAScript} commands%\iffalse +% (see \autoref{sec:maincls.titlepage}, starting on +% \autopageref{sec:maincls.titlepage})%\fi +% . +% +% \lstinputcode[{xleftmargin=2em,%^^A +% linerange=31-31}]{contract-example-en.tex}%^^A +% As already mentioned, we want to create a table of contents. +% +% \lstinputcode[{xleftmargin=2em,%^^A +% linerange=33-37}]{contract-example-en.tex}%^^A +% Preambles are not unusual in club by-laws. Here we use +% \cs{addsec} to create one because we want it to have an entry +% in the table of contents. +% +% \lstinputcode[{xleftmargin=2em,%^^A +% linerange=39-39}]{contract-example-en.tex}%^^A +% Here we use a small trick. The articles of the club by-laws should be numbered +% with upper-case letters instead of Arabic numbers, just as +% the appendix sections of an article using \cls{scrartcl} are. +% +% \lstinputcode[{xleftmargin=2em,%^^A +% linerange=41-43}]{contract-example-en.tex}%^^A +% We begin the contract with the first article. +% +% \lstinputcode[{xleftmargin=2em,%^^A +% linerange=44-54}]{contract-example-en.tex}%^^A +% The first clause has a number and a title. We will do the same with all +% following clauses. +% +% The first paragraph of the clause contains nothing unusual. Because it is not +% the only paragraph, every paragraph will be automatically preceded by a +% paragraph number. Note that the numbering the first paragraph requires at +% least two \LaTeX{} runs. Since this is the case for the table of contents as +% well, this does not create any additional problems. +% +% In the second paragraph we have two sentences. Here we can see the shorthands +% \texttt{'S} and \texttt{'.} in action. The first one only generates the +% sentence number. The second one generates not only the full stop but also the +% sentence number. With this, both sentences are numbered. +% +% \lstinputcode[{xleftmargin=2em,%^^A +% linerange=55-70}]{contract-example-en.tex}%^^A +% The second clause: again this contains several paragraphs, some of which +% include several sentences. The second paragraph also has a numbered list. In +% the last paragraph, we set a label, because we want to reference it later. +% +% \lstinputcode[{xleftmargin=2em,%^^A +% linerange=72-78}]{contract-example-en.tex}%^^A +% The third clause contains something special: a cross reference. Here we use +% the long form with clause, paragraph, and sentence. If we decided later that +% sentences should not be included in the reference, we could use the +% \opt{ref=nosentence} option to set this globally. +% +% \lstinputcode[{xleftmargin=2em,%^^A +% linerange=80-81}]{contract-example-en.tex}%^^A +% Here we have a special kind of clause. In earlier versions of the club +% by-laws, +% this was a real clause, but it was later removed. However, the +% numbering of the following clauses should not be changed by removing this +% one. Therefore the \cs{Clause} statement has not been +% removed but supplemented by |dummy| property. With this, we also can set +% a label even though the clause will not be printed. +% +% \lstinputcode[{xleftmargin=2em,%^^A +% linerange=82-86}]{contract-example-en.tex}%^^A +% Another article begins. To avoid problems with the paragraph numbering, we +% interrupt the \env{contract} environment. +% +% \lstinputcode[{xleftmargin=2em,%^^A +% linerange=87-87}]{contract-example-en.tex}%^^A +% The first clause of the next article also has been deleted. +% +% \lstinputcode[{xleftmargin=2em,%^^A +% linerange=89-98}]{contract-example-en.tex}%^^A +% Here we have a real clause again. We cross reference one of the deleted +% clauses and also set a label. +% +% \lstinputcode[{xleftmargin=2em,%^^A +% linerange=100-104}]{contract-example-en.tex}%^^A +% Once more, this is a special kind of clause. This time we have not removed a +% clause but added one without renumbering the following clauses. To do so, +% we use \cs{SubClause}. Therefore the clause number is the +% same like the previous one but with an appended ``a''. +% +% \lstinputcode[{xleftmargin=2em,%^^A +% linerange=106-126}]{contract-example-en.tex}%^^A +% The other clauses of this article are very usual. You already know all the +% features used for them. +% +% \lstinputcode[{xleftmargin=2em,%^^A +% linerange=128-141}]{contract-example-en.tex}%^^A +% There follows another article no special features. +% +% \lstinputcode[{xleftmargin=2em,%^^A +% linerange=143-143}]{contract-example-en.tex}%^^A +% Then the \LaTeX{} document ends. You can see first three pages in +% \autoref{fig:example}.%^^A +% %^^A +% \begin{figure} +% \centering +% \frame{\includegraphics[page=1,width=.482\textwidth,%^^A +% height=.49\textheight,keepaspectratio]{contract-example-en}}\enskip +% \frame{\includegraphics[page=2,width=.482\textwidth,%^^A +% height=.49\textheight,keepaspectratio]{contract-example-en}}\par +% \smallskip +% \frame{\includegraphics[page=3,width=.482\textwidth,%^^A +% height=.49\textheight,keepaspectratio]{contract-example-en}}\enskip +% \frame{\includegraphics[page=4,width=.482\textwidth,%^^A +% height=.49\textheight,keepaspectratio]{contract-example-en}}\par +% \caption{The four pages of the CfCH example of +% \protect\autoref{sec:example}} +% \label{fig:example} +% \end{figure} +% +% \section{From \pkg*{scrjura} to \pkg*{contract}} +% \label{sec:switchpackage} +% +% If you have been using the \pkg*{scrjura} package and are now switching to +% the \pkg*{contract} package, there are a few things you need to be aware of: +% \begin{itemize} +% \item Instead of +% \begin{syntax} +% \cs{usepackage}\oarg{options}\targ{scrjura}\quad, +% \end{syntax} +% should now use +% \begin{syntax} +% \cs{usepackage}\oarg{options}\targ{contract}\quad. +% \end{syntax} +% The same \meta{options} are allowed as the \pkg*{scrjura} package +% understands. +% \item Instead of using \cs{KOMAoptions} or \cs{KOMAoption} to set +% \meta{options} for the \pkg*{contract} package, use \cs{contractSetup}. +% \item The \cs{Clause} and \cs{SubClause} commands now have an optional +% argument instead of a mandatory argument. This makes more sense because it +% is allowed to use \cs{Clause} or \cs{SubClause} without an +% argument. Instead of braces, the list of properties must be given +% in square brackets, for example: +%\begin{lstcode}[gobble=1] +% \Clause[title={title of clause}] +%\end{lstcode} +% Therefore, even more care should be taken to ensure that the values of +% each property are enclosed in braces. Otherwise, there may be problems not +% only with commas, but also with square brackets in the values. +% \item Check your code if you have used or redefined any internal macros as +% several of them have been renamed. +% \end{itemize} +% +% \section{State of Development} +% \label{sec:draft} +% +% Since \href{https://www.ctan.org/pkg/koma-script}{\KOMAScript}~3.24, the +% \pkg*{scrjura} package has shared the version number of the classes and +% other important packages of +% \href{https://www.ctan.org/pkg/koma-script}{\KOMAScript}. Package +% \pkg*{contract} on the other hand now has a new version number independent +% from \href{https://www.ctan.org/pkg/koma-script}{\KOMAScript}. +% +% Independent from the version number you should note that so far, the +% interaction of the \env{contract} environment with the many different +% settings possible with other \LaTeX{} environments, packages, or classes has +% not been tested. The main reason for this is that \pkg*{contract} is very +% specialized and far beyond the author's ordinary practice. So the author +% mostly relies on detailed user feedback. +% +% +% \MaybeStop{% +% \printbibliography[heading=bibintoc] +% \PrintChanges +% \PrintIndex +% } +% +% \addpart{Implementation} +% +% \begin{macrocode} +%<*package> +% \end{macrocode} +% +% \changes{scrjura-v0.7b}{2014/11/11}{General renaming of ``Paragraph'' into +% ``Clause''} +% +% \section{Cooperation with \pkg{hyperref}} +% +% If \pkg{hyperref} has already loaded before \pkg*{contract} the package cannot +% work correctly. So we throw an error. Maybe it would be a good idea to make +% this error fatal. But currently it is only an error. +% \begin{macrocode} +%<*init> +\@ifpackageloaded{hyperref}{% + \PackageError{contract}{Package hyperref already loaded}{% + If you want to use package contract with package hyperref, you have + to\MessageBreak + load package contract before package hyperref.\MessageBreak + To solve the problem, you just should move the loading of package + hyperref\MessageBreak + behind the loading of package contract.}% +} +%</init> +% \end{macrocode} +% +% \section{Prerequisites} +% +% We need package \pkg{scrkbase}. We could load this also together with +% \pkg{tocbasic}, which is loaded later. But loading it on its own, we can +% require a minimum version. +% \begin{description} +% \item[Todo:] Package \pkg*{contract} is no longer a +% \href{https://www.ctan.org/pkg/koma-script}{\KOMAScript} package. So it +% should not use the internal +% \href{https://www.ctan.org/pkg/koma-script}{\KOMAScript} package +% \pkg{scrkbase}. For keys of contract environments we can just load +% \pkg{scrbase}. For package options we should either also switch to +% \pkg{scrbase} or use native key-value options of \LaTeX. After doing so we +% would be able to replace \pkg*{scrkbase} at least by \pkg{scrextend}. With +% this package we still could use commands like +% \cs{setkomafont}. Theoretically we would also be able to still use +% \href{https://www.ctan.org/pkg/koma-script}{\KOMAScript} options, but this +% would still not be recommended. +% \end{description} +% \begin{macrocode} +%<*init> +\RequirePackage{scrkbase}[2013/03/26] +%</init> +% \end{macrocode} +% +% And now, \pkg{tocbasic}. +% \begin{macrocode} +%<*init> +\RequirePackage{tocbasic} +%</init> +% \end{macrocode} +% +% \section{Options} +% +% \begin{option}{contract} +% \begin{macro}{\if@documentcontract, +% \@documentcontractfalse,\@documentcontracttrue} +% \changes{scrjura-v3.36}{2022/01/25}{switched to a +% \href{https://www.ctan.org/pkg/koma-script}{\KOMAScript} option} Option +% \opt{contract} can be used to make the whole document to be a +% contract. But in this case you are not allowed to reuse the \env{contract} +% environment in the document. Nor is it allowed to stop or restart the +% contract. With older \LaTeX{} this is done by adding \cs{contract} to the +% end of \cs{document}. With an up to date \LaTeX{} we us a hook. +% \begin{macrocode} +%<*options> +\KOMA@ifkey{contract}{@documentcontract} +\IfLTXAtLeastTF{2020/10/01}{% + \AddToHook{begindocument/end}{% + \RelaxFamilyKey[.contract.sty]{KOMA}{contract}% + \if@documentcontract\expandafter\contract\fi + }% +}{% + \g@addto@macro\document{% + \RelaxFamilyKey[.contract.sty]{KOMA}{contract}% + \if@documentcontract\expandafter\contract\fi + }% +} +%</options> +% \end{macrocode} +% \end{macro} +% \end{option} +% +% \begin{option}{juratotoc} +% \changes{scrjura-v3.39}{2022/11/11}{initial dot in member argument of +% option storage commands removed} +% Allow to set the toc level of the entries. Value \optvalue{true} is +% the same like \optvalue{2}, value \optvalue{false} is the same like +% \cs{maxdimen}. \changes{scrjura-v0.7}{2013/11/04}{usage of renewed +% interface with \cs{FamilyKeyState}} +% \changes{scrjura-v0.9a}{2015/03/09}{internal value storage} +% \begin{macro}{\if@juratotoc} +% \changes{scrjura-v0.6}{2011/09/29}{replaced by counter} +% \begin{counter}{juratoclevel} +% \changes{scrjura-v0.6}{2011/09/29}{definition moved} +% \changes{scrjura-v3.27}{2019/02/25}{removed} +% \begin{macro}{\toclevel@cpar} +% \changes{scrjura-v0.7}{2013/06/09}{new, because of \pkg{hyperref}} +% \changes{scrjura-v3.27}{2019/02/25}{handled by \pkg{tocbasic}} +% \begin{macrocode} +%<*options> +\KOMA@key{juratotoc}[true]{% + \KOMA@set@ifkey{juratotoc}{@tempswa}{#1}% + \ifx\FamilyKeyState\FamilyKeyStateProcessed + \if@tempswa + \DeclareTOCStyleEntry[level=2]{default}{cpar}% + \else + \DeclareTOCStyleEntry[level=\maxdimen]{default}{cpar}% + \fi + \else + \DeclareTOCStyleEntry[level=#1]{default}{cpar}% + \fi + \KOMA@kav@xreplacevalue{contract.sty}{juratotoc}{\cpartocdepth}% +} +\KOMA@kav@xadd{contract.sty}{juratotoc}{\cpartocdepth}% +%</options> +% \end{macrocode} +% \end{macro} +% \end{counter} +% \end{macro} +% \end{option} +% +% \begin{option}{juratocnumberwidth,juratocindent} +% \changes{scrjura-v0.6}{2011/09/29}{new} +% \changes{scrjura-v0.7}{2013/11/04}{usage of renewed interface with +% \cs{FamilyKeyState}} +% \changes{scrjura-v0.9a}{2015/03/09}{internal value storage} +% \changes{scrjura-v3.39}{2022/11/11}{initial dot in member argument of option storage +% commands removed} +% \begin{ilength}{\cpar@numberwidth,\cpar@indent} +% \changes{scrjura-v0.6}{2011/09/29}{new} +% \changes{scrjura-v3.27}{2019/02/25}{replaced by usage of \cs{DeclareTOCStyleEntry}} +% Indent and number width of the toc entries. +% \begin{description} +% \item[Todo:] Since we are using package \pkg{tocbasic} for the ToC entries +% these options (and lengths) are not needed any longer, but users should +% use \cs{DeclareTOCStyleEntry} to setup the number width and indent of the +% entries. +% \end{description} +% \begin{macrocode} +%<*options> +\KOMA@key{juratocnumberwidth}{% + \DeclareTOCStyleEntry[numwidth=#1]{default}{cpar}% + \FamilyKeyStateProcessed + \KOMA@kav@replacevalue{contract.sty}{juratocnumberwidth}{#1}% +} +\KOMA@kav@add{contract.sty}{juratocnumberwidth}{2em} +\KOMA@key{juratocindent}{% + \DeclareTOCStyleEntry[indent=#1]{default}{cpar}% + \FamilyKeyStateProcessed + \KOMA@kav@replacevalue{contract.sty}{juratocindent}{#1}% +} +\KOMA@kav@add{contract.sty}{juratocindent}{1.5em}% +%</options> +% \end{macrocode} +% \end{ilength} +% \end{option} +% +% \begin{option}{juratitlepagebreak} +% \changes{scrjura-v0.5b}{2010/04/05}{new} +% The options sets the boolean \cs{if@juratitlepagebreak}. +% \begin{macro}{\if@juratitlepagebreak, +% \@juratitlepagebreaktrue,\@juratitlepagebreakfalse} +% If the boolean is \cs{iftrue} page breaks inside clause headings are +% allowed (which is not recommended). +% \begin{description} +% \item[Todo:] Re-implementation either using a native key-value option (easy) +% or a new \pkg{scrbase} family. +% \end{description} +% \begin{macrocode} +%<*options> +\KOMA@ifkey{juratitlepagebreak}{@juratitlepagebreak} +%</options> +% \end{macrocode} +% \end{macro} +% \end{option} +% +% \begin{option}{parnumber} +% \changes{scrjura-v0.6}{2011/09/29}{new} +% \changes{scrjura-v0.6a}{2012/10/15}{value mistake message changed} +% \changes{scrjura-v0.7}{2013/11/04}{usage of renewed interface with +% \cs{FamilyKeyState}} +% \changes{scrjura-v0.9a}{2015/03/09}{internal value storage} +% \changes{scrjura-v3.28}{2019/11/18}{\cs{ifstr} renamed into \cs{Ifstr}} +% \changes{scrjura-v3.39}{2022/11/11}{initial dot in member argument of option storage +% commands removed} +% The options switches the (automatic) paragraph numbering. +% \begin{description} +% \item[Todo:] Re-implementation either using a native key-value option (easy) +% or a new \pkg{scrbase} family. +% \end{description} +% \begin{macrocode} +%<*options> +\newif\ifparnumber +\KOMA@key{parnumber}[true]{% + \Ifstr{#1}{auto}{% + \AutoPar + \FamilyKeyStateProcessed + \KOMA@kav@remove{contract.sty}{parnumber}{manual}% + \KOMA@kav@remove{contract.sty}{parnumber}{auto}% + \KOMA@kav@add{contract.sty}{parnumber}{auto}% + }{% + \Ifstr{#1}{manual}{% + \ManualPar + \FamilyKeyStateProcessed + \KOMA@kav@remove{contract.sty}{parnumber}{manual}% + \KOMA@kav@remove{contract.sty}{parnumber}{auto}% + \KOMA@kav@add{contract.sty}{parnumber}{manual}% + }{% + \KOMA@set@ifkey{parnumber}{parnumber}{#1}% + \KOMA@kav@replacebool{contract.sty}{parnumber}{parnumber}% + }% + }% +} +\KOMA@kav@add{contract.sty}{parnumber}{true} +\KOMA@kav@add{contract.sty}{parnumber}{auto} +%</options> +% \end{macrocode} +% \end{option} +% +% \begin{option}{paragraphmark,clausemark} +% \changes{scrjura-v0.9h}{2016/04/11}{\opt{paragraphmark} renamed to +% \opt{clausemark}} +% \changes{scrjura-v0.7}{2013/11/04}{usage of renewed interface with +% \cs{FamilyKeyState}} +% \changes{scrjura-v0.9a}{2015/03/09}{internal value storage} +% \changes{scrjura-v3.39}{2022/11/11}{initial dot in member argument of option +% storage commands removed} +% \begin{description} +% \item[Todo:] Re-implementation either using a native key-value option +% or a new \pkg{scrbase} family (easy). +% \end{description} +% \begin{option}{markright,markboth} +% \changes{scrjura-v0.7}{2013/11/04}{deprecated} +% \changes{scrjura-v3.39}{2022/11/16}{only with \KOMAScript~3} +% \begin{description} +% \item[Todo:] Remove deprecated options, because they need an internal +% \href{https://www.ctan.org/pkg/koma-script}{\KOMAScript} macro. +% \end{description} +% \begin{command}{\Clausemark} +% \changes{scrjura-v0.5e}{2011/08/31}{support for \cs{MakeMarkcase}} +% The options are used to activate either \cs{markright} or \cs{markboth} for +% clauses. \cs{Clausemark} expects not only the title but also the +% number. So it differs from, e.g., \cs{chaptermark}, which uses the counter +% automatically. But maybe I will change this some time. +% \begin{macrocode} +%<*options> +\newcommand*{\Clausemark}[1]{} +\KOMA@key{clausemark}{% + \begingroup + \KOMA@set@ncmdkey{clausemark}{@tempa}{% + {false}{0},{off}{0},{no}{0},% + {forceright}{1},% + {forceboth}{2},% + {right}{3},% + {both}{4}% + }{#1}% + \ifx\FamilyKeyState\FamilyKeyStateProcessed + \ifcase\number\@tempa + \endgroup + \let\Clausemark\@gobble + \or + \endgroup + \renewcommand*{\Clausemark}[1]{% + \markright{\csname MakeMarkcase\endcsname{##1}}}% + \or + \endgroup + \renewcommand*{\Clausemark}[1]{% + \markboth{\csname MakeMarkcase\endcsname{##1}}% + {\csname MakeMarkcase\endcsname{##1}}}% + \or + \endgroup + \renewcommand*{\Clausemark}[1]{% + \ifx + \@mkboth\@gobbletwo + \else + \markright{\csname MakeMarkcase\endcsname{##1}}% + \fi}% + \or + \endgroup + \renewcommand*{\Clausemark}[1]{% + \@mkboth{\csname MakeMarkcase\endcsname{##1}}% + {\csname MakeMarkcase\endcsname{##1}}}% + \else + \endgroup + \fi + \FamilyKeyStateProcessed + \else + \endgroup + \FamilyKeyStateUnknownValue + \fi + \KOMA@kav@xreplacevalue{contract.sty}{clausemark}{#1}% +} +\KOMA@kav@add{contract.sty}{clausemark}{false} +\@ifundefined{KOMA@DeclareDeprecatedOption}{}{% + \KOMA@DeclareDeprecatedOption[contract]{markright}{clausemark=forceright}% + \KOMA@DeclareDeprecatedOption[contract]{markboth}{clausemark=forceboth}% +} +\KOMA@key{paragraphmark}{% + \PackageWarningNoLine{contract}{% + You've used obsolete option `paragraphmark'.\MessageBreak + Usage of this option is deprecated.\MessageBreak + You should simply replace `paragraphmark'\MessageBreak + by `clausemark'% + }% + \KOMAExecuteOptions[.contract.sty]{clausemark=#1}% +} +%</options> +% \end{macrocode} +% \end{command} +% \end{option} +% \end{option} +% +% \begin{option}{ref} +% \changes{scrjura-v0.5d}{2010/06/07}{new values \optvalue{nopar}, +% \optvalue{nosentence}, \optvalue{OnlyParagraph}} +% \changes{scrjura-v0.7}{2013/11/04}{usage of renewed interface with +% \cs{FamilyKeyState}} +% \changes{scrjura-v0.9a}{2015/03/09}{internal value storage} +% \changes{scrjura-v3.39}{2022/11/11}{initial dot in member argument of option +% storage commands removed} +% \begin{description} +% \item[Todo:] Re-implementation either using a native key-value option +% or a new \pkg{scrbase} family (easy). +% \end{description} +% \begin{option}{parcitename,sentencecitename} +% \changes{scrjura-v0.5d}{2010/06/07}{deprecated} +% \changes{scrjura-v3.39}{2022/11/16}{only with \KOMAScript~3} +% The formatting of the references of paragraphs and sentences. There are a +% long a short and a numeric form. +% \begin{description} +% \item[Todo:] Remove deprecated options, because they need an internal +% \href{https://www.ctan.org/pkg/koma-script}{\KOMAScript} macro. +% \end{description} +% \begin{macro}{\parcite@format,\sentencecite@format} +% Default is the long form. Corresponding values of the two helper macros are: +% 0 = long, 1 = short, 2 = numerical, -1 = nothing. +% \begin{macrocode} +%<*options> +\newcommand*{\parcite@format}{0} +\newcommand*{\sentencecite@format}{0} +% \end{macrocode} +% \end{macro} +% The options can be used to change the default. +% \begin{macrocode} +\KOMA@key{ref}{% + \begingroup + \KOMA@set@ncmdkey{ref}{@tempa}{% + {parlong}{1},{longpar}{1},{ParL}{1},% + {parshort}{2},{shortpar}{2},{ParS}{2},% + {parnumeric}{3},{numericpar}{3},{ParN}{3},% + {paroff}{4},{nopar}{4},% + {sentencelong}{10},{longsentence}{10},{SentenceL}{10},% + {sentenceshort}{20},{shortsentence}{20},{SentenceS}{20},% + {sentencenumeric}{30},{numericsentence}{30},{SentenceN}{30},% + {sentenceoff}{40},{nosentence}{40},% + {long}{11},% + {short}{22},% + {numeric}{33},% + {paragraphonly}{44},{onlyparagraph}{44},% + {ParagraphOnly}{44},{OnlyParagraph}{44}% + }{#1}% + \ifx\FamilyKeyState\FamilyKeyStateProcessed + \aftergroup\FamilyKeyStateProcessed + \@tempcnta=\@tempa\relax + \@tempcntb=\z@ + \@whilenum \@tempcnta>9 \do{% + \advance\@tempcnta -10\relax + \advance\@tempcntb \@ne\relax + }% + \ifcase \@tempcnta + \or + \aftergroup\def\aftergroup\parcite@format + \aftergroup{\aftergroup0\aftergroup}% + \or + \aftergroup\def\aftergroup\parcite@format + \aftergroup{\aftergroup1\aftergroup}% + \or + \aftergroup\def\aftergroup\parcite@format + \aftergroup{\aftergroup2\aftergroup}% + \or + \aftergroup\def\aftergroup\parcite@format + \aftergroup{\aftergroup-\aftergroup1\aftergroup}% + \fi + \ifcase \@tempcntb + \or + \aftergroup\def\aftergroup\sentencecite@format + \aftergroup{\aftergroup0\aftergroup}% + \or + \aftergroup\def\aftergroup\sentencecite@format + \aftergroup{\aftergroup1\aftergroup}% + \or + \aftergroup\def\aftergroup\sentencecite@format + \aftergroup{\aftergroup2\aftergroup}% + \or + \aftergroup\def\aftergroup\sentencecite@format + \aftergroup{\aftergroup-\aftergroup1\aftergroup}% + \fi + \else + \aftergroup\FamilyKeyStateUnknownValue + \fi + \endgroup + \ifx\FamilyKeyState\FamilyKeyStateProcessed + \KOMA@kav@removekey{contract.sty}{ref}% + \ifcase\parcite@format + \KOMA@kav@add{contract.sty}{ref}{parlong}% + \or + \KOMA@kav@add{contract.sty}{ref}{parshort}% + \or + \KOMA@kav@add{contract.sty}{ref}{parnumeric}% + \or + \KOMA@kav@add{contract.sty}{ref}{paroff}% + \fi + \ifcase\sentencecite@format + \KOMA@kav@add{contract.sty}{ref}{sentencelong}% + \or + \KOMA@kav@add{contract.sty}{ref}{sentenceshort}% + \or + \KOMA@kav@add{contract.sty}{ref}{sentencenumeric}% + \or + \KOMA@kav@add{contract.sty}{ref}{sentenceoff}% + \fi + \fi +} +\KOMA@kav@add{contract.sty}{ref}{parlong}% +\KOMA@kav@add{contract.sty}{ref}{sentencelong}% +\@ifundefined{KOMA@DeclareDeprecatedOption}{}{% + \KOMA@DeclareDeprecatedOption[contract]{parcitename}{ref=parlong} + \KOMA@DeclareDeprecatedOption[contract]{sentencecitename}{ref=sentencelong} +} +%</options> +% \end{macrocode} +% \end{option} +% \end{option} +% +% Execute the options. +% \begin{macrocode} +%<*postoptions> +\KOMAProcessOptions\relax +%</postoptions> +% \end{macrocode} +% +% \section{Deprecated Paragraph Commands} +% +% All these commands are deprecated and now generate error messages instead of +% code. +% +% \begin{command}{\Paragraph,\SubParagraph,\refParagraph,\refParagraphN, +% \DeprecatedParagraph,\ParagraphCompatibilityHacks} +% \changes{scrjura-v1.0}{2014/11/22}{throw error for deprecated commands but +% only once} +% \begin{description} +% \item[Todo:] Remove deprecated commands, because they already throw errors +% for about nine years. +% \end{description} +% \begin{macrocode} +%<*body> +\providecommand*{\DeprecatedParagraph}{% + \PackageError{contract}{modification of old document needed}{% + It seem that this document was made for scrjura up to version + 0.7a.\MessageBreak + Since scrjura version 0.9 \string\Paragraph, \string\SubParagraph, and all + depending\MessageBreak + commands, options, and counters have been renamed.\MessageBreak + You should replace the terms `Paragraph' and `paragraph` by `Clause` + and\MessageBreak + `clause` if they are part of the name of a contract feature, otherwise + this\MessageBreak + document may produce severall additional error messages and maybe the + wrong\MessageBreak + result. Sorry for the inconvenience.% + }% + \ParagraphCompatibilityHacks +} +\newcommand*{\ParagraphCompatibilityHacks}{% + \PackageWarning{contract}{compatibility hacks for `\string\Paragraph' + executed.\MessageBreak + There is no support for documents using these hacks!\MessageBreak + There is no warranty for real compatibility!\MessageBreak + Even if the LaTeX run of the document doesn't report\MessageBreak + any error, the result may be completely wrong.\MessageBreak + Therefore it is recommended to solve the problem,\MessageBreak + instead of trying to work around using the\MessageBreak + compatibility hacks% + }% + \gdef\Paragraph{\Clause}% + \gdef\SubParagraph{\SubClause}% + \gdef\c@Paragraph{\c@Clause}% + \gdef\cl@Paragraph{\cl@Clause}% + \gdef\c@SubParagraph{\c@SubClause}% + \gdef\cl@SubParagraph{\cl@SubClause}% + \gdef\theParagraph{\theClause}% + \gdef\theSubParagraph{\theSubClause}% + \gdef\refParagraph{\refClause}% + \gdef\refParagraphN{\refClauseN}% + \aliaskomafont{Paragraph}{Clause}% + \scr@ifundefinedorrelax{Paragraphmark}{}{% + \global\let\Clausemark\Paragraphmark + }% +} +\providecommand*{\Paragraph}{\DeprecatedParagraph\Paragraph} +\providecommand*{\SubParagraph}{\DeprecatedParagraph\SubParagraph} +\providecommand*{\refParagraph}{\DeprecatedParagraph\refParagraph} +\providecommand*{\refParagraphN}{\DeprecatedParagraph\refParagraphN} +%</body> +% \end{macrocode} +% \end{command} +% +% +% \section{Contracts, Clauses, Paragraphs and Sentences} +% +% +% \begin{macro}{\contract@env@type} +% \changes{scrjura-v0.5d}{2010/04/28}{new} +% \changes{scrjura-v0.7b}{2014/11/03}{\cs{jura@env@type} renamed} +% \changes{v0.0.1}{2023-10-10}{\cs{scrjura@env@type} renamed} +% This macro shows the currently active \pkg*{contract} environment. +% \begin{macrocode} +%<*body> +\newcommand*{\contract@env@type}{} +%</body> +% \end{macrocode} +% \end{macro} +% +% +% \begin{command}{\ellipsispar} +% \changes{scrjura-v0.7}{2013/05/02}{new} +% \changes{scrjura-v0.7b}{2014/11/03}{\cs{thecontractAbsoluteClause} made more +% flexible} +% \changes{scrjura-v0.9g}{2016/03/25}{write to \file{aux}-file only \cs{if@filesw}} +% \begin{command}{\parellipsis} +% \changes{scrjura-v0.7}{2013/05/02}{new} +% Count one or more paragraphs given by the optional argument but print +% \cs{parellipsis} instead of a real paragraph. The default is either +% \cs{dots} or \cs{textellipsis} if available. +% \changes{scrjura-v0.7}{2013/05/02}{new} +% \begin{macrocode} +%<*body> +\newcommand*{\ellipsispar}[1][1]{% + \begingroup + \KOMAoptions{parnumber=manual}\parellipsis\par + \addtocounter{par}{#1}% + \if@filesw + \protected@write\@auxout{}{% + \string\newmaxpar{\contract@env@type}% + {\csname the\contract@env@type + AbsoluteClause\endcsname}% + {\thepar}% + }% + \fi + \endgroup + \addtocounter{par}{-1}\refstepcounter{par}% + \ignorespaces +} +\newcommand*{\parellipsis}{% + \scr@ifundefinedorrelax{textellipsis}{\dots}{\textellipsis}% +} +%</body> +% \end{macrocode} +% \end{command} +% \end{command} +% +% \begin{environment}{contract} +% \changes{scrjura-v0.5d}{2010/04/28}{missing error message added} +% \changes{scrjura-v0.5d}{2010/04/28}{not self-redefining any more} +% \changes{scrjura-v0.5d}{2010/04/28}{defining \cs{jura@env@type}} +% \changes{scrjura-v3.36}{2022/01/25}{defining an environment (because of hooks)} +% \begin{macro}{\if@contract@skiphyperref} +% \changes{v0.0.1}{2023-10-10}{\cs{if@scrjura@skiphyperref} renamed} +% \begin{counter}{contractClause} +% \begin{command}{\thecontractClause} +% \changes{scrjura-v0.9b}{2015/05/01}{must use counter \cnt{Clause} instead of +% \cnt{contractClause}} +% \begin{macro}{\contract@Clauseformat} +% \begin{command}{\Clauseformat,\paragraphformat} +% \changes{scrjura-v0.6b}{2013/04/16}{redefinition of \cs{paragraphformat}} +% \begin{counter}{contractSubClause} +% \changes{scrjura-v0.9b}{2015/05/01}{must use counter \cnt{SubClause} instead of +% \cnt{contractSubClause}} +% \begin{command}{\thecontractSubClause} +% \begin{counter}{contractAbsoluteClause} +% \changes{scrjura-v0.7}{2013/04/18}{new (internal) counter for all clauses to make +% it possible to reset the users clause counter} +% It is not allowed to nest the \env{contract} environments, but you can end +% them and start them new. But this would not end the contract and start a new +% contract but only delay it for some other code. +% \begin{macrocode} +%<*body> +\newenvironment{contract}{% + \ifx\contract@env@type\@empty + \let\@doendpe\contract@doendpe + \let\Clause\contract@paragraph + \let\c@Clause\c@contractClause + \edef\cl@Clause{\cl@Clause\cl@contractClause}% + \let\SubClause\contract@subparagraph + \let\c@SubClause\c@contractSubClause + \edef\cl@SubClause{\cl@SubClause\cl@contractSubClause}% + \let\Sentence\contract@sentence + \renewcommand*{\contract@env@type}{contract}% + \aliaskomafont{Clause}{contract.Clause}% + \else + \PackageError{contract}{nested `contract` detected}{% + You may not use a `contract' environment inside\MessageBreak + a `\contract@env@type' environment or after loading\MessageBreak + package `contract' with option `\contract@env@type'!}% + \fi +}{} +\let\if@contract@skiphyperref\iftrue +\let\cl@Clause\@empty +\let\cl@SubClause\@empty +\newcounter{contractClause} +\renewcommand*{\thecontractClause}{% + {\contract@Clauseformat{\arabic{Clause}}}} +\DeclareRobustCommand*{\contract@Clauseformat}[1]{\Clauseformat{#1}} +\newcommand*{\Clauseformat}[1]{\S~#1} +\newcounter{contractSubClause} +\@addtoreset{SubClause}{Clause} +\renewcommand*{\thecontractSubClause}{% + {\theClause\alph{SubClause}}} +\newcounter{contractAbsoluteClause} +%</body> +% \end{macrocode} +% \end{counter} +% \end{command} +% \end{counter} +% \end{command} +% \end{macro} +% \end{command} +% \end{counter} +% \end{macro} +% \end{environment} +% +% \begin{command}{\DeclareNewJuraEnvironment} +% \changes{scrjura-v0.9}{2014/11/12}{new} +% \changes{scrjura-v0.9h}{2016/04/12}{\cs{@ifnextchar} replaced by +% \cs{kernel@ifnextchar}} +% Using \cs{@defjuraenvironment} to define a new juristic environment. This +% can be done only in document preamble. +% \begin{macrocode} +%<*body> +\newcommand*{\DeclareNewJuraEnvironment}[1]{% + \@ifundefined{#1}{\expandafter\let\csname #1\expandafter\endcsname + \csname end#1\endcsname}{}% + \@ifundefined{#1}{\let\reserved@defjuraenvironment\@defjuraenvironment}{% + \PackageError{contract}{ignorring declaration of `#1'}{% + You've tried to declare jura environment `#1', but + environment\MessageBreak + `#1' or command + \expandafter\string\csname #1\endcsname\space or + \expandafter\string\csname end#1\endcsname\MessageBreak + already exists.\MessageBreak + Declaration will be ignored}% + \long\def\reserved@defjuraenvironment##1[##2]##3##4{}% + }% + \kernel@ifnextchar [%] + {\reserved@defjuraenvironment{#1}}{\reserved@defjuraenvironment{#1}[]}% +} +\@onlypreamble\DeclareNewJuraEnvironment +% \end{macrocode} +% \begin{macro}{\@defjuraenvironment} +% \changes{scrjura-v0.9}{2014/11/04}{new} +% \changes{scrjura-v3.25}{2017/12/08}{new command options \texttt{ClauseFont}} +% \changes{scrjura-v3.25}{2017/12/08}{\cs{reserved@defjuraenvironment} set +% back to \cs{relax}} +% \changes{scrjura-v3.25}{2017/12/08}{using local instead of global command +% options} +% This command is used to define a new \pkg*{contract} environment like +% \env{contract}. Several options are provided (see the user manual for +% details). +% \begin{macrocode} +\DefineFamily{KOMAarg} +\DefineFamilyMember{KOMAarg} +\newcommand{\@defjuraenvironment}{} +\long\def\@defjuraenvironment#1[#2]#3#4{% + \let\reserved@defjuraenvironment\relax +% \end{macrocode} +% The counters: +% \begin{macrocode} + \newcounter{#1Clause}% + \newcounter{#1AbsoluteClause}% + \newcounter{#1SubClause}% + \FamilyCSKey[.contract.sty]{KOMAarg}{Clause}{#1@Clause}% + \FamilyCSKey[.contract.sty]{KOMAarg}{SubClause}{#1@SubClause}% + \FamilyCSKey[.contract.sty]{KOMAarg}{Sentence}{#1@Sentence}% + \DefineFamilyKey[.contract.sty]{KOMAarg}{ClauseNumberFormat}{% + \expandafter\def\csname #1@Clauseformat \endcsname####1{##1{####1}}% + \expandafter\edef\csname #1@Clauseformat\endcsname{% + \noexpand\protect\expandafter\noexpand\csname #1@Clauseformat \endcsname + }% + \FamilyKeyStateProcessed + } + \DefineFamilyKey[.contract.sty]{KOMAarg}{ClauseFont}{% + \IfExistskomafont{#1.Clause}{% + \IfIsAliaskomafont{#1.Clause}{% + \expandafter\let\csname scr@fnt@instead@#1.Clause\endcsname\relax + \newkomafont{#1.Clause}{##1}% + }{\setkomafont{#1.Clause}{##1}}% + }{% + \newkomafont{#1.Clause}{##1}% + }% + } + \FamilyExecuteOptions[.contract.sty]{KOMAarg}{#2}% + \RelaxFamilyKey[.contract.sty]{KOMAarg}{ClauseFont}% + \RelaxFamilyKey[.contract.sty]{KOMAarg}{ClauseNumberFormat}% + \RelaxFamilyKey[.contract.sty]{KOMAarg}{Sentence}% + \RelaxFamilyKey[.contract.sty]{KOMAarg}{SubClause}% + \RelaxFamilyKey[.contract.sty]{KOMAarg}{Clause}% + \@ifundefined{#1@Clauseformat}{% + \expandafter\DeclareRobustCommand\expandafter*% + \csname #1@Clauseformat\endcsname[1]{\Clauseformat{##1}}% + }{}% +% \end{macrocode} +% \changes{scrjura-v0.9c}{2015/05/13}{defining \cs{the\dots Clause}} +% \changes{scrjura-v0.9f}{2016/02/24}{\cs{protect}\cs{@nameuse} instead of +% \cs{csname}\dots\cs{endcsname}} +% \begin{macrocode} + \expandafter\renewcommand\expandafter*\csname the#1Clause\endcsname{% + \protect\@nameuse{#1@Clauseformat}{\arabic{#1Clause}}}% +% \end{macrocode} +% Environment: +% \begin{macrocode} + \newenvironment{#1}{% + \par + \ifx\contract@env@type\@empty + \edef\contract@env@type{#1}% + \let\@doendpe\contract@doendpe + \expandafter\let\expandafter\c@Clause\csname c@#1Clause\endcsname + \edef\cl@Clause{\cl@Clause\csname cl@#1Clause\endcsname}% + \expandafter\let\expandafter\c@SubClause + \csname c@#1SubClause\endcsname + \edef\cl@SubClause{\cl@SubClause + \csname cl@#1SubClause\endcsname}% + \@ifundefined{#1@Clause}{% + \let\Clause\contract@paragraph + }{% + \expandafter\let\expandafter\Clause + \csname #1@Clause\endcsname + }% + \@ifundefined{#1@SubClause}{% + \let\SubClause\contract@subparagraph + }{% + \expandafter\let\expandafter\SubClause + \csname #1@SubClause\endcsname + }% + \@ifundefined{#1@Sentence}{% + \let\Sentence\contract@sentence + }{% + \expandafter\let\expandafter\Sentence\csname #1@Sentence\endcsname + }% + \@ifundefined{\contract@env@type @everypar}{% + \expandafter\let + \csname \contract@env@type @everypar\endcsname + \contract@everypar + }{}% +% \end{macrocode} +% Font alias for \fnt{Clause}. If neither a font not an alias is defined for +% the new environment \fnt{contract.Clause} is used. +% \changes{scrjura-v3.25}{2017/12/08}{Font alias fixed} +% \begin{macrocode} + \IfExistskomafont{#1.Clause}{% + \IfIsAliaskomafont{#1.Clause}{% + \aliaskomafont{Clause}{\csname scr@fnt@instead@#1.Clause\endcsname}% + }{% + \aliaskomafont{Clause}{#1.Clause}% + }% + }{% + \aliaskomafont{Clause}{contract.Clause}% + }% + #3% + \else + \PackageError{contract}{nested contract environments detected}{% + You must not use a `#1' environment inside\MessageBreak + a `\contract@env@type' environment or after loading\MessageBreak + package `contract' with option `\contract@env@type'!}% + \fi + }{% + #4% + \par + }% +} +%</body> +% \end{macrocode} +% \end{macro}%^^A \@dewjuraenvironment +% \end{command}%^^A \DeclareNewJuraEnvironment +% +% \begin{macro}{\contract@paragraph} +% This is the \cs{Clause} used by contracts. A contract consists (usually) of +% several clauses. Each clause has optional elements managed by +% \meta{key}=\meta{value} pairs handled by \pkg{scrkbase} and last but not +% least by \pkg{keyval}. +% \begin{option}{title,head,nohead} +% \begin{option}{entry,noentry} +% \changes{scrjura-v0.6}{2011/09/30}{deprecated} +% \begin{option}{tocentry,notocentry} +% \changes{scrjura-v0.6}{2011/09/30}{new} +% Title, running head and toc entry of the clause. The title is the default +% for running head and toc entry. But you can also use an empty value for +% each of them or use the \texttt{no\dots} options to switch them off. +% \begin{macrocode} +%<*body> +\define@key{contract}{title}{% + \def\contract@title{#1}% + \ifx\contract@entry\relax\def\contract@entry{\contract@title}\fi + \ifx\contract@head\relax\def\contract@head{\contract@title}\fi +} +\define@key{contract}{entry}{% + \PackageWarning{contract}{deprecated option `entry'.\MessageBreak + You should use option `tocentry' instead of\MessageBreak + option `entry'% + }% + \def\contract@entry{#1}} +\define@key{contract}{tocentry}{\def\contract@entry{#1}} +\define@key{contract}{noentry}[]{% + \PackageWarning{contract}{deprecated option `noentry'.\MessageBreak + You should use option `notocentry' instead of\MessageBreak + option `noentry'% + }% + \let\contract@entry\relax} +\define@key{contract}{notocentry}[]{\let\contract@entry\relax} +\define@key{contract}{head}{\def\contract@head{#1}} +\define@key{contract}{nohead}[]{\let\contract@head\relax} +% \end{macrocode} +% \end{option} +% \end{option} +% \end{option} +% \begin{option}{number} +% The number can be changed manually. But clauses without numbers are not +% allowed. So if you use an empty value, the number is automatically set. +% \begin{macrocode} +\define@key{contract}{number}{\def\contract@number{#1}} +% \end{macrocode} +% \end{option} +% \begin{macro}{\contract@preskip,\contract@postskip} +% \begin{option}{preskip,postskip} +% The options are used to specify the distance before and after the +% clause. The preset value of these options are the global settings done by +% |\setkeys{contract}{…}|. +% \begin{macrocode} +\newcommand*{\contract@preskip}{2\baselineskip} +\newcommand*{\contract@postskip}{\baselineskip} +\define@key{contract}{preskip}{\def\contract@preskip{#1}} +\define@key{contract}{postskip}{\def\contract@postskip{#1}} +% \end{macrocode} +% \end{option} +% \end{macro} +% \begin{option}{dummy} +% The option switches the boolean \cs{ifcontract@dummy}. +% \begin{macro}{\ifcontract@dummy} +% If the boolean is \cs{iftrue} the clause will not be printed. But note: you +% cannot use this to remove the paragraphs or sentences of the clause. But you +% can use this option to generate holes in the numbering without manually +% manipulating the counters. +% \begin{macrocode} +\newif\ifcontract@dummy +\define@key{contract}{dummy}[true]{\csname contract@dummy#1\endcsname} +% \end{macrocode} +% \end{macro} +% \end{option} +% \begin{fontelement}{contract.Clause} +% \begin{macro}{\contract@paragraph@font} +% \changes{scrjura-v3.25}{2017/12/08}{using element \fnt{Clause} instead of +% \fnt{contract.Clause}} +% Correctly this macro should be named \cs{contract@paragraph@format}. But it +% is already used by some users for ugly tricks. So I will not rename it to +% avoid problems for existing documents. Additionally it would be better to +% use a new macro per environment. However the same reason not to change this. +% \begin{macrocode} +\newkomafont{contract.Clause}{\sffamily\bfseries\large} +\newcommand*{\contract@paragraph@font}{\usekomafont{Clause}% + \@hangfrom} +% \end{macrocode} +% \end{macro} +% \end{fontelement} +% \begin{counter}{@AbsClause} +% \begin{macro}{\theH@AbsClause} +% \changes{scrjura-v3.41}{2023/06/24}{Ulrike Fischer requested to use \cs{def} instead +% of \cs{newcommand*}} +% \begin{command}{\theHClause,\theHSubClause} +% \changes{scrjura-v3.41}{2023/06/24}{Ulrike Fischer requested to use \cs{def} instead +% of \cs{newcommand*}} +% \begin{macrocode} +% Here we have some not good tested code for \pkg{hyperref}. +\newcounter{@AbsClause} +\def\theH@AbsClause{P-\arabic{@AbsClause}} +\def\theHClause{\theH@AbsClause} +\def\theHSubClause{\theH@AbsClause} +% \end{macrocode} +% \end{command} +% \end{macro} +% \end{counter} +% For the headings we use manual paragraph numbering, because we don't want +% any paragraph numbering inside the heading. After initializing the options +% they are processed. +% \changes{scrjura-v0.7}{2013/04/18}{increase counter +% \cnt{contractAbsoluteClause}} +% \changes{scrjura-v0.7b}{2014/11/03}{more flexible +% \cnt{\meta{environment}AbsoluteClause}} +% \changes{v0.0.2}{2024/01/23}{the argument is optional} +% \begin{macrocode} +\NewDocumentCommand\contract@paragraph {o} {% + \stepcounter{\contract@env@type AbsoluteClause}% + \ManualPar\parnumbertrue + \let\contract@title\relax + \let\contract@entry\relax + \let\contract@head\relax + \let\contract@number\relax + \contract@dummyfalse + \IfValueT{#1}{\setkeys{contract}{#1}}% +% \end{macrocode} +% Unless this is a dummy clause, the headings will be initialized and vertical +% skips will be done. +% \changes{scrjura-v0.6a}{2012/10/08}{missing \cs{par} added} +% \begin{macrocode} + \ifcontract@dummy\else + \par + \@afterindentfalse + \addvspace{\contract@preskip}% + \fi +% \end{macrocode} +% If there isn't a manual number, we use the next number. If there is a manual +% number, this number is printed and we take care that labels and +% \pkg{hyperref} also use the manual number. +% \changes{scrjura-v0.6b}{2013/04/16}{using \cs{contract@Clauseformat} for manual +% numbers too} +% \changes{scrjura-v0.9c}{2015/05/13}{\cs{thecontractClause} replaced by +% environment-dependent macro} +% \begin{macrocode} + \ifx\contract@number\relax + \let\p@Clause\@empty + \expandafter\let\expandafter\theClause + \csname the\contract@env@type Clause\endcsname + \refstepcounter{Clause}% + \else + \begingroup + \let\@elt\@stpelt + \cl@Clause + \endgroup +% \end{macrocode} +% \changes{scrjura-v0.9f}{2016/02/24}{\cs{protect}\cs{@nameuse} instead of +% \cs{csname}\dots\cs{endcsname}} +% \changes{scrjura-v3.41}{2023/06/24}{update of \cs{@currentcounter} added} +% \begin{macrocode} + \protected@edef\theClause{% + \protect\@nameuse{\contract@env@type @Clauseformat}{\contract@number}% + }% + \protected@edef\@currentlabel{\theClause}% + \def\@currentcounter{Clause}% + \fi + \stepcounter{@AbsClause}% + \begingroup\expandafter\expandafter\expandafter\endgroup + \expandafter\ifx\csname if@skiphyperref\endcsname\relax + \else + \expandafter\let\csname if@contract@skiphyperref\expandafter\endcsname + \csname if@skiphyperref\endcsname + \fi + \if@contract@skiphyperref\else + \hyper@refstepcounter{@AbsClause}% +%<+trace> \typeout{absolute Number: \the@AbsClause^^JLabel: `\@currentHref'}% + \fi +% \end{macrocode} +% For simplification we use the code of clauses for sub-clauses. +% \begin{macrocode} + \let\theSubClause\theClause +% \end{macrocode} +% Unless for dummy clauses, the heading is printed, the toc entry is done +% and also the running head. +% \changes{scrjura-v0.7}{2013/04/28}{distance behind the number is part of the number} +% \changes{scrjura-v0.9i}{2017/02/23}{usage of \cs{ext@toc}} +% \begin{macrocode} + \ifcontract@dummy\else + \begingroup + \if@juratitlepagebreak\else\interlinepenalty\@M\fi + \contract@paragraph@font{\theClause + \ifx\contract@title\relax\else\enskip\fi}% + \contract@title + \ifx\contract@entry\relax\else + \expandafter\addxcontentsline\expandafter{\ext@toc}% + {cpar}[\theClause]\contract@entry + \addxcontentsline{cpa}{cpar}[\theClause]\contract@entry + \fi + \ifx\contract@head\relax\else + \expandafter\Clausemark\expandafter{% + \expandafter\theSubClause\expandafter\enskip\contract@head}% + \fi + \par + \endgroup\nobreak\vskip\contract@postskip +% \end{macrocode} +% Last but not least paragraph numbering is initialized. +% \begin{macrocode} + \contract@afterheading + \fi +} +%</body> +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\contract@subparagraph} +% \changes{scrjura-v0.6a}{2012/10/08}{missing \cs{par} added} +% \changes{scrjura-v0.7}{2013/04/18}{increasing counter +% \cnt{contractAbsoluteClause}} +% \changes{scrjura-v0.7}{2013/04/28}{distance after number} +% \changes{scrjura-v0.9i}{2017/02/23}{usage of \cs{ext@toc}} +% \changes{scrjura-v3.41}{2023/06/24}{update of \cs{@currentcounter} added} +% \changes{v0.0.2}{2024/01/23}{the argument is optional} +% This is almost the same like \cs{contract@paragraph}. +% \begin{macrocode} +%<*body> +\NewDocumentCommand \contract@subparagraph {o}{% + \stepcounter{\contract@env@type AbsoluteClause}% + \ManualPar\parnumbertrue + \let\contract@title\relax + \let\contract@entry\relax + \let\contract@head\relax + \let\contract@number\relax + \contract@dummyfalse + \IfValueT{#1}{\setkeys{contract}{#1}}% + \ifcontract@dummy\else + \par + \@afterindentfalse + \vskip\contract@preskip + \fi + \ifx\contract@number\relax + \let\p@SubClause\@empty + \let\theSubClause\thecontractSubClause + \refstepcounter{SubClause}% + \else + \begingroup + \let\@elt\@stpelt + \cl@SubClause + \endgroup + \protected@edef\theSubClause{\theClause\contract@number}% + \protected@edef\@currentlabel{\theSubClause}% + \def\@currentcounter{SubClause}% + \fi + \stepcounter{@AbsClause}% + \begingroup\expandafter\expandafter\expandafter\endgroup + \expandafter\ifx\csname if@skiphyperref\endcsname\relax + \else + \expandafter\let\csname if@contract@skiphyperref\expandafter\endcsname + \csname if@skiphyperref\endcsname + \fi + \if@contract@skiphyperref\else + \hyper@refstepcounter{@AbsClause}% +%<+trace> \typeout{absolute Number: \the@AbsClause^^JLabel: `\@currentHref'}% + \fi + \ifcontract@dummy\else + \begingroup + \if@juratitlepagebreak\else\interlinepenalty\@M\fi + \contract@paragraph@font{\theSubClause + \ifx\contract@title\relax\else\enskip\fi}% + \contract@title + \ifx\contract@entry\relax\else + \expandafter\addxcontentsline\expandafter{\ext@toc}% + {cpar}[\theSubClause]\contract@entry + \addxcontentsline{cpa}{cpar}[\theSubClause]\contract@entry + \fi + \ifx\contract@head\relax\else + \expandafter\Clausemark\expandafter{% + \expandafter\theSubClause\expandafter\enskip\contract@head}% + \fi + \par + \endgroup + \nobreak\vskip\contract@postskip + \contract@afterheading + \fi +} +%</body> +% \end{macrocode} +% \end{macro} +% +% \begin{command}{\AutoPar,\ManualPar} +% Switching between automatic or manual paragraph numbers for all +% \pkg*{contract} environments. +% \begin{macrocode} +%<*body> +\newcommand*{\AutoPar}{% + \expandafter\let\expandafter\contract@used@everypar + \csname \contract@env@type @everypar\endcsname +} +\newcommand*{\ManualPar}{% + \let\contract@used@everypar\relax +} +%</body> +% \end{macrocode} +% \end{command} +% +% \begin{macro}{\contract@afterheading} +% \changes{scrjura-v0.7b}{2014/11/03}{\cs{jura@afterheading} renamed} +% \changes{scrjura-v0.7b}{2014/11/03}{no argument} +% \changes{scrjura-v3.27}{2019/02/25}{\cs{CheckCommand} for \cs{@afterheading}} +% \changes{v0.0.1}{2023-10-10}{\cs{scrjura@afterheading} renamed} +% Similar to \cs{afterheading} but with automatic paragraph numbers. +% \begin{description} +% \item[ToDo:] Test if this can be done using \LaTeX{} hooks, depending on the +% \LaTeX{} release. +% \end{description} +% \begin{macrocode} +%<*body> +\CheckCommand*{\@afterheading}{% + \@nobreaktrue + \everypar{% + \if@nobreak + \@nobreakfalse + \clubpenalty \@M + \if@afterindent \else + {\setbox\z@\lastbox}% + \fi + \else + \clubpenalty \@clubpenalty + \everypar{}% + \fi}% +} +\newcommand*{\contract@afterheading}{% + \@nobreaktrue + \everypar{% + \if@nobreak + \@nobreakfalse + \clubpenalty \@M + \if@afterindent \else + {\setbox\z@\lastbox}% + \fi + \else + \clubpenalty \@clubpenalty + \everypar{% + \contract@used@everypar + }% + \fi + \contract@used@everypar + }% + \AutoPar +} +% \end{macrocode} +% \begin{macro}{\contract@used@everypar} +% \changes{scrjura-v0.7b}{2014/11/03}{\cs{jura@everypar} renamed} +% \changes{v0.0.1}{2023-10-10}{\cs{scrjura@everypar} renamed} +% The macro to be used at the very beginning of every paragraph to add the +% number. To be used only inside \pkg*{contract} environments, so empty +% outside. +% \begin{macrocode} +\newcommand*{\contract@used@everypar}{} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\@doendpe} +% \LaTeX{} used this macro, to reset all paragraph actions at the end of +% environments. To avoid unwanted switching-off of the paragraph number it +% will be reinitialized. +% \begin{macro}{\contract@doendpe} +% \changes{v0.0.1}{2023-10-10}{\cs{scrjura@doendpe} renamed} +% \begin{macro}{\IncludeInRelease} +% \changes{scrjura-v0.9e}{2015/11/03}{used temporary} +% \changes{scrjura-v3.28}{2019/11/18}{\cs{ifstr} renamed into \cs{Ifstr}} +% \begin{macro}{\@gobble@IncludeInRelease} +% \changes{scrjura-v0.9e}{2015/11/03}{used temporary} +% \begin{macro}{\EndIncludeInRelease} +% \changes{scrjura-v0.9e}{2015/11/03}{used temporary} +% From \LaTeX{} 2015/01/01 a different definition of \cs{@doendpe} is used. So +% we also have to use different versions depending on the release. We do so +% with some tricks. Maybe this should be replaced by usage of +% \cs{IfLTXAtLeastTF} from already loaded \pkg{scrbase}. +% \begin{description} +% \item[Todo:] Using \cs{everypar} is evil and should be replaced by using a +% generic paragraph hook. +% \end{description} +% \begin{macrocode} +\providecommand*{\IncludeInRelease}[3]{% + \PackageInfo{contract}{temporary definition of \string\IncludeInRelease}% + \Ifstr{#1}{0000/00/00}{% + \let\IncludeInRelease\@undefined + \def\EndIncludeInRelease{\let\EndIncludeInRelease\@undefined}% + }{% + \let\EndIncludeInRelease\relax + \long\def\@gobble@IncludeInRelease##1\EndIncludeInRelease{% + \let\@gobble@IncludeInRelease\@undefined + }% + \expandafter\@gobble@IncludeInRelease + }% +} +\IncludeInRelease{2015/01/01}{\@doendpe}{clubpenalty fix} +\CheckCommand*\@doendpe{\@endpetrue + \def\par{\@restorepar + \clubpenalty\@clubpenalty + \everypar{}\par\@endpefalse}\everypar + {{\setbox\z@\lastbox}% + \everypar{}\@endpefalse}} +\newcommand*{\contract@doendpe}{% + \@endpetrue + \def\par{% + \@restorepar + \clubpenalty\@clubpenalty + \everypar{% + \csname contract@used@everypar\endcsname + }% + \par\@endpefalse + }% + \everypar{% + {\setbox\z@\lastbox}\everypar{% + \csname contract@used@everypar\endcsname + }% + \@endpefalse + }% +} +\EndIncludeInRelease +\IncludeInRelease{0000/00/00}{\@doendpe}{clubpenalty fix} +\CheckCommand*\@doendpe{\@endpetrue + \def\par{\@restorepar\everypar{}\par\@endpefalse}\everypar + {{\setbox\z@\lastbox}\everypar{}\@endpefalse}} +\newcommand*{\contract@doendpe}{% + \@endpetrue + \def\par{% + \@restorepar\everypar{% + \csname contract@used@everypar\endcsname + }% + \par\@endpefalse + }% + \everypar{% + {\setbox\z@\lastbox}\everypar{% + \csname contract@used@everypar\endcsname + }% + \@endpefalse + }% +} +\EndIncludeInRelease +%</body> +% \end{macrocode} +% \end{macro}%^^A \EndIncludeInRelease +% \end{macro}%^^A \@gobble@IncludeInRelease +% \end{macro}%^^A \IncludeInRelease +% \end{macro}%^^A \contract@doendpe +% \end{macro}%^^A \@doendpe +% \end{macro}%^^A \contract@used@everypar +% +% \section{Entry to Table of Contents} +% \begin{macro}{\l@cpar} +% Toc entry of contract clauses. +% \changes{scrjura-v3.27}{2019/02/25}{usage of \pkg{tocbasic}} +% This is done using \pkg{tocbasic}. The definition has to be part of the +% initialization of the package, otherwise package options wouldn't be able to +% change the setting. +% \begin{macrocode} +%<*init> +\DeclareTOCStyleEntry[% + indent=1.5em, + numwidth=2em, + level=\maxdimen +]{default}{cpar} +%</init> +% \end{macrocode} +% \end{macro} +% +% \section{Numbering of Paragraphs and Sentences} +% +% \begin{macro}{\contract@separator} +% \changes{scrjura-v0.7b}{2014/11/03}{\cs{jura@separator} renamed} +% \changes{v0.0.1}{2023-10-10}{\cs{scrjura@separator} renamed} +% Used to make it possible to remove white spaces at the beginning or end. +% \begin{macrocode} +%<*body> +\DeclareRobustCommand*{\contract@separator}[1]{#1} +%</body> +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\contract@usetype} +% \changes{scrjura-v0.5d}{2010/04/28}{new} +% \changes{scrjura-v0.7b}{2014/11/03}{\cs{jura@usetype} renamed} +% \changes{v0.0.1}{2023-10-10}{\cs{scrjura@usetype} renamed} +% By default it is robust but does only call \cs{contract@@usetype} with the +% only argument. +% \begin{macro}{\contract@@usetype} +% \changes{scrjura-v0.5d}{2010/04/28}{new} +% \changes{scrjura-v0.7b}{2014/11/03}{\cs{jura@@usetype} renamed} +% \changes{v0.0.1}{2023-10-10}{\cs{scrjura@@usetype} renamed} +% This second command is not robust and can easily be redefined. But by +% default it also does nothing but eating the argument. +% \begin{macrocode} +%<*body> +\DeclareRobustCommand*{\contract@usetype}[1]{\contract@@usetype{#1}} +\newcommand*{\contract@@usetype}[1]{} +%</body> +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\contract@everypar} +% The \cs{contract@everpar} used by contracts. +% \begin{macro}{\ifparnumber,\parnumbertrue,\parnumberfalse} +% \changes{scrjura-v0.6}{2011/09/29}{moved the definition into the definition of the +% option} +% \begin{counter}{par} +% \begin{command}{\thepar,\theHpar} +% \changes{scrjura-v3.41}{2023/06/24}{Ulrike Fischer requested to use \cs{def} instead +% of \cs{newcommand*}} +% \begin{command}{\parformat} +% \changes{scrjura-v0.7}{2013/06/07}{new font element \fnt{parnumber}} +% \begin{command}{\parformatseparation} +% \changes{scrjura-v0.9f}{2016/02/06}{new} +% \begin{macro}{\p@par} +% \changes{scrjura-v0.5d}{2010/04/28}{added \cs{jura@usetype} with argument +% \cs{jura@env@type}} +% \begin{command}{\withoutparnumber} +% \changes{scrjura-v3.25}{2017/12/19}{new} +% The boolean defines if paragraph numbers have to be used. If they are +% deactivated also manual paragraph numbers are deactivated and the paragraphs +% are not counted. Otherwise the paragraphs are numbered using \cs{thepar}. It +% is important to reset the paragraph counter with every clause and +% sub-clause. And for labels the parent object the clause has to be used. +% \begin{macrocode} +%<*body> +\newcounter{par} +\renewcommand*{\thepar}{\arabic{par}} +\def\theHpar{\theH@AbsClause-\Roman{par}} +\newcommand*{\parformat}{(\thepar)} +\newcommand*{\parformatseparation}{\nobreakspace} +\newkomafont{parnumber}{} +\renewcommand*\p@par{{\contract@usetype{\contract@env@type}\theSubClause\contract@separator{\nobreakspace}}} +\@addtoreset{par}{Clause} +\@addtoreset{par}{SubClause} +\newcommand*{\withoutparnumber}{} +%</body> +% \end{macrocode} +% \end{command} +% \end{macro} +% \end{command} +% \end{command} +% \end{command} +% \end{counter} +% \end{macro} +% \changes{scrjura-v0.5c}{2010/04/26}{first argument of \cs{newmaxpar} and second +% argument of \cs{getmaxpar} is \meta{contract} not \meta{contractpars}} +% \changes{scrjura-v0.5c}{2010/04/26}{\cs{contract@Clauseformat} expands while writing +% to its own argument} +% \changes{scrjura-v0.7}{2013/04/18}{using counter \cnt{contractAbsoluteClause}} +% \changes{scrjura-v0.7}{2013/05/23}{initializing sentence number for manually +% numbered paragraphs to 0 instead of 1, because first action of +% \cs{Sentence} is increasing the number} +% \changes{scrjura-v0.7}{2013/05/23}{recognize paragraph number of \cs{thisparnumber}} +% \changes{scrjura-v0.7}{2013/06/06}{if paragraph numbers are not completely numerical +% always set the number} +% \changes{scrjura-v0.7b}{2014/11/03}{more flexible replacement of +% \cnt{contractAbsoluteClause}} +% \changes{scrjura-v0.9f}{2016/02/06}{\cs{nobreakspace} replaced by +% \cs{parformatseparation}} +% \changes{scrjura-v0.9g}{2016/03/25}{writing to \file{aux}-file \cs{if@filesw}} +% \begin{macrocode} +%<*body> +\newcommand*{\contract@everypar}{% + \ifparnumber + \ifx\contract@special@par\relax + \ifx\contract@special@reset@par\relax\else + \global\let\thepar\contract@special@reset@par + \global\let\contract@special@reset@par\relax + \fi + \refstepcounter{par}% + \refstepcounter{sentence}% + \else + \ifx\contract@special@reset@par\relax + \global\let\contract@special@reset@par\thepar + \fi + \global\let\thepar\contract@special@par + \global\let\contract@special@par\relax + \setcounter{sentence}{0}\refstepcounter{sentence}% + \fi + \begingroup + \if@filesw + \protected@write\@auxout{% + \expandafter\let\csname \contract@env@type @Clauseformat\endcsname + \@firstofone + }{% + \string\newmaxpar{\contract@env@type}% + {\csname the\contract@env@type + AbsoluteClause\endcsname}% + {\thepar}% + }% + \fi + \getmaxpar\@tempa{\contract@env@type}% + {\csname the\contract@env@type AbsoluteClause\endcsname}% +%<+trace> \typeout{Stored max is \@tempa}% + \def\reserved@a##1\@nnil{\def\@tempa{##1}}% + \afterassignment\reserved@a\@tempcnta=0\@tempa\relax\@nnil + \ifnum \@tempcnta>\@ne + {\usekomafont{parnumber}{\parformat\parformatseparation}}% + \else + \def\reserved@a{\relax}% + \ifx\@tempa\reserved@a + \withoutparnumber + \else + {\usekomafont{parnumber}{\parformat\parformatseparation}}% + \fi + \fi + \endgroup + \else + \begingroup\withoutparnumber\endgroup + \setcounter{sentence}{-1}\refstepcounter{sentence}% + \fi +} +%</body> +% \end{macrocode} +% \end{macro} +% +% \begin{command}{\thisparnumber} +% \changes{scrjura-v0.7}{2013/05/23}{new} +% \begin{macro}{\contract@special@par,\contract@special@reset@par} +% \changes{scrjura-v0.7}{2013/05/23}{new} +% \changes{v0.0.1}{2023-10-10}{\cs{scrjura@special@par} renamed} +% \changes{v0.0.1}{2023-10-10}{\cs{scrjura@special@reset@par} renamed} +% You can use this for manual paragraph numbering. But the number has to be +% fully expandable! +% \begin{macrocode} +%<*body> +\newcommand*{\thisparnumber}[1]{% + \def\contract@special@par{#1}% +} +\newcommand*{\contract@special@par}{} +\let\contract@special@par\relax +\newcommand*{\contract@special@reset@par}{} +\let\contract@special@reset@par\relax +%</body> +% \end{macrocode} +% \end{macro}%^^A \contract@special@par +% \end{command}%^^A\thisparnumber +% +% +% \section{Referencing} +% +% \begin{command}{\refL} +% \changes{scrjura-v0.9h}{2016/04/12}{\cs{@ifstar} replaced by \cs{kernel@ifstar}} +% \begin{macro}{\ref@L} +% Similar to \cs{ref} but always the long form. +% \begin{macrocode} +%<*body> +\newcommand*{\refL}{\kernel@ifstar {\ref@L*}{\ref@L{}}} +\newcommand*{\ref@L}[2]{% + \begingroup + \def\parcite@format{0}% + \let\sentencecite@format\parcite@format + \ref#1{#2}% + \endgroup +} +% \end{macrocode} +% \end{macro} +% \end{command} +% +% \begin{command}{\refS} +% \changes{scrjura-v0.9h}{2016/04/12}{\cs{@ifstar} replaced by \cs{kernel@ifstar}} +% \begin{macro}{\ref@S} +% Similar to \cs{ref} but always the short form. +% \begin{macrocode} +\newcommand*{\refS}{\kernel@ifstar {\ref@S*}{\ref@S{}}} +\newcommand*{\ref@S}[2]{% + \begingroup + \def\parcite@format{1}% + \let\sentencecite@format\parcite@format + \ref#1{#2}% + \endgroup +} +% \end{macrocode} +% \end{macro} +% \end{command} +% +% \begin{command}{\refN} +% \changes{scrjura-v0.9h}{2016/04/12}{\cs{@ifstar} replaced by \cs{kernel@ifstar}} +% \begin{macro}{\ref@N} +% Similar to \cs{ref} but always the numerical form. +% \begin{macrocode} +\newcommand*{\refN}{\kernel@ifstar {\ref@N*}{\ref@N{}}} +\newcommand*{\ref@N}[2]{% + \begingroup + \def\parcite@format{2}% + \let\sentencecite@format\parcite@format + \ref#1{#2}% + \endgroup +} +% \end{macrocode} +% \end{macro} +% \end{command} +% +% \begin{command}{\refClause} +% \changes{scrjura-v0.9h}{2016/04/12}{\cs{@ifstar} replaced by \cs{kernel@ifstar}} +% \begin{macro}{\ref@Clause} +% Reference only the clause of a clause, paragraph or sentence. For better +% compatibility with \pkg{hyperref} there is also a star version if +% \pkg{hyperref} is used. Without \pkg{hyperref} the star version is nonsense. +% \begin{macrocode} +\newcommand*{\refClause}{% + \kernel@ifstar {\ref@Clause*}{\ref@Clause{}} +} +\newcommand*{\ref@Clause}[2]{% + \expandafter\ifx\csname r@#2\endcsname\relax + \ref#1{#2}% + \else + \begingroup +% \end{macrocode} +% Copy all parts of the reference but the first one to \cs{@tempb}. +% \begin{macrocode} + \expandafter\expandafter\expandafter\expandafter + \expandafter\expandafter\expandafter\def + \expandafter\expandafter\expandafter\expandafter + \expandafter\expandafter\expandafter\@tempb + \expandafter\expandafter\expandafter\expandafter + \expandafter\expandafter\expandafter{% + \expandafter\expandafter\expandafter\@gobble\csname r@#2\endcsname}% +% \end{macrocode} +% Copy the first part of the reference to \cs{@tempa}. +% \begin{macrocode} + \def\@tempc##1##2\@nil{##1}% + \let\contract@separator\@gobble + \protected@edef\@tempa{\expandafter\expandafter\expandafter\@tempc + \csname r@#2\endcsname\noexpand\@nil}% +% \end{macrocode} +% Copy the first part of \cs{@tempa} to \cs{@tempb}. +% \begin{macrocode} + \protected@edef\@tempa{\expandafter\expandafter\expandafter\@tempc + \@tempa\@nil}% + \let\@@protect\protect + \let\protect\noexpand + \expandafter\edef\csname r@#2\endcsname{{\@tempa}\@tempb}% + \let\protect\@@protect + \ref#1{#2}% + \endgroup + \fi +} +% \end{macrocode} +% \end{macro} +% \end{command} +% +% \begin{command}{\refClauseN} +% \changes{scrjura-v0.9h}{2016/04/12}{\cs{@ifstar} replaced by \cs{kernel@ifstar}} +% \begin{macro}{\ref@ClauseN} +% Reference only the clause number of a clause, a paragraph or a sentence. +% For improved compatibility with \pkg{hyperref} there is also a star version +% if \pkg{hyperref} is used. Without \pkg{hyperref} the star version is +% nonsense. +% \begin{macrocode} +\newcommand*{\refClauseN}{% + \kernel@ifstar {\ref@ClauseN*}{\ref@ClauseN{}} +} +\newcommand*{\ref@ClauseN}[2]{% + \begingroup + \let\Clauseformat\relax + \ref@Clause{#1}{#2}% + \endgroup +} +% \end{macrocode} +% \end{macro} +% \end{command} +% +% \begin{command}{\refPar} +% \changes{scrjura-v0.9h}{2016/04/12}{\cs{@ifstar} replaced by \cs{kernel@ifstar}} +% \begin{macro}{\ref@Par} +% References only the paragraph of a paragraph or sentence. +% For improved compatibility with \pkg{hyperref} there is also a star version +% if \pkg{hyperref} is used. Without \pkg{hyperref} the star version is +% nonsense. +% \begin{macrocode} +\newcommand*{\refPar}{% + \kernel@ifstar {\ref@Par*}{\ref@Par{}} +} +\newcommand*{\ref@Par}[2]{% + \expandafter\ifx\csname r@#2\endcsname\relax + \ref#1{#2}% + \else + \begingroup +% \end{macrocode} +% Copy all parts of the reference but the first one to \cs{@tempb}. +% \begin{macrocode} + \expandafter\expandafter\expandafter\expandafter + \expandafter\expandafter\expandafter\def + \expandafter\expandafter\expandafter\expandafter + \expandafter\expandafter\expandafter\@tempb + \expandafter\expandafter\expandafter\expandafter + \expandafter\expandafter\expandafter{% + \expandafter\expandafter\expandafter\@gobble\csname r@#2\endcsname}% +% \end{macrocode} +% Copy the first part of the reference to \cs{@tempa}. +% \begin{macrocode} + \def\@tempc##1##2\@nil{##1}% + \let\contract@separator\@gobble + \protected@edef\@tempa{\expandafter\expandafter\expandafter\@tempc + \csname r@#2\endcsname\noexpand\@nil}% +% \end{macrocode} +% Copy the second part of \cs{@tempa} to \cs{@tempa} ablegen. +% \begin{macrocode} + \def\@tempc##1##2##3\@nil{##2}% + \protected@edef\@tempa{\expandafter\expandafter\expandafter\@tempc + \@tempa{% + \protect\G@refundefinedtrue + \nfss@text{\reset@font\bfseries ??}% + \@latex@warning{Reference `#2' on page \thepage \space + with undefined par number}% + }\noexpand\@nil}% + \let\@@protect\protect + \let\protect\noexpand + \expandafter\edef\csname r@#2\endcsname{{\@tempa}\@tempb}% + \let\protect\@@protect + \ref#1{#2}% + \endgroup + \fi +} +% \end{macrocode} +% \end{macro} +% \end{command} +% +% \begin{command}{\refParL} +% \changes{scrjura-v0.9h}{2016/04/12}{\cs{@ifstar} replaced by \cs{kernel@ifstar}} +% \begin{macro}{\ref@ParX} +% The same but long. +% \begin{macrocode} +\newcommand*{\refParL}{% + \kernel@ifstar {\ref@ParX0*}{\ref@ParX0{}} +} +\newcommand*{\ref@ParX}[3]{% + \begingroup + \def\parcite@format{#1}% + \let\sentencecite@format\parcite@format + \ref@Par{#2}{#3}% + \endgroup +} +% \end{macrocode} +% \end{macro} +% \end{command} +% +% \begin{command}{\refParS} +% \changes{scrjura-v0.9h}{2016/04/12}{\cs{@ifstar} replaced by \cs{kernel@ifstar}} +% The same but short. +% \begin{macrocode} +\newcommand*{\refParS}{% + \kernel@ifstar {\ref@ParX1*}{\ref@ParX1{}} +} +% \end{macrocode} +% \end{command} +% +% \begin{command}{\refParN} +% \begin{macro}{\ref@ParN} +% \changes{scrjura-v0.9h}{2016/04/12}{\cs{@ifnextchar} replaced by +% \cs{kernel@ifnextchar}} +% \changes{scrjura-v0.9h}{2016/04/12}{\cs{@ifstar} replaced by \cs{kernel@ifstar}} +% \begin{macro}{\ref@@ParN} +% The same but numerical. +% \begin{macrocode} +\newcommand*{\refParN}{% + \kernel@ifstar {\ref@ParN2*}{\ref@ParN2{}} +} +\newcommand*{\ref@ParN}[2]{% + \kernel@ifnextchar [%] + {\ref@@ParN{#1}{#2}}% + {\ref@ParX{#1}{#2}}% +} +\newcommand*{\ref@@ParN}{} +\def\ref@@ParN#1#2[#3]#4{% + \begingroup + \renewcommand*{\parnumericformat}[1]{% + \csname @#3\endcsname{\number ##1\relax}% + }% + \ref@ParX{#1}{#2}{#4}% + \endgroup +} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{command} +% +% \begin{command}{\refSentence} +% \changes{scrjura-v0.9h}{2016/04/12}{\cs{@ifstar} replaced by \cs{kernel@ifstar}} +% \begin{macro}{\ref@Sentence} +% Reference only the sentence of a sentence. +% For improved compatibility with \pkg{hyperref} there is also a star version +% if \pkg{hyperref} is used. Without \pkg{hyperref} the star version is +% nonsense. +% \begin{macrocode} +\newcommand*{\refSentence}{% + \kernel@ifstar {\ref@Sentence*}{\ref@Sentence{}} +} +\newcommand*{\ref@Sentence}[2]{% + \expandafter\ifx\csname r@#2\endcsname\relax + \ref#1{#2}% + \else + \begingroup +% \end{macrocode} +% Copy all parts of the reference to \cs{@tempb}. +% \begin{macrocode} + \expandafter\expandafter\expandafter\expandafter + \expandafter\expandafter\expandafter\def + \expandafter\expandafter\expandafter\expandafter + \expandafter\expandafter\expandafter\@tempb + \expandafter\expandafter\expandafter\expandafter + \expandafter\expandafter\expandafter{% + \expandafter\expandafter\expandafter\@gobble\csname r@#2\endcsname}% +% \end{macrocode} +% Copy the first part of the reference to \cs{@tempa}. +% \begin{macrocode} + \def\@tempc##1##2\@nil{##1}% + \let\contract@separator\@gobble + \protected@edef\@tempa{\expandafter\expandafter\expandafter\@tempc + \csname r@#2\endcsname\noexpand\@nil}% +% \end{macrocode} +% Copy the third part of \cs{@tempa} to \cs{@tempa}. +% \begin{macrocode} + \def\@tempc##1##2##3##4\@nil{##3}% + \protected@edef\@tempa{\expandafter\expandafter\expandafter\@tempc + \@tempa{}{% + \protect\G@refundefinedtrue + \nfss@text{\reset@font\bfseries ??}% + \@latex@warning{Reference `#2' on page \thepage \space + with undefined sentence number}% + }\noexpand\@nil}% + \let\@@protect\protect + \let\protect\noexpand + \expandafter\edef\csname r@#2\endcsname{{\@tempa}\@tempb}% + \let\protect\@@protect + \ref#1{#2}% + \endgroup + \fi +} +% \end{macrocode} +% \end{macro} +% \end{command} +% +% \begin{command}{\refSentenceL} +% \changes{scrjura-v0.9h}{2016/04/12}{\cs{@ifstar} replaced by \cs{kernel@ifstar}} +% \begin{macro}{\ref@SentenceX} +% The same but long. +% \begin{macrocode} +\newcommand*{\refSentenceL}{% + \kernel@ifstar {\ref@SentenceX0*}{\ref@SentenceX0{}} +} +\newcommand*{\ref@SentenceX}[3]{% + \begingroup + \def\parcite@format{#1}% + \let\sentencecite@format\parcite@format + \ref@Sentence{#2}{#3}% + \endgroup +} +% \end{macrocode} +% \end{macro} +% \end{command} +% +% \begin{command}{\refSentenceS} +% \changes{scrjura-v0.9h}{2016/04/12}{\cs{@ifstar} replaced by \cs{kernel@ifstar}} +% The same but short. +% \begin{macrocode} +\newcommand*{\refSentenceS}{% + \kernel@ifstar {\ref@SentenceX1*}{\ref@SentenceX1{}} +} +% \end{macrocode} +% \end{command} +% +% \begin{command}{\refSentenceN} +% \changes{scrjura-v0.9h}{2016/04/12}{\cs{@ifstar} replaced by \cs{kernel@ifstar}} +% The same but numeric. +% \begin{macrocode} +\newcommand*{\refSentenceN}{% + \kernel@ifstar {\ref@SentenceX2*}{\ref@SentenceX2{}} +} +%</body> +% \end{macrocode} +% \end{command} +% +% \begin{macro}{\contract@sentence} +% \changes{scrjura-v0.7a}{2014/01/28}{using \cs{textsuperscript}} +% \changes{scrjura-v0.7a}{2014/01/28}{\cs{nobreak}\cs{hskip}\cs{z@} added to allow +% hyphenation of the first word after the sentence mark} +% Numbering of sentences. +% \begin{counter}{sentence} +% \begin{command}{\thesentence,\theHsentence} +% \changes{scrjura-v3.41}{2023/06/24}{Ulrike Fischer requested to use \cs{def} instead +% of \cs{newcommand*}} +% \begin{macro}{\p@sentence} +% \changes{scrjura-v3.27}{2019/10/09}{adaption for \LaTeX{} 2019-10-01} +% The counter is used for numbering the sentences. It is important to add the +% paragraph as parent object to labels. The original method to make it +% possible to use \cs{thesentence} as an argument of \cs{p@sentence} does not +% work any longer using \LaTeX{} 2019-10-01 or newer. It would result in an +% error message. So the code has to be adapted to the new definition of +% \cs{refstepcounter} in \LaTeX{} 2019-10-01. From this version it uses +% \cs{labelformat}. Don't ask me, what I think about the fact, that every new +% versions of \LaTeX{} can break existing packages and package authors have to +% find out such incompatibilities on their own. +% \begin{macrocode} +%<*body> +\newcounter{sentence}[par] +\renewcommand*{\thesentence}{\arabic{sentence}} +\def\theHsentence{\theHpar-\arabic{sentence}} +\scr@ifundefinedorrelax{labelformat}{% + \renewcommand*{\p@sentence}{\expandafter\p@@sentence} + \newcommand*{\p@@sentence}[1]{\p@par{{\par@cite{\thepar}}% + \contract@separator{\nobreakspace}}{\sentence@cite{#1}}}% +}{% + \labelformat{sentence}{\p@par{{\par@cite{\thepar}}% + \contract@separator{\nobreakspace}}{\sentence@cite{#1}}}% +} +\newcommand*{\contract@sentence}{% +% \end{macrocode} +% \changes{scrjura-v0.9e}{2015/11/04}{first start the paragraph then print the number} +% \changes{scrjura-v3.26}{2018/07/20}{new font element \fnt{sentencenumber}} +% \changes{scrjura-v3.26}{2018/07/20}{new formatting \cs{sentencenumberformat}} +% For the numbering it is important not to increase the paragraph number at +% the very beginning, because the paragraph already does so. To make this +% work, the paragraph has to start before we print the number. But immediately +% after a \env{minipage}, a list or a \cs{parbox} we should behave as not +% being at the beginning of a paragraph. +% \begin{macrocode} + \ifvmode + \if@endpe + \refstepcounter{sentence}% + \else + \leavevmode + \fi + \else + \refstepcounter{sentence}% + \fi + {\usekomafont{sentencenumber}{\sentencenumberformat}}% + \nobreak\hskip\z@ +} +% \end{macrocode} +% \begin{fontelement}{sentencenumber} +% \begin{command}{\sentencenumberformat} +% \changes{scrjura-v3.26}{2018/07/20}{new} +% Formatting an font can be changed using font element \fnt{sentencenumber} +% and command \cs{sentencenumberformat}. The last has the preset +% \cs{textsuperscript}. +% \begin{macrocode} +\newkomafont{sentencenumber}{} +\newcommand*{\sentencenumberformat}{\textsuperscript{\thesentence}} +%</body> +% \end{macrocode} +% \end{command} +% \end{fontelement} +% \end{macro} +% \end{command} +% \end{counter} +% \end{macro} +% +% \begin{macro}{\par@cite} +% \begin{command}{\parciteformat} +% \changes{scrjura-v0.5d}{2010/04/28}{argument moved} +% Reference style for paragraphs. +% \begin{macrocode} +%<*body> +\DeclareRobustCommand*{\par@cite}[1]{\parciteformat{#1}} +\newcommand*{\parciteformat}[1]{% + \ifcase \parcite@format + \expandafter\parlongformat + \or + \expandafter\parshortformat + \or + \expandafter\parnumericformat + \else + \unskip\expandafter\@gobble + \fi + {#1}% +} +% \end{macrocode} +% \end{command} +% \end{macro} +% +% \begin{macro}{\sentence@cite} +% \begin{command}{\sentenceciteformat} +% \changes{scrjura-v0.5d}{2010/04/28}{argument moved} +% Reference style for sentences. Preset is \cs{@arabic}. +% \begin{macrocode} +\DeclareRobustCommand*{\sentence@cite}[1]{\sentenceciteformat{#1}} +\newcommand*{\sentenceciteformat}[1]{% + \ifcase \sentencecite@format + \expandafter\sentencelongformat + \or + \expandafter\sentenceshortformat + \or + \expandafter\sentencenumericformat + \else + \unskip\expandafter\@gobble + \fi + {#1}% +} +% \end{macrocode} +% \end{command} +% \end{macro} +% +% \begin{command}{\parlongformat,\parshortformat,\parnumericformat, +% \sentencelongformat,\sentenceshortformat, +% \sentencenumericformat} +% The six formattings. +% \begin{macrocode} +\newcommand*{\parlongformat}[1]{\parname~#1} +\newcommand*{\parshortformat}[1]{\parshortname~#1} +\newcommand*{\parnumericformat}[1]{\@Roman{\number #1\relax}} +\newcommand*{\sentencelongformat}[1]{\sentencename~#1} +\newcommand*{\sentenceshortformat}[1]{\sentenceshortname~#1} +\newcommand*{\sentencenumericformat}[1]{\@arabic{\number #1\relax}.} +%</body> +% \end{macrocode} +% \end{command} +% +% \section{Language Dependent Names} +% +% \begin{command}{\parname,\parshortname,\sentencename,\sentenceshortname} +% \begin{macro}{\contract@lang@error} +% \changes{scrjura-v0.7}{2013/09/19}{Usage of \cs{PackageError} instead of +% \cs{PackageErrorNoLine}} +% \changes{scrjura-v3.24}{2017/05/29}{adaption for language name bug in +% \pkg{babel}~3.10} +% \changes{v0.0.1}{2023-10-10}{\cs{scrjura@lang@error} renamed} +% The names of paragraphs and sentences and their short versions. The English +% names are donated by ``m.eik''. +% \begin{macrocode} +%<*body> +\newcommand*{\parname}{Paragraph} +\AtBeginDocument{% + \providecaptionname{german,ngerman,austrian,naustrian}\parname{Absatz}% + \providecaptionname{german,ngerman,austrian,naustrian}\parshortname{Abs.}% + \providecaptionname{german,ngerman,austrian,naustrian}\sentencename{Satz}% + \providecaptionname{german,ngerman,austrian,naustrian}\sentenceshortname{S.}% + \providecaptionname{english,american,british,canadian,% + USenglish,UKenglish,usenglish,ukenglish}\parname{paragraph}% + \providecaptionname{english,american,british,canadian,% + USenglish,UKenglish,usenglish,ukenglish}\parshortname{par.}% + \providecaptionname{english,american,british,canadian,% + USenglish,UKenglish,usenglish,ukenglish}\sentencename{sentence}% + \providecaptionname{english,american,british,canadian,% + USenglish,UKenglish,usenglish,ukenglish}\sentenceshortname{sent.}% +} +\providecommand*{\parname}{\contract@lang@error{\parname}} +\providecommand*{\parshortname}{\contract@lang@error{\parshortname}} +\providecommand*{\sentencename}{\contract@lang@error{\sentencename}} +\providecommand*{\sentenceshortname}{\contract@lang@error{\sentenceshortname}} +\newcommand*{\contract@lang@error}[1]{% + \PackageError{contract}{% + current language not supported% + }{% + Currently contract only supports languages `german', `ngerman', + `austrian',\MessageBreak + `naustrian', `english', `american', `british', `canadian', + `USenglish',\MessageBreak + `UKenglish', `usenglish`, and `ukenglish'.\MessageBreak + It seems, that you are using another language (maybe `\languagename') or + that\MessageBreak + your language selection isn't compatible to package `babel'.\MessageBreak + Because of this you have to define `\string#1' by yourself!\MessageBreak + It would be nice if you'll send your definitions to the author.% + }% + \textbf{??}% +} +%</body> +% \end{macrocode} +% \end{macro} +% \end{command} +% +% \section{Using Values from last \LaTeX{} Run} +% +% \begin{command}{\newmaxpar} +% \changes{scrjura-v0.6b}{2013/04/16}{\cs{\#1@Clauseformat} expands to its argument} +% \begin{command}{\getmaxpar} +% \changes{scrjura-v0.6}{2011/09/30}{argument no 3 is expanded using +% \cs{protected@edef}} +% \changes{scrjura-v0.5c}{2010/04/26}{\cs{protected@edef} replaced by \cs{edef}} +% \changes{scrjura-v0.5c}{2010/04/26}{\cs{\#2@Clauseformat} expands to its argument} +% Two helper macros, to save a counter in a \file{aux}-file and get the value +% back or another value of it is not in the \file{aux}-file. +% \begin{macrocode} +%<*body> +\newcommand*{\newmaxpar}[3]{% + \begingroup + \expandafter\let\csname #1@Clauseformat\endcsname\@firstofone + \protected@edef\@tempa{#2}\@onelevel@sanitize\@tempa + \expandafter\xdef\csname max@#1@\@tempa\endcsname{#3}% + \endgroup +} +\newcommand*{\getmaxpar}[3]{% + \begingroup + \expandafter\let\csname #2@Clauseformat\endcsname\@firstofone + \protected@edef\@tempa{#3}% + \@onelevel@sanitize\@tempa + \expandafter\ifx \csname max@#2@\@tempa\endcsname\relax + \edef\@tempa{\endgroup\edef\noexpand#1{\expandafter\the\value{par}}}% + \else + \edef\@tempa{\endgroup + \edef\noexpand#1{\csname max@#2@\@tempa\endcsname}}% + \fi + \@tempa +} +% \end{macrocode} +% \changes{scrjura-v0.7b}{2014/11/10}{added fallback code to \file{aux}-file} +% \changes{scrjura-v0.9g}{2015/03/25}{write to \file{aux}-file \cs{if@filesw}} +% Because some users remove \pkg*{contract} from their documents without +% deleting the \file{aux}-file, we add a fallback definition of \cs{newmaxpar} +% to the \file{aux}-file. This avoids error messages because of undefined +% \cs{newmaxpar}. +% \begin{macrocode} +\AtBeginDocument{% + \if@filesw + \immediate\write\@auxout{% + \string\providecommand*\string\newmaxpar[3]{} + }% + \fi +} +%</body> +% \end{macrocode} +% \end{command} +% \end{command} +% +% \iffalse +%</package> +% \fi +% +% \Finale +% +\endinput +% Local Variables: +% mode: doctex +% ispell-local-dictionary: "en_US" +% eval: (flyspell-mode 1) +% TeX-master: t +% TeX-engine: luatex-dev +% eval: (setcar (or (cl-member "Index" (setq-local TeX-command-list (copy-alist TeX-command-list)) :key #'car :test #'string-equal) (setq-local TeX-command-list (cons nil TeX-command-list))) '("Index" "mkindex %s" TeX-run-index nil t :help "makeindex for dtx")) +% End: +% +% LocalWords: cautelar diff --git a/Master/texmf-dist/doc/latex/contract/contract.pdf b/Master/texmf-dist/doc/latex/contract/contract.pdf Binary files differnew file mode 100644 index 00000000000..9ac5b1c60f8 --- /dev/null +++ b/Master/texmf-dist/doc/latex/contract/contract.pdf |