From 65facd2c4432f78112aa4b910d336f58c58aed46 Mon Sep 17 00:00:00 2001 From: Georg Pfeiffer Date: Tue, 8 Apr 2014 19:04:16 +0200 Subject: [PATCH] Initial commit --- ratex.sty | 626 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ratexenc.sty | 500 +++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 1126 insertions(+) create mode 100644 ratex.sty create mode 100644 ratexenc.sty diff --git a/ratex.sty b/ratex.sty new file mode 100644 index 0000000..94cb3ef --- /dev/null +++ b/ratex.sty @@ -0,0 +1,626 @@ +%% Damit Dokumente mit ratex.sty vollstŠndig gesetzt werden, sind in der +%% Regel mindestens zwei LaTeX-LŠufe erforderlich. +%% +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{ratex}[2010/11/11 v0.3.0.0 RA Friedrich Vosberg] +\RequirePackage{scrpage2} +\RequirePackage{ifthen} +\RequirePackage{twoopt} +\RequirePackage{refcount} +\RequirePackage{calc} +\RequirePackage{xspace} +\RequirePackage{enumerate} +\RequirePackage[ngerman]{datenumber} +\RequirePackage{pdfpages} +%%--------------------------------------------------------------------GENERELLES +\setlength{\parskip}{1.5ex} +\setlength{\parindent}{0ex} +%%------------------------------------------------------------------------PARTEI +%% Die Anweisung Partei erwartet zwei optionale und drei obligatorische +%% Argumente: [1] den gesetzlichen Vertreter der Partei, [2] den +%% Prozessvertreter der Partei, {3} den Namen/die Firma der Partei, {4} die +%% die Anschrift der Partei und {5} die Bezeichnung der Partei +\newcounter{parteicntr}% Dieser ZŠhler kšnnte verwendet werden, um bei gleichartigen Parteibezeichnungen automatisch in der Kurzbezeichnung die ErgŠnzung Èzu 1Ç, Èzu 2Ç, Èzu 3Ç usw. einzufŸgen. Problematisch wird das allerdings, wenn die Parteibezeichnungen sich durch die mŠnnliche und weibliche Form unterscheiden (KlŠger zu 1, KlŠgerin zu 2). +%% . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . +\newcommandtwoopt{\partei}[5][% + ][% + ]{% + \def\parteivertreter{#1}% + \def\parteianwalt{#2}% + \def\parteiname{#3}% + \def\parteianschrift{#4}% + \def\parteibezeichnung{#5}% + \stepcounter{parteicntr}% + \parteibox% +} +%% . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . +\def\parteibox{% + \begingroup + \setlength{\parindent}{0em} + \vspace{\baselineskip} + \par% + \parbox[b]{.6666\textwidth}{% + \raggedright + \textbf{\parteiname}\par + \ifthenelse{\equal{\parteivertreter}{}}{% + }{% + \textit{gesetzl.\,vertr.\,d.\,d.~{\parteivertreter}}\par + } + \parteianschrift\par% + \ifthenelse{\equal{\parteianwalt}{}}{% + }{% + \vspace{.5\baselineskip} + \hspace{3em}\parbox[b]{.6666\textwidth-3em}{\emph{rechtsanwaltlich vertreten durch: \parteianwalt}} + }% + }% + \hfill% + \textbf{% + --\,\parteibezeichnung\,--% + }% + \vspace{.5\baselineskip} + \par + \endgroup +} +%%------------------------------------------------------------------------RUBRUM +\newcommand{\rubox}[1]{% + \begingroup + \setlength{\parindent}{0em} + \vspace{\baselineskip} + \par% + \parbox{.75\textwidth}{% + \raggedright + \textbf{#1}\par + }% + \endgroup +} +%% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +\newenvironment{rubrum}{% + \def\normalparindent{\parindent}% + \setlength{\parindent}{2.5em} + \rule{5em}{0pt}\vspace{-2.5ex}\par +}{% +\par + \vspace{1.5ex} + \setlength{\parindent}{\normalparindent} +} +%%--------------------------------------------------------------------KURZRUBRUM +\newcommand{\kurzrubrum}[4][]{% + \def\jxkrsache{#1}% + \def\jxkrprta{#2}% + \def\jxkrprtb{#3}% + \def\jxkraz{#4}% + \jxkrmform% +}% +%% . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . +\def\jxkrmform{% + \par\vspace{.5\parskip}% + \hspace*{1.2em}% + \parbox{\textwidth-2.4em}{% + \bfseries% + \setlength{\parskip}{1.5ex} + \jxkrprta{}% + \ifthenelse{\equal{\jxkrprtb}{}}{% + }{% + ~gg.~\jxkrprtb% + }% + \ifthenelse{\equal{\jxkrsache}{}}{% + }{% + {\mdseries\\~wg.~\jxkrsache}% + }% + \par% + \ifthenelse{\equal{\jxkraz}{}}{}{% + --\,\jxkraz\,--% + }% + }% + \par% + \vspace{.5\baselineskip}% +} +%%-------------------------------------------------------------------------TENOR +\newcounter{jxtenor}% zŠhlt jxtenor-Umgebungen zur Identifizierung +%% . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . +\newcounter{subjxtenor}[jxtenor]% zŠhlt \items in jxtenor-Umgebung +%% . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . +\newcounter{refjxtenor}% HilfszŠhler, nur nštig da es in Version 2.x + % von refcount noch kein \getrefnumber gibt und 3.0 habe ich + % noch nicht auf CTAN gestellt. +%% . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . +\newenvironment{tenor}{% + \stepcounter{jxtenor}% + \let\jx@org@item\item + \def\item{% + \stepcounter{subjxtenor}% + \jx@org@item + }% + \@ifundefined{r@jxtenor@\thejxtenor}{% + % Referenz ist undefiniert + \enumerate + }{% + \setcounterref{refjxtenor}{jxtenor@\thejxtenor}% + \ifnum\value{refjxtenor}>1 % + \expandafter\enumerate + \bfseries + \else + \expandafter\itemize + \renewcommand{\labelitemi}{} + \bfseries + \fi + }% +}{ + \@ifundefined{r@jxtenor@\thejxtenor}{% + \endenumerate + }{% + \ifnum\value{refjxtenor}>1 % + \expandafter\endenumerate + \else + \expandafter\enditemize + \fi + }% + % Schreibe Label "jxtenor@" mit + % Zahl der \item-EintrŠge als Referenzwert. + % Ich hatte vorher absichtlich kein \refstepcounter + % genommen, um das normale \label/\ref innerhalb + % der Umgebung nicht weiter zu stšren. + \def\@currentlabel{\thesubjxtenor}% + \label{jxtenor@\thejxtenor}% +} +%%--------------------------------------------------------------------BEGR†NDUNG +\newenvironment{gruende}{% +% \setlength{\emergencystretch}{.7em} + \sloppy + \newlength\normaltextwidth{} + \setlength{\normaltextwidth}{\textwidth} + \ifthenelse{\equal{\documentclass}{scrlttr2}}{% + \cohead{\raisebox{-5ex}{\rule{\normaltextwidth}{.4pt}}} + }{% + } + \setlength{\linewidth}{\normaltextwidth} + \begin{addmargin}[.2\normaltextwidth]{0em} + \setlength{\baselineskip}{3ex} + \setlength{\parindent}{0em} + \par + {\LARGE{\textbf{\rule{0pt}{4ex}BegrŸndung:}}} + \par + \nopagebreak +}{% + \end{addmargin} + \setlength{\textwidth}{\normaltextwidth} +% \nopagebreak +% \enlargethispage{2\baselineskip} +% \nopagebreak% +% \begin{center} +% \vspace{8ex} +% Friedrich Vosberg\\ Rechtsanwalt +% \end{center} +} +%%------------------------------------------------------------------BEWEIS (alt) +%% +\newcounter{beweismittel}% ZŠhler, der die beigefŸgten Beweismittel hochzŠhlt +%% . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . +\newcommand*{\beweis}[2][]{% Anweisung zum Eingeben des Beweismittels + \def\jxbwmttl{#2}% Bezeichnung des Beweismittels + \def\jxbwmark{#1}% Marker fŸr zu zŠhlende Beweismittel + \jxbwform% +} +%% . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . +\def\jxbwform{% Formatierung des Beweismittels + \vspace{.5ex}\par\hspace*{1em}\textbf{Beweis:\hspace{.5em}}% + \parbox[t]{% + .98\linewidth% Das kann so nicht stimmen, hier mŸsste auch 1.0 gehen + -\widthof{\hspace*{1em}\textbf{Beweis:\hspace{.5em}}}% + -\widthof{\hspace*{1em}\textbf{--\,\jxbwmark\,\arabic{beweismittel}\,--}}% + }{% + \raggedright + \jxbwmttl + }% + \ifthenelse{\equal{\jxbwmark}{}}{% + }{% + \stepcounter{beweismittel}% ... wird der ZŠhler hochgesetzt, ... + \hfill\hspace{1em}\textbf{--\,\jxbwmark\ \arabic{beweismittel}\,--} + }% + \ignorespaces + \vspace{.5ex}\par +} +%%------------------------------------------------------------------BEWEIS (neu) +\newcounter{RTXevdc} +\newcounter{RTXevdcencl} +\newcommandtwoopt*{\rtxevdc}[3][][]{% + \ifthenelse{\equal{#2}{}}{}{% + \stepcounter{JXattachcntr}% + \stepcounter{RTXevdc}% + }% + \par\vspace{1.5ex}% + \hspace{1.5em}\textbf{Beweis:}% + \hspace{1ex}\parbox[t]{.5\textwidth}{\linespread{1}\selectfont\RaggedRight#3}% + \ifthenelse{\equal{#2}{}}{}{% + \marginpar{% + \setlength{\baselineskip}{1.5ex}{% + \bfseries\RaggedRight% + \hspace{0pt}--\,#1~\theRTXevdc\,--{} + }% + }% + \protected@edef\JXenclContent{\JXenclContent #1~\theRTXevdc{} (\JXenclAnlNr{}~\theJXattachcntr)\endgraf}% + \g@addto@macro\IncludeAppendixHook{% + \cleardoublepage% + \stepcounter{JXenclcntr}% + \stepcounter{RTXevdcencl}% + \includepdf[% + pages={-}, + picturecommand*={% + \put(.72\paperwidth,.955\paperheight){% + \fboxrule2mm\fboxsep2mm% + \fcolorbox{red}{white}{% + \large\bfseries\sffamily + -- Anlage~#1~\theRTXevdcencl~-- + }% + }% + }% + ]% + {#2}% + }% + }\vspace{2.5ex}% +}% +%%---------------------------------------------------------------BEWEIS (ganz neu) +%% Das ganz neue Beweismakro rtxevdx {x fŸr extended} kann auf einzelne BlŠtter +%% eines als PDF-Datei vorliegenden Dokuments zugreifen. Zu diesem Zweck wurde +%% das bisher optionale Argument des BeweismittelfŸhrers obligatorisch gemacht, +%% es kann aber leer bleiben. Wenn schon keine PDF-Datei angegeben ist, wird +%% ohnehin keine Angabe des BeweisfŸhrers gesetzt. Die Syntax lautet jetzt: +%% \rtxevdx[Blattt][Datei]{Bezeichnung}{BeweisfŸhrer} +%% +\newcommandtwoopt*{\rtxevdx}[4][][]{% + \ifthenelse{\equal{#2}{}}{}{% + \stepcounter{JXattachcntr}% + \stepcounter{RTXevdc}% + }% + \par\vspace{1.5ex}% + \hspace{1.5em}\textbf{Beweis:}% + \hspace{1ex}\parbox[t]{.5\textwidth}{\linespread{1}\selectfont\RaggedRight#3}% + \ifthenelse{\equal{#2}{}}{}{% + \marginpar{% + \setlength{\baselineskip}{1.5ex}{% + \bfseries\RaggedRight% + \hspace{0pt}--\,#4~\theRTXevdc\,--{} + }% + }% + \protected@edef\JXenclContent{\JXenclContent #1~\theRTXevdc{} (\JXenclAnlNr{}~\theJXattachcntr)\endgraf}% + \g@addto@macro\IncludeAppendixHook{% + \cleardoublepage% + \stepcounter{JXenclcntr}% + \stepcounter{RTXevdcencl}% + \includepdf[% + pages={#1}, + picturecommand*={% + \put(.72\paperwidth,.955\paperheight){% + \fboxrule2mm\fboxsep2mm% + \fcolorbox{red}{white}{% + \large\bfseries\sffamily + -- Anlage~#4~\theRTXevdcencl~-- + }% + }% + }% + ]% + {#2}% + }% + }\vspace{2.5ex}% +}% +%%-----------------------------------------------------------------------VERTRAG +%% +%% Die Umgebung Vertrag erwartet zwei obligatorische Argumente: {1} den Ort des +%% Vertragsabschlusses und {2} die Anzahl der Vertragsparteien fŸr die Anzahl +%% der Unterschriftsfelder am Schluss des Vertrags +%% +%% Dem Vertrag werden die Parteien (PATREI) in einer Rubrum-Umgebung (RUBRUM) +%% vorangestellt. +%% +%% In der Umgebung Vertrag kšnnen die Anweisungen aus NORMTEXT verwendet werden. +%% +\newsavebox{\vertragsort} +%% . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . +\newsavebox{\unterschriften} +%% . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . +\newcounter{unterschriftencounter} +%% . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . +\newenvironment{vertrag}[2]{% + \setlength{\parindent}{0em}% + \setlength{\parskip}{1.5ex} + \savebox{\vertragsort}{#1} + \def\sigcount{#2}% + \savebox{\unterschriften}{% +% \stepcounter{unterschriftencounter}% + \parbox{\textwidth}{% + \begin{center} + \whiledo{\arabic{unterschriftencounter}<\sigcount}{% +% \parbox{.45\textwidth}{% +% \begin{center} +% \vspace{4ex} +% \vfill +% \rule{.4\textwidth}{.2pt}% +% \linebreak% +% \footnotesize{Rechtsanwalt Friedrich Vosberg}% +% \linebreak% +% \footnotesize{fŸr Ottmar Hermann, Insolvenzverwalter}% +% \end{center}\vspace{-12ex} +% \stepcounter{unterschriftencounter}% +% }% +% \hfill% + \parbox{.45\textwidth}{% + \begin{center} + \vspace{4ex} +% \vfill + \rule{.4\textwidth}{.2pt}% + \linebreak% + \footnotesize{(Unterschrift)}% + \linebreak% + \footnotesize{(ggf. Stempel)}% + \end{center} +% \vspace{-12ex} + \stepcounter{unterschriftencounter}% + }% + \hfill% + }% + \end{center}%\vspace{-6ex} + }% + }% +}{% + \par + \parbox{\textwidth}{% + \vspace{3ex}\par\usebox{\vertragsort}, den \dotfill + \par% + \begin{center} + \usebox{\unterschriften} + \end{center} + }% + \setcounter{unterschriftencounter}{0}% + \setcounter{PGF}{0}% + \setcounter{ABSATZ}{0}% + \setcounter{SATZ}{0}% + \setcounter{TEIL}{0}% +}% +%% . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . +\def\salvatorischeklausel{% + \pgf[Vertragserhaltung]{} + \abs\stz Sollten einzelne Bestimmungen dieses Vertrags ganz oder teilweise unwirksam oder undurchfŸhrbar sein oder werden, oder sollte dieser Vertrag LŸcken enthalten, so wird die Wirksamkeit der Ÿbrigen Bestimmungen nicht berŸhrt. \stz Anstelle der unwirksamen, undurchfŸhrbaren oder fehlenden Regelung gilt eine Regelung als vereinbart, die den Interessen der Parteien zur Zeit der Vertragsvereinbarung am ehesten entspricht.% +}% +\def\schriftformerfordernis{% + \pgf[Zugang von WillenserklŠrungen und Formerfordernisse]{} + \abs\stz\sloppy WillenserklŠrungen einer Partei im Zusammenhang mit dem Zustandekommen, der DurchfŸhrung oder der Beendigung dieses Vertrages bedŸrfen zu ihrer Wirksamkeit der Schriftform, sofern dieser Vertrag oder das Gesetz nicht ausdrŸcklich eine andere Form vorschreibt oder dieser Vertrag eine andere Form genŸgen lŠsst. \stz ZugangsbedŸrftige WillenserklŠrungen einer Partei gelten als zugegangen, wenn sie in Schriftform der anderen Partei zugegangen sind. \stz Ist eine in dieser Weise zugegangene WillenserklŠrung zuvor bereits in Textform zugegangen, so gilt zugunsten der erklŠrenden Partei die WillenserklŠrung als zu dieser Zeit wirksam zugegangen, sofern sie unverzŸglich danach in Schriftform zugegangen ist. + \abs\stz €nderungen und ErgŠnzungen dieses Vertrages bedŸrfen zu Ihrer Wirksamkeit der Schriftform. +} +\def\vollstaendigkeitsklausel{% + \pgf[VollstŠndigkeit der Urkunde]{} + \abs\stz\sloppy Diese Urkunde enthŠlt oberhalb der Unterschriften der Parteien sŠmtliche WillenserklŠrungen, die die Parteien mit rechtsverbindlicher Wirkung in Bezug auf den Gegenstand dieses Vertrages abgegeben haben. \stz Nebenabreden au§erhalb dieser Urkunden bestehen nicht. +} +\def\schlussbestimmungen{% + \salvatorischeklausel + \schriftformerfordernis + \vollstaendigkeitsklausel +} + +%%----------------------------------------------------------------------NORMTEXT +%% +%% \teil fett zentriert, ršmisch nummeriert +%% \pgf[} +%% \abs\stz \stz +%% \abs\stz +%% +%% +%% +\InputIfFileExists{\jobname.pgf}{}{} +% +\newwrite\pgfnr +\immediate\openout\pgfnr=\jobname.pgf +%% +\newcounter{PGF} +\newcounter{ABSATZ}[PGF] +\newcounter{SATZ}[ABSATZ] +\newcounter{TEIL} +%% +\newcommand\TEIL[2][Abschnitt]{% + \begin{center} + \parbox{.8\columnwidth}{% + \begin{center} + \bfseries% + \stepcounter{TEIL}% + \Roman{TEIL}.~#1\\% + #2% + \end{center} + }% + \vspace{-3ex}% + \end{center}% + \nopagebreak% +} +% +\def\teil{\TEIL} +%% +\newcommand\PGF[2][]{% + \def\pgftit{% + \ifthenelse{\equal{#1}{}}{% + }{% + #1.% + }% + }% + \def\thispgf{#2}% + \stepcounter{PGF}% + {\par\bfseries% + \vspace{1.5ex}% + \ifthenelse{\equal{#2}{}}{% + \S\,\arabic{PGF}% + }{% + \setcounter{PGF}{\arabic{PGF}-1}% + \S\,\arabic{PGF}% + }% + \ifthenelse{\equal{#2}{}}{% + }{% + \,#2% + }% + ~\pgftit% + \nopagebreak% + }% +} +% +\def\pgf{\PGF} +%% +\newcommand\ABSATZ{% + \ifnum\theABSATZ>0% + \immediate\write\pgfnr{% + \string\@namedef{hasmanyabsatz\thePGF}{x}% + }% + \fi% + \stepcounter{ABSATZ}% + \ifnum\theABSATZ>1% + \par% + \fi% + \@ifundefined{hasmanyabsatz\thePGF}{% nur ein Absatz: keine Nummer + }{% + (\arabic{ABSATZ})~% + }% +}% +% +\def\abs{\ABSATZ} +%% +\newcommand\SATZ{% + \ifnum\theSATZ>0% + \immediate\write\pgfnr{% + \string\@namedef{hasmanysatz\theABSATZ-\thePGF}{x}% + }% + \fi% + \stepcounter{SATZ}% + \@ifundefined{hasmanysatz\theABSATZ-\thePGF}{% nur ein Satz: keine Nummer + }{% + \textsuperscript{\arabic{SATZ}}\hspace{.2ex}\nolinebreak% + }% +} +\def\stz{\SATZ} +%%=========================================================================FRIST +%% +%% Die Anweisung \frist[]{} und \frist*[]{} unterscheiden sich dadurch, dass +%% die Sternvariante fett und zentriert gesetzt wird, wŠhrend die andere +%% Variante fett im fortlaufenden Text gesetzt wird. Die Anweisung erwartet als +%% optionales Argument ein etwaiges Satzzeichen am Ende der Angabe des letzten +%% Tags der Frist. Das obligatorsiche Argument muss die Anzahl der Tage +%% enthalten, die die Frist dauern soll. FŠllt das Fristende auf einen Samstag +%% oder Sonntag, legt das Makro das Fristende automatisch auf den folgenden +%% Montag. ZukŸnftig soll \frist gesetzliche Feiertage erkennen kšnnen und ein +%% Fristende, das auf einen gesetzlichen Feiertag fŠllt, automatisch auf den +%% nŠchsten Werktag legen. +%% +\newcommand*\frist{% + \@ifstar\s@frist\@frist% +}% +%% +\newcommand*{\@frist}[2][]{% + \def\CntOfDays{#2}% + \setdatetoday% + \addtocounter{datenumber}{\CntOfDays}% + \setcounter{datenumber}{\thedatenumber}% + \setdatebynumber{\thedatenumber}% +% Die folgenden acht Zeilen sorgen dafŸr, dass, wenn das +% Fristende auf den 3. Oktober fŠllt, die Frist um einen +% Tag verlŠngert wird. + \newcounter{dateone}% + \setmydatenumber{dateone}{\the\year}{10}{03}% + \ifthenelse{\equal{\thedatenumber}{\thedateone}}{% + \addtocounter{datenumber}{1}% + }{% + }% + \setcounter{datenumber}{\thedatenumber}% + \setdatebynumber{\thedatenumber}% +% Die folgenden zehn Zeilen sorgen dafŸr, dass, wenn das +% Fristende auf einen Samstag oder Sonntag fŠllt, die +% Frist bis zum kommenden Montag verlŠngert wird. + \ifthenelse{\equal{\arabic{datedayname}}{6}}{% + \addtocounter{datenumber}{2}% + }{% + \ifthenelse{\equal{\arabic{datedayname}}{7}}{% + \addtocounter{datenumber}{1}% + }{% + }% + }% + \setcounter{datenumber}{\thedatenumber}% + \setdatebynumber{\thedatenumber}% +% Die folgenden sechs Zeilen sorgen dafŸr, dass, wenn das +% wegen des Wochenendes verschobene Fristende auf Montag, +% den 3. Oktober fŠllt, die Frist nochmals um einen Tag +% verlŠngert wird. + \ifthenelse{\equal{\thedatenumber}{\thedateone}}{% + \addtocounter{datenumber}{1}% + }{% + }% + \setcounter{datenumber}{\thedatenumber}% + \setdatebynumber{\thedatenumber}% +% + \def\FristTag{\datedayname}% + \def\FristDatum{\datedate}% + \textbf{% + \FristTag, den \FristDatum#1{}% + }% +}% +\newcommand*{\s@frist}[2][]{% + \def\CntOfDays{#2}% + \setdatetoday% + \addtocounter{datenumber}{\CntOfDays}% + \setcounter{datenumber}{\thedatenumber}% + \setdatebynumber{\thedatenumber}% +% Die folgenden acht Zeilen sorgen dafŸr, dass, wenn das +% Fristende auf den 3. Oktober fŠllt, die Frist um einen +% Tag verlŠngert wird. + \newcounter{dateone}% + \setmydatenumber{dateone}{\the\year}{10}{03} + \ifthenelse{\equal{\thedatenumber}{\thedateone}}{% + \addtocounter{datenumber}{1} + }{% + } + \setcounter{datenumber}{\thedatenumber}% + \setdatebynumber{\thedatenumber}% +% Die folgenden zehn Zeilen sorgen dafŸr, dass, wenn das +% Fristende auf einen Samstag oder Sonntag fŠllt, die +% Frist bis zum kommenden Montag verlŠngert wird. + \ifthenelse{\equal{\arabic{datedayname}}{6}}{% + \addtocounter{datenumber}{2}% + }{% + \ifthenelse{\equal{\arabic{datedayname}}{7}}{% + \addtocounter{datenumber}{1}% + }{% + }% + }% + \setcounter{datenumber}{\thedatenumber}% + \setdatebynumber{\thedatenumber}% +% Die folgenden sechs Zeilen sorgen dafŸr, dass, wenn das +% wegen des Wochenendes verschobene Fristende auf Montag, +% den 3. Oktober fŠllt, die Frist nochmals um einen Tag +% verlŠngert wird. + \ifthenelse{\equal{\thedatenumber}{\thedateone}}{% + \addtocounter{datenumber}{1} + }{% + } + \setcounter{datenumber}{\thedatenumber}% + \setdatebynumber{\thedatenumber}% +% + \def\FristTag{\datedayname}% + \def\FristDatum{\datedate}% + \nopagebreak% + \begin{center} + \bfseries% + \large{\FristTag, den \FristDatum#1}% + \end{center}% + \nopagebreak% + \par% +% \vspace{\parskip} +} +%%============================================================FETT UND ZENTRIERT +\newcommand{\fettzentriert}[2][\normalsize]{% + \vspace{-.5\baselineskip} + \begin{center} + \bfseries% + #1#2% + \end{center} +} +%%---------------------------------------------------------------------VOLLMACHT +\newcommand{\Vollmacht}{% + \rtxencl[][]{-}{MdtVollmOrig}{Vollmacht}% +} +%%=======================================================================HISTORY +%% 0.2.1 (2013/09/19) FRIST um Feiertagsfunktion 3. Oktober ergŠnzt +%% 0.2 (2010/06/09) basicly revised version +%% 0.1 (2006/06/06) initial release +%%===========================================================================EOF \ No newline at end of file diff --git a/ratexenc.sty b/ratexenc.sty new file mode 100644 index 0000000..98e8810 --- /dev/null +++ b/ratexenc.sty @@ -0,0 +1,500 @@ +%% \ratexenc ist ein Paket, um (Geschäfts)-Briefen, die mit scrlttr2 aus %% dem KOMA-Skript erzeugt werden, PDF-Dateien als Anhänge hinzu zu +%% fügen und diese zu referrenzieren. +%% +%% Außerdem stellt das Paket einen Befehl \fax[]{} zur Verfügung. Dieser +%% kann an beliebiger Stelle in einem eigens definierten Briefkopf +%% verwendet werden. Als obligatorisches Argument wird die Faxnummer +%% benötigt, die vom Paket telprint.sty entsprechend ausgegeben wird. +%% Als optionales Argument kann »vorab« oder »nur« eingegeben werden. +%% Dementsprechend erscheint dann in der Ausgabe »nur als Fax« oder +%% »vorab als Fax«. Außerdem wird unterhalb der Faxnummer angegeben, +%% wieviele Seiten das Fax umfasst. +%% +%% Das Paket ratexenc kennt drei Optionen: +%% +%% [footnote] Die Referenz im Brieftext verweist mittels nummerierter +%% Fußnote auf den entsprechend nummerierten Listeneintrag +%% unter der Grußformel und die entsprechende auf die Anlage +%% gestempelte Nummer der Anlage +%% [margin] Die beigefügten Dokumente werden jeweils in einer +%% Randglosse erwähnt. Außerdem werden sämtliche Anhänge +%% unter der Grußformel unter Nennung der fortlaufenden +%% Nummer der Anlage aufgelistet und jeder Anlage wird +%% fortlaufend ihre Nummer aufgestempelt. +%% [noencl] Entspricht [margin] mit dem Unterschied dass die Anlagen +%% nur in Randglossen erwähnt werden. Eine Auflistung unter +%% der Grußformel findet nicht statt. +%% +%% Getestet wurde das Paket nur mit scrlttr2. Kernstück ist die +%% Anweisung \rtxencl. Deren Syntax lautet: \rtxencl[Bezeichnung der +%% Anlage][Art der Anlage]{Dateiname der Anlage}{Stichwort im Brieftext} +%% Die Anweisung \rtxencl bewirkt, dass (a) je nach gewählter Option +%% die angehängten Dokumente im Brief referenziert und gelistet werden, +%% (b) die Anlagen sodann fortlaufend nummeriert werden und (c) +%% sämtliche referrenzierten Dokumente als Anlage in %% die PDF-Ausgabe +%% des jeweiligen Briefs inkludiert werden Dabei unterstützt das Paket +%% die Fähigkeit von KOMA-Skript mit einem Dokument mehrere Briefe zu +%% erzeugen. Jeder Brief kann seine eigenen, unterschiedlichen Anlagen +%% haben; Die Anlagenzählung beginnt bei jedem Brief neu. +%% +%% Die Anweisung \rtxencl erfordert zwei obligatorische Argumente, +%% nämlich 1.) im Text des Briefs die Benennung des angehängten +%% Dokuments, sozusagen das Stichwort. Dessen Bezeichnung wird -- +%% vorbehaltlich eines optionalen Arguments -- auch als Bezeichnung der +%% Anlage verwendet; und 2.) den Dateinamen des anzuhängenden +%% PDF-Dokuments. +%% +%% Optional können zwei weitere Argumente verwendet werden: 1.) Soll das +%% angehängte Dokument -- je nachdem welche Paketoption gewählt wurde -- +%% in der Randglosse und in der nach der Grußformel folgenden Auflistung +%% eine andere Benennung haben als die Referenz, resp. das Stichwort im +%% Brieftext, kann als erstes optionales Argument der Refernzname +%% eingesetzt werden; er ersetzt dann in er Anlagenbennenung das +%% Stichwort des Brieftextes. Wird dieses optionale Argument nicht +%% definiert wird automatisch die im Brieftext verwendete Bezeichnung +%% gesetzt. Achtung: Falls im Brieftext die Bezeichnung des Dokuments im +%% Genitiv steht -- »Kopie des Briefs« -- genügt, nur den Wortteil +%% »Brief«, also ohne »s« als obligatorsiches Argument zu verwenden. So +%% wird vermieden, dass in der Randglosse und in der Auflistung am +%% Briefende »Briefs« steht. 2.) Je nachdem, ob dem wirklichen Brief das +%% Original oder die Kopie beigefügt wird, kann als zweites optionales +%% Argument ein O, ein E oder ein K angegeben werden, so dass in der +%% Randnotiz die Mitteilung »im Original«, »im Entwurf« oder »in Kopie« +%% erscheint. Wird das Argument nicht gesetzt, erscheint Kopie. Kopien +%% werden außerdem durch ein diagonal aufgesetztes KOPIE markiert, +%% Entwürfe durch ein diagonal aufgesetzes ENTWURF. +%%================================================================ +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{ratexenc}[2010/02/06 v0.2.0.0 RA Friedrich Vosberg] +\RequirePackage{graphicx, ifthen, pdfpages, picture, ragged2e, telprint, twoopt, zref-abspage} +%%---------------------------------------------------------------- +\KOMAoptions{twoside=semi}% +%%---------------------------------------------------------------- +\def\JX@Anlagenform{}% +\def\JX@Anlagenname{}% +%%---------------------------------------------------------------- +\newcommand*{\JXenclContent}{}% +%%---------------------------------------------------------------- +\def\JXenclAnlage{als Anlage}% +\def\JXenclContent{}% +\def\JXenclOriginal{\textbf{im Original}}% +\def\JXenclKopie{in Kopie}% +\def\JXenclEntwurf{im Entwurf}% +\def\JXenclEmpty{}% +\def\JXenclStempelK{KOPIE}% +\def\JXenclStempelE{ENTWURF}% +\def\JXenclStempelX{ENTWERTET}% +\def\JXenclAnlNr{Anl. Nr.}% +%%---------------------------------------------------------------- +\newcounter{AbsLetter} +%%---------------------------------------------------------------- +\newcounter{JXenclcntr} +%%---------------------------------------------------------------- +\newcounter{JXattachcntr} +%%---------------------------------------------------------------- +\renewcommand*{\theAbsLetter}{letter@\number\value{AbsLetter}} +%%---------------------------------------------------------------- +\newcounter{FirstLetterPage} +%%---------------------------------------------------------------- +\renewcommand*{\theFirstLetterPage}{\number\value{FirstLetterPage}} +%%---------------------------------------------------------------- +\newcommand*{\Debug}[1]{% +% \typeout{[Debug] #1}% +} +%%---------------------------------------------------------------- +\newcommand*{\StartLetterPages}{% + \stepcounter{AbsLetter}% + \Debug{\string\StartLetterPages: \theAbsLetter}% + \setcounter{FirstLetterPage}{\value{abspage}}% + \Debug{FirstPage (zero-based): \theFirstLetterPage}% + \let\OrgClearDoublePage\cleardoublepage + \renewcommand*{\cleardoublepage}{% + \clearpage + \addtocounter{FirstLetterPage}{-\value{abspage}}% + \OrgClearDoublePage + \addtocounter{FirstLetterPage}{\value{abspage}}% + \Debug{% + FirstPage (zero-based) after % + \string\cleardoublepage: \theFirstLetterPage + }% + }% +} +%%---------------------------------------------------------------- +\newcommand*{\IncludeAppendixHook}{} +%%---------------------------------------------------------------- +\newcommand*{\StopLetterPages}{% + \IncludeAppendixHook + \clearpage + \Debug{AbsPage: \number\value{abspage}}% + % calculate difference and store in FirstLetterPage + \setcounter{FirstLetterPage}{-\value{FirstLetterPage}}% + \addtocounter{FirstLetterPage}{\value{abspage}}% + \Debug{Pages of \theAbsLetter: \theFirstLetterPage}% + \zref@wrapper@immediate{% + % set info for next label + \edef\@currentlabel{\theFirstLetterPage}% + \zref@labelbyprops{\theAbsLetter}{default}% + }% +} +%%---------------------------------------------------------------- +\newcommand*{\LetterPages}{% + \zref@refused{\theAbsLetter}% + \zref@extractdefault{\theAbsLetter}{default}{0}% +} +%%---------------------------------------------------------------- +\AtBeginLetter{\StartLetterPages} +%%---------------------------------------------------------------- +\DeclareOption{footnote}{% + \newcommandtwoopt{\rtxencl}[5][][K]{% + \stepcounter{JXattachcntr}% + \ifthenelse{\equal{#2}{K}}{% + \let\JX@Anlagenform\JXenclKopie% + }{% + \ifthenelse{\equal{#2}{E}}{% + \let\JX@Anlagenform\JXenclEntwurf% + }{% + \let\JX@Anlagenform\JXenclOriginal% + }% + }% + \ifthenelse{\equal{#1}{}}{% + \def\JX@Anlagenname{#4}% + }{% + \def\JX@Anlagenname{#1}% + }% + #4\textsuperscript{\theJXattachcntr}% + \protected@edef\JXenclContent{% + \JXenclContent\theJXattachcntr) \JX@Anlagenname{} (\JX@Anlagenform)\endgraf% + }% + \l@addto@macro\IncludeAppendixHook{% + \cleardoublepage% + \stepcounter{JXenclcntr}% + \includepdf[% + pages={#5}, + picturecommand*={% + \put(.83\paperwidth,.96\paperheight){% + \makebox(0,0)[cb]{% + \LARGE\bfseries\sffamily + -- \JXenclAnlNr~\theJXenclcntr~-- + }% + }% + },% + picturecommand={% + \ifthenelse{\equal{#2}{K}}{% + \put(0.5\paperwidth, 0.5\paperheight){% + \makebox(0,0)[c]{% + \resizebox{.95\paperwidth}{!}{% + \rotatebox{50}{% + \pdfliteral{% + 1 Tr + .025 w + }% + \textsf{\textbf{\JXenclStempelK}}% + \pdfliteral{% + 0 Tr + }% + }% + }% + }% + }% + }{% + \ifthenelse{\equal{#2}{E}}{% + \put(0.5\paperwidth, 0.5\paperheight){% + \makebox(0,0)[c]{% + \resizebox{.95\paperwidth}{!}{% + \rotatebox{50}{% + \pdfliteral{% + 1 Tr + .025 w + }% + \textsf{\textbf{\JXenclStempelE}}% + \pdfliteral{% + 0 Tr + }% + }% + }% + }% + }% + }{% + \ifthenelse{\equal{#2}{X}}{% + \put(0.5\paperwidth, 0.5\paperheight){% + \makebox(0,0)[c]{% + \resizebox{.95\paperwidth}{!}{% + \rotatebox{50}{% + \pdfliteral{% + 1 Tr + .025 w + }% + \textsf{\textbf{\JXenclStempelX}}% + \pdfliteral{% + 0 Tr + }% + }% + }% + }% + }% + }{% +} + }% + }% + }% + ]% + {#3}% + }% + }% +}% +%%---------------------------------------------------------------- +% Das Kommando \rtxencl hat jetzt (seit 2011/06/09) fünf Argumente. Optional sind ein besonderer Name und die Anweisung ob Kopie, Entwurf oder Original. Obligatorisch sind die Seiten, wobei »-« für »alle« steht; der Dateiname der einzufügenden Datei und das Stichwort. +\DeclareOption{margin}{% + \newcommandtwoopt{\rtxencl}[5][][]{% + \stepcounter{JXattachcntr}% + \ifthenelse{\equal{#2}{K}}{% + \let\JX@Anlagenform\JXenclKopie% + }{% + \ifthenelse{\equal{#2}{E}}{% + \let\JX@Anlagenform\JXenclEntwurf% + }{% + \ifthenelse{\equal{#2}{O}}{% + \let\JX@Anlagenform\JXenclOriginal% + }{% + \let\JX@Anlagenform\JXenclEmpty% + }% + }% + }% + \ifthenelse{\equal{#1}{}}{% + \def\JX@Anlagenname{#5}% + }{% + \def\JX@Anlagenname{#1}% + }% + #5\marginpar{% + \setlength{\baselineskip}{1.5ex}{% + \sffamily\scriptsize\RaggedRight% + \hspace{0pt}Anlage~\theJXattachcntr% + }% + }% + \protected@edef\JXenclContent{\JXenclContent \JX@Anlagenname{} (\JXenclAnlNr{}~\theJXattachcntr)\endgraf}% + \g@addto@macro\IncludeAppendixHook{% + \cleardoublepage% + \stepcounter{JXenclcntr}% + \includepdf[% + pages={#3}, + picturecommand*={% + \ifthenelse{\equal{#2}{}}{}{% + \put(.72\paperwidth,.955\paperheight){% + \fboxrule2mm\fboxsep2mm% + \fcolorbox{red}{white}{% + \LARGE\bfseries\sffamily + -- \JXenclAnlNr~\theJXenclcntr~-- + }% + }% + }% + },% + picturecommand={% + \ifthenelse{\equal{#2}{K}}{% + \put(0.935\paperwidth, 0.5\paperheight){% + \makebox(0,0)[c]{% + \resizebox{!}{.8\paperheight}{% + \rotatebox{90}{% + \pdfliteral{% + 1 Tr + .025 w + }% + \textsf{\textbf{\JXenclStempelK}\hspace{3em}\textbf{\JXenclStempelK}\hspace{3em}\textbf{\JXenclStempelK}}% + \pdfliteral{% + 0 Tr + }% + }% + }% + }% + }% + }{% + \ifthenelse{\equal{#2}{E}}{% + \put(0.935\paperwidth, 0.5\paperheight){% + \makebox(0,0)[c]{% + \resizebox{!}{.8\paperheight}{% + \rotatebox{90}{% + \pdfliteral{% + 1 Tr + .025 w + }% + \textsf{\textbf{\JXenclStempelE}\hspace{3em}\textbf{\JXenclStempelE}\hspace{3em}\textbf{\JXenclStempelE}}% + \pdfliteral{% + 0 Tr + }% + }% + }% + }% + }% + }{ + \ifthenelse{\equal{#2}{X}}{% + \put(0.5\paperwidth, 0.5\paperheight){% + \makebox(0,0)[c]{% + \resizebox{.95\paperwidth}{!}{% + \rotatebox{50}{% + \pdfliteral{% + 1 Tr + .025 w + }% + \textsf{\textbf{\JXenclStempelX}}% + \pdfliteral{% + 0 Tr + }% + }% + }% + }% + }% + }{% +} +% + }% + }% + }% + ]% + {#4}% + }% + }% +}% +%%---------------------------------------------------------------- +\DeclareOption{noencl}{% + \newcommandtwoopt{\rtxencl}[4][][]{% + \stepcounter{JXattachcntr}% + \ifthenelse{\equal{#2}{K}}{% + \let\JX@Anlagenform\JXenclKopie% + }{% + \ifthenelse{\equal{#2}{E}}{% + \let\JX@Anlagenform\JXenclEntwurf% + }{% + \let\JX@Anlagenform\JXenclOriginal% + }% + }% + \ifthenelse{\equal{#1}{}}{% + \def\JX@Anlagenname{#4}% + }{% + \def\JX@Anlagenname{#1}% + }% + #4\marginpar{% + \setlength{\baselineskip}{1.5ex}{% + \sffamily\scriptsize\RaggedRight% + \hspace{0pt}\JX@Anlagenname{} \JX@Anlagenform{} \JXenclAnlage{} \theJXattachcntr + }% + }% + \l@addto@macro\IncludeAppendixHook{% + \cleardoublepage% + \stepcounter{JXenclcntr}% + \includepdf[% + pages={-}, + picturecommand*={% + \put(.83\paperwidth,.96\paperheight){% + \makebox(0,0)[cb]{% + \LARGE\bfseries\sffamily + -- \JXenclAnlNr~\theJXenclcntr~-- + }% + }% + },% + picturecommand={% + \ifthenelse{\equal{#2}{K}}{% + \put(0.5\paperwidth, 0.5\paperheight){% + \makebox(0,0)[c]{% + \resizebox{.95\paperwidth}{!}{% + \rotatebox{50}{% + \pdfliteral{% + 1 Tr + .025 w + }% + \textsf{\textbf{\JXenclStempelK}}% + \pdfliteral{% + 0 Tr + }% + }% + }% + }% + }% + }{% + \ifthenelse{\equal{#2}{E}}{% + \put(0.5\paperwidth, 0.5\paperheight){% + \makebox(0,0)[c]{% + \resizebox{.95\paperwidth}{!}{% + \rotatebox{50}{% + \pdfliteral{% + 1 Tr + .025 w + }% + \textsf{\textbf{\JXenclStempelE}}% + \pdfliteral{% + 0 Tr + }% + }% + }% + }% + }% + }{% + }% + }% + }% + ]% + {#3}% + }% + }% +}% +%%------------------------------------------------------------Faxvermerk +\def\Fax{} +\ifthenelse{\isundefined{\fax}}{}{% + \renewcommand*{\Fax}{}% + \renewcommand*{\fax}[2][]{% + \ifthenelse{\equal{#2}{}}{% + }{% + \def\Fax{% + \setlength{\unitlength}{1mm}% + \begin{picture}(0,0)% + \sffamily% + \put(0,84){% + \bfseries% + \ifthenelse{\equal{#1}{}}{% + als Fax:~% + }{% + #1 als Fax:~% + }% + \telprint{#2}% + }% + \put(0,80){% + \footnotesize{% + Dieses Fax umfasst + \ifthenelse{% +% am 6. November 2013 ersetzt durch die folgende Zeile \equal{\LetterPages}{1}% + \equal{\pageref{TotPages}}{\pageref{Startseite}}% + + }{% + genau eine Seite.% + }{% + insgesamt \LetterPages~Seiten.% + }% + }% + }% + \end{picture}% + }% + }% + }% +}% +%%---------------------------------------------------------------------- + \AtBeginDocument{% + \BeforeClosingMainAux{\TotPages@putlabel}% + }% +%%---------------------------------------------------------------------- +\AtBeginLetter{% + \label{Startseite}% + \def\IncludeAppendixHook{} +} +%%---------------------------------------------------------------------- +\AtEndLetter{% + \ifx\JXenclContent\@empty + \else + \encl{\parbox[t]{.85\textwidth}{\JXenclContent}}% + \fi + \StopLetterPages +}% +%%---------------------------------------------------------------- +\DeclareOption*{% + \PackageError{jxenclbeta}{Unknown option '\CurrentOption'}% +}% +%%---------------------------------------------------------------- +\ProcessOptions\relax +%%=============================================================EOF \ No newline at end of file -- 2.11.4.GIT