diff options
Diffstat (limited to 'macros/latex/contrib/koma-script/scrjura.dtx')
-rw-r--r-- | macros/latex/contrib/koma-script/scrjura.dtx | 2042 |
1 files changed, 2042 insertions, 0 deletions
diff --git a/macros/latex/contrib/koma-script/scrjura.dtx b/macros/latex/contrib/koma-script/scrjura.dtx new file mode 100644 index 0000000000..029a605271 --- /dev/null +++ b/macros/latex/contrib/koma-script/scrjura.dtx @@ -0,0 +1,2042 @@ +% \iffalse meta-comment +% ====================================================================== +% scrjura.dtx +% Copyright (c) Markus Kohm, 2007-2022 +% +% This file is part of the LaTeX2e KOMA-Script bundle. +% +% This work may be distributed and/or modified under the conditions of +% the LaTeX Project Public License, version 1.3c of the license. +% The latest version of this license is in +% http://www.latex-project.org/lppl.txt +% and version 1.3c or later is part of all distributions of LaTeX +% version 2005/12/01 or later and of this work. +% +% This work has the LPPL maintenance status "author-maintained". +% +% The Current Maintainer and author of this work is Markus Kohm. +% +% The KOMA-Script bundle consists of all files listed in MANIFEST.md. +% ====================================================================== +%%% From File: $Id: scrjura.dtx 3874 2022-06-05 10:38:02Z kohm $ +%<identify>%%% (run: identify) +%<init>%%% (run: init) +%<options>%%% (run: options) +%<postoptions>%%% (run: postoptions) +%<body>%%% (run: body) +%<final>%%% (run: final) +%<*dtx> +\begingroup + \def\filedate$#1: #2-#3-#4 #5${\gdef\filedate{#2/#3/#4}} + \filedate$Date: 2022-06-05 12:38:02 +0200 (So, 05. Jun 2022) $ + \def\filerevision$#1: #2 ${\gdef\filerevision{r#2}} + \filerevision$Revision: 3874 $ +\endgroup +\expandafter\ifx\csname ProvidesFile\endcsname\relax +\def\ProvidesFile#1[#2]{} +\fi +\ProvidesFile{scrjura.dtx}[\filedate\space\filerevision\space +%</dtx> +%<package&identify>\NeedsTeXFormat{LaTeX2e}[1995/06/01] +%<package&identify>\ProvidesPackage{scrjura}[% +%<*dtx|(package&identify)> +%!KOMAScriptVersion + package +%<*dtx> + source +%</dtx> + (for jurists) +] +%</dtx|(package&identify)> +%<*dtx> +\ifx\documentclass\undefined +%</dtx> +%<*ins> + \input scrdocstrip.tex + \@@input scrkernel-version.dtx + \@@input scrstrip.inc + \KOMAdefVariable{COPYRIGHTFROM}{2007} + \generate{\usepreamble\defaultpreamble + \file{scrjura.ins}{% + \from{scrjura.dtx}{ins}% + }% + \file{scrjura.sty}{% + \from{scrjura.dtx}{package,identify}% + \from{scrjura.dtx}{package,init}% + \from{scrjura.dtx}{package,options}% + \from{scrjura.dtx}{package,postoptions}% + \from{scrjura.dtx}{package,body}% + \from{scrjura.dtx}{package,final}% + \from{scrlogo.dtx}{logo}% + }% + }% + \@@input scrstrop.inc +%</ins> +%<*dtx> +\else + \let\endbatchfile\relax +\fi +%</dtx> +%<*ins> +\endbatchfile +%</ins> +%<*dtx> +\documentclass{koma-script-source-doc} +\usepackage[USenglish]{babel} +\setcounter{StandardModuleDepth}{2} +\begin{document} + \DocInput{scrjura.dtx} +\end{document} +%</dtx> +% \fi +% +% \changes{v3.36}{2022/01/25}{switch over from \cls*{scrdoc} to +% \cls*{koma-script-source-doc}} +% +% \GetFileInfo{scrjura.dtx} +% \title{\KOMAScript{} in the Law Office\\ +% with Package \pkg*{scrjura}} +% \date{Version \fileversion{} of \filedate} +% \author{\href{mailto:komascript@gmx.info}{Markus Kohm}} +% \maketitle +% \begin{abstract} +% The \pkg*{scrjura} 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. +% \end{abstract} +% +% \tableofcontents +% +% \section{User Manual} +% +% You can find the user manual of \pkg*{scrjura} in the \KOMAScript{} manual, +% either the German \file{scrguide} or the English \file{scrguien}. +% +% \MaybeStop{\PrintIndex} +% +% \section{Implementation} +% +% \begin{macrocode} +%<*package> +% \end{macrocode} +% +% \changes{v0.7b}{2014/11/11}{General renaming of ``Paragraph'' into +% ``Clause''} +% +% \subsection{Cooperation with \pkg*{hyperref}} +% +% If \pkg{hyperref} has already loaded before \pkg*{scrjura} 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{scrjura}{Package hyperref already loaded}{% + If you want to use package scrjura with package hyperref, you have + to\MessageBreak + load package scrjura before package hyperref.\MessageBreak + To solve the problem, you just should move the loading of package + hyperref\MessageBreak + behind the loading of package scrjura.}% +} +%</init> +% \end{macrocode} +% +% \subsection{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{macrocode} +%<*init> +\RequirePackage{scrkbase}[2013/03/26] +%</init> +% \end{macrocode} +% +% And now, \pkg*{tocbasic}. +% \begin{macrocode} +%<*init> +\RequirePackage{tocbasic} +%</init> +% \end{macrocode} +% +% \subsection{Options} +% +% \begin{option}{contract} +% \begin{macro}{\if@documentcontract, +% \@documentcontractfalse,\@documentcontracttrue} +% \changes{v3.36}{2022/01/25}{switched to a \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. Now it is 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[.scrjura.sty]{KOMA}{contract}% + \if@documentcontract\expandafter\contract\fi + }% +}{% + \g@addto@macro\document{% + \RelaxFamilyKey[.scrjura.sty]{KOMA}{contract}% + \if@documentcontract\expandafter\contract\fi + }% +} +%</options> +% \end{macrocode} +% \end{macro} +% \end{option} +% +% \begin{option}{juratotoc} +% 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{v0.7}{2013/11/04}{usage of renewed interface with +% \cs{FamilyKeyState}} +% \changes{v0.9a}{2015/03/09}{internal value storage} +% \begin{macro}{\if@juratotoc} +% \changes{v0.6}{2011/09/29}{replaced by counter} +% \begin{counter}{juratoclevel} +% \changes{v0.6}{2011/09/29}{definition moved} +% \changes{v3.27}{2019/02/25}{removed} +% \begin{macro}{\toclevel@cpar} +% \changes{v0.7}{2013/06/09}{new, because of \pkg{hyperref}} +% \changes{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{.scrjura.sty}{juratotoc}{\cpartocdepth}% +} +\KOMA@kav@xadd{.scrjura.sty}{juratotoc}{\cpartocdepth}% +%</options> +% \end{macrocode} +% \end{macro} +% \end{counter} +% \end{macro} +% \end{option} +% +% \begin{option}{juratocnumberwidth,juratocindent} +% \changes{v0.6}{2011/09/29}{new} +% \changes{v0.7}{2013/11/04}{usage of renewed interface with +% \cs{FamilyKeyState}} +% \changes{v0.9a}{2015/03/09}{internal value storage} +% \begin{ilength}{\cpar@numberwidth,\cpar@indent} +% \changes{v0.6}{2011/09/29}{new} +% \changes{v3.27}{2019/02/25}{replaced by usage of \cs{DeclareTOCStyleEntry}} +% Indent and number width of the toc entries. +% \begin{macrocode} +%<*options> +\KOMA@key{juratocnumberwidth}{% + \DeclareTOCStyleEntry[numwidth=#1]{default}{cpar}% + \FamilyKeyStateProcessed + \KOMA@kav@replacevalue{.scrjura.sty}{juratocnumberwidth}{#1}% +} +\KOMA@kav@add{.scrjura.sty}{juratocnumberwidth}{2em} +\KOMA@key{juratocindent}{% + \DeclareTOCStyleEntry[indent=#1]{default}{cpar}% + \FamilyKeyStateProcessed + \KOMA@kav@replacevalue{.scrjura.sty}{juratocindent}{#1}% +} +\KOMA@kav@add{.scrjura.sty}{juratocindent}{1.5em}% +%</options> +% \end{macrocode} +% \end{ilength} +% \end{option} +% +% \begin{option}{juratitlepagebreak} +% \changes{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{macrocode} +%<*options> +\KOMA@ifkey{juratitlepagebreak}{@juratitlepagebreak} +%</options> +% \end{macrocode} +% \end{macro} +% \end{option} +% +% \begin{option}{parnumber} +% \changes{v0.6}{2011/09/29}{new} +% \changes{v0.6a}{2012/10/15}{value mistake message changed} +% \changes{v0.7}{2013/11/04}{usage of renewed interface with +% \cs{FamilyKeyState}} +% \changes{v0.9a}{2015/03/09}{internal value storage} +% \changes{v3.28}{2019/11/18}{\cs{ifstr} renamed into \cs{Ifstr}} +% The options switches the (automatic) paragraph numbering. +% \begin{macrocode} +%<*options> +\newif\ifparnumber +\KOMA@key{parnumber}[true]{% + \Ifstr{#1}{auto}{% + \AutoPar + \FamilyKeyStateProcessed + \KOMA@kav@remove{.scrjura.sty}{parnumber}{manual}% + \KOMA@kav@remove{.scrjura.sty}{parnumber}{auto}% + \KOMA@kav@add{.scrjura.sty}{parnumber}{auto}% + }{% + \Ifstr{#1}{manual}{% + \ManualPar + \FamilyKeyStateProcessed + \KOMA@kav@remove{.scrjura.sty}{parnumber}{manual}% + \KOMA@kav@remove{.scrjura.sty}{parnumber}{auto}% + \KOMA@kav@add{.scrjura.sty}{parnumber}{manual}% + }{% + \KOMA@set@ifkey{parnumber}{parnumber}{#1}% + \KOMA@kav@replacebool{.scrjura.sty}{parnumber}{parnumber}% + }% + }% +} +\KOMA@kav@add{.scrjura.sty}{parnumber}{true} +\KOMA@kav@add{.scrjura.sty}{parnumber}{auto} +%</options> +% \end{macrocode} +% \end{option} +% +% \begin{option}{paragraphmark,clausemark} +% \changes{v0.9h}{2016/04/11}{\opt{paragraphmark} renamed to \opt{clausemark}} +% \changes{v0.7}{2013/11/04}{usage of renewed interface with +% \cs{FamilyKeyState}} +% \changes{v0.9a}{2015/03/09}{internal value storage} +% \begin{option}{markright,markboth} +% \changes{v0.7}{2013/11/04}{deprecated} +% \begin{command}{\Clausemark} +% \changes{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{.scrjura.sty}{clausemark}{#1}% +} +\KOMA@kav@add{.scrjura.sty}{clausemark}{false} +\KOMA@DeclareDeprecatedOption[scrjura]{markright}{clausemark=forceright} +\KOMA@DeclareDeprecatedOption[scrjura]{markboth}{clausemark=forceboth} +\KOMA@key{paragraphmark}{% + \PackageWarningNoLine{scrjura}{% + You've used obsolete option `paragraphmark'.\MessageBreak + Usage of this option is deprecated.\MessageBreak + You should simply replace `paragraphmark'\MessageBreak + by `clausemark'% + }% + \KOMAExecuteOptions[.scrjura.sty]{clausemark=#1}% +} +%</options> +% \end{macrocode} +% \end{command} +% \end{option} +% \end{option} +% +% \begin{option}{ref} +% \changes{v0.5d}{2010/06/07}{new values \optvalue{nopar}, +% \optvalue{nosentence}, \optvalue{OnlyParagraph}} +% \changes{v0.7}{2013/11/04}{usage of renewed interface with +% \cs{FamilyKeyState}} +% \changes{v0.9a}{2015/03/09}{internal value storage} +% \begin{option}{parcitename,sentencecitename} +% \changes{v0.5d}{2010/06/07}{deprecated} +% The formatting of the references of paragraphs and sentences. There are a +% long a short and a numeric form. +% \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{.scrjura.sty}{ref}% + \ifcase\parcite@format + \KOMA@kav@add{.scrjura.sty}{ref}{parlong}% + \or + \KOMA@kav@add{.scrjura.sty}{ref}{parshort}% + \or + \KOMA@kav@add{.scrjura.sty}{ref}{parnumeric}% + \or + \KOMAQkav@add{.scrjura.sty}{ref}{paroff}% + \fi + \ifcase\sentencecite@format + \KOMA@kav@add{.scrjura.sty}{ref}{sentencelong}% + \or + \KOMA@kav@add{.scrjura.sty}{ref}{sentenceshort}% + \or + \KOMA@kav@add{.scrjura.sty}{ref}{sentencenumeric}% + \or + \KOMA@kav@add{.scrjura.sty}{ref}{sentenceoff}% + \fi + \fi +} +\KOMA@kav@add{.scrjura.sty}{ref}{parlong}% +\KOMA@kav@add{.scrjura.sty}{ref}{sentencelong}% +\KOMA@DeclareDeprecatedOption[scrjura]{parcitename}{ref=parlong} +\KOMA@DeclareDeprecatedOption[scrjura]{sentencecitename}{ref=sentencelong} +%</options> +% \end{macrocode} +% \end{option} +% \end{option} +% +% Execute the options. +% \begin{macrocode} +%<*postoptions> +\KOMAProcessOptions\relax +%</postoptions> +% \end{macrocode} +% +% \subsection{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{1.0}{2014/11/22}{throw error for deprecated commands but only once} +% \begin{macrocode} +%<*body> +\providecommand*{\DeprecatedParagraph}{% + \PackageError{scrjura}{modification of old document needed}{% + It seem that this document was made for scrjura up to version + 0.7a.\MessageBreak + Since scrjura version 0.9 \string\Paragraph, \string\SubParagraph, and all + depending\MessageBreak + commands, options, and counters have been renamed.\MessageBreak + You should replace the terms `Paragraph' and `paragraph` by `Clause` + and\MessageBreak + `clause` if they are part of the name of a scrjura feature, otherwise + this\MessageBreak + document may produce severall additional error messages and maybe the + wrong\MessageBreak + result. Sorry for the inconvenience.% + }% + \ParagraphCompatibilityHacks +} +\newcommand*{\ParagraphCompatibilityHacks}{% + \PackageWarning{scrjura}{compatibility hacks for `\string\Paragraph' + executed.\MessageBreak + There is no support for documents using these hacks!\MessageBreak + There is no warranty for real compatibility!\MessageBreak + Even if the LaTeX run of the document doesn't report\MessageBreak + any error, the result may be completely wrong.\MessageBreak + Therefore it is recommended to solve the problem,\MessageBreak + instead of trying to work around using the\MessageBreak + compatibility hacks% + }% + \gdef\Paragraph{\Clause}% + \gdef\SubParagraph{\SubClause}% + \gdef\c@Paragraph{\c@Clause}% + \gdef\cl@Paragraph{\cl@Clause}% + \gdef\c@SubParagraph{\c@SubClause}% + \gdef\cl@SubParagraph{\cl@SubClause}% + \gdef\theParagraph{\theClause}% + \gdef\theSubParagraph{\theSubClause}% + \gdef\refParagraph{\refClause}% + \gdef\refParagraphN{\refClauseN}% + \aliaskomafont{Paragraph}{Clause}% + \scr@ifundefinedorrelax{Paragraphmark}{}{% + \global\let\Clausemark\Paragraphmark + }% +} +\providecommand*{\Paragraph}{\DeprecatedParagraph\Paragraph} +\providecommand*{\SubParagraph}{\DeprecatedParagraph\SubParagraph} +\providecommand*{\refParagraph}{\DeprecatedParagraph\refParagraph} +\providecommand*{\refParagraphN}{\DeprecatedParagraph\refParagraphN} +%</body> +% \end{macrocode} +% \end{command} +% +% +% \subsection{Contracts, clauses, paragraphs and sentences} +% +% +% \begin{macro}{\scrjura@env@type} +% \changes{v0.5d}{2010/04/28}{new} +% \changes{v0.7b}{2014/11/03}{renamed} +% This macro shows the currently active \pkg*{scrjura} environment. +% \begin{macrocode} +%<*body> +\newcommand*{\scrjura@env@type}{} +%</body> +% \end{macrocode} +% \end{macro} +% +% +% \begin{command}{\ellipsispar} +% \changes{v0.7}{2013/05/02}{new} +% \changes{v0.7b}{2014/11/03}{\cs{thecontractAbsoluteClause} made more +% flexible} +% \changes{v0.9g}{2016/03/25}{write to \file{aux}-file only \cs{if@filesw}} +% \begin{command}{\parellipsis} +% \changes{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{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{\scrjura@env@type}% + {\csname the\scrjura@env@type + AbsoluteClause\endcsname}% + {\thepar}% + }% + \fi + \endgroup + \addtocounter{par}{-1}\refstepcounter{par}% + \ignorespaces +} +\newcommand*{\parellipsis}{% + \scr@ifundefinedorrelax{textellipsis}{\dots}{\textellipsis}% +} +%</body> +% \end{macrocode} +% \end{command} +% \end{command} +% +% \begin{environment}{contract} +% \changes{v0.5d}{2010/04/28}{missing error message added} +% \changes{v0.5d}{2010/04/28}{not self-redefining any more} +% \changes{v0.5d}{2010/04/28}{defining \cs{jura@env@type}} +% \changes{v3.36}{2022/01/25}{defining an environment (because of hooks)} +% \begin{counter}{contractClause} +% \begin{command}{\thecontractClause} +% \changes{v0.9b}{2015/05/01}{must use counter \cnt{Clause} instead of +% \cnt{contractClause}} +% \begin{macro}{\contract@Clauseformat} +% \begin{command}{\Clauseformat,\paragraphformat} +% \changes{v0.6b}{2013/04/16}{redefinition of \cs{paragraphformat}} +% \begin{counter}{contractSubClause} +% \changes{v0.9b}{2015/05/01}{must use counter \cnt{SubClause} instead of +% \cnt{contractSubClause}} +% \begin{command}{\thecontractSubClause} +% \begin{counter}{contractAbsoluteClause} +% \changes{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\scrjura@env@type\@empty + \let\@doendpe\scrjura@doendpe + \let\Clause\contract@paragraph + \let\c@Clause\c@contractClause + \edef\cl@Clause{\cl@Clause\cl@contractClause}% + \let\SubClause\contract@subparagraph + \let\c@SubClause\c@contractSubClause + \edef\cl@SubClause{\cl@SubClause\cl@contractSubClause}% + \let\Sentence\contract@sentence + \renewcommand*{\scrjura@env@type}{contract}% + \aliaskomafont{Clause}{contract.Clause}% + \else + \PackageError{scrjura}{nested `contract` detected}{% + You may not use a `contract' environment inside\MessageBreak + a `\scrjura@env@type' environment or after loading\MessageBreak + package `scrjura' with option `\scrjura@env@type'!}% + \fi +}{} +\let\if@scrjura@skiphyperref\iftrue +\let\cl@Clause\@empty +\let\cl@SubClause\@empty +\newcounter{contractClause} +\renewcommand*{\thecontractClause}{% + {\contract@Clauseformat{\arabic{Clause}}}} +\DeclareRobustCommand*{\contract@Clauseformat}[1]{\Clauseformat{#1}} +\newcommand*{\Clauseformat}[1]{\S~#1} +\newcounter{contractSubClause} +\@addtoreset{SubClause}{Clause} +\renewcommand*{\thecontractSubClause}{% + {\theClause\alph{SubClause}}} +\newcounter{contractAbsoluteClause} +%</body> +% \end{macrocode} +% \end{counter} +% \end{command} +% \end{counter} +% \end{command} +% \end{macro} +% \end{command} +% \end{counter} +% \end{environment} +% +% \begin{command}{\DeclareNewJuraEnvironment} +% \changes{v0.9}{2014/11/12}{new} +% \changes{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{scrjura}{ignorring declaration of `#1'}{% + You've tried to declare jura environment `#1', but + environment\MessageBreak + `#1' or command + \expandafter\string\csname #1\endcsname\space or + \expandafter\string\csname end#1\endcsname\MessageBreak + already exists.\MessageBreak + Declaration will be ignored}% + \long\def\reserved@defjuraenvironment##1[##2]##3##4{}% + }% + \kernel@ifnextchar [%] + {\reserved@defjuraenvironment{#1}}{\reserved@defjuraenvironment{#1}[]}% +} +\@onlypreamble\DeclareNewJuraEnvironment +% \end{macrocode} +% \begin{macro}{\@defjuraenvironment} +% \changes{v0.9}{2014/11/04}{new} +% \changes{v3.25}{2017/12/08}{new command options \opt{ClauseFont}} +% \changes{v3.25}{2017/12/08}{\cs{reserved@defjuraenvironment} set back to +% \cs{relax}} +% \changes{v3.25}{2017/12/08}{using local instead of global command options} +% This command is used to define a new \pkg*{scrjura} 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[.scrjura.sty]{KOMAarg}{Clause}{#1@Clause}% + \FamilyCSKey[.scrjura.sty]{KOMAarg}{SubClause}{#1@SubClause}% + \FamilyCSKey[.scrjura.sty]{KOMAarg}{Sentence}{#1@Sentence}% + \DefineFamilyKey[.scrjura.sty]{KOMAarg}{ClauseNumberFormat}{% + \expandafter\def\csname #1@Clauseformat \endcsname####1{##1{####1}}% + \expandafter\edef\csname #1@Clauseformat\endcsname{% + \noexpand\protect\expandafter\noexpand\csname #1@Clauseformat \endcsname + }% + \FamilyKeyStateProcessed + } + \DefineFamilyKey[.scrjura.sty]{KOMAarg}{ClauseFont}{% + \IfExistskomafont{#1.Clause}{% + \IfIsAliaskomafont{#1.Clause}{% + \expandafter\let\csname scr@fnt@instead@#1.Clause\endcsname\relax + \newkomafont{#1.Clause}{##1}% + }{\setkomafont{#1.Clause}{##1}}% + }{% + \newkomafont{#1.Clause}{##1}% + }% + } + \FamilyExecuteOptions[.scrjura.sty]{KOMAarg}{#2}% + \RelaxFamilyKey[.scrjura.sty]{KOMAarg}{ClauseFont}% + \RelaxFamilyKey[.scrjura.sty]{KOMAarg}{ClauseNumberFormat}% + \RelaxFamilyKey[.scrjura.sty]{KOMAarg}{Sentence}% + \RelaxFamilyKey[.scrjura.sty]{KOMAarg}{SubClause}% + \RelaxFamilyKey[.scrjura.sty]{KOMAarg}{Clause}% + \@ifundefined{#1@Clauseformat}{% + \expandafter\DeclareRobustCommand\expandafter*% + \csname #1@Clauseformat\endcsname[1]{\Clauseformat{##1}}% + }{}% +% \end{macrocode} +% \changes{v0.9c}{2015/05/13}{defining \cs{the\dots Clause}} +% \changes{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\scrjura@env@type\@empty + \edef\scrjura@env@type{#1}% + \let\@doendpe\scrjura@doendpe + \expandafter\let\expandafter\c@Clause\csname c@#1Clause\endcsname + \edef\cl@Clause{\cl@Clause\csname cl@#1Clause\endcsname}% + \expandafter\let\expandafter\c@SubClause + \csname c@#1SubClause\endcsname + \edef\cl@SubClause{\cl@SubClause + \csname cl@#1SubClause\endcsname}% + \@ifundefined{#1@Clause}{% + \let\Clause\contract@paragraph + }{% + \expandafter\let\expandafter\Clause + \csname #1@Clause\endcsname + }% + \@ifundefined{#1@SubClause}{% + \let\SubClause\contract@subparagraph + }{% + \expandafter\let\expandafter\SubClause + \csname #1@SubClause\endcsname + }% + \@ifundefined{#1@Sentence}{% + \let\Sentence\contract@sentence + }{% + \expandafter\let\expandafter\Sentence\csname #1@Sentence\endcsname + }% + \@ifundefined{\scrjura@env@type @everypar}{% + \expandafter\let + \csname \scrjura@env@type @everypar\endcsname + \contract@everypar + }{}% +% \end{macrocode} +% Font alias for \fnt{Clause}. If neither a font not an alias is defined for +% the new environment \fnt{contract.Clause} is used. +% \changes{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{scrjura}{nested scrjura environments detected}{% + You must not use a `#1' environment inside\MessageBreak + a `\scrjura@env@type' environment or after loading\MessageBreak + package `scrjura' with option `\scrjura@env@type'!}% + \fi + }{% + #4% + \par + }% +} +%</body> +% \end{macrocode} +% \end{macro}%^^A \@dewjuraenvironment +% \end{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{v0.6}{2011/09/30}{deprecated} +% \begin{option}{tocentry,notocentry} +% \changes{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 \opt{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{scrjura}{deprecated option `entry'.\MessageBreak + You should use option `tocentry' instead of\MessageBreak + option `entry'% + }% + \def\contract@entry{#1}} +\define@key{contract}{tocentry}{\def\contract@entry{#1}} +\define@key{contract}{noentry}[]{% + \PackageWarning{scrjura}{deprecated option `noentry'.\MessageBreak + You should use option `notocentry' instead of\MessageBreak + option `noentry'% + }% + \let\contract@entry\relax} +\define@key{contract}{notocentry}[]{\let\contract@entry\relax} +\define@key{contract}{head}{\def\contract@head{#1}} +\define@key{contract}{nohead}[]{\let\contract@head\relax} +% \end{macrocode} +% \end{option} +% \end{option} +% \end{option} +% \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{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} +% \begin{command}{\theHClause,\theHSubClause} +% \begin{macrocode} +% Here we have some not good tested code for \pkg{hyperref}. +\newcounter{@AbsClause} +\newcommand*{\theH@AbsClause}{P-\arabic{@AbsClause}} +\newcommand*{\theHClause}{\theH@AbsClause} +\newcommand*{\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{v0.7}{2013/04/18}{increase counter \cnt{contractAbsoluteClause}} +% \changes{v0.7b}{2014/11/03}{more flexible +% \cnt{\meta{environment}AbsoluteClause}} +% \begin{macrocode} +\newcommand*{\contract@paragraph}[1]{% + \stepcounter{\scrjura@env@type AbsoluteClause}% + \ManualPar\parnumbertrue + \let\contract@title\relax + \let\contract@entry\relax + \let\contract@head\relax + \let\contract@number\relax + \contract@dummyfalse + \ifx\relax#1\relax\else\setkeys{contract}{#1}\fi +% \end{macrocode} +% Unless this is a dummy clause, the headings will be initialized and vertical +% skips will be done. +% \changes{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{v0.6b}{2013/04/16}{using \cs{contract@Clauseformat} for manual +% numbers too} +% \changes{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\scrjura@env@type Clause\endcsname + \refstepcounter{Clause}% + \else + \begingroup + \let\@elt\@stpelt + \cl@Clause + \endgroup +% \end{macrocode} +% \changes{v0.9f}{2016/02/24}{\cs{protect}\cs{\@nameuse} instead of +% \cs{csname}\dots\cs{endcsname}} +% \begin{macrocode} + \protected@edef\theClause{% + \protect\@nameuse{\scrjura@env@type @Clauseformat}{\contract@number}% + }% + \protected@edef\@currentlabel{\theClause}% + \fi + \stepcounter{@AbsClause}% + \begingroup\expandafter\expandafter\expandafter\endgroup + \expandafter\ifx\csname if@skiphyperref\endcsname\relax + \else + \expandafter\let\csname if@scrjura@skiphyperref\expandafter\endcsname + \csname if@skiphyperref\endcsname + \fi + \if@scrjura@skiphyperref\else + \hyper@refstepcounter{@AbsClause}% + \typeout{absolute Nummer: \the@AbsClause^^JLabel: `\@currentHref'}% + \fi +% \end{macrocode} +% 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{v0.7}{2013/04/28}{distance behind the number is part of the number} +% \changes{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} + \scrjura@afterheading + \fi +} +%</body> +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\contract@subparagraph} +% \changes{v0.6a}{2012/10/08}{fehlendes \cs{par} ergänzt}%^^A +% \changes{v0.7}{2013/04/18}{Zähler \texttt{contractAbsoluteClause} wird +% erhöht}%^^A +% \changes{v0.7}{2013/04/28}{Abstand nach der Nummer als Bestandteil der +% Nummer setzen}%^^A +% \changes{v0.9i}{2017/02/23}{Verwendung von \cs{ext@toc}}%^^A +% Das entspricht bis auf wenige Kleinigkeiten, die Unterparagraphen betreffen, +% |\contract@paragraph| +% \begin{macrocode} +%<*body> +\newcommand*{\contract@subparagraph}[1]{% + \stepcounter{\scrjura@env@type AbsoluteClause}% + \ManualPar\parnumbertrue + \let\contract@title\relax + \let\contract@entry\relax + \let\contract@head\relax + \let\contract@number\relax + \contract@dummyfalse + \ifx\relax#1\relax\else\setkeys{contract}{#1}\fi + \ifcontract@dummy\else + \par + \@afterindentfalse + \vskip\contract@preskip + \fi + \ifx\contract@number\relax + \let\p@SubClause\@empty + \let\theSubClause\thecontractSubClause + \refstepcounter{SubClause}% + \else + \begingroup + \let\@elt\@stpelt + \cl@SubClause + \endgroup + \protected@edef\theSubClause{\theClause\contract@number}% + \protected@edef\@currentlabel{\theSubClause}% + \fi + \stepcounter{@AbsClause}% + \begingroup\expandafter\expandafter\expandafter\endgroup + \expandafter\ifx\csname if@skiphyperref\endcsname\relax + \else + \expandafter\let\csname if@scrjura@skiphyperref\expandafter\endcsname + \csname if@skiphyperref\endcsname + \fi + \if@scrjura@skiphyperref\else + \hyper@refstepcounter{@AbsClause}% + \typeout{absolute Nummer: \the@AbsClause^^JLabel: `\@currentHref'}% + \fi + \ifcontract@dummy\else + \begingroup + \if@juratitlepagebreak\else\interlinepenalty\@M\fi + \contract@paragraph@font{\theSubClause + \ifx\contract@title\relax\else\enskip\fi}% + \contract@title + \ifx\contract@entry\relax\else + \expandafter\addxcontentsline\expandafter{\ext@toc}% + {cpar}[\theSubClause]\contract@entry + \addxcontentsline{cpa}{cpar}[\theSubClause]\contract@entry + \fi + \ifx\contract@head\relax\else + \expandafter\Clausemark\expandafter{% + \expandafter\theSubClause\expandafter\enskip\contract@head}% + \fi + \par + \endgroup + \nobreak\vskip\contract@postskip + \scrjura@afterheading + \fi +} +%</body> +% \end{macrocode} +% \end{macro} +% +% \begin{command}{\AutoPar,\ManualPar} +% Switching between automatic or manual paragraph numbers for all +% \pkg*{scrjura} environments. +% \begin{macrocode} +%<*body> +\newcommand*{\AutoPar}{% + \expandafter\let\expandafter\scrjura@everypar + \csname \scrjura@env@type @everypar\endcsname +} +\newcommand*{\ManualPar}{% + \let\scrjura@everypar\relax +} +%</body> +% \end{macrocode} +% \end{command} +% +% \begin{macro}{\scrjura@afterheading,\jura@afterheading} +% \changes{v0.7b}{2014/11/03}{\cs{jura@afterheading} renamed} +% \changes{v0.7b}{2014/11/03}{no argument} +% \changes{v3.27}{2019/02/25}{\cs{CheckCommand} for \cs{@afterheading}} +% 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*{\scrjura@afterheading}{% + \@nobreaktrue + \everypar{% + \if@nobreak + \@nobreakfalse + \clubpenalty \@M + \if@afterindent \else + {\setbox\z@\lastbox}% + \fi + \else + \clubpenalty \@clubpenalty + \everypar{% + \scrjura@everypar + }% + \fi + \scrjura@everypar + }% + \AutoPar +} +% \end{macrocode} +% \begin{macro}{\scrjura@everypar,\jura@everypar} +% \changes{v0.7b}{2014/11/03}{\cs{jura@everypar} renamed} +% The macro to be used at the very beginning of every paragraph to add the +% number. To be used only inside \pkg*{scrjura} environments, so empty outside. +% \begin{macrocode} +\newcommand*{\scrjura@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}{\scrjura@doendpe} +% \begin{macro}{\IncludeInRelease} +% \changes{v0.9e}{2015/11/03}{used temporary} +% \changes{v3.28}{2019/11/18}{\cs{ifstr} renamed into \cs{Ifstr}} +% \begin{macro}{\@gobble@IncludeInRelease} +% \changes{v0.9e}{2015/11/03}{used temporary} +% \begin{macro}{\EndIncludeInRelease} +% \changes{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{macrocode} +\providecommand*{\IncludeInRelease}[3]{% + \PackageInfo{scrjura}{temporary definition of \string\IncludeInRelease}% + \Ifstr{#1}{0000/00/00}{% + \let\IncludeInRelease\@undefined + \def\EndIncludeInRelease{\let\EndIncludeInRelease\@undefined}% + }{% + \let\EndIncludeInRelease\relax + \long\def\@gobble@IncludeInRelease##1\EndIncludeInRelease{% + \let\@gobble@IncludeInRelease\@undefined + }% + \expandafter\@gobble@IncludeInRelease + }% +} +\IncludeInRelease{2015/01/01}{\@doendpe}{clubpenalty fix} +\CheckCommand*\@doendpe{\@endpetrue + \def\par{\@restorepar + \clubpenalty\@clubpenalty + \everypar{}\par\@endpefalse}\everypar + {{\setbox\z@\lastbox}% + \everypar{}\@endpefalse}} +\newcommand*{\scrjura@doendpe}{% + \@endpetrue + \def\par{% + \@restorepar + \clubpenalty\@clubpenalty + \everypar{% + \csname scrjura@everypar\endcsname + }% + \par\@endpefalse + }% + \everypar{% + {\setbox\z@\lastbox}\everypar{% + \csname scrjura@everypar\endcsname + }% + \@endpefalse + }% +} +\EndIncludeInRelease +\IncludeInRelease{0000/00/00}{\@doendpe}{clubpenalty fix} +\CheckCommand*\@doendpe{\@endpetrue + \def\par{\@restorepar\everypar{}\par\@endpefalse}\everypar + {{\setbox\z@\lastbox}\everypar{}\@endpefalse}} +\newcommand*{\scrjura@doendpe}{% + \@endpetrue + \def\par{% + \@restorepar\everypar{% + \csname scrjura@everypar\endcsname + }% + \par\@endpefalse + }% + \everypar{% + {\setbox\z@\lastbox}\everypar{% + \csname scrjura@everypar\endcsname + }% + \@endpefalse + }% +} +\EndIncludeInRelease +%</body> +% \end{macrocode} +% \end{macro}%^^A \EndIncludeInRelease +% \end{macro}%^^A \@gobble@IncludeInRelease +% \end{macro}%^^A \IncludeInRelease +% \end{macro}%^^A \scrjura@doendpe +% \end{macro}%^^A \@doendpe +% \end{macro}%^^A \scrjura@everypar +% +% \subsection{Entry to table of contents} +% \begin{macro}{\l@cpar} +% Toc entry of contract clauses. +% \changes{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} +% +% \subsection{Numbering of paragraphs and sentences} +% +% \begin{macro}{\scrjura@separator,\jura@separator} +% \changes{v0.7b}{2014/11/03}{\cs{jura@separator} renamed} +% Used to make it possible to remove white spaces at the beginning or end. +% \begin{macrocode} +%<*body> +\DeclareRobustCommand*{\scrjura@separator}[1]{#1} +%</body> +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\scrjura@usetype,\jura@usetype} +% \changes{v0.5d}{2010/04/28}{new} +% \changes{v0.7b}{2014/11/03}{\cs{jura@usetype} renamed} +% By default it is robust but does only call \cs{scrjura@@usetype} with the +% only argument. +% \begin{macro}{\scrjura@@usetype,\jura@@usetype} +% \changes{v0.5d}{2010/04/28}{new} +% \changes{v0.7b}{2014/11/03}{\cs{jura@@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*{\scrjura@usetype}[1]{\scrjura@@usetype{#1}} +\newcommand*{\scrjura@@usetype}[1]{} +%</body> +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\contract@everypar} +% The \cs{scrjura@everpar} used by contracts. +% \begin{macro}{\ifparnumber,\parnumbertrue,\parnumberfalse} +% \changes{v0.6}{2011/09/29}{moved the definition into the definition of the +% option} +% \begin{counter}{par} +% \begin{command}{\thepar,\theHpar} +% \begin{command}{\parformat} +% \changes{v0.7}{2013/06/07}{new font element \fnt{parnumber}} +% \begin{command}{\parformatseparation} +% \changes{v0.9f}{2016/02/06}{new} +% \begin{macro}{\p@par} +% \changes{v0.5d}{2010/04/28}{added \cs{jura@usetype} with argument +% \cs{jura@env@type}} +% \begin{command}{\withoutparnumber} +% \changes{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}} +\newcommand*{\theHpar}{\theH@AbsClause-\Roman{par}} +\newcommand*{\parformat}{(\thepar)} +\newcommand*{\parformatseparation}{\nobreakspace} +\newkomafont{parnumber}{} +\renewcommand*\p@par{{\scrjura@usetype{\scrjura@env@type}\theSubClause\scrjura@separator{\nobreakspace}}} +\@addtoreset{par}{Clause} +\@addtoreset{par}{SubClause} +\newcommand*{\withoutparnumber}{} +%</body> +% \end{macrocode} +% \end{command} +% \end{macro} +% \end{command} +% \end{command} +% \end{command} +% \end{counter} +% \end{macro} +% \changes{v0.5c}{2010/04/26}{first argument of \cs{newmaxpar} and second +% argument of \cs{getmaxpar} is \meta{contract} not \meta{contractpars}} +% \changes{v0.5c}{2010/04/26}{\cs{contract@Clauseformat} expands while writing +% to its own argument} +% \changes{v0.7}{2013/04/18}{using counter \cnt{contractAbsoluteClause}} +% \changes{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{v0.7}{2013/05/23}{recognize paragraph number of \cs{thisparnumber}} +% \changes{v0.7}{2013/06/06}{if paragraph numbers are not completely numerical +% always set the number} +% \changes{v0.7b}{2014/11/03}{more flexible replacement of +% \cnt{contractAbsoluteClause}} +% \changes{v0.9f}{2016/02/06}{\cs{nobreakspace} replaced by +% \cs{parformatseparation}} +% \changes{v0.9g}{2016/03/25}{writing to \file{aux}-file \cs{if@filesw}} +% \begin{macrocode} +%<*body> +\newcommand*{\contract@everypar}{% + \ifparnumber + \ifx\scrjura@special@par\relax + \ifx\scrjura@special@reset@par\relax\else + \global\let\thepar\scrjura@special@reset@par + \global\let\scrjura@special@reset@par\relax + \fi + \refstepcounter{par}% + \refstepcounter{sentence}% + \else + \ifx\scrjura@special@reset@par\relax + \global\let\scrjura@special@reset@par\thepar + \fi + \global\let\thepar\scrjura@special@par + \global\let\scrjura@special@par\relax + \setcounter{sentence}{0}\refstepcounter{sentence}% + \fi + \begingroup + \if@filesw + \protected@write\@auxout{% + \expandafter\let\csname \scrjura@env@type @Clauseformat\endcsname + \@firstofone + }{% + \string\newmaxpar{\scrjura@env@type}% + {\csname the\scrjura@env@type + AbsoluteClause\endcsname}% + {\thepar}% + }% + \fi + \getmaxpar\@tempa{\scrjura@env@type}% + {\csname the\scrjura@env@type AbsoluteClause\endcsname}% + \typeout{Stored max is \@tempa}% + \def\reserved@a##1\@nnil{\def\@tempa{##1}}% + \afterassignment\reserved@a\@tempcnta=0\@tempa\relax\@nnil + \ifnum \@tempcnta>\@ne + {\usekomafont{parnumber}{\parformat\parformatseparation}}% + \else + \def\reserved@a{\relax}% + \ifx\@tempa\reserved@a + \withoutparnumber + \else + {\usekomafont{parnumber}{\parformat\parformatseparation}}% + \fi + \fi + \endgroup + \else + \begingroup\withoutparnumber\endgroup + \setcounter{sentence}{-1}\refstepcounter{sentence}% + \fi +} +%</body> +% \end{macrocode} +% \end{macro} +% +% \begin{command}{\thisparnumber} +% \changes{v0.7}{2013/05/23}{new} +% \begin{macro}{\scrjura@special@par,\scrjura@special@reset@par} +% \changes{v0.7}{2013/05/23}{new} +% You can use this for manual paragraph numbering. But the number has to be +% fully expandable! +% \begin{macrocode} +%<*body> +\newcommand*{\thisparnumber}[1]{% + \def\scrjura@special@par{#1}% +} +\newcommand*{\scrjura@special@par}{} +\let\scrjura@special@par\relax +\newcommand*{\scrjura@special@reset@par}{} +\let\scrjura@special@reset@par\relax +%</body> +% \end{macrocode} +% \end{macro}%^^A \scrjura@special@par +% \end{command}%^^A\thisparnumber +% +% +% \subsection{Referencing} +% +% \begin{command}{\refL} +% \changes{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{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{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{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\scrjura@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{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{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\scrjura@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{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{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{v0.9h}{2016/04/12}{\cs{@ifnextchar} replaced by +% \cs{kernel@ifnextchar}} +% \changes{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{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\scrjura@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{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{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{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{v0.7a}{2014/01/28}{using \cs{textsuperscript}} +% \changes{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} +% \begin{macro}{\p@sentence} +% \changes{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}} +\newcommand*{\theHsentence}{\theHpar-\arabic{sentence}} +\scr@ifundefinedorrelax{labelformat}{% + \renewcommand*{\p@sentence}{\expandafter\p@@sentence} + \newcommand*{\p@@sentence}[1]{\p@par{{\par@cite{\thepar}}% + \scrjura@separator{\nobreakspace}}{\sentence@cite{#1}}}% +}{% + \labelformat{sentence}{\p@par{{\par@cite{\thepar}}% + \scrjura@separator{\nobreakspace}}{\sentence@cite{#1}}}% +} +\newcommand*{\contract@sentence}{% +% \end{macrocode} +% \changes{v0.9e}{2015/11/04}{first start the paragraph then print the number} +% \changes{v3.26}{2018/07/20}{new font element \fnt{sentencenumber}} +% \changes{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{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{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{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} +% +% \subsection{Language dependent names} +% +% \begin{command}{\parname,\parshortname,\sentencename,\sentenceshortname} +% \begin{macro}{\scrjura@lang@error} +% \changes{v0.7}{2013/09/19}{Usage of \cs{PackageError} instead of +% \cs{PackageErrorNoLine}} +% \changes{v3.24}{2017/05/29}{adaption for language name bug in +% \pkg{babel}~3.10} +% 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}{\scrjura@lang@error{\parname}} +\providecommand*{\parshortname}{\scrjura@lang@error{\parshortname}} +\providecommand*{\sentencename}{\scrjura@lang@error{\sentencename}} +\providecommand*{\sentenceshortname}{\scrjura@lang@error{\sentenceshortname}} +\newcommand*{\scrjura@lang@error}[1]{% + \PackageError{scrjura}{% + current language not supported% + }{% + Currently scrjura only supports languages `german', `ngerman', + `austrian',\MessageBreak + `naustrian', `english', `american', `british', `canadian', + `USenglish',\MessageBreak + `UKenglish', `usenglish`, and `ukenglish'.\MessageBreak + It seems, that you are using another language (maybe `\languagename') or + that\MessageBreak + your language selection isn't compatible to package `babel'.\MessageBreak + Because of this you have to define `\string#1' by yourself!\MessageBreak + It would be nice if you'll send your definitions to the author.% + }% + \textbf{??}% +} +%</body> +% \end{macrocode} +% \end{macro} +% \end{command} +% +% \subsection{Using values from last \LaTeX{} run} +% +% \begin{command}{\newmaxpar} +% \changes{v0.6b}{2013/04/16}{\cs{\#1@Clauseformat} expands to its argument} +% \begin{command}{\getmaxpar} +% \changes{v0.6}{2011/09/30}{argument no 3 is expanded using +% \cs{protected@edef}} +% \changes{v0.5c}{2010/04/26}{\cs{protected@edef} replaced by \cs{edef}} +% \changes{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{v0.7b}{2014/11/10}{added fallback code to \file{aux}-file} +% \changes{v0.9g}{2015/03/25}{write to \file{aux}-file \cs{if@filesw}} +% Because some users remove \pkg*{scrjura} 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 +% \PrintChanges +% +\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: |