% \iffalse meta-comment % ====================================================================== % scrkernel-notepaper.dtx % Copyright (c) Markus Kohm, 2006-2021 % % This file is part of the LaTeX2e KOMA-Script bundle. % % This work may be distributed and/or modified under the conditions of % the LaTeX Project Public License, version 1.3c of the license. % The latest version of this license is in % http://www.latex-project.org/lppl.txt % and version 1.3c or later is part of all distributions of LaTeX % version 2005/12/01 or later and of this work. % % This work has the LPPL maintenance status "author-maintained". % % The Current Maintainer and author of this work is Markus Kohm. % % This work consists of all files listed in manifest.txt. % ---------------------------------------------------------------------- % scrkernel-notepaper.dtx % Copyright (c) Markus Kohm, 2006-2021 % % Dieses Werk darf nach den Bedingungen der LaTeX Project Public Lizenz, % Version 1.3c, verteilt und/oder veraendert werden. % Die neuste Version dieser Lizenz ist % http://www.latex-project.org/lppl.txt % und Version 1.3c ist Teil aller Verteilungen von LaTeX % Version 2005/12/01 oder spaeter und dieses Werks. % % Dieses Werk hat den LPPL-Verwaltungs-Status "author-maintained" % (allein durch den Autor verwaltet). % % Der Aktuelle Verwalter und Autor dieses Werkes ist Markus Kohm. % % Dieses Werk besteht aus den in manifest.txt aufgefuehrten Dateien. % ====================================================================== % \fi % % \CharacterTable % {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z % Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z % Digits \0\1\2\3\4\5\6\7\8\9 % Exclamation \! Double quote \" Hash (number) \# % Dollar \$ Percent \% Ampersand \& % Acute accent \' Left paren \( Right paren \) % Asterisk \* Plus \+ Comma \, % Minus \- Point \. Solidus \/ % Colon \: Semicolon \; Less than \< % Equals \= Greater than \> Question mark \? % Commercial at \@ Left bracket \[ Backslash \\ % Right bracket \] Circumflex \^ Underscore \_ % Grave accent \` Left brace \{ Vertical bar \| % Right brace \} Tilde \~} % % \iffalse %%% From File: $Id: scrkernel-notepaper.dtx 3577 2021-03-05 10:17:58Z kohm $ % %<*body> %<*letter> % \fi % % \subsection{Anweisungen für den Briefbogen} % % Auch bei den Anweisungen zunächst alles, was mit dem Briefbogen zu tun hat. % % \subsubsection{Der Kopf des Briefbogens} % % \begin{macro}{\firsthead} % \changes{v2.8q}{2002/01/28}{\cs{@alignfrom} auf 10000 gesetzt} % \changes{v3.08}{2010/10/28}{der Kopf des Briefbogens wird über eine % Variable realisiert}%^^A % \begin{macro}{\@firsthead} % \changes{v3.08}{2010/10/28}{der Kopf des Briefbogens wird über eine % Variable realisiert}%^^A % \begin{macro}{\@gen@firsthead} % \changes{v2.8q}{2002/01/28}{Neu}%^^A % \changes{v2.97c}{2007/05/08}{Dicke der Linie konfigurierbar}%^^A % \changes{v2.97c}{2007/05/08}{Schrift (Farbe) der Linie konfigurierbar}%^^A % \changes{v3.06a}{2010/07/29}{Verwendung des Font-Elements % \texttt{fromrule} eingefügt} % \changes{v3.08}{2010/10/28}{der Kopf des Briefbogens wird über eine % Variable realisiert}%^^A % \begin{KOMAvar}{firsthead} % \changes{v3.08}{2010/10/28}{Neu}%^^A % \changes{v3.13b}{2014/10/04}{neuer \emph{hook} nur für % \texttt{DINmtext.lco}}%^^A % \changes{v3.27}{2019/04/02}{\emph{hook} entfernt}%^^A % \changes{v3.28}{2019/11/15}{\cs{ifkomavarempty} durch \cs{Ifkomavarempty} % ersetzt}%^^A % Bei \texttt{scrlttr2} gibt es die üblichen Seitenstile, allerdings % ist deren Verhalten etwas anders als gewohnt. Dies ist in den % Besonderheiten für Briefen begründet. Zunächst die Voreinstellung für % Briefbögen. % % TODO: Diese ganze Prozedur gehört (für \textsf{scrletter}) komplett % überabeitet, so dass \cs{@gen@firsthead} überflüssig wird und das Setzen von % \texttt{fromalign} auch gleich \texttt{firsthead} umdefiniert. % \begin{macrocode} %<*class> \newcommand*{\@firsthead}{% \ClassWarning{scrlttr2}{% Deprecated usage of \string\@firsthead.\MessageBreak \string\usekomavar{firsthead} should be used\MessageBreak instead of \string\@firsthead }% \usekomavar{firsthead}% } % \newkomavar{firsthead} \setkomavar{firsthead}{% \parbox[b]{\useplength{firstheadwidth}}% {\centering\usekomafont{fromaddress}{% \Ifkomavarempty{fromname}{}{% {\usekomafont{fromname}% {\ignorespaces\usekomavar{fromname}}\\[-8pt]} {\usekomafont{fromrule}{\rule{\useplength{firstheadwidth}}{.4pt}}}\\ }% \Ifkomavarempty{fromaddress}{}{% \ignorespaces\usekomavar{fromaddress}% }% }% }% } % \end{macrocode} % \end{KOMAvar} % \begin{macro}{\scr@firsthead@postsetvar} % \changes{v3.08}{2010/10/28}{Neu (intern)}%^^A % \changes{v3.17}{2015/03/16}{internes Setzen von Option % \texttt{fromalign!=no}}%^^A % Über dieses Makro wird jeweils nach dem Setzen der Variable die Ausrichtung % auf manuell umgeschaltet. Das darf deshalb auch erst nach dem erstmaligen % Setzen definiert werden! % \begin{macrocode} \newcommand*{\scr@firsthead@postsetvar}{% \KOMAExecuteOptions[.% % \KOMAClassFileName % scrletter.\scr@pkgextension ]{fromalign=no}% } % \end{macrocode} % \end{macro} % \begin{macrocode} \newcommand*{\@gen@firsthead}{% % \end{macrocode} % Damit wird ggf. die Kopfzeile der ersten Seite umdefiniert, nämlich dann, % wenn dies per Option aktiviert wurde. % \begin{macrocode} \ifcase\@alignfrom % \end{macrocode} % Wir befinden uns nun in dem Bereich für \verb|\@alignfrom|=0. % Entsprechend unserer Festlegung wird daher als Erstes der % linksbündige Absender definiert. Wir verwenden dafür eine % \emph{parbox}, in der der Text linksbündig angeordnet wird. Diese % Box soll über die gesamte Breite gehen dürfen: % \begin{macrocode} \setkomavar{firsthead}{% \parbox[b]{\textwidth}{\raggedright % \end{macrocode} % Zuerst wird der Name gesetzt. Dabei soll eine eigene Schriftart für % den Namen verwendet werden. % \begin{macrocode} {\usekomafont{fromname}\strut\ignorespaces \usekomavar{fromname}% % \end{macrocode} % Hat \verb|\@rulefrom| den nummerischen Wert 1, so soll direkt auf den % Absender eine Linie folgen. Die Länge dieser Linie kann vom Anwender % bestimmt oder automatisch gewählt werden. Es werden dabei die % Pseudo-Längen \texttt{fromrulewidth} und \texttt{fromrulethickness} % verwendet. Ist \texttt{fromrulewidth} negativ, so wird sie automatisch % bestimmt. Bei der automatischen Längenbestimmung wird dafür gesorgt, dass % die Linie nicht bis in das Logo ragt, das eventuell rechtsbündig neben dem % Absender steht: % \begin{macrocode} {% \ifnum\@rulefrom=1\\[-.5\baselineskip]% \usekomafont{fromrule}{% \setlength{\@tempdima}{\useplength{fromrulewidth}}% \ifdim\@tempdima=\z@ \setlength{\@tempdima}{\textwidth}% \if@logo \settowidth{\@tempdimb}{\usekomavar{fromlogo}}% \addtolength{\@tempdima}{-\@tempdimb}% \fi \fi \expandafter\rule\expandafter{\the\@tempdima}{% \useplength{fromrulethickness}}}% \fi }% \\ }% % \end{macrocode} % Als Nächstes wird die Absenderadresse einschließlich aller % optionalen Felder gesetzt. Dabei werden optionale Felder nur % gesetzt, wenn der entsprechende Schalter \emph{true} ist. Die % Adresse wird ebenfalls innerhalb einer Gruppe in einer eigenen % Schriftart gesetzt.% % \changes{v3.12}{2013/05/29}{Variable \texttt{frommobilephone} wird % berücksichtigt}% % \begin{macrocode} {\usekomafont{fromaddress}\strut\ignorespaces \usekomavar{fromaddress}% \if@phone\\\usekomavar*{fromphone}\usekomavar{fromphone}\fi% \if@mobilephone \\\usekomavar*{frommobilephone}\usekomavar{frommobilephone}% \fi% \if@fax\\\usekomavar*{fromfax}\usekomavar{fromfax}\fi% \if@email\\\usekomavar*{fromemail}\usekomavar{fromemail}\fi% \if@www\\\usekomavar*{fromurl}\usekomavar{fromurl}\fi% % \end{macrocode} % Wie weiter oben erwähnt, kann auch an dieser Stelle eine Linie % gesetzt werden. Wir gehen davon aus, dass die Linie automatisch % nicht in das Logo ragt, da es in diesem Fall über der Linie zu % stehen hat. Die entsprechende Berechnung kann also entfallen. % \begin{macrocode} \ifnum\@rulefrom=2\\[-.5\baselineskip]% \usekomafont{fromrule}{% \setlength{\@tempdima}{\useplength{fromrulewidth}}% \ifdim\@tempdima=\z@ \setlength{\@tempdima}{\textwidth}% \fi \expandafter\rule\expandafter{\the\@tempdima}{% \useplength{fromrulethickness}}}% \fi \\ }% }% % \end{macrocode} % Die parbox ist damit ebenfalls beendet. Es muss nun ggf. noch das % Logo gesetz werden. Es wird in diesem Fall von der aktuellen % Position am rechten Rand nach links ausgegeben. % \begin{macrocode} \if@logo \llap{\usekomavar{fromlogo}}% \fi }% \renewcommand*{\@alignfrom}{0}% % \end{macrocode} % Damit ist die Definition des linksbündigen Absenders abgeschlossen. % Es geht weiter mit dem zentrierten Absender. Dieser hat als % Besonderheit, dass das Logo nicht in den Briefkopf, sondern in den % Bereich rechts neben dem Empfänger gesetzt wird. Dort ist bereits % das location-Feld, daher wird dieser Fall auch dort behandelt.% % \changes{v3.12}{2013/05/29}{Variable \texttt{frommobilephone} wird % berücksichtigt}% % \begin{macrocode} \or \setkomavar{firsthead}{% \parbox[b]{\textwidth}{\centering {\usekomafont{fromname}\strut\ignorespaces \usekomavar{fromname}% {% \ifnum\@rulefrom=1\\[-.5\baselineskip]% \usekomafont{fromrule}{% \setlength{\@tempdima}{\useplength{fromrulewidth}}% \ifdim\@tempdima=\z@ \setlength{\@tempdima}{\textwidth}% \fi \expandafter\rule\expandafter{\the\@tempdima}{% \useplength{fromrulethickness}}}% \fi }% \\ }% {\usekomafont{fromaddress}\strut\ignorespaces \usekomavar{fromaddress}% \if@phone\\\usekomavar*{fromphone}\usekomavar{fromphone}\fi% \if@mobilephone \\\usekomavar*{frommobilephone}\usekomavar{frommobilephone}% \fi% \if@fax\\\usekomavar*{fromfax}\usekomavar{fromfax}\fi% \if@email\\\usekomavar*{fromemail}\usekomavar{fromemail}\fi% \if@www\\\usekomavar*{fromurl}\usekomavar{fromurl}\fi% \ifnum\@rulefrom=2\\[-.5\baselineskip]% \usekomafont{fromrule}{% \setlength{\@tempdima}{\useplength{fromrulewidth}}% \ifdim\@tempdima=\z@ \setlength{\@tempdima}{\textwidth}% \fi \expandafter\rule\expandafter{\the\@tempdima}{% \useplength{fromrulethickness}}}% \fi \\ }% }% }% \renewcommand*{\@alignfrom}{1}% % \end{macrocode} % Damit ist die Definition des zentrierten Absenders abgeschlossen. Es % geht weiter mit dem rechtsbündigen Absender. Das ganze wird einfach % beim linksbündigen Absender abgeschaut.% % \changes{v3.12}{2013/05/29}{Variable \texttt{frommobilephone} wird % berücksichtigt}% % \begin{macrocode} \or \setkomavar{firsthead}{% \if@logo \rlap{\usekomavar{fromlogo}}% \fi \parbox[b]{\textwidth}{\raggedleft {\usekomafont{fromname}\strut\ignorespaces \usekomavar{fromname}% {% \ifnum\@rulefrom=1\\[-.5\baselineskip]% \usekomafont{fromrule}{% \setlength{\@tempdima}{\useplength{fromrulewidth}}% \ifdim\@tempdima=\z@ \setlength{\@tempdima}{\textwidth}% \if@logo \settowidth{\@tempdimb}{\usekomavar{fromlogo}}% \addtolength{\@tempdima}{-\@tempdimb}% \fi \fi \expandafter\rule\expandafter{\the\@tempdima}{% \useplength{fromrulethickness}}}% \fi }% \\ }% {\usekomafont{fromaddress}\strut\ignorespaces \usekomavar{fromaddress}% \if@phone\\\usekomavar*{fromphone}\usekomavar{fromphone}\fi% \if@mobilephone \\\usekomavar*{frommobilephone}\usekomavar{frommobilephone}% \fi% \if@fax\\\usekomavar*{fromfax}\usekomavar{fromfax}\fi% \if@email\\\usekomavar*{fromemail}\usekomavar{fromemail}\fi% \if@www\\\usekomavar*{fromurl}\usekomavar{fromurl}\fi% \ifnum\@rulefrom=2\\[-.5\baselineskip]% \usekomafont{fromrule}{% \setlength{\@tempdima}{\useplength{fromrulewidth}}% \ifdim\@tempdima=\z@ \setlength{\@tempdima}{\textwidth}% \fi \expandafter\rule\expandafter{\the\@tempdima}{% \useplength{fromrulethickness}}}% \fi \\ }% }% }% \renewcommand*{\@alignfrom}{2}% % \end{macrocode} % Damit ist die Umdefinierung beendet. In allen anderen Fällen wird % der Kopf nicht verändert. % \begin{macrocode} \fi } % \end{macrocode} % \end{macro} % \end{macro} % % Der Benutzer kann die Voreinstellung mit einer einfachen Anweisung ändern: % \begin{macrocode} %<*class> \newcommand{\firsthead}{% \ClassWarning{scrlttr2}{% Deprecated usage of \string\firsthead.\MessageBreak You should use \string\setkomavar{firsthead}\MessageBreak instead of \string\firsthead } \setkomavar{firsthead}% } % % \end{macrocode} % \end{macro} % % \subsubsection{Schrifteinstellungen für den Briefbogen} % % \begin{KOMAfont}{foldmark} % \changes{v2.97c}{2007/05/08}{Neu}%^^A % Die Schrift (hier ist die Farbe der entscheidende Faktor) der Faltmarken. % \begin{macrocode} \newkomafont{foldmark}{} % \end{macrocode} % \end{KOMAfont} % % \begin{KOMAfont}{fromname} % \changes{v2.95}{2006/03/23}{jetzt mit \cs{newkomafont}} % Der Absendername im Briefkopf. % \begin{macrocode} \newkomafont{fromname}{} % \end{macrocode} % \end{KOMAfont} % % \begin{KOMAfont}{fromaddress} % \changes{v2.95}{2006/03/23}{jetzt mit \cs{newkomafont}} % Die Absenderadresse im Briefkopf. % \begin{macrocode} \newkomafont{fromaddress}{} % \end{macrocode} % \end{KOMAfont} % % \begin{KOMAfont}{fromrule} % \changes{v2.97c}{2007/05/08}{Neu}%^^A % Die Schrift (hier ist die Farbe der entscheidende Faktor) der Linie im % Absender. % \begin{macrocode} \newkomafont{fromrule}{} % \end{macrocode} % \end{KOMAfont} % % \begin{KOMAfont}{backaddress} % \changes{v2.95}{2006/03/23}{jetzt mit \cs{newkomafont}}%^^A % \changes{v3.21}{2016/05/19}{beachtet Option % \texttt{egregdoesnotlikesansseriftitles}}%^^A % Die Rücksendeadresse. % \begin{macrocode} \newkomafont{backaddress}{\@gr@gsffamily} % \end{macrocode} % \end{KOMAfont} % % \begin{KOMAfont}{specialmail} % \changes{v2.97c}{2007/07/06}{Neues Font-Element}%^^A % Die Versandart. % \begin{macrocode} \newkomafont{specialmail}{} % \end{macrocode} % \end{KOMAfont} % % \begin{KOMAfont}{priority} % \changes{v3.03}{2009/03/04}{Neues Font-Element}%^^A % Grundschrift für die Priorität des Briefs, falls diese A oder B ist. Es wird % ohne Durchschuss gearbeitet. An dieser Stelle ist Serifenlos quasi % vorgeschrieben, so dass wir hier Option % \texttt{egregdoesnotlikesansseriftitles} ignorieren. % \begin{macrocode} \newkomafont{priority}{\fontsize{10pt}{10pt}\sffamily\bfseries} % \end{macrocode} % \end{KOMAfont} % % \begin{KOMAfont}{prioritykey} % \changes{v3.03}{2009/03/04}{Neues Font-Element}%^^A % Schrift für den Buchstaben der Priorität des Briefs, falls diese A oder B % ist. Wird nach \texttt{priority} angewandt. Eigentlich sollten hier 9\,mm % verwendet werden. Dafür wird aber eine frei skalierbare Schrift benötig. Mit % 24,88\,pt sind wir nur 0,25\,mm kleiner. Das sollte kein Problem % darstellen. Es wird auch hier ohne Durchschuss gearbeitet. % \begin{macrocode} \newkomafont{prioritykey}{\fontsize{24.88pt}{24.88pt}\selectfont} % \end{macrocode} % \end{KOMAfont} % % \begin{KOMAfont}{PPlogo} % \changes{v3.03}{2009/03/04}{Neues Font-Element}%^^A % Schrift für das Logo \texttt{P.P.}, das im Anschriftmodus \texttt{PP} % gesetzt wird. An dieser Stelle ist serifenlos quasi vorgeschrieben, so dass % wir hier Option \texttt{egregdoesnotlikesansseriftitles} ignorieren. % \begin{macrocode} \newkomafont{PPlogo}{\sffamily\bfseries} % \end{macrocode} % \end{KOMAfont} % % \begin{KOMAfont}{PPdata} % \changes{v3.03}{2009/03/04}{Neues Font-Element}%^^A % Schrift, die innerhalb des PP-Kopfes für die Daten verwendet wird. % gesetzt wird. And dieser Stelle ist serifenlos quasi vorgeschrieben, so dass % wir hier Option \texttt{egregdoesnotlikesansseriftitles} ignorieren. % \begin{macrocode} \newkomafont{PPdata}{\sffamily} % \end{macrocode} % \end{KOMAfont} % % \begin{KOMAfont}{addressee} % \changes{v2.97c}{2007/07/06}{Neues Font-Element}%^^A % Die komplette Anschrift. % \begin{macrocode} \newkomafont{addressee}{} % \end{macrocode} % \end{KOMAfont} % % \begin{KOMAfont}{toname} % \changes{v2.97c}{2007/07/06}{Neues Font-Element}%^^A % Der Name des Empfängers in der Anschrift. % \begin{macrocode} \newkomafont{toname}{} % \end{macrocode} % \end{KOMAfont} % % \begin{KOMAfont}{toaddress} % \changes{v2.97c}{2007/07/06}{Neues Font-Element}%^^A % Die Adresse des Empfängers in der Anschrift. % \begin{macrocode} \newkomafont{toaddress}{} % \end{macrocode} % \end{KOMAfont} % % \begin{KOMAfont}{refname} % \changes{v2.97c}{2007/05/14}{Neues Font-Element}%^^A % \changes{v3.21}{2016/05/19}{beachtet Option % \texttt{egregdoesnotlikesansseriftitles}}%^^A % Die Feldnamen in der Geschäftszeile. % \begin{macrocode} \newkomafont{refname}{\@gr@gsffamily\scriptsize} % \end{macrocode} % \end{KOMAfont} % % \begin{KOMAfont}{refvalue} % \changes{v2.97c}{2007/05/14}{Neues Font-Element}%^^A % \changes{v2.97d}{2007/10/09}{Voreinstellung korrigiert}%^^A % Die Feldwerte in der Geschäftszeile. Hier gibt es keinen Bedarf, Option % \texttt{egregdoesnotlikesansseriftitles} zu beachten, da diese in % Version~2.97 noch nicht existierte. % \begin{macrocode} %<*class> \ifnum\scr@compatibility=\@nameuse{scr@v@2.97}\relax \newkomafont{refvalue}{\sffamily\scriptsize} \else % \newkomafont{refvalue}{} %\fi % \end{macrocode} % \end{KOMAfont} % % \begin{KOMAfont}{placeanddate} % \changes{v3.12}{2013/07/31}{Neues Font-Element}%^^A % Wird an Stelle einer Geschäftszeile nur Ort und Datum gesetzt, so findet % dieses Element Anwendung. % \begin{macrocode} \newkomafont{placeanddate}{} % \end{macrocode} % \end{KOMAfont} % % \begin{KOMAfont}{lettertitle} % \changes{v3.17}{2015/02/21}{neu als Ersatz für \texttt{letter}} % \changes{v3.21}{2016/05/19}{beachtet Option % \texttt{egregdoesnotlikesansseriftitles}}%^^A % Der Brieftitel. % \begin{macrocode} \newkomafont{lettertitle}{\normalcolor\@gr@gsffamily\bfseries} % \end{macrocode} % \begin{KOMAfont}{title} % \changes{v2.95}{2006/03/23}{jetzt mit \cs{newkomafont}}%^^A % \changes{v3.17}{2015/02/21}{nur noch ein Alias}%^^A % \changes{v3.17a}{2015/04/26}{Alias korrigiert}%^^A % \begin{macrocode} %\scr@ifundefinedorrelax{scr@fnt@title}{% \aliaskomafont{title}{lettertitle}% %}{} % \end{macrocode} % \end{KOMAfont} % \end{KOMAfont} % % \begin{KOMAfont}{lettersubject} % \changes{v3.17}{2015/02/21}{neu als Ersatz für \texttt{subject}} % \changes{v3.17a}{2015/04/26}{Alias korrigiert}%^^A % Der Betreff im Brief. % \begin{macrocode} \newkomafont{lettersubject}{\normalfont\bfseries} % \end{macrocode} % \begin{KOMAfont}{subject} % \changes{v2.95}{2006/03/23}{jetzt mit \cs{newkomafont}}%^^A % \changes{v3.17}{2015/02/21}{nur noch ein Alias}%^^A % \begin{macrocode} %\scr@ifundefinedorrelax{scr@fnt@subject}{% \aliaskomafont{subject}{lettersubject}% %}{} % \end{macrocode} % \end{KOMAfont} % \end{KOMAfont} % % \subsubsection{Längen für den Briefbogen} % % \begin{macro}{\ltr@len@foldmarkhpos} % \changes{v2.8q}{2001/10/06}{Neu}%^^A % Abstand der horizontalen Faltmarken von der linken Papierkante. % \begin{macrocode} \@newplength{foldmarkhpos} % \end{macrocode} % \end{macro} % \begin{macro}{\ltr@len@foldmarkvpos} % \changes{v2.97e}{2007/11/10}{Neu}%^^A % Abstand der vertikalen Faltmarken von der oberen Papierkante. % \begin{macrocode} \@newplength{foldmarkvpos} % \end{macrocode} % \end{macro} % \begin{macro}{\ltr@len@tfoldmarkvpos} % \changes{v2.8q}{2001/10/06}{Neu}%^^A % \begin{macro}{\ltr@len@mfoldmarkvpos} % \changes{v2.97e}{2007/11/08}{Neu}%^^A % \begin{macro}{\ltr@len@bfoldmarkvpos} % \changes{v2.8q}{2001/10/06}{Neu}%^^A % Abstand der oberen, mittleren und unteren Faltmarken von der oberen % Papierkante. % \begin{macrocode} \@newplength{tfoldmarkvpos} \@newplength{mfoldmarkvpos} \@newplength{bfoldmarkvpos} % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % \begin{macro}{\ltr@len@lfoldmarkhpos} % \changes{v2.97e}{2007/11/10}{Neu}%^^A % Abstand linken Faltmarken von der linken Papierkante. % \begin{macrocode} \@newplength{lfoldmarkhpos} % \end{macrocode} % \end{macro} % \begin{macro}{\ltr@len@pfoldmarklength} % \changes{v2.97e}{2007/11/19}{Neu}%^^A % \begin{macro}{\ltr@len@hfoldmarklength} % \changes{v2.97e}{2007/11/10}{Neu}%^^A % \begin{macro}{\ltr@len@mfoldmarklength} % \changes{v2.97e}{2007/11/10}{Neu}%^^A % \begin{macro}{\ltr@len@bfoldmarklength} % \changes{v2.97e}{2001/11/10}{Neu}%^^A % \begin{macro}{\ltr@len@lfoldmarklength} % \changes{v2.97e}{2001/11/10}{Neu}%^^A % Länge der Lochmarke und der oberen, mittleren und unteren horizontalen und % der (linken) vertikalen Faltmarke. % \begin{macrocode} \@newplength{pfoldmarklength} \@newplength{tfoldmarklength} \@newplength{mfoldmarklength} \@newplength{bfoldmarklength} \@newplength{lfoldmarklength} % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \begin{macro}{\ltr@len@foldmarkthickness} % \changes{v2.97c}{2007/05/08}{Neu}%^^A % Dicke der Faltmarken. % \begin{macrocode} \@newplength{foldmarkthickness} \@setplength{foldmarkthickness}{.2pt} % \end{macrocode} % \end{macro} % \begin{macro}{\ltr@len@toaddrvpos} % \changes{v2.8q}{2001/10/06}{Neu}%^^A % Abstand des Adressfensters von der oberen Papierkante. % \begin{macrocode} \@newplength{toaddrvpos} % \end{macrocode} % \end{macro} % \begin{macro}{\ltr@len@backaddrheight} % \changes{v2.8q}{2001/10/06}{Neu}%^^A % Höhe der Rücksendeadresse. % \begin{macrocode} \@newplength{backaddrheight} % \end{macrocode} % \end{macro} % \begin{macro}{\ltr@len@toaddrhpos} % \changes{v2.8q}{2001/10/06}{Neu}%^^A % Abstand des Adressfeldes von der linken Papierkante bzw. wenn negativ von % der rechten Papierkante. % \begin{macrocode} \@newplength{toaddrhpos} % \end{macrocode} % \end{macro} % \begin{macro}{\ltr@len@specialmailindent} % \changes{v2.8q}{2002/03/25}{Neu}%^^A % Abstand der Versandtart vom linken Rand des Adressfensters. % \begin{macrocode} \@newplength{specialmailindent} % \end{macrocode} % \end{macro} % \begin{macro}{\ltr@len@specialmailrightindent} % \changes{v2.8q}{2002/03/25}{Neu}%^^A % Abstand der Versandtart vom rechten Rand des Adressfensters. % \begin{macrocode} \@newplength{specialmailrightindent} % \end{macrocode} % \end{macro} % \begin{macro}{\ltr@len@toaddrindent} % \changes{v2.8q}{2001/10/06}{Neu}%^^A % Abstand der Adresse vom linken Rand des Adressfensters. 0 bedeutet im % Anschriftmodus \texttt{PP} 8\,mm, ansonsten wirklich 0\,mm. Außerdem wird im % Anschriftmodus \texttt{PP} die Pseudolänge auch für den Abstand vom rechten % Rand des Adressfensters verwendet. % \begin{macrocode} \@newplength{toaddrindent} % \end{macrocode} % \end{macro} % \begin{macro}{\ltr@len@PPheadheight} % \changes{v3.03}{2009/03/04}{Neu}% % Höhe des PP-Kopfes in den Anschriftmodi \texttt{PP}, % \texttt{backgroundimage} und \texttt{image}. 0 bedeutet hier 20,74\,pt. % \begin{macrocode} \@newplength{PPheadheight} % \end{macrocode} % \end{macro} % \begin{macro}{\ltr@len@PPheadwidth} % \changes{v3.03}{2009/03/04}{Neu}% % Breite des PP-Kopfes im Anschriftmodus \texttt{PP}. 0 bedeutet hier 42\,mm. % \begin{macrocode} \@newplength{PPheadwidth} % \end{macrocode} % \end{macro} % \begin{macro}{\ltr@len@PPdatamatrixvskip} % \changes{v3.03}{2009/03/04}{Neu}% % Abstand zwischen PP-Kopf und DataMatrix im Anschriftmodus \texttt{PP}. 0 % bedeutet hier 9\,mm. % \begin{macrocode} \@newplength{PPdatamatrixvskip} % \end{macrocode} % \end{macro} % \begin{macro}{\ltr@len@toaddrwidth} % \changes{v2.8q}{2001/10/06}{Neu}%^^A % Breite des Adressfensters % \begin{macrocode} \@newplength{toaddrwidth} % \end{macrocode} % \end{macro} % \begin{macro}{\ltr@len@toaddrheight} % \changes{v2.8q}{2001/10/06}{Neu}%^^A % \changes{v3.03b}{2009/06/25}{Implementierung an Doku angepasst}%^^A % Höhe des Adressfensters mit Rücksendeadresse % \begin{macrocode} \@newplength{toaddrheight} % \end{macrocode} % \end{macro} % \begin{macro}{\ltr@len@locvpos} % \changes{v2.97e}{2007/11/07}{Neu}%^^A % Abstand der Absenderergänzung von der oberen Papierkante. % \begin{macrocode} \@newplength{locvpos} % \end{macrocode} % \end{macro} % \begin{macro}{\ltr@len@locwidth} % \changes{v2.8q}{2001/10/06}{Neu}%^^A % Breite des Feldes neben dem Adressfenster % \begin{macrocode} \@newplength{locwidth} % \end{macrocode} % \end{macro} % \begin{macro}{\ltr@len@lochpos} % \changes{v2.97e}{2007/11/07}{Neu}%^^A % Abstand der Absenderergänzung von der linken Papierkante bzw. wenn negativ % von der rechten Papierkante. % \begin{macrocode} \@newplength{lochpos} % \end{macrocode} % \end{macro} % \begin{macro}{\ltr@len@locheight} % \changes{v2.97e}{2007/11/07}{Neu}%^^A % Höhe der Absenderergänzung. % \begin{macrocode} \@newplength{locheight} % \end{macrocode} % \end{macro} % \begin{macro}{\ltr@len@refvpos} % \changes{v2.8q}{2001/10/06}{Neu}%^^A % Abstand der Geschäftszeile von der Papieroberkante. % \begin{macrocode} \@newplength{refvpos} % \end{macrocode} % \end{macro} % \begin{macro}{\ltr@len@refheight} % \selectlanguage{english}%^^A % \changes{v3.27}{2019/05/03}{new}%^^A % Height of the reference line (if used). % \begin{macrocode} %<*package&willbe> \@newplength{refheight} % % \end{macrocode} % \selectlanguage{ngerman}%^^A % \end{macro} % \begin{macro}{\ltr@len@refwidth} % \changes{v2.8q}{2001/10/06}{Neu}%^^A % Breite der Geschäftszeile. % \begin{macrocode} \@newplength{refwidth} % \end{macrocode} % \end{macro} % \begin{macro}{\ltr@len@refhpos} % \changes{v2.9l}{2003/01/28}{Neu}%^^A % Horizontale Position der Geschäftszeile. % \begin{macrocode} \@newplength{refhpos} % \end{macrocode} % \end{macro} % \begin{macro}{\ltr@len@refaftervskip} % \changes{v2.8q}{2001/10/09}{Neu}%^^A % Abstand nach der Geschäftszeile. % \begin{macrocode} \@newplength{refaftervskip} % \end{macrocode} % \end{macro} % \begin{macro}{\ltr@len@sigbeforevskip} % \changes{v2.8q}{2001/10/09}{Neu}%^^A % Raum für die Unterschrift. % \begin{macrocode} \@newplength{sigbeforevskip} % \end{macrocode} % \end{macro} % \begin{macro}{\ltr@len@sigindent} % \changes{v2.8q}{2001/10/06}{Neu}%^^A % Horizontaler Einzug des Schlussgrußes und der Signatur. % \begin{macrocode} \@newplength{sigindent} % \end{macrocode} % \end{macro} % \begin{macro}{\ltr@len@@firstfootvpos} % \changes{v2.8q}{2001/10/06}{Neu}%^^A % Abstand des Fußes der ersten Seite von der Papieroberkante. % \begin{macrocode} \@newplength{firstfootvpos} % \end{macrocode} % \end{macro} % \begin{macro}{\ltr@len@firstfootwidth} % \changes{v2.8q}{2001/10/06}{Neu}%^^A % Breite des Fußes der ersten Seite. % \begin{macrocode} \@newplength{firstfootwidth} % \end{macrocode} % \end{macro} % \begin{macro}{\ltr@len@firstfoothpos} % \changes{v3.05}{2009/11/09}{Neu}%^^A % Abstand des Kopfes vom linken Rand der Seite. % \begin{macrocode} \@newplength{firstfoothpos} \@setplength{firstfoothpos}{\maxdimen} % \end{macrocode} % \end{macro} % \begin{macro}{\ltr@len@firstheadvspos} % \changes{v2.8q}{2001/10/06}{Neu}%^^A % Abstand des Kopfes der ersten Seite von der Papieroberkante. % \begin{macrocode} \@newplength{firstheadvpos} % \end{macrocode} % \end{macro} % \begin{macro}{\ltr@len@firstheadwidth} % \changes{v2.8q}{2001/10/06}{Neu}%^^A % Breite des Kopfes der ersten Seite. % \begin{macrocode} \@newplength{firstheadwidth} % \end{macrocode} % \end{macro} % \begin{macro}{\ltr@len@firstheadhpos} % \changes{v3.05}{2009/11/09}{Neu}%^^A % Abstand des Kopfes vom linken Rand der Seite. % \begin{macrocode} \@newplength{firstheadhpos} \@setplength{firstheadhpos}{\maxdimen} % \end{macrocode} % \end{macro} % \begin{macro}{\ltr@len@fromrulewidth} % \changes{v2.8q}{2002/01/28}{Neu}%^^A % Die Länge einer eventuell gesetzten Linie im Absender. Negative % Werte bedeuten, dass die Länge automtaisch bestimmt wird. % \begin{macrocode} \@newplength{fromrulewidth} \@setplength{fromrulewidth}{0pt} % \end{macrocode} % \end{macro} % \begin{macro}{\ltr@len@fromrulethickness} % \changes{v2.97c}{2007/05/08}{Neue Pseudolänge \texttt{fromrulewidth}} % Die Dicke einer eventuell gesetzte Linie im Absender. % \begin{macrocode} \@newplength{fromrulethickness} \@setplength{fromrulethickness}{.4pt} % \end{macrocode} % \end{macro} % % % \subsubsection{Fuß des Briefbogens} % % \begin{macro}{\firstfoot} % \changes{v3.08}{2010/10/28}{der Fuß des Briefbogens wird über eine % Variable realisiert}%^^A % \begin{macro}{\@firstfoot} % \changes{v3.08}{2010/10/28}{der Fuß des Briefbogens wird über eine % Variable realisiert}%^^A % \begin{KOMAvar}{firstfoot} % \changes{v3.08}{2010/10/28}{Neu}%^^A % \begin{macrocode} % Der Fuß des Briefbogens ist in der Voreinstellung leer. \newkomavar{firstfoot} %<*class> \newcommand*{\@firstfoot}{% \ClassWarning{scrlttr2}{% Deprecated usage of \string\@firstfoot.\MessageBreak \string\usekomavar{firstfoot} should be used\MessageBreak instead of \string\@firstfoot }% \usekomavar{firstfoot}% } % \end{macrocode} % Dies kann jedoch über eine einfache Benutzeranweisung geändert werden: % \begin{macrocode} \newcommand{\firstfoot}{% \ClassWarning{scrlttr2}{% Deprecated usage of \string\firstfoot.\MessageBreak You should use \string\setkomavar{firstfoot}\MessageBreak instead of \string\firstfoot } \setkomavar{firstfoot}% } % % \end{macrocode} % \end{KOMAvar} % \end{macro} % \end{macro} % % % \subsubsection{Ausgabe des Briefbogens} % % Die Ausgabe selbst erfolgt bei \textsf{scrlttr2} über die % |\opening|-Anweisung, die in einem späteren Abschnitt implementiert ist. Bei % \textsf{scrletter} erfolgt sie dagegen ab Version 3.27 über den Seitenstil % \texttt{notepaper} (siehe \texttt{scrkernel-pagestyle.dtx}). % % \selectlanguage{english}% % \begin{macro}{\scr@notepaper@printallelements} % \changes{v3.27}{2019/04/16}{new (internal)}%^^A % This is used by page style \texttt{notepaper} to print all elements. % \begin{macro}{\scr@notepaper@printelementsoflist} % \changes{v3.27}{2019/04/16}{new (internal)}%^^A % And this is used to print a given list of elements. % \begin{macro}{\scr@notepaper@printelement} % \changes{v3.27}{2019/04/16}{new (internal)}%^^A % Last but not least this prints one given element. % \begin{macrocode} %<*package&body&willbe> \newcommand*{\scr@notepaper@printallelements}{% \scr@notepaper@printelementsoflist\scr@notepaper@elements } \newcommand*{\scr@notepaper@printelementsoflist}[1]{% \expandafter\scr@ForEachTrimmedListElement\expandafter{#1}{% \scr@notepaper@printelement }% } \newcommand*{\scr@notepaper@printelement}[1]{% \@ifundefined{scr@notepaper@element@#1}{% \PackageWarning{scrletter}{% Unknown note paper element `#1'\MessageBreak will be ignored% }% }{% \@nameuse{scr@notepaper@element@#1}% }% } % \end{macrocode} % \end{macro}%^^A \scr@notepaper@printelement % \end{macro}%^^A \scr@notepaper@printelementsoflist % \end{macro}%^^A \scr@notepaper@printallelements % % \begin{macro}{\scr@foldmarks@printallelements} % \changes{v3.27}{2019/04/16}{new (internal)}%^^A % This is used by the page style \texttt{notepaper} to print all foldmarks. % \begin{macrocode} \newcommand*{\scr@foldmarks@printallelements}{% \if@fold \ifdim \useplength{pfoldmarklength}=\z@ \@setplength{pfoldmarklength}{4mm}% \fi \ifdim \useplength{tfoldmarklength}=\z@ \@setplength{tfoldmarklength}{2mm}% \fi \ifdim \useplength{mfoldmarklength}=\z@ \@setplength{mfoldmarklength}{2mm}% \fi \ifdim \useplength{bfoldmarklength}=\z@ \@setplength{bfoldmarklength}{2mm}% \fi \ifdim \useplength{lfoldmarklength}=\z@ \@setplength{lfoldmarklength}{4mm}% \fi \@hfoldmark{P}% \@hfoldmark{T}% \@hfoldmark{M}% \@hfoldmark{B}% \@vfoldmark{L}% \fi } % \end{macrocode} % \end{macro} % % \begin{macro}{\scr@notepaper@elements} % \changes{v3.27}{2019/03/22}{new (internal)}%^^A % This is a comma-separated list of elements (aka blocks) to be printed on the % notepaper. It is used by the page style layer \texttt{notepaper} to set all % elements (see \texttt{scrkernel-pagestyle.dtx}). There are exactly four % defaults (but you can add more): % \begin{macrocode} \newcommand*{\scr@notepaper@elements}{% firsthead,addressee,location,firstfoot,refline% } % \end{macrocode} % \begin{macro}{\scr@notepaper@element@firsthead} % \changes{v3.27}{2019/03/22}{new (internal)}%^^A % How to print the notepaper element \texttt{firsthead}: % \begin{macrocode} \newcommand*{\scr@notepaper@element@firsthead}{% \if@firsthead % \end{macrocode} % The calculation of the real horizontal position could be done as part of the % layer contents or while selection of the layer or while initialization of % the layer. The in-contents code is used, so the layer can be used with % different page styles. The position depends on \texttt{firstheadhpos} this % way: % \begin{itemize} % \item If \texttt{firstheadhpos} is positive but less than the paper width, % \texttt{firstheadhpos} is the distance if the head from the left edge. % \item If \texttt{firstheadhpos} is negative but the absolute value is less % then the paper width, the absolute value of \texttt{firstheadhpos} is the % distance from the right edge. % \item If \texttt{firstheadhpos} is greater than the paper width, the head % will be centered. % \item If \texttt{firstheadhpos} is less than the negative paper width, the % head will be left aligned to the text area. % \end{itemize} % \begin{macrocode} \ifdim\useplength{firstheadhpos}<\paperwidth \ifdim \useplength{firstheadhpos}>-\paperwidth \ifdim \useplength{firstheadhpos}<\z@ \setlength{\@tempdima}{\dimexpr \paperwidth + \useplength{firstheadhpos} - \useplength{firstheadwidth} \relax}% \else \setlength{\@tempdima}{\useplength{firstheadhpos}}% \fi \else \setlength{\@tempdima}{\dimexpr\oddsidemargin + 1in\relax}% \fi \else \setlength{\@tempdima}{\dimexpr (\paperwidth-\useplength{firstheadwidth})/2 \relax}% \fi \put@notepaper@element (\@tempdima,\useplength{firstheadvpos})% (\useplength{firstheadwidth},% \useplength{toaddrvpos}-\useplength{firstheadvpos})% {Element `firsthead'}{\usekomavar{firsthead}}\relax \fi } % \end{macrocode} % \end{macro}%^^A \scr@notepaper@element@firsthead % \begin{macro}{\scr@notepaper@element@firstfoot} % \changes{v3.27}{2019/03/22}{new (internal)}%^^A % Element \texttt{firstfoot} is very similar to \texttt{firsthead}. The % differences are using of pseudo lengths for the foot instead the head and % the calculation of the available height. % \begin{macrocode} \newcommand*{\scr@notepaper@element@firstfoot}{% \if@firstfoot \ifdim\useplength{firstfoothpos}<\paperwidth \ifdim \useplength{firstfoothpos}>-\paperwidth \ifdim \useplength{firstfoothpos}<\z@ \setlength{\@tempdima}{\dimexpr \paperwidth + \useplength{firstfoothpos} - \useplength{firstfootwidth}% \relax}% \else \setlength{\@tempdima}{\useplength{firstfoothpos}}% \fi \else \setlength{\@tempdima}{\dimexpr\oddsidemargin + 1in\relax}% \fi \else \setlength{\@tempdima}{\dimexpr (\paperwidth-\useplength{firstfootwidth})/2 \relax}% \fi \put@notepaper@element (\@tempdima,\useplength{firstfootvpos})% (\useplength{firstfootwidth}, \paperheight-\useplength{firstfootvpos})% {Element `firstfoot'}{\usekomavar{firstfoot}}\relax \fi } % \end{macro}%^^A \scr@notepaper@element@firstfoot % \begin{macro}{\scr@notepaper@element@addressee} % Element \texttt{addressee} is very complex and therefore split into several % different sub-elements. % \begin{macrocode} \newcommand*{\scr@notepaper@element@addressee}{% \setlengthtoplength{\@tempdima}{toaddrhpos}% \ifdim \@tempdima<\z@ \addtolength{\@tempdima}{% \dimexpr \paperwidth-\useplength{toaddrwidth}\relax }% \fi \put@notepaper@element(\@tempdima,\useplength{toaddrvpos})% (\useplength{toaddrwidth},\useplength{toaddrheight})% {address field}{% \setparsizes{\z@}{\z@}{\z@ plus 1fil}\par@updaterelative \ifcase \@afieldmode\relax \or \scr@notepaper@subelement@addressee@default \or \scr@notepaper@subelement@addressee@PP \or \scr@notepaper@subelement@addressee@PPbackgroundimage \or \scr@notepaper@subelement@addressee@image \else \scr@notepaper@subelement@addressee@default \fi }\relax } % \end{macrocode} % \begin{macro}{\scr@notepaper@subelement@addressee@default} % \changes{v3.27}{2019/03/22}{new (internal)}%^^A % \changes{v3.28}{2019/11/15}{\cs{ifkomavarempty} durch \cs{Ifkomavarempty} % ersetzt}%^^A % \changes{v3.30}{2020/03/27}{Umdefinierung des Zeilenumbruchs % verschoben}%^^A % The field with the recipience address. This should be used only on the first % page of a letter. % \begin{macrocode} \newcommand*{\scr@notepaper@subelement@addressee@default}{% \setbox\@tempboxa\vbox {% \hsize=\useplength{toaddrwidth}\linewidth=\hsize \color@begingroup \if@baddr \Ifkomavarempty{backaddress}{}{% \backaddr@format{\scriptsize {% \def\\{\usekomavar{backaddressseparator}\@ogobble}% \usekomafont{backaddress}% {\usekomavar{backaddress}}% }% }% }% \fi \color@endgroup }% \ifdim \dimexpr\ht\@tempboxa+\dp\@tempboxa>\useplength{backaddrheight}\relax \PackageWarning{scrletter}{Element `backaddress' to high.\MessageBreak The content of `backaddress' could exceed\MessageBreak the address field% }% \fi \vbox to \useplength{backaddrheight}{\vss\usebox\@tempboxa}% \ifcase \ltr@priority \or \setkomavar{specialmail}{% {\usekomafont{priority}{% {\usekomafont{prioritykey}{B}}% -ECONOMY}}% }% \or \setkomavar{specialmail}{% {\usekomafont{priority}{% {\usekomafont{prioritykey}{A}}% -PRIORITY}}% }% \fi \Ifkomavarempty{specialmail}{% \@tempdima=\z@ }{% \setbox\@tempboxa\vbox{\hsize\useplength{toaddrwidth}% \color@begingroup \noindent\hspace*{\useplength{specialmailindent}}% \specialmail@format{% \usekomafont{specialmail}\usekomavar{specialmail}}% \hspace*{\useplength{specialmailrightindent}}% \color@endgroup }% \copy\@tempboxa \@tempdima=\dimexpr\ht\@tempboxa+\dp\@tempboxa\relax }% \setbox\@tempboxa\vbox{% \hsize\dimexpr \useplength{toaddrwidth}-2\useplength{toaddrindent}\relax \color@begingroup \raggedright \usekomafont{addressee}{% %<*package> \usekomavar{addressee}\par% % % {\usekomafont{toname}{\usekomavar{toname}\\}}% % {\usekomafont{toaddress}{\usekomavar{toaddress}\par}}% }% \color@endgroup }% \ifnum\@afieldmode=\@ne % \end{macrocode} % In opposite to the class, the package rounds the distance to lines. % \begin{macrocode} \vskip \dimexpr ((\useplength{toaddrheight}-\useplength{backaddrheight} -\@tempdima -\ht\@tempboxa -\dp\@tempboxa -\ht\strutbox)/(2*\baselineskip)) *\baselineskip\relax \fi \hskip\useplength{toaddrindent}% \usebox\@tempboxa } % \end{macrocode} % \end{macro}%^^A \scr@notepaper@subelement@addressee@default % \begin{macro}{\scr@notepaper@subelement@addressee@PP} % \changes{v3.27}{2019/03/22}{new (internal)}%^^A % \begin{macrocode} \newcommand*{\scr@notepaper@subelement@addressee@PP}{% \ifdim \useplength{toaddrindent}=\z@ \setplength{toaddrindent}{8mm}% \fi \ifdim \useplength{PPheadheight}=\z@ \setplength{PPheadheight}{20.74pt}% \fi \ifdim \useplength{PPheadwidth}=\z@ \setplength{PPheadwidth}{42mm}% \fi \ifdim \useplength{PPdatamatrixvskip}=\z@ \setplength{PPdatamatrixvskip}{3mm}% \fi \vskip 2pt\relax \hskip \useplength{toaddrindent}\relax \fbox{% \vbox to \dimexpr \useplength{PPheadheight}-2\fboxsep\relax{% \setlength{\parindent}{0pt}% \hsize \dimexpr \useplength{PPheadwidth}-2\fboxsep\relax % \end{macrocode} % \changes{v3.17}{2015/04/17}{\cs{setbox} durch \cs{sbox} ersetzt}%^^A % \changes{v3.25}{2017/11/15}{Verwendung von \cs{scr@endstrut} statt % \cs{unskip}\cs{strut}}%^^A % \begin{macrocode} \sbox\@tempboxa{% {\fontsize{20.74pt}{20.74pt}\selectfont \usekomafont{PPlogo}{P.P.}}\hskip 2mm% }% \dp\@tempboxa\z@ \setlength{\@tempdima}{\hsize}% \addtolength{\@tempdima}{-\wd\@tempboxa}% \hbox{\box\@tempboxa \vbox to \dimexpr \useplength{PPheadheight}-2\fboxsep\relax{% \vss\hsize\@tempdima \raggedright \fontsize{8pt}{9pt}\selectfont\usekomafont{PPdata}% \usekomavar*{fromzipcode}\usekomavar{zipcodeseparator}% \usekomavar{fromzipcode}\scr@endstrut\\ \usekomavar{place}\scr@endstrut \hfill }% }% \vss }% }% \hskip 1mm \mbox{% \vbox to \useplength{PPheadheight}{% \addtolengthplength[-]{\hsize}{PPheadwidth}% \addtolength{\hsize}{-1mm}% \addtolengthplength[-2]{\hsize}{toaddrindent}% \setlength{\parindent}{0pt}% \fontsize{8pt}{9pt}\selectfont\usekomafont{PPdata}% \hfill\usekomavar{PPcode} \vss \ifcase \ltr@priority \or \usekomafont{priority}{% {\usekomafont{prioritykey}{B}}% -ECONOMY\hss\vskip-\dp\strutbox }% \or \usekomafont{priority}{% {\usekomafont{prioritykey}{A}}% -PRIORITY\hss\vskip-\dp\strutbox }% \fi \vss }% }% \vskip 1mm \vskip-\ht\strutbox \noindent\hskip\useplength{toaddrindent}% \hrulefill% \hskip\useplength{toaddrindent}% \vbox to\z@{\hsize\z@ \vskip \useplength{PPdatamatrixvskip}\relax \llap{\usekomavar{PPdatamatrix}\hskip\useplength{toaddrindent}}% \vss }% \vskip 3mm \noindent\hskip\useplength{toaddrindent}% \setlength{\@tempdima}{\useplength{toaddrwidth}}% \addtolengthplength[-2]{\@tempdima}{toaddrindent}% \vbox{\hsize\@tempdima \Ifkomavarempty{PPdatamatrix}{}{% \addtolength{\hsize}{-2mm}% \settowidth\@tempdima{\usekomavar{PPdatamatrix}}% \addtolength{\hsize}{-\@tempdima}% }% \raggedright \usekomafont{addressee}{% %<*package> \usekomavar{addressee}\par% % % {\usekomafont{toname}{\usekomavar{toname}\\}}% % {\usekomafont{toaddress}{\usekomavar{toaddress}\par}}% }% }% } % \end{macrocode} % \end{macro}%^^A \scr@notepaper@subelement@addressee@PP % \begin{macro}{\scr@notepaper@subelement@addressee@PPimage} % \changes{v3.27}{2019/03/22}{new (internal)}%^^A % TODO: Need to be tested! % \begin{macrocode} \newcommand*{\scr@notepaper@subelement@addressee@PPimage}{% \ifdim \useplength{toaddrindent}=\z@ \setplength{toaddrindent}{8mm}% \fi \vskip 1mm \noindent\expandafter\hskip\useplength{toaddrindent}% \vbox to \useplength{PPheadheight}{% \addtolengthplength[-2]{\hsize}{toaddrindent}% \setlength{\parindent}{0pt}% \usekomavar{addresseeimage}% \vss }% } % \end{macrocode} % \end{macro}%^^A \scr@notepaper@subelement@addressee@PPimage % \begin{macro}{\scr@notepaper@subelement@addressee@backgroundimage} % \changes{v3.27}{2019/03/22}{new (internal)}%^^A % \changes{v3.28}{2019/11/15}{\cs{ifkomavarempty} durch \cs{Ifkomavarempty} % ersetzt}%^^A % TODO: Need to be tested! % \begin{macrocode} \newcommand*{\scr@notepaper@subelement@addressee@backgroundimage}{% \vskip 1mm \noindent\expandafter\hskip\useplength{toaddrindent}% \vbox to \useplength{PPheadheight}{% \addtolengthplength[-2]{\hsize}{toaddrindent}% \setlength{\parindent}{0pt}% \usekomavar{addresseeimage}% \vss }% \vskip 1mm \vskip\dp\strutbox \vfil% \noindent\hskip\useplength{toaddrindent}% \setlength{\@tempdima}{\useplength{toaddrwidth}}% \addtolengthplength[-2]{\@tempdima}{toaddrindent}% \vbox{\hsize\@tempdima \Ifkomavarempty{PPdatamatrix}{}{% \addtolength{\hsize}{-2mm}% \settowidth\@tempdima{\usekomavar{PPdatamatrix}}% \addtolength{\hsize}{-\@tempdima}% }% \raggedright \usekomafont{addressee}{% %<*package> \usekomavar{addressee}\par% % % {\usekomafont{toname}{\usekomavar{toname}\\}}% % {\usekomafont{toaddress}{\usekomavar{toaddress}\par}}% }% }% } % \end{macrocode} % \end{macro}%^^A \scr@notepaper@subelement@addressee@backgroundimage % \end{macro}%^^A \scr@notepaper@element@addressee % \begin{macro}{\scr@notepaper@element@location} % \changes{v3.27}{2019/03/22}{new (internal)}%^^A % \changes{v3.28}{2019/11/15}{\cs{ifkomavarempty} durch \cs{Ifkomavarempty} % ersetzt}%^^A % \begin{macrocode} \newcommand*{\scr@notepaper@element@location}{% % \end{macrocode} % \selectlanguage{ngerman}%^^A % \changes{v2.97e}{2007/11/13}{Der Absender kann nun ebenfalls in der % Absenderergänzung stehen}%^^A % \changes{v2.98b}{2008/01/30}{Absenderergänzung immer setzen, wenn % verwendet}%^^A % Je nach Absenderanordnung muss hier nun ebenfalls etwas getan werden. % Der Fall 0, also linksbündiger Absender im Kopf spielt hier keine Rolle. % \begin{macrocode} \ifcase\@alignfrom % \end{macrocode} % Im Fall 1, also zentrierter Absender im Kopf wird jedoch das Logo hier % platziert, also darf die Absenderergänzung nicht leer sein. % \begin{macrocode} \or \if@logo \Ifkomavarempty{location}{\setkomavar{location}{\null}}{}% \fi % \end{macrocode} % Im Fall 2, also rechtsbündiger Absender im Kopf, ist auch nichts zu tun. % \begin{macrocode} \or % \end{macrocode} % Im Fall 3, also linksbündiger Absender in der Absenderergänzung wird hier % eine Menge ausgegeben, also darf die Absenderergänzung nicht leer sein. % \begin{macrocode} \or \Ifkomavarempty{location}{\setkomavar{location}{\null}}{}% % \end{macrocode} % Im Fall 3, also linksbündiger Absender in der Absenderergänzung wird hier % eine Menge ausgegeben, also darf die Absenderergänzung nicht leer sein. % \begin{macrocode} \or \Ifkomavarempty{location}{\setkomavar{location}{\null}}{}% % \end{macrocode} % Alle anderen Fälle sind wie hier ebenfalls ohne Bedeutung. % \begin{macrocode} \fi % \end{macrocode} % \selectlanguage{english}%^^A % Everything else only, if the field is not empty. % \begin{macrocode} \Ifkomavarempty{location}{}{% % \end{macrocode} % Calculation of height and vertical possition. % \begin{macrocode} \ifdim \useplength{locheight}=\z@% \setplength{locheight}{\useplength{toaddrheight}}% \fi \ifdim \useplength{locvpos}=\z@% \setplength{locvpos}{\useplength{toaddrvpos}}% \fi % \end{macrocode} % Calculation of width and horizontal possition. % \begin{macrocode} \ifdim \useplength{locwidth}=\z@% \setplength{locwidth}{\paperwidth}% \ifdim \useplength{toaddrhpos}>\z@ \addtoplength[-2]{locwidth}{\useplength{toaddrhpos}}% \else \addtoplength[2]{locwidth}{\useplength{toaddrhpos}}% \fi \addtoplength[-1]{locwidth}{\useplength{toaddrwidth}}% \if@bigloc \setplength[.66667]{locwidth}{\useplength{locwidth}}% \else \setplength[.5]{locwidth}{\useplength{locwidth}}% \fi \fi \ifdim \useplength{lochpos}=\z@% \setplength{lochpos}{\useplength{toaddrhpos}}% \fi \ifdim \useplength{lochpos}<\z@ \setlength{\@tempdima}{-\useplength{lochpos}}% \else \setlength{\@tempdima}{\dimexpr \paperwidth-\useplength{lochpos}-\useplength{locwidth} \relax}% \fi \put@notepaper@element(\@tempdima,\useplength{locvpos})% (\useplength{locwidth},\useplength{locheight})% {Element `location'}% {% % \end{macrocode} % \selectlanguage{ngerman}%^^A % In einigen Fällen der Absenderanordnung muss hier nun eine ganze Menge getan % werden. In anderen ist hingegen nur wenig zu tun. Im Fall 0, also % linksbündiger Absender im Kopf wird nur die Absenderergänzung ausgegeben % (das erfolgt nach der Fallunterscheidung). % \begin{macrocode} \ifcase\@alignfrom % \end{macrocode} % Im Fall 1, also zentrierter Absender im Kopf wird jedoch das Logo hier % platziert, die Absenderergänzung wird ggf. danach ausgegeben (das erfolgt % nach der Fallunterscheidung).%^^A % \changes{v2.98a}{2008/01/10}{bei zentriertem Absender wird die % Absenderergänzung ggf. unter dem Logo ausgegeben}%^^A % \begin{macrocode} \or \if@logo \Ifkomavarempty{fromlogo}{\null}{% {\raggedleft\noindent\usekomavar{fromlogo}\\ \vskip\parskip}\noindent}% \fi % \end{macrocode} % Im Fall 2, also rechtsbündiger Absender im Kopf, wird auch nur die % Absenderergänzung ausgegeben (das erfolgt nach der Fallunterscheidung). % \begin{macrocode} \or % \end{macrocode} % Im Fall 3, also linksbündiger Absender in der Absenderergänzung wird hier % sozusagen der linksbündige Kopf nachgebaut. Das Logo steht dabei % ggf. rechtsbündig oben. % \begin{macrocode} \or \if@logo \Ifkomavarempty{fromlogo}{}{% \raggedleft\usekomavar{fromlogo}\par}% \fi \raggedright % \end{macrocode} % Zuerst wird der Name gesetzt. Dabei soll eine eigene Schriftart für den % Namen verwendet werden. % \begin{macrocode} {\usekomafont{fromname}\strut\ignorespaces \usekomavar{fromname}% % \end{macrocode} % Hat \verb|\@rulefrom| den nummerischen Wert 1, so soll direkt auf den % Absender eine Linie folgen. Die Länge dieser Linie kann vom Anwender % bestimmt oder automatisch gewählt werden. Es werden dabei die Pseudo-Längen % \texttt{fromrulewidth} und \texttt{fromrulethickness} verwendet. Ist % \texttt{fromrulewidth} 0, so wird sie automatisch bestimmt. Bei der % automatischen Längenbestimmung wird einfach eine Linie über die Gesamtbreite % der Absenderergänzung gesetzt. % \begin{macrocode} {% \ifnum\@rulefrom=1\\[-.5\baselineskip]% \usekomafont{fromrule}{% \setlength{\@tempdima}{\useplength{fromrulewidth}}% \ifdim\@tempdima=\z@ \setlength{\@tempdima}{\useplength{locwidth}}% \fi \expandafter\rule\expandafter{\the\@tempdima}{% \useplength{fromrulethickness}}% }% \fi }% \\ }% % \end{macrocode} % Als Nächstes wird die Absenderadresse einschließlich aller optionalen Felder % gesetzt. Dabei werden optionale Felder nur gesetzt, wenn der entsprechende % Schalter \emph{true} ist. Die Adresse wird ebenfalls innerhalb einer Gruppe % in einer eigenen Schriftart gesetzt.% % \changes{v3.12}{2013/05/29}{Variable \texttt{frommobilephone} wird % berücksichtigt}%^^A % \begin{macrocode} {\usekomafont{fromaddress}\strut\ignorespaces \usekomavar{fromaddress}% \if@phone\\\usekomavar*{fromphone}\usekomavar{fromphone}\fi% \if@mobilephone \\\usekomavar*{frommobilephone}\usekomavar{frommobilephone}% \fi% \if@fax\\\usekomavar*{fromfax}\usekomavar{fromfax}\fi% \if@email\\\usekomavar*{fromemail}\usekomavar{fromemail}\fi% \if@www\\\usekomavar*{fromurl}\usekomavar{fromurl}\fi% % \end{macrocode} % Wie weiter oben erwähnt, kann auch an dieser Stelle eine Linie gesetzt % werden. % \begin{macrocode} \ifnum\@rulefrom=2\\[-.5\baselineskip]% \usekomafont{fromrule}{% \setlength{\@tempdima}{\useplength{fromrulewidth}}% \ifdim\@tempdima=\z@ \setlength{\@tempdima}{\useplength{locwidth}}% \fi \expandafter\rule\expandafter{\the\@tempdima}{% \useplength{fromrulethickness}}}% \fi \\ }% % \end{macrocode} % Damit ist die Definition des linksbündigen Absenders in der % Absenderergänzung abgeschlossen. Im Fall 4, also rechtsbündiger Absender in % der Absenderergänzung wird hier exakt wie für Fall 3 verfahren. Nur ist % jetzt alles rechtsbündig.^^A% % \changes{v3.12}{2013/05/29}{Variable \texttt{frommobilephone} wird % berücksichtigt}%^^A% % \begin{macrocode} \or \raggedleft \if@logo \Ifkomavarempty{fromlogo}{}{\usekomavar{fromlogo}\par}% \fi {\usekomafont{fromname}\strut\ignorespaces \usekomavar{fromname}% {% \ifnum\@rulefrom=1\\[-.5\baselineskip]% \usekomafont{fromrule}{% \setlength{\@tempdima}{\useplength{fromrulewidth}}% \ifdim\@tempdima=\z@ \setlength{\@tempdima}{\useplength{locwidth}}% \fi \expandafter\rule\expandafter{\the\@tempdima}{% \useplength{fromrulethickness}}% }% \fi }% \\ }% {\usekomafont{fromaddress}\strut\ignorespaces \usekomavar{fromaddress}% \if@phone\\\usekomavar*{fromphone}\usekomavar{fromphone}\fi% \if@mobilephone% \\\usekomavar*{frommobilephone}\usekomavar{frommobilephone}% \fi% \if@fax\\\usekomavar*{fromfax}\usekomavar{fromfax}\fi% \if@email\\\usekomavar*{fromemail}\usekomavar{fromemail}\fi% \if@www\\\usekomavar*{fromurl}\usekomavar{fromurl}\fi% \ifnum\@rulefrom=2\\[-.5\baselineskip]% \usekomafont{fromrule}{% \setlength{\@tempdima}{\useplength{fromrulewidth}}% \ifdim\@tempdima=\z@ \setlength{\@tempdima}{\useplength{locwidth}}% \fi \expandafter\rule\expandafter{\the\@tempdima}{% \useplength{fromrulethickness}}}% \fi \\ }% % \end{macrocode} % In allen anderen Fällen wird ebenfalls die Absenderergänzung gesetzt. % \begin{macrocode} \fi \usekomavar{location}% % \end{macrocode} % \selectlanguage{english}%^^A % That's it. % \begin{macrocode} }\relax }% } % \end{macrocode} % \end{macro}%^^A \scr@notepaper@element@location % \begin{macro}{\scr@notepaper@element@refline} % \changes{v3.27}{2019/05/03}{new (internal)}%^^A % This notepaper element replaces the \cs{@datefield} of % \textsf{scrlttr2}. In opposite to \textsf{scrlttr2} this element has a % dedicated height \texttt{reflineheight}. % TODO: Still missing! % \begin{macrocode} \newcommand*{\scr@notepaper@element@refline}{% % \end{macrocode} % First of all test, whether or not their has to be set anything. % \begin{macrocode} \@tempswafalse \if@refline \let\do@set@reffield\@test@reffield % \let\@tempa\@empty \@set@reffields % \end{macrocode} % Maybe we have to add the date: % \begin{macrocode} \ifcase \@datepos \or \if@tempswa\addtoreffields{date}\fi \expandafter\let\csname if@refline\expandafter\endcsname \csname if@tempswa\endcsname \@test@reffield{date}% \or \if@tempswa \edef\expandafter\@set@reffields{% \unexpanded{\do@set@reffield{date}}% \unexpanded\expandafter{\@set@reffields}% }% \fi \expandafter\let\csname if@refline\expandafter\endcsname \csname if@tempswa\endcsname \@test@reffield{date}% \fi \fi \if@tempswa % \end{macrocode} % We have to print something, so let's calculate the position and height. % \begin{macrocode} \ifdim\useplength{refwidth}=\z@ % \typeout{TRACE: refwidth by option}% \if@refwide % \typeout{TRACE: refline=wide}% \ifdim \useplength{toaddrhpos}>\z@ \setplength{refhpos}{\useplength{toaddrhpos}}% \else \setplength[-]{refhpos}{\useplength{toaddrhpos}}% \fi \setplength{refwidth}{\paperwidth -2\useplength{refhpos}}% \else % \typeout{TRACE: refline=narrow}% \setplength{refwidth}{\textwidth}% \setplength{refhpos}{\oddsidemargin+1in}% \fi \else % \typeout{TRACE: refwidth by pseudo-length}% \ifdim\useplength{refhpos}=\z@ \setlength{\@tempdima}{\dimexpr \textwidth-\useplength{refwidth} \relax}% \setlength{\@tempdimb}{\dimexpr \oddsidemarin+1in\relax}% \setlength{\@tempdimc}{\dimexpr \paperwidth-\textwidth\relax}% \divide\@tempdimb by 32768\relax \divide\@tempdimc by 32768\relax \ifdim\@tempdimc=\z@\else \multiply\@tempdima by\@tempdimb \divide\@tempdima by\@tempdimc \fi \setplength{refhpos}{\@tempdima}% \fi \fi %<*trace> \typeout{TRACE: Reference line with \@tempa^^J \space\space\space\space\space\space at refhpos=\the\useplength{refhpos},^^J \space\space\space\space\space\space\space\space\space refvpos=\the\useplength{refvpos},^^J \space\space\space\space\space\space\space\space\space refwidth=\the\useplength{refwidth},^^J \space\space\space\space\space\space\space\space\space refheight=\the\useplength{refheight}}% % \put@notepaper@element (\useplength{refhpos},\useplength{refvpos})% (\useplength{refwidth},\useplength{refheight})% {Element `refline'}% {% % \end{macrocode} % Last but not least print it. % \begin{macrocode} \if@refline % \end{macrocode} % Print a reference line. % \begin{macrocode} \let\do@set@reffield\@set@reffield\@tempswafalse\@set@reffields \else % \end{macrocode} % Print only place and date. % \begin{macrocode} \ifnum \@datepos=1 \hspace*{\fill}\fi {% \usekomafont{placeanddate}{% \Ifkomavarempty{place}{}{% \usekomavar{place}\usekomavar{placeseparator}% }% \usekomavar{date}% }% }% \fi }% \fi } % \end{macrocode} % \end{macro}%^^A \scr@notepaper@element@refline % \end{macro}%^^A \scr@notepaper@elements % \begin{macro}{\put@notepager@element} % \changes{v3.27}{2019/03/22}{new (internal)}%^^A % \begin{macro}{\put@@notepager@@element} % \changes{v3.27}{2019/05/03}{new (internal)}%^^A % A helper macro to output one element at a specific % position. \texttt{(\#1,\#2)} is the position, \texttt{(\#3,\#4)} the allowed % width and height, \texttt{\#5} is the name of the element (used for warning % messages only), \texttt{\#6} is the element content. The content is first % put into a temporary box of type \texttt{vtop}. Optional code can be % executed immediately before testing the total height of this box % \cs{@tempboxa} and before using it. % \begin{macrocode} \newcommand{\put@notepaper@element}{} \long\def\put@notepaper@element(#1,#2)(#3,#4)#5#6{% \kernel@ifnextchar [%] {\put@@notepaper@@element({#1},{#2})({#3},{#4}){#5}{#6}}% {\put@@notepaper@@element({#1},{#2})({#3},{#4}){#5}{#6}[]}% } \newcommand{\put@@notepaper@@element}{} \long\def\put@@notepaper@@element(#1,#2)(#3,#4)#5#6[#7]{% \put(\LenToUnit{\dimexpr #1\relax},\LenToUnit{-\dimexpr #2\relax}){% \setbox\@tempboxa \vtop{% \color@begingroup \vskip \z@ \hsize=\dimexpr #3\relax \linewidth=\hsize \columnwidth=\linewidth \textwidth=\columnwidth \parfillskip=\z@ \@plus 1fil\relax #6 \color@endgroup }% #7% \ifdim \dimexpr\ht\@tempboxa+\dp\@tempboxa\relax > \dimexpr #4\relax \PackageWarning{scrletter}{#5 \the\dimexpr \ht\@tempboxa+\dp\@tempboxa-(#4)\relax\space to high.\MessageBreak The content could collide with other page contents\MessageBreak or break the page edges. You should reduce the\MessageBreak size before usage% }% \fi \usebox\@tempboxa }% } % % \end{macrocode} % \end{macro}%^^A \put@@notepaper@@element % \end{macro}%^^A \put@notepaper@element % \selectlanguage{ngerman}%^^A % % \begin{macro}{\move@topt} % \changes{v2.8n}{2001/09/07}{Neu}%^^A % Für die folgenden Aktionen wird ein Makro benötigt, mit dem man vertikal von % der relativen Seitenposition zur relativen Papierposition gelangen kann. % \begin{macrocode} \newcommand*{\move@topt}{% \null\vskip -1in\vskip -\topmargin% \vskip -\headheight\vskip -\headsep% \vskip -\topskip% \ignorespaces% } % \end{macrocode} % \begin{macro}{\move@frompt} % \changes{v2.8n}{2001/09/07}{Neu}%^^A % Natürlich wird auch ein Makro benötigt, um vertikal von einer relativen % Papierposition wieder auf die relative Seitenposition zurück zu gelangen. % \begin{macrocode} \newcommand*{\move@frompt}{% \vskip 1in\vskip \topmargin% \vskip \headheight\vskip \headsep% \vskip \topskip% \vskip -\baselineskip% \ignorespaces% } % \end{macrocode} % \end{macro} % \end{macro} % % \begin{macro}{\move@topl} % \changes{v2.8n}{2001/09/07}{Neu}%^^A % Für die folgenden Aktionen wird außerdem ein Makro benötigt, mit dem man % horizontal von der relativen Seitenposition zur relativen Papierposition % gelangen kann. % \begin{macrocode} \newcommand*{\move@topl}{% \null\hskip -1in% \ifodd\value{page}\hskip -\oddsidemargin\else\hskip -\evensidemargin\fi \ignorespaces% } % \end{macrocode} % \begin{macro}{\move@frompl} % \changes{v2.8n}{2001/09/07}{Neu}%^^A % Natürlich wird auch ein Makro benötigt, um horizontal von einer relativen % Papierposition wieder auf die relative Seitenposition zurück zu gelangen. % \begin{macrocode} \newcommand*{\move@frompl}{% \hskip 1in% \ifodd\value{page}\hskip \oddsidemargin\else\hskip \evensidemargin\fi% \ignorespaces% } % \end{macrocode} % \end{macro} % \end{macro} % % % \begin{macro}{\vb@t@z} % \changes{v2.8n}{2001/09/07}{Neu}%^^A % \changes{v2.95}{2006/03/23}{Absatzformatierung mit \cs{setparsizes}} % \changes{v2.97e}{2007/11/20}{\cs{long}} % Ausserdem wird ein vertikales Äquivalent zu |\rlap| benötigt. % \begin{macrocode} \newcommand{\vb@t@z}[1]{{% \setbox\z@\vbox to\z@{\color@begingroup #1\color@endgroup\vss}% \setparsizes{\z@}{\z@}{\z@ plus 1fil}\par@updaterelative \setlength{\baselineskip}{\z@}% \setlength{\@tempdima}{\ht0}\addtolength{\@tempdima}{\dp0}% \box\z@\vskip-\@tempdima% }% } % \end{macrocode} % \end{macro} % % \begin{macro}{\@foldmarks} % \changes{v2.97e}{2007/11/08}{\texttt{mfoldmarkvpos} wird verwendet}%^^A % Für die Faltmarken müssen nicht nur Abstände definiert werden, es wird auch % ein Befehl benötigt, um die Faltmarken zu setzen. % \begin{macro}{\@hfoldmark} % \changes{v2.97e}{2007/11/08}{Neu (intern)}%^^A % Dabei werden nur die horizontalen Faltmarken gesetzt, die tatsächlich % existieren. % \begin{macro}{\@foldmark} % \changes{v2.8n}{2001/09/07}{Neu}%^^A % \changes{v2.95}{2006/06/06}{\cs{vskip} in \cs{vb@t@z} verschoben, damit es % vom Satzspiegel unabhängig wird}%^^A % \changes{v2.97c}{2007/05/08}{Dicke konfigurierbar}%^^A % \changes{v2.97c}{2007/05/08}{Schrift (Farbe) konfigurierbar}%^^A % \changes{v3.27}{2019/03/29}{different versions for package and class}%^^A % Das geht am einfachsten, wenn wir auch einen Befehl haben, mit dem man eine % einzelne Faltmarke relativ zur aktuellen Position setzen kann. Dies % geschieht mit Hilfe von |\rlap|, damit die horizontale Position unverändert % bleibt. Als Parameter werden der vertikale Abstand zur aktuellen Position % und die Länder der Marke übergeben. % \begin{macrocode} %<*class|!willbe> \newcommand*{\@foldmark}[2]{% \vb@t@z{\setlength{\@tempdima}{#1}% \addtolengthplength[-.5]{\@tempdima}{foldmarkthickness}% \vskip \@tempdima \rlap{\move@topl\hskip\useplength{foldmarkhpos}% \usekomafont{foldmark}{% \rule{#2}{\useplength{foldmarkthickness}}}}}% \ignorespaces } % % \end{macrocode} % \selectlanguage{english}%^^A % The package version uses \cs{put} to set the marks. It has a possition, a % direction and a length, so it can handle the horizontal and the vertical % foldmarks. % \begin{macrocode} %<*package&willbe> \newcommand*{\@foldmark}{} \def\@foldmark(#1,#2)(#3,#4)#5{% \put(\LenToUnit{#1},-\LenToUnit{#2}){% \linethickness{\useplength{foldmarkthickness}}% \line(#3,-#4){\LenToUnit{#5}}% }% } % \newcommand*{\@hfoldmark}[1]{% \begingroup \@expandtwoargs\in@{#1}{\@usefolds}% \ifin@ \lowercase{% \edef\@tempa{% %<*class|!willbe> \noexpand\ifdim \noexpand\useplength{#1foldmarkvpos}=\noexpand\z@ \noexpand\else \noexpand\@foldmark{% \noexpand\useplength{#1foldmarkvpos}% }{% \noexpand\useplength{#1foldmarklength}% }% \noexpand\fi % % \end{macrocode} % \changes{v3.27}{2019/03/29}{different handling of the package version}%^^A % The package version of \cs{@foldmark} has a new direction argument, because % it handles horizontal and vertical foldmarks. And if there is not a % pseudo-length for the vertical possition of the horizontal fold-mark the % possition is half of the paper height. This is for the ``P''-mark. % \selectlanguage{ngerman}%^^A % \begin{macrocode} %<*package&willbe> \Ifplength{#1foldmarkvpos}{% \ifdim \useplength{#1foldmarkvpos}=\z@\else \noexpand\@foldmark(\noexpand\useplength{foldmarkhpos},% \noexpand\useplength{#1foldmarkvpos})% (1,0)% {% \noexpand\useplength{#1foldmarklength}% }% \fi }{% \noexpand\@foldmark(\noexpand\useplength{foldmarkhpos},% .5\noexpand\paperheight)% (1,0)% {% \noexpand\useplength{#1foldmarklength}% }% }% % }% }% \@tempa \fi \endgroup } % \end{macrocode} % \begin{macro}{\@vfoldmark} % \changes{v2.97e}{2007/11/10}{Neu (intern)}%^^A % Für die vertikale(n) Faltmarke(n) gilt prinzipiell das gleiche. Dabei ist % lediglich zu beachten, dass die Linie hier komplett oberhalb der Grundlinie % gesetzt wird, also die vertikale Position um die Länge nach unten zu % verschieben ist. % \begin{macrocode} \newcommand*{\@vfoldmark}[1]{% \begingroup \ifdim \useplength{lfoldmarkhpos}=\z@\else \@expandtwoargs\in@{#1}{\@usefolds}% \ifin@ % \end{macrocode} % \selectlanguage{english}%^^A % \changes{v3.27}{2019/03/29}{package version uses \cs{@foldmark}}%^^A % The class version does still work using \cs{rule}. % \begin{macrocode} %<*class|willbe> \vb@t@z{% \ifdim \useplength{foldmarkvpos}<\z@ \nobreak\vskip \paperheight\nobreak \fi \vskip \useplength{foldmarkvpos}% \vskip \useplength{foldmarkthickness}% \rlap{\move@topl \setlength{\@tempdima}{\useplength{lfoldmarkhpos}}% \addtolengthplength[-.5]{\@tempdima}{foldmarkthickness}% \hskip\@tempdima \usekomafont{foldmark}{% \rule{\useplength{foldmarkthickness}}% {\useplength{lfoldmarklength}}% }% }% }% \ignorespaces % % \end{macrocode} % But the package version uses \cs{@foldmark}. % \begin{macrocode} %<*package&willbe> \@foldmark(\useplength{lfoldmarkhpos},\useplength{foldmarkvpos})% (0,1)% {\useplength{lfoldmarklength}}% % \fi \fi \endgroup } % \end{macrocode} % The main foldmark command is only needed by the class. % \selectlanguage{ngerman}%^^A % \begin{macrocode} %<*class|!willbe> \newcommand*{\@foldmarks}{% \if@fold% \typeout{Foldmarks: yes}% \move@topt \ifdim \useplength{pfoldmarklength}=\z@ \@setplength{pfoldmarklength}{4mm}% \fi \ifdim \useplength{tfoldmarklength}=\z@ \@setplength{tfoldmarklength}{2mm}% \fi \ifdim \useplength{mfoldmarklength}=\z@ \@setplength{mfoldmarklength}{2mm}% \fi \ifdim \useplength{bfoldmarklength}=\z@ \@setplength{bfoldmarklength}{2mm}% \fi \ifdim \useplength{lfoldmarklength}=\z@ \@setplength{lfoldmarklength}{4mm}% \fi \begingroup \@expandtwoargs\in@{P}{\@usefolds}% \ifin@ \@foldmark{.5\paperheight}{\useplength{pfoldmarklength}}% \fi \endgroup \@hfoldmark{T}% \@hfoldmark{M}% \@hfoldmark{B}% \@vfoldmark{L}% \move@frompt \else \typeout{Foldmarks: no}% \fi% } % % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % % \begin{macro}{\@savevbox} % \changes{v2.8n}{2001/09/07}{Neu}%^^A % \changes{v2.8q}{2001/10/30}{zusätzlich ein optionales Argument}%^^A % \begin{macro}{\if@savevbox@warning} % \begin{macro}{\@savevbox@warningtrue} % \begin{macro}{\@savevbox@warningfalse} % \changes{v2.8q}{2001/10/30}{Neu}%^^A % Wenn eine der vertikalen Boxen in \cs{opening} zu einer \texttt{overbox % \string\vbox\space} Meldung führt, weiss letztlich niemand, welche Box dafür % verantwortlich war. Deshalb definieren wir hier ein Makro, das ggf. eine % Meldung ausgibt, die erklärt, welches Element die Ursache war und was man % tun kann. Das erste Argument ist dabei die Sollhöhe der Box, das zweite % Argument ist der Boxinhalt, das dritte Argument is der Name des Elements, % das zu hoch ist, das vierte der Name der Elementhöhe und das fünfte % schließlich der Befehl, mit dem das Element vom Anwender definiert werden % kann. Das optionale Argument wird nur bei der Ausgabe mit ausgegeben, findet % jedoch bei der Berechnung keine Berücksichtigung. % \begin{macrocode} \newif\if@savevbox@warning\@savevbox@warningtrue \newcommand{\@savevbox}[6][]{% \begingroup% \vbox to #2{#1#3}% \if@savevbox@warning\@savevbox@warningfalse% \setbox\z@\vbox{\color@begingroup #3\color@endgroup}% \setlength{\@tempdima}{#2}% \setlength{\@tempdimb}{\ht0}\addtolength{\@tempdimb}{\dp0}% \ifdim \@tempdimb>\@tempdima% \addtolength{\@tempdimb}{-\@tempdima}% % \ClassWarning{scrlttr2}{% % \PackageWarning{scrletter}{% #4 is \the\@tempdimb\space too high.\MessageBreak You have to change `\string#5'\MessageBreak or you have to define a smaller\MessageBreak #4 using \string#6.\MessageBreak Because of this too high #4\MessageBreak you've got an overfull \string\vbox\space message% }% \fi% \fi% \endgroup% } % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % % \begin{macro}{\@firstheadfootfield} % \changes{v2.8n}{2001/09/08}{Neu}%^^A % \changes{v2.8q}{2001/10/30}{\cs{parfillskip} lokal auf 0 gesetzt} % \changes{v2.8q}{2001/10/30}{Fuß explizit in eine Box gesetzt}%^^A % \changes{v2.9l}{2003/01/23}{Positionierung verbessert}%^^A % \changes{v2.97e}{2007/11/22}{Optionen \texttt{firsthead} und % \texttt{firstfoot} beachten}%^^A % \changes{v3.05}{2009/11/09}{neue Pseudo-Länge \texttt{firstheadhpos} % beachtet}%^^A % \changes{v3.05}{2009/11/09}{neue Pseudo-Länge \texttt{firstfoothpos} % beachtet}%^^A % Ab Version 2.8n werden Kopf und Fuß der ersten Seite nicht mehr per % Seitenstil \texttt{firstpage} gesetzt, sondern mit einem speziellen % Feld. Dabei wird auch beachtet, dass dieses Feld im Kopf eine bestimmte aber % beschränkte Höhe hat. Diese Höhe ist unabhängig von der normalen Kopfhöhe % und richtet sich stattdessen nach der Position des Adressfeldes. % \selectlanguage{english}%^^A % \changes{v3.27}{2019/03/22}{package only enlarges page}%^^A % From \KOMAScript~3.27 the \textsf{scrlayer} package does not print the page % head or foot here. It only enlarges or shrinks the first page. % \selectlanguage{ngerman}%^^A % \begin{macrocode} \newcommand*{\@firstheadfootfield}{% %<*class|!willbe> \if@firsthead \typeout{Head of first page}% \move@topt\vskip\useplength{firstheadvpos}% \vb@t@z{% \rlap{\move@topl % \end{macrocode} % Wenn \texttt{firstheadhpos} positiv und kleiner als die Seitenbreite ist, % dann ist es der Abstand des Kopfes vom linken Rand. % Wenn \texttt{firstheadhpos} negativ und betragsmäßig kleiner als die % Seitenbreite ist, dann ist es der Abstand des Kopfes vom rechten Rand. % Wenn \texttt{firstheadhpos} größer als die Seitenbreite ist, dann wird der % Kopf zentriert. % Wenn \texttt{firstheadhpos} kleiner als die negative Seitenbreite ist, dann % wird der Kopf am linken Rand des Satzspiegels ausgerichtet. % \begin{macrocode} \ifdim\useplength{firstheadhpos}<\paperwidth \ifdim \useplength{firstheadhpos}>-\paperwidth \ifdim \useplength{firstheadhpos}<\z@ \setlength\@tempskipa{\paperwidth}% \addtolengthplength{\@tempskipa}{firstheadhpos}% \addtolengthplength[-]{\@tempskipa}{firstheadwidth}% \else \setlength{\@tempskipa}{\useplength{firstheadhpos}}% \fi \else \setlength\@tempskipa{\oddsidemargin}% \addtolength\@tempskipa{1in}% \fi \else \setlength\@tempskipa{.5\paperwidth}% \addtolengthplength[-.5]{\@tempskipa}{firstheadwidth}% \fi \hskip\@tempskipa \vbox{\hsize\useplength{firstheadwidth}% \setlength{\@tempskipa}{\useplength{toaddrvpos}}% \addtolengthplength[-1]{\@tempskipa}{firstheadvpos}% \addtolength{\@tempskipa}{-\baselineskip}% % \end{macrocode} % Da sich einige -- beispielsweise |briefkopf.sty| -- darauf verlassen, dass % |\textwidth| die Breite des Briefkopfes ist, wird diese Länge lokal % entsprechend gesetzt. Außerdem wird dafür gesorgt, dass |\parfillskip| hier % nicht berücksichtigt wird. % \begin{macrocode} \setlength{\textwidth}{\useplength{firstheadwidth}}% \setlength{\parfillskip}{\z@ \@plus 1fil}% \@savevbox{\@tempskipa}{\noindent\usekomavar{firsthead}% \vskip \z@ \@plus .00001fil}% {head of first page}{firstheadvpos}{\setkomavar}% }% }% }% \vskip-\useplength{firstheadvpos}\move@frompt \else \typeout{No head at first page}% \fi \move@topt \if@firstfoot \typeout{Foot of first page}% \vb@t@z{% \rlap{\move@topl % \end{macrocode} % Wenn \texttt{firstfoothpos} positiv und kleiner als die Seitenbreite ist, % dann ist es der Abstand des Kopfes vom linken Rand. % Wenn \texttt{firstfoothpos} negativ und betragsmäßig kleiner als die % Seitenbreite ist, dann ist es der Abstand des Kopfes vom rechten Rand. % Wenn \texttt{firstfoothpos} größer als die Seitenbreite ist, dann wird der % Kopf zentriert. % Wenn \texttt{firstfoothpos} kleiner als die negative Seitenbreite ist, dann % wird der Kopf am linken Rand des Satzspiegels ausgerichtet. % \begin{macrocode} \ifdim\useplength{firstfoothpos}<\paperwidth \ifdim \useplength{firstfoothpos}>-\paperwidth \ifdim \useplength{firstfoothpos}<\z@ \setlength\@tempskipa{\paperwidth}% \addtolengthplength{\@tempskipa}{firstfoothpos}% \addtolengthplength[-]{\@tempskipa}{firstfootwidth}% \else \setlength{\@tempskipa}{\useplength{firstfoothpos}}% \fi \else \setlength\@tempskipa{\oddsidemargin}% \addtolength\@tempskipa{1in}% \fi \else \setlength\@tempskipa{.5\paperwidth}% \addtolengthplength[-.5]{\@tempskipa}{firstfootwidth}% \fi \hskip\@tempskipa \vbox{\hsize\useplength{firstfootwidth}% \vskip\useplength{firstfootvpos}% % \end{macrocode} % Da sich einige -- beispielsweise |briefkopf.sty| -- darauf verlassen, dass % |\textwidth| die Breite des Brieffußes ist, wird diese Länge lokal % entsprechend gesetzt. Außerdem wird dafür gesorgt, dass |\parfillskip| hier % nicht berücksichtigt wird. % \begin{macrocode} \setlength{\textwidth}{\useplength{firstfootwidth}}% \setlength{\parfillskip}{\z@ \@plus 1fil}% \vbox{\hsize\useplength{firstfootwidth}\noindent \usekomavar{firstfoot}}% }% }% }% \else \typeout{No foot at first page}% \fi \move@frompt% % {% \setlength{\@tempdima}{1in}\addtolength{\@tempdima}{\topmargin}% \addtolength{\@tempdima}{\headheight}% \addtolength{\@tempdima}{\headsep}% \addtolength{\@tempdima}{\textheight}% \addtolength{\@tempdima}{\footskip}% \if@firstfoot \addtolengthplength[-1]{\@tempdima}{firstfootvpos}% \else \addtolength{\@tempdima}{-\paperheight}% \fi \ifdim\@tempdima>\z@\enlargethispage{-\@tempdima}% \else\if@enlargefp\enlargethispage{-\@tempdima}\fi\fi }% } % \end{macrocode} % \end{macro} % % \begin{macro}{\@addrfield} % \changes{v2.8q}{2002/04/01}{\cs{parfillskip} lokal geändert}%^^A % \changes{v2.8q}{2002/06/03}{Sonderbehandlung für Adressfeld rechts}%^^A % \changes{v2.9o}{2003/02/20}{\cs{noindent} eingefügt bei % \texttt{specialmail}}%^^A % \changes{v2.96}{2006/07/31}{Benutzung von \cs{backaddr@format}}%^^A % \changes{v3.03}{2009/03/04}{Priorität kann Versandart ersetzen}%^^A % \changes{v3.03}{2009/03/04}{Neue Anschriftmodi \texttt{PP}, % \texttt{backgroundimage}, \texttt{addresseeimage}}%^^A % \changes{v3.03b}{2009/06/30}{Schreibfehler bei »addressee« korrigiert}%^^A % \changes{v3.06a}{2010/07/29}{Absatzparameter werden passend % eingestellt}%^^A % \changes{v3.22}{2016/12/21}{zweimal fehlende Klammern bei \texttt{toname} % ergänzt}%^^A % \changes{v3.22}{2016/12/21}{zweimal fehlende Klammern und \cs{endgraf} bei % \texttt{toaddress} ergänzt}%^^A % \changes{v3.27}{2019/03/27}{only at \textsf{scrlttr2}}%^^A % \changes{v3.28}{2019/11/15}{\cs{ifkomavarempty} durch \cs{Ifkomavarempty} % ersetzt}%^^A % \changes{v3.30}{2020/03/27}{Umdefinierung des Zeilenumbruchs % verschoben}%^^A % Dasselbe gilt auch für das Adressfeld für Fensterumschläge. Die % Rücksendeadresse und die Briefart werden dabei mit eigenen % Formatieranweisungen gesetzt. % \begin{macrocode} %<*class|!willbe> \newcommand*{\@addrfield}{% \ifcase \ifnum\@afieldmode=5 \@ne\else\@afieldmode\fi\relax \typeout{Address: No}% \or \begingroup% \if@baddr \Ifkomavarempty{backaddress}{% \let\@tempa\@empty\let\@tempb\@empty }{% \def\@tempa{backaddress}\def\@tempb{,\space}% }% \else \let\@tempa\@empty\let\@tempb\@empty \fi \ifcase \ltr@priority \Ifkomavarempty{specialmail}{}{% \edef\@tempa{\@tempa\@tempb specialmail}\def\@tempb{,\space}% }% \or \edef\@tempa{\@tempa\@tempb B-Economy}\def\@tempb{,\space}% \or \edef\@tempa{\@tempa\@tempb A-Priority}\def\@tempb{,\space}% \fi \typeout{Address (\@tempa\@tempb addressee)}% \endgroup% \move@topt\vskip\useplength{toaddrvpos}% \vb@t@z{{\setparsizes{\z@}{\z@}{\z@ plus 1fil}\par@updaterelative \rlap{\move@topl \setlengthtoplength{\@tempskipa}{toaddrhpos}% \ifdim \@tempskipa<\z@ \addtolength{\@tempskipa}{\paperwidth}% \addtolengthplength[-]{\@tempskipa}{toaddrwidth}% \fi \hskip\@tempskipa \@savevbox{\useplength{toaddrheight}}{\hsize\useplength{toaddrwidth}% \@savevbox[\vss]{\useplength{backaddrheight}}{% \hsize\useplength{toaddrwidth}% \if@baddr \Ifkomavarempty{backaddress}{}{{% \noindent% \backaddr@format{\scriptsize {% \def\\{\usekomavar{backaddressseparator}\@ogobble}% \usekomafont{backaddress}% {\usekomavar{backaddress}}% }}}}% \fi }{backaddress}{backaddrheight}{\setkomavar}% \ifcase \ltr@priority \or \setkomavar{specialmail}{% {\usekomafont{priority}{% {\usekomafont{prioritykey}{B}}% -ECONOMY}}% }% \or \setkomavar{specialmail}{% {\usekomafont{priority}{% {\usekomafont{prioritykey}{A}}% -PRIORITY}}% }% \fi \Ifkomavarempty{specialmail}{}{% \vbox{\hsize\useplength{toaddrwidth}% \noindent\hspace*{\useplength{specialmailindent}}% \specialmail@format{% \usekomafont{specialmail}\usekomavar{specialmail}}% \hspace*{\useplength{specialmailrightindent}}}% }% \ifnum\@afieldmode=\@ne\vfil\fi% \noindent\hskip\useplength{toaddrindent}% \setlength{\@tempdima}{\useplength{toaddrwidth}}% \addtolengthplength[-2]{\@tempdima}{toaddrindent}% \vbox{\hsize\@tempdima\raggedright \usekomafont{addressee}{% {\usekomafont{toname}{\usekomavar{toname}\\}}% {\usekomafont{toaddress}{\usekomavar{toaddress}\endgraf}}}}% \vfil\null\vskip-\baselineskip}% {address field}{toaddrheight}% {\begin{letter} or you\MessageBreak have to define a smaller special purpose using\MessageBreak \string\specialmail}% }}}% \vskip-\useplength{toaddrvpos}\move@frompt \else \begingroup% % \end{macrocode} % In den Modi \texttt{PP}, \texttt{backgroundimage} oder \texttt{addresseeimage} % gibt es weder Rücksendeadresse noch Versandart aber ebenfalls eine Priorität. % \begin{macrocode} \if@baddr \let\@tempa\@empty\let\@tempb\@empty \ifcase \@afieldmode\relax\or\or \def\@tempa{PP-mode}\def\@tempb{,\space}% \or \def\@tempa{backgroundimage-mode}\def\@tempb{,\space}% \or \def\@tempa{image-mode}\def\@tempb{,\space}% \fi \Ifkomavarempty{backaddress}{}{% \edef\@tempa{\@tempa\@tempb backaddress ignored}\def\@tempb{,\space}% }% \else \let\@tempa\@empty\let\@tempb\@empty \fi \ifcase \ltr@priority \Ifkomavarempty{specialmail}{}{% \edef\@tempa{\@tempa\@tempb specialmail ignored}\def\@tempb{,\space}% }% \or \edef\@tempa{\@tempa\@tempb B-Economy}\def\@tempb{,\space}% \or \edef\@tempa{\@tempa\@tempb A-Priority}\def\@tempb{,\space}% \fi \typeout{Address (\@tempa\@tempb addressee)}% \endgroup% \move@topt\vskip\useplength{toaddrvpos}% \vb@t@z{{% \setparsizes{\z@}{\z@}{\z@ plus 1fil}\par@updaterelative \ifdim \useplength{toaddrindent}=\z@ \@setplength{toaddrindent}{8mm}% \fi \ifdim \useplength{PPheadheight}=\z@ \@setplength{PPheadheight}{20.74pt}% \fi \ifdim \useplength{PPheadwidth}=\z@ \@setplength{PPheadwidth}{42mm}% \fi \ifdim \useplength{PPdatamatrixvskip}=\z@ \@setplength{PPdatamatrixvskip}{9mm}% \fi \rlap{\move@topl \setlengthtoplength{\@tempskipa}{toaddrhpos}% \ifdim \@tempskipa<\z@ \addtolength{\@tempskipa}{\paperwidth}% \addtolengthplength[-]{\@tempskipa}{toaddrwidth}% \fi \hskip\@tempskipa \@savevbox{\useplength{toaddrheight}}{\hsize\useplength{toaddrwidth}% \ifnum\@afieldmode=\tw@ % \end{macrocode} % Modus \texttt{PP}. % \begin{macrocode} \vskip 2pt\relax \hskip \useplength{toaddrindent}\relax \fbox{% \vbox to \dimexpr \useplength{PPheadheight}-2\fboxsep\relax{% \setlength{\parindent}{0pt}% \hsize \dimexpr \useplength{PPheadwidth}-2\fboxsep\relax % \end{macrocode} % \changes{v3.17}{2015/04/17}{\cs{setbox} durch \cs{sbox} ersetzt}%^^A % \changes{v3.25}{2017/11/15}{Verwendung von \cs{scr@endstrut} statt % \cs{unskip}\cs{strut}}%^^A % \begin{macrocode} \sbox\@tempboxa{% {\fontsize{20.74pt}{20.74pt}\selectfont \usekomafont{PPlogo}{P.P.}}\hskip 2mm% }% \dp\@tempboxa\z@ \setlength{\@tempdima}{\hsize}% \addtolength{\@tempdima}{-\wd\@tempboxa}% \hbox{\box\@tempboxa \vbox to \dimexpr \useplength{PPheadheight}-2\fboxsep\relax{% \vss\hsize\@tempdima \raggedright \fontsize{8pt}{9pt}\selectfont\usekomafont{PPdata}% \usekomavar*{fromzipcode}\usekomavar{zipcodeseparator}% \usekomavar{fromzipcode}\scr@endstrut\\ \usekomavar{place}\scr@endstrut \hfill }% }% \vss }% }% \hskip 1mm \mbox{% \vbox to \useplength{PPheadheight}{% \addtolengthplength[-]{\hsize}{PPheadwidth}% \addtolength{\hsize}{-1mm}% \addtolengthplength[-2]{\hsize}{toaddrindent}% \setlength{\parindent}{0pt}% \fontsize{8pt}{9pt}\selectfont\usekomafont{PPdata}% \hfill\usekomavar{PPcode} \vss \ifcase \ltr@priority \or \usekomafont{priority}{% {\usekomafont{prioritykey}{B}}% -ECONOMY\hss\vskip-\dp\strutbox }% \or \usekomafont{priority}{% {\usekomafont{prioritykey}{A}}% -PRIORITY\hss\vskip-\dp\strutbox }% \fi \vss }% }% \vskip 1mm \vskip-\ht\strutbox \noindent\hskip\useplength{toaddrindent}% \hrulefill% \hskip\useplength{toaddrindent}% \vbox to\z@{\hsize\z@ \vskip \useplength{PPdatamatrixvskip}\relax \llap{\usekomavar{PPdatamatrix}\hskip\useplength{toaddrindent}}% \vss }% \else % \end{macrocode} % Modus \texttt{backgroundimage} oder \texttt{image}. % \begin{macrocode} \vskip 1mm \noindent\expandafter\hskip\useplength{toaddrindent}% \vbox to \useplength{PPheadheight}{% \addtolengthplength[-2]{\hsize}{toaddrindent}% \setlength{\parindent}{0pt}% \usekomavar{addresseeimage}% \vss }% \vskip 1mm \vskip\dp\strutbox \fi \ifnum \@afieldmode=4 \else \vfil% \noindent\hskip\useplength{toaddrindent}% \setlength{\@tempdima}{\useplength{toaddrwidth}}% \addtolengthplength[-2]{\@tempdima}{toaddrindent}% \vbox{\hsize\@tempdima \Ifkomavarempty{PPdatamatrix}{}{% \addtolength{\hsize}{-2mm}% \settowidth\@tempdima{\usekomavar{PPdatamatrix}}% \addtolength{\hsize}{-\@tempdima}% }% \raggedright \usekomafont{addressee}{% {\usekomafont{toname}{\usekomavar{toname}\\}}% {\usekomafont{toaddress}{\usekomavar{toaddress}\endgraf}}}}% \fi \vss\null}% {address field}{toaddrheight}% {\string\begin{letter}}% }}}% \vskip-\useplength{toaddrvpos}\move@frompt \fi } % % \end{macrocode} % \begin{macro}{\specialmail@format} % \changes{v2.97c}{2007/07/06}{neu (intern)}%^^A % Die Anweisung, die für das Aussehen der Versandart zuständig ist. % \begin{macrocode} \newcommand*{\specialmail@format}[1]{} \let\specialmail@format\underline % \end{macrocode} % \end{macro} % % \begin{macro}{\@ogobble} % \changes{v2.8q}{2002/01/22}{Neu}%^^A % In obiger Definition wird das Makro \cs{@ogobble} verwendet, um % einen optionalen Parameter zu vernichten, falls dieser existiert. % \begin{macrocode} \newcommand*{\@ogobble}[1][]{} % \end{macrocode} % \end{macro} % \end{macro} % % \begin{macro}{\@locfield} % \changes{v2.8o}{2001/09/17}{\cs{noindent} eingefügt} % \changes{v2.8q}{2002/02/07}{\cs{noindent} nach dem Logo} % \changes{v2.8q}{2002/07/23}{Berechnung der Breite hierher verschoben}%^^A % \changes{v2.8q}{2002/06/03}{Sonderbehandlung für Adressfeld rechts}%^^A % \changes{v3.27}{2019/03/27}{only at \textsf{scrlttr2}}%^^A % \changes{v3.28}{2019/11/15}{\cs{ifkomavarempty} durch \cs{Ifkomavarempty} % ersetzt}%^^A % Das "`locfield"' wird unabhängig von der Adresse gesetzt. % \begin{macrocode} %<*class|!willbe> \newcommand*{\@locfield}{% \ifdim \useplength{locwidth}=\z@% \@setplength{locwidth}{\paperwidth}% \ifdim \useplength{toaddrhpos}>\z@ \@addtoplength[-2]{locwidth}{\useplength{toaddrhpos}}% \else \@addtoplength[2]{locwidth}{\useplength{toaddrhpos}}% \fi \@addtoplength[-1]{locwidth}{\useplength{toaddrwidth}}% \if@bigloc% \@setplength[.66667]{locwidth}{\useplength{locwidth}}% \else% \@setplength[.5]{locwidth}{\useplength{locwidth}}% \fi% \fi% % \end{macrocode} % \changes{v2.97e}{2007/11/13}{Der Absender kann nun ebenfalls in der % Absenderergänzung stehen}%^^A % \changes{v2.98b}{2008/01/30}{Absenderergänzung immer setzen, wenn % verwendet}%^^A % Je nach Absenderanordnung muss hier nun ebenfalls etwas getan werden. % Der Fall 0, also linksbündiger Absender im Kopf spielt hier keine Rolle. % \begin{macrocode} \ifcase\@alignfrom % \end{macrocode} % Im Fall 1, also zentrierter Absender im Kopf wird jedoch das Logo hier % platziert, also darf die Absenderergänzung nicht leer sein. % \begin{macrocode} \or \if@logo \Ifkomavarempty{location}{\setkomavar{location}{\null}}{}% \fi % \end{macrocode} % Im Fall 2, also rechtsbündiger Absender im Kopf, ist auch nichts zu tun. % \begin{macrocode} \or % \end{macrocode} % Im Fall 3, also linksbündiger Absender in der Absenderergänzung wird hier % eine Menge ausgegeben, also darf die Absenderergänzung nicht leer sein. % \begin{macrocode} \or \Ifkomavarempty{location}{\setkomavar{location}{\null}}{}% % \end{macrocode} % Im Fall 3, also linksbündiger Absender in der Absenderergänzung wird hier % eine Menge ausgegeben, also darf die Absenderergänzung nicht leer sein. % \begin{macrocode} \or \Ifkomavarempty{location}{\setkomavar{location}{\null}}{}% % \end{macrocode} % Alle anderen Fälle sind wie hier ebenfalls ohne Bedeutung. % \begin{macrocode} \fi \Ifkomavarempty{location}{% \typeout{Location field: empty}% }{% \typeout{Location field: yes}% \ifdim \useplength{lochpos}=\z@% \@setplength{lochpos}{\useplength{toaddrhpos}}% \fi \ifdim \useplength{locvpos}=\z@% \@setplength{locvpos}{\useplength{toaddrvpos}}% \fi \ifdim \useplength{locheight}=\z@% \@setplength{locheight}{\useplength{toaddrheight}}% \fi \move@topt\vskip\useplength{locvpos}% \vb@t@z{\noindent\makebox[0pt][l]{% \move@topl \setlengthtoplength[-]{\@tempskipa}{lochpos}% \ifdim \@tempskipa<\z@ \addtolength{\@tempskipa}{\paperwidth}% \else \addtolengthplength{\@tempskipa}{locwidth}% \fi \hskip\@tempskipa \makebox[0pt][r]{% \@savevbox{\useplength{locheight}}{% \noindent\hsize\useplength{locwidth}% % \end{macrocode} % In einigen Fällen der Absenderanordnung muss hier nun eine ganze Menge getan % werden. In anderen ist hingegen nur wenig zu tun. % Im Fall 0, also linksbündiger Absender im Kopf wird nur die % Absenderergänzung ausgegeben (das erfolgt nach der Fallunterscheidung). % \begin{macrocode} \ifcase\@alignfrom % \end{macrocode} % Im Fall 1, also zentrierter Absender im Kopf wird jedoch das Logo hier % platziert, die Absenderergänzung wird ggf. danach ausgegeben (das erfolgt % nach der Fallunterscheidung). % \changes{v2.98a}{2008/01/10}{bei zentriertem Absender wird die % Absenderergänzung ggf. unter dem Logo ausgegeben}%^^A % \begin{macrocode} \or \if@logo \Ifkomavarempty{fromlogo}{\null}{% {\raggedleft\noindent\usekomavar{fromlogo}\\ \vskip\parskip}\noindent}% \fi % \end{macrocode} % Im Fall 2, also rechtsbündiger Absender im Kopf, wird auch nur die % Absenderergänzung ausgegeben (das erfolgt nach der Fallunterscheidung). % \begin{macrocode} \or % \end{macrocode} % Im Fall 3, also linksbündiger Absender in der Absenderergänzung wird hier % sozusagen der linksbündige Kopf nachgebaut. Das Logo steht dabei % ggf. rechtsbündig oben. % \begin{macrocode} \or \if@logo \Ifkomavarempty{fromlogo}{}{% \raggedleft\usekomavar{fromlogo}\par}% \fi \raggedright % \end{macrocode} % Zuerst wird der Name gesetzt. Dabei soll eine eigene Schriftart für % den Namen verwendet werden. % \begin{macrocode} {\usekomafont{fromname}\strut\ignorespaces \usekomavar{fromname}% % \end{macrocode} % Hat \verb|\@rulefrom| den nummerischen Wert 1, so soll direkt auf den % Absender eine Linie folgen. Die Länge dieser Linie kann vom Anwender % bestimmt oder automatisch gewählt werden. Es werden dabei die % Pseudo-Längen \texttt{fromrulewidth} und \texttt{fromrulethickness} % verwendet. Ist \texttt{fromrulewidth} 0, so wird sie automatisch % bestimmt. Bei der automatischen Längenbestimmung wird einfach eine Linie % über die Gesamtbreite der Absenderergänzung gesetzt. % \begin{macrocode} {% \ifnum\@rulefrom=1\\[-.5\baselineskip]% \usekomafont{fromrule}{% \setlength{\@tempdima}{\useplength{fromrulewidth}}% \ifdim\@tempdima=\z@ \setlength{\@tempdima}{\useplength{locwidth}}% \fi \expandafter\rule\expandafter{\the\@tempdima}{% \useplength{fromrulethickness}}% }% \fi }% \\ }% % \end{macrocode} % Als Nächstes wird die Absenderadresse einschließlich aller % optionalen Felder gesetzt. Dabei werden optionale Felder nur % gesetzt, wenn der entsprechende Schalter \emph{true} ist. Die % Adresse wird ebenfalls innerhalb einer Gruppe in einer eigenen % Schriftart gesetzt.% % \changes{v3.12}{2013/05/29}{Variable \texttt{frommobilephone} wird % berücksichtigt}% % \begin{macrocode} {\usekomafont{fromaddress}\strut\ignorespaces \usekomavar{fromaddress}% \if@phone\\\usekomavar*{fromphone}\usekomavar{fromphone}\fi% \if@mobilephone \\\usekomavar*{frommobilephone}\usekomavar{frommobilephone}% \fi% \if@fax\\\usekomavar*{fromfax}\usekomavar{fromfax}\fi% \if@email\\\usekomavar*{fromemail}\usekomavar{fromemail}\fi% \if@www\\\usekomavar*{fromurl}\usekomavar{fromurl}\fi% % \end{macrocode} % Wie weiter oben erwähnt, kann auch an dieser Stelle eine Linie % gesetzt werden. % \begin{macrocode} \ifnum\@rulefrom=2\\[-.5\baselineskip]% \usekomafont{fromrule}{% \setlength{\@tempdima}{\useplength{fromrulewidth}}% \ifdim\@tempdima=\z@ \setlength{\@tempdima}{\useplength{locwidth}}% \fi \expandafter\rule\expandafter{\the\@tempdima}{% \useplength{fromrulethickness}}}% \fi \\ }% % \end{macrocode} % Damit ist die Definition des linksbündigen Absenders in der % Absenderergänzung abgeschlossen. % Im Fall 4, also rechtsbündiger Absender in der Absenderergänzung wird hier % exakt wie für Fall 3 verfahren. Nur ist jetzt alles rechtsbündig.% % \changes{v3.12}{2013/05/29}{Variable \texttt{frommobilephone} wird % berücksichtigt}% % \begin{macrocode} \or \raggedleft \if@logo \Ifkomavarempty{fromlogo}{}{\usekomavar{fromlogo}\par}% \fi {\usekomafont{fromname}\strut\ignorespaces \usekomavar{fromname}% {% \ifnum\@rulefrom=1\\[-.5\baselineskip]% \usekomafont{fromrule}{% \setlength{\@tempdima}{\useplength{fromrulewidth}}% \ifdim\@tempdima=\z@ \setlength{\@tempdima}{\useplength{locwidth}}% \fi \expandafter\rule\expandafter{\the\@tempdima}{% \useplength{fromrulethickness}}% }% \fi }% \\ }% {\usekomafont{fromaddress}\strut\ignorespaces \usekomavar{fromaddress}% \if@phone\\\usekomavar*{fromphone}\usekomavar{fromphone}\fi% \if@mobilephone% \\\usekomavar*{frommobilephone}\usekomavar{frommobilephone}% \fi% \if@fax\\\usekomavar*{fromfax}\usekomavar{fromfax}\fi% \if@email\\\usekomavar*{fromemail}\usekomavar{fromemail}\fi% \if@www\\\usekomavar*{fromurl}\usekomavar{fromurl}\fi% \ifnum\@rulefrom=2\\[-.5\baselineskip]% \usekomafont{fromrule}{% \setlength{\@tempdima}{\useplength{fromrulewidth}}% \ifdim\@tempdima=\z@ \setlength{\@tempdima}{\useplength{locwidth}}% \fi \expandafter\rule\expandafter{\the\@tempdima}{% \useplength{fromrulethickness}}}% \fi \\ }% % \end{macrocode} % In allen anderen Fällen wird ebenfalls die Absenderergänzung gesetzt. % \begin{macrocode} \fi \usekomavar{location}% % \end{macrocode} % Zum Schluss wird noch verhindert, dass wegen nicht vollen vertikalen Boxen % gemotzt wird. % \begin{macrocode} \vskip \z@ \@plus .00001fil}% {location field}{locheight}{\setkomavar}% }}% }% \vskip-\useplength{locvpos}\move@frompt }% } % % \end{macrocode} % \end{macro} % % \begin{macro}{\@datefield} % \changes{v2.8q}{2002/01/14}{Schalter \cs{if@tempwa} wird bereits hier auf % \texttt{true} gesetzt} % \changes{v2.97c}{2007/05/14}{Neue Fontelemente}%^^A % Je nachdem, welche Felder definiert sind, muss eine geschäftsmäßiger % Standardbrief oder ein eher persönliches Aussehen gewählt werden. % \begin{macro}{\do@set@reffield} % \changes{v3.09}{2011/03/06}{Neu (intern)}%^^A % Das ist ein \cs{do} für die Felder und bekommt innerhalb von % \cs{@datefield} unterschiedliche Bedeutungen. An dieser Stelle wird es daher % nur reserviert. % \begin{macrocode} \newcommand*{\do@set@reffield}{} % \end{macrocode} % \begin{macro}{\@set@reffield} % \changes{v3.17}{2015/04/17}{\cs{setbox} durch \cs{sbox} ersetzt} % Einzelne Felder werden mit Hilfe dieses Makros gesetzt. Als Parameter wird % der Name des Feldes übergeben. Es wird dann davon ausgegangen, dass der % Name des Feldes in der jeweiligen Sprache im Makro % \verb|\|\texttt{\emph{\#1}}\verb|name| und der Wert des Feldes in % \verb|\var|\texttt{\emph{\#1}} zu finden ist. % \begin{macrocode} \newcommand*{\@set@reffield}[1]{% \Ifkomavarempty{#1}{}{% \settowidth{\@tempdima}{\strut\usekomafont{refvalue}\usekomavar{#1}}% \sbox\z@{\strut\usekomafont{refname}\usekomavar*{#1}}% \ifdim \@tempdima<\wd0\setlength{\@tempdima}{\wd0}\fi \if@tempswa\enskip\hfill\fi \parbox[t]{\@tempdima}{\noindent\raggedright \strut\box\z@\\\usekomafont{refvalue}\strut\usekomavar{#1}}% \@tempswatrue }% } % \end{macrocode} % \end{macro} % \begin{macro}{\@test@reffield} % \changes{v3.09}{2011/03/06}{Neu (intern)}%^^A % Dieses Makro testet, ob ein Feld tatsächlich zu setzen ist und setzt % ggf. \cs{@tempswa}. % \begin{macrocode} \newcommand*{\@test@reffield}[1]{% \Ifkomavarempty{#1}{}{% % \if@tempswa\l@addto@macro\@tempa{, }\fi % \l@addto@macro\@tempa{#1}% \@tempswatrue }% } % \end{macrocode} % \end{macro} % \begin{macro}{\@set@reffields} % \changes{v2.8q}{2002/01/14}{Neu}%^^A % Dieses Makro enthält alle Aufrufe von \cs{@set@reffield}, die durchzuführen % sind. Das Makro kann mit Hilfe von \cs{addtoreffields} erweitert werden. % \begin{macrocode} \newcommand*{\@set@reffields}{}% % \end{macrocode} % \end{macro} % \begin{macro}{\addtoreffields} % \changes{v3.09}{2011/03/06}{Verwendung von \cs{do@set@reffield} an Stelle % von \cs{@set@reffield}} % Dieses Makro erwartet als obligatorisches Argument den Namen einer % KOMA-Script Variable. Der Befehl arbeitet lokal zur aktuellen Umgebung. % \begin{macrocode} \newcommand*{\addtoreffields}[1]{% \l@addto@macro{\@set@reffields}{\do@set@reffield{#1}}% } % \end{macrocode} % \end{macro} % % \begin{macro}{\removereffields} % \changes{v2.8q}{2002/01/14}{Neu}%^^A % Es gibt auch einen Befehl, um alle Felder aus der Geschäftszeile zu % entfernen. % \begin{macrocode} \newcommand*{\removereffields}{% \renewcommand*{\@set@reffields}{}% } % \end{macrocode} % \end{macro} % % \begin{macro}{\defaultreffields} % \changes{v2.8q}{2002/01/14}{Neu}%^^A % Ebenso ein Befehl, um die üblichen Felder zu setzen. % \begin{macrocode} \newcommand*{\defaultreffields}{% \removereffields \addtoreffields{yourref}% \addtoreffields{yourmail}% \addtoreffields{myref}% \addtoreffields{customer}% \addtoreffields{invoice}% } % \end{macrocode} % Genau diesen Befehl rufen wir auch gleich auf: % \begin{macrocode} \defaultreffields % \end{macrocode} % \end{macro} % % \changes{v2.3e}{1996/05/31}{Abstand zwischen Ort und Datum eingefügt}%^^A % \changes{v2.8o}{2001/09/18}{für den Brieftyp \texttt{KOMAold} anschließend % einen zusätzlichen vertikalen Abstand eingefügt}%^^A % \changes{v2.8q}{2001/11/13}{\cs{rlap} eingefügt}%^^A % \changes{v2.8q}{2001/11/13}{\cs{@parskipfalse}\cs{@parskip@indent}}%^^A % \changes{v2.8q}{2002/01/14}{Leertests entfernt, da in \cs{@set@reffield} % bereits enthalten}%^^A % \changes{v2.9l}{2003/01/28}{Berechnung von \texttt{refwidth} an die % Dokumentation angepasst}%^^A % \changes{v2.9l}{2003/01/28}{Berechnung von \texttt{refhpos} hinzugefügt}%^^A % \changes{v2.95}{2006/03/23}{Absatzeinzug mit \cs{setparsizes} abschalten}%^^A % \changes{v2.97c}{2007/05/14}{Neue Font-Elemente}%^^A % \changes{v3.09}{2011/03/06}{\cs{do@set@reffield} muss initialisiert % werden}%^^A % \changes{v3.28}{2019/11/15}{\cs{ifkomavarempty} durch \cs{Ifkomavarempty} % ersetzt}%^^A % \begin{macrocode} \newcommand*{\@datefield}{% {% \setparsizes{\z@}{\z@}{\z@ plus 1fil}\par@updaterelative \ifdim\useplength{refwidth}=\z@ \if@refwide \@setplength{refwidth}{\paperwidth}% \ifdim \useplength{toaddrhpos}>\z@ \@setplength{refhpos}{\useplength{toaddrhpos}}% \else \@setplength[-]{refhpos}{\useplength{toaddrhpos}}% \fi \@addtoplength[-2]{refwidth}{\useplength{refhpos}}% \else \@setplength{refwidth}{\textwidth}% \@setplength{refhpos}{\oddsidemargin}% \@addtoplength{refhpos}{1in}% \fi \else \ifdim\useplength{refhpos}=\z@ \begingroup % \end{macrocode} % Wir bestimmen zunächst, um wieviel die Geschäftszeile schmaler ist als der % Textbereich. % \begin{macrocode} \setlength\@tempdima{\textwidth}% \addtolengthplength[-]{\@tempdima}{refwidth}% % \end{macrocode} % Dann wird bestimmt, wie groß der linke Rand tatsächlich ist. % \begin{macrocode} \setlength\@tempdimb{\oddsidemargin}% \addtolength\@tempdimb{1in}% % \end{macrocode} % Ebenso wird bestimmt, wie groß der linke und rechte Rand zusammen sind. % \begin{macrocode} \setlength{\@tempdimc}{\paperwidth}% \addtolength{\@tempdimc}{-\textwidth}% % \end{macrocode} % Jetzt wird aus dem Gesamtrand der Geschäftszeile der linke Rand der % Geschäftszeile so bestimmt, dass das Randverhältnis dabei unverändert % bleibt. Dabei erlauben wir uns eine gewisse Rechenungenauigkeit beim % Verhältnis. % \begin{macrocode} \divide\@tempdimb by 32768\relax \divide\@tempdimc by 32768\relax \ifdim\@tempdimc=\z@\else \multiply\@tempdima by\@tempdimb \divide\@tempdima by\@tempdimc \fi \edef\@tempa{\noexpand\endgroup \noexpand\@setplength{refhpos}{\the\@tempdima}}% \@tempa \fi\fi \@tempswafalse \move@topt\vskip\useplength{refvpos}% % \end{macrocode} % Jetzt kontrollieren wir, ob überhaupt etwas auszugeben ist: % \begin{macrocode} \@tempswafalse \let\do@set@reffield\@test@reffield % \let\@tempa\@empty \@set@reffields \ifcase \@datepos\else\@test@reffield{date}\fi \if@tempswa % \typeout{Reference line(s) with: \@tempa}% \@tempswafalse % \end{macrocode} % Jetzt erfolgt noch die Absatzeinzugkorrektur. Danach kommt die eigentliche % Arbeit. % \begin{macrocode} \rlap{\noindent\move@topl\hskip\useplength{refhpos}% \vbox{\hsize\useplength{refwidth}% \noindent \ifnum \@datepos=2 \@set@reffields \if@tempswa \@tempswafalse \@set@reffield{date}% \fi \fi \let\do@set@reffield\@set@reffield \@set@reffields% \if@tempswa \ifnum \@datepos=1 \@set@reffield{date}\fi% % \end{macrocode} % Seit Version~2.97c wird hier auch noch getestet, ob die Geschäftszeile % möglicherweise mit zu großer Schrift gesetzt wird. % \changes{v3.17}{2015/04/17}{\cs{setbox} durch \cs{sbox} ersetzt}%^^A % \begin{macrocode} \sbox\z@{\usekomafont{refname}\strutbox}% \ifdim\ht\z@>\ht\strutbox % \ClassWarningNoLine{scrlttr2}{% % \PackageWarningNoLine{scrletter}{% Font element `refname' should not be larger than \string\normalsize!}% \fi \sbox\z@{\usekomafont{refvalue}\strutbox}% \ifdim\ht\z@>\ht\strutbox % \ClassWarningNoLine{scrlttr2}{% % \PackageWarningNoLine{scrletter}{% Font element `refvalue' should not be larger than \string\normalsize!}% \fi \else % \end{macrocode} % Hier landen wir schließlich, wenn gar keine Felder ausgegeben wurden, also % nur Ort und Datum zu setzen sind. % \changes{v3.12}{2013/07/31}{neues Element \texttt{placeanddate} wird % verwendet}%^^A % \begin{macrocode} \ifcase \@datepos\else \ifnum \@datepos=1 \enskip\hfill\fi {\usekomafont{placeanddate}{\Ifkomavarempty{place}{}{% \usekomavar{place}\usekomavar{placeseparator}}% \usekomavar{date}}}% \fi \fi }% }% % \else\typeout{No reference line.}% \fi \vskip\useplength{refaftervskip}% }% } % \end{macrocode} % \end{macro} % \end{macro} % % \begin{macro}{\@maketitle} % \changes{v2.3b}{1996/01/14}{Verwendung von \cs{sectfont} für den % \cs{title}}%^^A % \changes{v2.8p}{2001/09/22}{\cs{titlefont} an Stelle von \cs{sectfont}}%^^A % \changes{v2.8q}{2001/11/13}{\cs{@parskipfalse}\cs{@parskip@indent}}%^^A % \changes{v2.9t}{2004/09/16}{\cs{par} in Größe und Schrift des Titels}%^^A % \changes{v2.95}{2006/03/22}{\cs{usekomafont} and Stelle von % \cs{titlefont}}%^^A % \changes{v3.13}{2014/06/26}{umbenannt in \cs{@makelettertitle}}%^^A % \end{macro} % \begin{macro}{\@makelettertitle} % \changes{v3.13}{2014/06/26}{neu (ehemals \cs{@maketitle}}%^^A % \changes{v3.15}{2015/02/21}{\texttt{title} durch \texttt{lettertitle} % ersetzt}%^^A % \changes{v3.28}{2019/11/15}{\cs{ifkomavarempty} durch \cs{Ifkomavarempty} % ersetzt}%^^A % \begin{macro}{\@subjfield} % \changes{v2.8q}{2001/10/19}{\cs{centerline} durch \cs{centering} % ersetzt}%^^A % \changes{v2.8q}{2001/11/13}{\cs{@parskipfalse}\cs{@parskip@indent}}%^^A % \changes{v2.8q}{2002/01/31}{wird mit hängendem Einzug gesetzt}%^^A % \changes{v2.95}{2006/03/23}{Absatzeinzug mit cs{setparsizes}%^^A % einstellen}%^^A % \changes{v3.01}{2008/11/03}{Verwendung der neuen Pseudolängen % \texttt{subjectbeforevskip} und \texttt{subjectaftervskip}}%^^A % \changes{v3.15}{2015/02/21}{\texttt{subject} durch \texttt{lettersubject} % ersetzt}%^^A % \changes{v3.28}{2019/11/15}{\cs{ifkomavarempty} durch \cs{Ifkomavarempty} % ersetzt}%^^A % Der eigentliche Titel wir mit |\@maketitle| gesetzt. Dies sollte jedoch % ebenso wie beim Betreff (|\@subjfield|) \emph{nicht} manuell geschehen. % \begin{macrocode} \newcommand*{\@makelettertitle}{% \Ifkomavarempty{title}{% \typeout{Title: no}% }{% \typeout{Title: yes}% {\setparsizes{\z@}{\z@}{\z@ plus 1fil}\par@updaterelative \centering\LARGE\usekomafont{lettertitle}\usekomavar{title}\par}% \vskip\baselineskip% }% } \newcommand*{\@subjfield}{{% \setparsizes{\z@}{\z@}{\z@ plus 1fil}\par@updaterelative \Ifkomavarempty{subject}{% \typeout{Subject: no}% }{% \ifx\raggedsubject\@empty \ifdim\useplength{subjectvpos}=\z@ \if@subjafter% \typeout{Subject: after opening}% \let\raggedsubject\centering% \else \typeout{Subject: before opening}% \def\raggedsubject{\noindent\@hangfrom}% \fi \else \typeout{Subject: at absolute vertical position}% \def\raggedsubject{\noindent\@hangfrom}% \fi \fi \ifdim\useplength{subjectvpos}=\z@ \vskip\useplength{subjectbeforevskip}% \begingroup \else \move@topt\vskip\useplength{subjectvpos}% \expandafter\vb@t@z\expandafter{% \fi \usekomafont{lettersubject}% \raggedsubject{\if@subj \subject@format{\strut\ignorespaces \usekomavar*{subject}}\fi}% \subject@format{\strut\ignorespaces\usekomavar{subject}}\par \ifdim\useplength{subjectvpos}=\z@ \endgroup \vskip\useplength{subjectaftervskip}% \else }% \vskip-\useplength{subjectvpos}\move@frompt \fi }% }% } % \end{macrocode} % \begin{macro}{\ltr@len@subjectvpos} % \changes{v3.01}{2008/11/03}{Neue Pseudolänge \texttt{subjectvpos}} % Manchmal ist es günstiger, wenn man den Betreff absolut positionieren % kann. Das geschieht über diese Pseudolänge, wenn sie \emph{nicht} 0 ist. % \begin{macrocode} \@newplength{subjectvpos} \@setplength{subjectvpos}{0pt} % \end{macrocode} % \end{macro} % \begin{macro}{\ltr@len@subjectaftervskip} % \changes{v3.01}{2008/11/03}{Neue Pseudolänge \texttt{subjectaftervskip}} % Abstand nach dem Betreff. Dieser Abstand wird aus Gründen der % Kompatibilität zu früheren Versionen mit 2\cs{baselineskip} % voreingestellt. % \begin{macrocode} \@newplength{subjectaftervskip} \@setplength{subjectaftervskip}{2\baselineskip} % \end{macrocode} % \end{macro} % \begin{macro}{\ltr@len@subjectbeforevskip} % \changes{v3.01}{2008/11/03}{Neue Pseudolänge \texttt{subjectbeforevskip}} % Abstand zusätzlich vor dem Betreff. Dieser Abstand wird aus Gründen der % Kompatibilität zu früheren Versionen mit \cs{baselineskip} % voreingestellt. Es sei darauf hingewiesen, dass hier bereits ein Abstand % beispielsweise vom Titel existieren kann! % \begin{macrocode} \@newplength{subjectbeforevskip} \@setplength{subjectbeforevskip}{0pt} % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % % % \subsection{Anweisungen für das Briefpapier} % % Für das Briefpapier gibt es etwas weniger Anweisungen. Teilweise werden hier % auch die Anweisungen für den Briefbogen mit verwendet. % % \subsubsection{Kopf des Briefpapiers} % % Der Kopf des Briefpapiers wird wieder ganz normal über den Seitenstil % festgelegt. Allerdings kann er entsprechende dem Briefbogen manuell % definiert werden. % % \begin{macro}{\nexthead} % \changes{v3.08}{2010/10/28}{der Kopf der Folgeseiten wird über eine % Variable realisiert}%^^A % \begin{macro}{\@nexthead} % \changes{v3.08}{2010/10/28}{der Kopf der Folgeseiten wird über eine % Variable realisiert}%^^A % \begin{KOMAvar}{nexthead} % \changes{v3.08}{2010/10/28}{Neu}%^^A % Die Voreinstellung ist ebenfalls von Optionen abhängig. % \begin{macrocode} %<*class> \newcommand*{\@nexthead}{% \ClassWarning{scrlttr2}{% Deprecated usage of \string\@nexthead.\MessageBreak \string\usekomavar{nexthead} should be used\MessageBreak instead of \string\@nexthead }% \usekomavar{nexthead}% } % \newkomavar{nexthead} \setkomavar{nexthead}{% \rlap{\parbox[c]{\textwidth}{\raggedright\strut \ifnum\@pageat=0\pagemark\else\leftmark\fi\strut}}% \parbox[c]{\textwidth}{% \centering\strut \ifcase\@pageat \rightmark \or \pagemark \or \rightmark \fi\strut}% \llap{\parbox[c]{\textwidth}{\raggedleft\strut \ifcase\@pageat \leftmark \or \rightmark \or \pagemark \else \rightmark \fi\strut}}% }% % \end{macrocode} % \end{KOMAvar} % \end{macro} % Die Voreinstellung ist wiederum mit einer einfachen Benutzeranweisung % änderbar. % \begin{macrocode} %<*class> \newcommand{\nexthead}{% \ClassWarning{scrlttr2}{% Deprecated usage of \string\nexthead.\MessageBreak You should use \string\setkomavar{nexthead}\MessageBreak instead of \string\nexthead } \setkomavar{nexthead}% } % % \end{macrocode} % \end{macro} % % % \subsubsection{Fuß des Briefpapiers} % % \begin{macro}{\nextfoot} % \changes{v3.08}{2010/10/28}{der Fuß der Folgeseiten wird über eine % Variable realisiert}%^^A % \begin{macro}{\@nextfoot} % \changes{v3.08}{2010/10/28}{der Fuß der Folgeseiten wird über eine % Variable realisiert}%^^A % \begin{KOMAvar}{nextfoot} % \changes{v3.08}{2010/10/28}{Neu}%^^A % Je nach Optioneneinstellung kann sich die Seitenmarke in der Voreinstellung % auch im Fuß befinden. % \begin{macrocode} %<*class> \newcommand*{\@nextfoot}{% \ClassWarning{scrlttr2}{% Deprecated usage of \string\@nextfoot.\MessageBreak \string\usekomavar{nextfoot} should be used\MessageBreak instead of \string\@nextfoot }% \usekomavar{nextfoot}% } % \newkomavar{nextfoot} \setkomavar{nextfoot}{% \ifnum\@pageat>2 \parbox[c]{\textwidth}{% \ifcase\@pageat\or\or\or\raggedright\or\centering\or\raggedleft\fi \strut\pagemark% }% \fi } % \end{macrocode} % \end{KOMAvar} % \end{macro} % Auch diese Einstellung ist per Benutzeranweisung leicht zu ändern. % \begin{macrocode} %<*class> \newcommand{\nextfoot}{% \ClassWarning{scrlttr2}{% Deprecated usage of \string\nextfoot.\MessageBreak You should use \string\setkomavar{nextfoot}\MessageBreak instead of \string\nextfoot } \setkomavar{nextfoot}% } % % \end{macrocode} % \end{macro} % % % \subsection{Die Brief-Umgebung} % % \begin{environment}{letter} % \changes{v2.8q}{2002/01/16}{optionales Argument hinzugefügt}%^^A % \changes{v2.8q}{2002/01/16}{Fußnotenzähler wird zurückgesetzt}%^^A % \changes{v2.9d}{2002/08/12}{Fußnotenzähler wird korrekt zurückgesetzt}%^^A % \changes{v3.17}{2015/03/20}{Ersatz von \cs{pagemark}}%^^A % \changes{v3.19}{2015/07/15}{\cs{letterpagestyle} wird verwendet}%^^A % \changes{v3.19}{2015/07/15}{Briefe werden referenzierbar nummeriert}%^^A % Diese Umgebung ist etwas anders definiert, als normalerweise von % \LaTeX gewohnt. Mit ihr können innerhalb eines Dokuments beliebig % viele Briefe erzeugt werden. Eine der Abweichungen von der % Standardklasse besteht darin, dass als optionales Argument Optionen % gesetzt werden können. % \begin{macrocode} \newenvironment{letter}[2][]{% % \end{macrocode} % \changes{v3.27}{2019/03/05}{zweipaltige Briefe werden nicht unterstützt}%^^A % Falls wir uns im zweispaltigen Modus befinden, ist es jetzt höchste Zeit, % eine Warnung auszugeben und auf einspaltig umzuschalten. Zwar wäre es % theoretisch noch möglich, alles innerhalb von \cs{opening} in das optionale % Argument von \cs{twocolumn} zu packen, aber spätestens beim Schlussgruß % scheitert das dann. Also besser gleich gar nicht unterstützen. % \begin{macrocode} \if@twocolumn % \ClassWarning{\KOMAClassName}{% % \PackageWarning{scrletter}{% twocolumn mode not supported.\MessageBreak If you really want a twocolumned letter, you should\MessageBreak use package `multicol' and add a `multicols'\MessageBreak environment inside your letter.\MessageBreak Switching back to oneside% }% \letter@restonecoltrue \expandafter\onecolumn \else \letter@restonecolfalse \fi % \end{macrocode} % Als erstes wird eine neue Seite begonnen. Dies kann ggf. auch eine neue % rechte Seite sein. Dabei wird auch auf den korrekten Seitenstil % geachtet. Danach werden alle relevanten Zähler und Strafpunkte % zurückgesetzt und der obligatorische Parameter ausgewertet. % \changes{v3.19}{2015/07/15}{wegen des Pakets % \cs{cleardoubleoddemptypage}}%^^A % \changes{v3.27}{2019/03/05}{Briefe verwenden \cs{raggedbottom}}%^^A % \begin{macrocode} \cleardoubleoddemptypage \raggedbottom \scr@ifundefinedorrelax{letterpagestyle}{}{% \ifx\letterpagestyle\@empty\else \pagestyle{\letterpagestyle}% \fi }% % \let\pagemark\letterpagemark \refstepcounter{letter}% \let\thisletter\@currentlabel \setcounter{page}{\@ne}% \setcounter{footnote}{0}% \interlinepenalty=200\@processto{#2}% % \end{macrocode} % Dann werden ggf. die übergebenen Optionen ausgeführt. % \begin{macrocode} \KOMAoptions{#1}% % \end{macrocode} % \selectlanguage{english}%^^A % \changes{v3.27}{2019/03/31}{first-page head generation moved}%^^A % From \KOMAScript~3.27 \textsf{scrletter} generates the first-page head in % the \texttt{letter}-environment instead of the command \cs{opening}. % \begin{macrocode} % \@gen@firsthead % \end{macrocode} % \changes{v3.27}{2019/03/22}{\textsf{scrletter} sets the page style}%^^A % From \KOMAScript~3.27 \textsf{scrletter} sets page style % \texttt{notepaper} for the first page before executing the begin hook. % \selectlanguage{ngerman}%^^A % \begin{macrocode} % \thispagestyle{notepaper}% % \end{macrocode} % Zum Schluss werden die per \cs{AtBeginLetter} angegeben Anweisungen % ausgeführt. % \begin{macrocode} %<*package&willbe> \ifdim\useplength{refheight}>\z@ \else \begingroup \newkomavar[\strut]{@internal@testvar@}% \setkomavar{@internal@testvar@}{\strut}% \setplengthtototalheight{refheight}{\@set@reffield{@internal@testvar@}}% \edef\reserved@a{\noexpand\endgroup \noexpand\setplength{refheight}{\useplength{refheight}}% }% \reserved@a \fi % \@beginletterhook %\initial@letter@vskip }{% \stopletter % \end{macrocode} % Danach wird noch ein Label gesetzt. % \changes{v3.19}{2015/07/15}{ein Label wird gesetzt}%^^A % \begin{macrocode} \let\@currentlabel\thisletter \label{\thisletter.lastpage}% \@@par\pagebreak\@@par% \ifletter@restonecol\twocolumn\fi % \end{macrocode} % \changes{v3.27}{2019/03/31}{cleanup running head}%^^A % The package also cleans up the running head after the end of the letter. % \begin{macrocode} % \@mkdouble\@empty } % \end{macrocode} % \begin{macro}{\initial@letter@vskip} % \changes{v3.27}{2019/05/03}{new (internal)}%^^A % Go to the start posistion of the letter. Usually to jump below the reference % line inside the \texttt{letter} environment. % \begin{macrocode} %<*package&willbe> \newcommand*{\initial@letter@vskip}{% \move@topt \vskip \dimexpr \useplength{refvpos} \if@refline +\useplength{refheight}\fi +\useplength{refaftervskip}\relax } % % \end{macrocode} % \end{macro} % \begin{macro}{\ifletter@restonecol} % \changes{v3.27}{2019/03/05}{neu intern} % Dieser Schalter bestimmt, ob am Ende der \texttt{letter}-Umgebung auf % zweispaltig zurückgeschaltet werden muss. % \begin{macrocode} \newif\ifletter@restonecol % \end{macrocode} % \end{macro} % \begin{macro}{\thisletter} % \changes{v3.19}{2015/07/15}{neue Anweisung}%^^A % Gibt den Wert des aktuellen Labels wieder. Man benötigt dies beispielsweise, % um per |\ref{\thisletter.lastpage}| auf die letzte Seite zugreifen zu % können. % \begin{macrocode} \newcommand*{\thisletter}{outside.letter.undefined} % \end{macrocode} % \end{macro}%^^A \thisletter % \begin{macro}{\letterlastpage} % \changes{v3.19}{2015/07/15}{neue Anweisung}%^^A % \begin{macrocode} \newcommand*{\letterlastpage}{\pageref{\thisletter.lastpage}} % \end{macrocode}%^^A \letterlastpage % \end{macro} % \begin{macro}{\stopletter} % Damit man Material am Ende des Briefes einschleusen kann. % \begin{macrocode} \newcommand*{\stopletter}{} % \end{macrocode} % \end{macro}%^^A \stopletter % \begin{macro}{\@processto} % \changes{v2.9r}{2004/06/16}{robust gegen leeren Empfänger}%^^A % \changes{v3.27}{2019/03/24}{extended setting of variables}%^^A % \changes{v3.28}{2019/11/15}{\cs{ifkomavarempty} durch \cs{Ifkomavarempty} % ersetzt}%^^A % \begin{macro}{\@xproc} % Die Adresse, die als Argument der Briefumgebung übergeben wird, muss in Name % und Adresse zerlegt werden. % \begin{macrocode} % \begin{macrocode} \newcommand{\@processto}[1]{% % \end{macrocode} % If \cs{@processto} argument (\texttt{letter} mandatory argument) is empty: % \begin{macrocode} \IfArgIsEmpty{#1}{% % \end{macrocode} % try to build it from \texttt{toname} and \texttt{toaddress}. % \begin{macrocode} %<*package&willbe> \Ifkomavarempty{toname}{% \Ifkomavarempty{tofamilyname}{}{% \Ifkomavarempty{togivenname}{% \usekomavar[\setkomavar{toname}]{tofamilyname}% }{% % Fixme: The \cs{protected@edef}s are critical! \usekomavar[\protected@edef\reserved@a]{togivenname}% \usekomavar[\protected@edef\reserved@b]{tofamilyname}% \edef\reserved@a{% \noexpand\setkomavar{toname}{% \unexpanded\expandafter{\reserved@a}\ % \unexpanded\expandafter{\reserved@b}}% }\reserved@a }% }% }{}% \Ifkomavarempty{toaddress}{% % Fixme: The \cs{protected@edef}s are critical! \usekomavar[\protected@edef\reserved@a]{toname}% \protected@edef\reserved@a{% \noexpand\usekomafont{toname}{\reserved@a}% }\reserved@a }{% \Ifkomavarempty{toname}{% % Fixme: The \cs{protected@edef}s are critical! \usekomavar[\protected@edef\reserved@a]{toaddress}% \protected@edef\reserved@a{% \noexpand\usekomafont{toaddress}{\reserved@a}% }\reserved@a }{% % Fixme: The \cs{protected@edef}s are critical! \usekomavar[\protected@edef\scr@local@toname]{toname}% \usekomavar[\protected@edef\reserved@b]{toaddress}% \protected@edef\reserved@a{% \noexpand\setkomavar{addressee}{% {\noexpand\usekomafont{toname}{\scr@local@toname}}\\ \noexpand\usekomafont{toaddress}{\reserved@b}% }% }\reserved@a }% }% % }{% % \end{macrocode} % Split into part before first \cmd\\ and it: % \begin{macrocode} \expandafter\@xproc#1\\\@nil \ifx\reserved@b\@empty\else\expandafter\@xproc#1\@nil\fi % \end{macrocode} % For the package set variable \texttt{addressee}: % \begin{macrocode} %<*package&willbe> % Fixme: The \cs{protected@edef}s are critical! \protected@edef\reserved@c{% \noexpand\setkomavar{addressee}{% {\noexpand\usekomafont{toname}{\reserved@a}}% \ifx\reserved@b\@empty\else \\\noexpand\usekomafont{toaddress}{\reserved@b}% \fi }% }% % \end{macrocode} % If \texttt{toname} is empty, set it: % \begin{macrocode} \Ifkomavarempty{toname}{% % Fixme: The \cs{protected@edef}s are critical! \protected@edef\reserved@a{% \noexpand\reserved@c{\noexpand\setkomavar{toname}{\reserved@a}}}% }{\let\reserved@a\reserved@c}% % \end{macrocode} % If \texttt{toaddress} is empty, set it: % \begin{macrocode} \Ifkomavarempty{toaddress}{% % Fixme: The \cs{protected@edef}s are critical! \protected@edef\reserved@b{\noexpand\reserved@a \noexpand\setkomavar{toaddress}{\reserved@b}}% \reserved@b }{\reserved@a}% % % \end{macrocode} % For the class simply set \texttt{toname} und \texttt{toaddress}: % \changes{v3.27}{2019/10/28}{don't expand the contents of \cs{reserved@a} and % \cs{reserved@b}}%^^A % \begin{macrocode} %<*class|!willbe> \edef\reserved@a{% \noexpand\setkomavar{toname}{\unexpanded\expandafter{\reserved@a}}% \noexpand\setkomavar{toaddress}{\unexpanded\expandafter{\reserved@b}}% }\reserved@a % }% } \newcommand*{\@xproc}{} \long\def\@xproc#1\\#2\@nil{% % \end{macrocode} % \changes{v3.27}{2019/03/24}{do not directly set variables but % \cs{reserved@a} and \cs{reserved@b}}%^^A % \begin{macrocode} \def\reserved@a{#1}\def\reserved@b{#2}% } % \end{macrocode} % \end{macro}%^^A \@xproc % \end{macro}%^^A \@processto % \begin{macro}{\flushbottom} % \changes{v2.97c}{2007/05/17}{neue Erweiterung}%^^A % Das Verhalten muss auf der letzten Briefseite wieder \cs{raggedbottom} % ähneln. Das wird über \cs{stopletter} erreicht. % \begin{macrocode} \g@addto@macro\flushbottom{% \g@addto@macro\stopletter{\vskip \z@\@plus.0001fil\relax}% } % \end{macrocode} % \end{macro}%^^A \flushbottom % \begin{Counter}{letter} % \changes{v3.19}{2015/07/15}{neuer Zähler}%^^A % Die Briefe werden durchnummeriert. % \begin{macrocode} \newcounter{letter} % \end{macrocode} % \end{Counter} % \end{environment}%^^A letter % % % \begin{macro}{\letterpagestyle} % \changes{v3.19}{2015/07/15}{neue Anweisung}%^^A % Analog zu \cs{titlepagestyle}, \cs{indexpagestyle} etc. gibt es jetzt auch % ein \cs{letterpagestyle}. In der Voreinstellung ist dieser bei der Klasse % leer. Dagegen wird beim Paket \texttt{plain.letter} verwendet. Durch den % Unterschied wird faktisch die Kompatibilität des Pakets mit der Klasse % jedoch verbessert! % \begin{macrocode} \newcommand*{\letterpagestyle}{% % plain.letter% } % \end{macrocode} % \end{macro} % % % \begin{macro}{\AtBeginLetter} % \changes{v2.8n}{2001/09/08}{Neu}%^^A % \begin{macro}{\@beginletterhook} % \changes{v2.8n}{2001/09/08}{Neu}%^^A % Wie oben zu sehen, wurde in den Anfang der Briefumgebung ein Haken % eingefügt. Dieser wird auch tatsächlich intern genutzt. Er funktioniert % prinzipiell wie der |\AtBeginDocument|-Haken. Zunächst macht der Haken rein % gar nichts. % \begin{macrocode} \newcommand{\AtBeginLetter}{\g@addto@macro\@beginletterhook} \newcommand{\@beginletterhook}{} % \end{macrocode} % \end{macro} % \end{macro} % % \begin{macro}{\AtEndLetter} % \changes{v2.95}{2006/03/22}{Neu}%^^A % Analog zu |\AtBeginLetter| gibt es auch ein |\AtEndLetter|. Als Haken wird % hierbei |\stopletter| verwendet. % \begin{macrocode} \newcommand{\AtEndLetter}{\g@addto@macro\stopletter} % \end{macrocode} % \end{macro} % % \begin{macro}{\stopbreaks} % \begin{macro}{\startbreaks} % \changes{v3.33}{2021/03/05}{\cs{relax} added} % \begin{macro}{\@nobreakvspace} % \changes{v3.20}{2016/04/12}{\cs{@ifstar} durch \cs{kernel@ifstar} % ersetzt} % \changes{v3.33}{2021/03/05}{robust definition} % \begin{macro}{\@nobreakvspacex} % \begin{macro}{\@nobreakcr} % \changes{v3.20}{2016/04/12}{\cs{@ifstar} durch \cs{kernel@ifstar} % ersetzt} % \changes{v3.33}{2021/03/05}{simplified} % Innerhalb von Briefen wird der Umbruch etwas anders gehandhabt. % Dadurch soll der Brieftext besser positioniert werden. % \begin{macrocode} \newcommand*{\stopbreaks}{\interlinepenalty \@M \def\par{\@@par\nobreak}\let\\=\@nobreakcr \let\vspace\@nobreakvspace} \DeclareRobustCommand*{\@nobreakvspace}{% \kernel@ifstar{\@nobreakvspacex}{\@nobreakvspacex}} \newcommand*{\@nobreakvspacex}[1]{\ifvmode\nobreak\vskip #1\relax\else \@bsphack\vadjust{\nobreak\vskip #1}\@esphack\fi} \newcommand*{\@nobreakcr}{\kernel@ifstar{\@normalcr*}{\@normalcr*}} \newcommand*{\startbreaks}{\let\\=\@normalcr \interlinepenalty 200\def\par{\@@par\penalty 200\relax}} % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % % \begin{macro}{\opening} % \changes{v2.8n}{2001/09/08}{Komplett überarbeitet}%^^A % \changes{v2.8q}{2001/11/13}{\cs{@parskipfalse}\cs{@parskip@indent}}%^^A % \changes{v2.8q}{2002/03/25}{\cs{@PapersizeWarning}}%^^A % \changes{v2.95}{2003/03/23}{Absatzformatierung mit \cs{setparsizes} % einstellen}%^^A % \changes{v3.27}{2019/03/27}{Only \textsf{scrlttr2} uses \cs{@addrfield}, % \cs{@locfield} and \cs{@foldmarks}}%^^A % \changes{v3.27}{2019/03/27}{Only \textsf{scrlttr2} sets pagestyle}%^^A % \changes{v3.27}{2019/03/31}{Only \textsf{scrlttr2} generates the first-page % head here}%^^A % Denn beim Eröffnungsgruß mit |\opening| wird neben sämtlichen Feldern auch % der Titel und der Betreff gesetzt. % \begin{macrocode} \newcommand{\opening}[1]{% \@PapersizeWarning % \@gen@firsthead \@mkboth{\scr@fromname@var}{\scr@subject@var}% % \thispagestyle{empty}% \noindent % \@foldmarks\@firstheadfootfield % \@addrfield\@locfield \ifdim\useplength{subjectvpos}=\z@\else\@subjfield\fi % \@datefield \@makelettertitle \ifdim\useplength{subjectvpos}=\z@\if@subjafter\else\@subjfield\fi\fi {\setparsizes{\z@}{\z@}{\z@ plus 1fil}\par@updaterelative#1\par}% {\setlength{\@tempdima}{\baselineskip}% \addtolength{\@tempdima}{-\parskip}% \ifdim \@tempdima>\z@\vskip\@tempdima\fi}% \ifdim\useplength{subjectvpos}=\z@\if@subjafter\@subjfield\fi\fi \@afterindentfalse\@afterheading } % \end{macrocode} % \end{macro} % % % \begin{macro}{\closing} % \changes{v2.2b}{1995/02/16}{{\cmd\fromsig} wird nicht mehr auf \cs{empty} % getestet sondern direkt eingesetzt} % \changes{v2.3b}{1996/01/14}{Abstand zwischen Schlussgruß und Signatur % erhöht}%^^A % \changes{v2.5d}{2000/06/10}{Abstand zwischen Schlussgruß und Signatur % variabel}%^^A % \changes{v2.8q}{2001/11/13}{\cs{@parskipfalse}\cs{@parskip@indent}} % \changes{v2.8q}{2002/02/05}{nicht mehr \cs{long}} % \changes{v2.8q}{2002/02/05}{darf \texttt{\cmd{\\}[\dots]} enthalten} % \changes{v2.95}{2003/03/23}{Absatzformatierung mit \cs{setparsizes}%^^A % einstellen} % Außer dem Eröffnungsgruß mit |\opening| gibt es natürlich auch einen % Schlussgruß mit |\closing|, bei dem außerdem die Unterschrift u.\,ä. gesetzt % wird. % \begin{macro}{\presig@skip} % \changes{v2.5d}{2000/06/10}{Neues Makro, das den Abstand zwischen % Schlussgruß und Signatur beinhaltet}%^^A % \changes{v2.8q}{2001/10/09}{Ersetzt durch Pseudo-Länge sigbeforevskip}%^^A % \end{macro} % \begin{macro}{\setpresigskip} % \changes{v2.5d}{2000/06/10}{Neues Makro, das den Abstand zwischen % Schlussgruß und Signatur setzt}%^^A % \changes{v2.8q}{2001/10/09}{Mit Hilfe der neuen Pseudo-Längen definiert}%^^A % Das Makro |\presig@skip| beinhaltet dabei den Abstand zwischen Schlussgruß % und Signatur. Da der Wert über ein Benutzerinterface per |\setpresigskip| % gesetzt wird, muss hier kein kostbares Längenregister (skip oder dim) % verschwendet werden, sondern ein Makro reicht aus. In |\setpresigskip| wird % allerdings noch sichergestellt, dass die Fehlermeldung bei falschem % Parameter möglichst nicht erst bei Verwendung auftritt. % \begin{macrocode} % %\def\setpresigskip{\@setplength{sigbeforevskip}} %<*letter> % \end{macrocode} % \end{macro} % \begin{macro}{\@xtrimtempa} % \changes{v2.8q}{2002/02/05}{Neu (intern)}%^^A % \changes{v3.17}{2014/02/19}{entfernt}%^^A % \begin{macro}{\@@xtrimtempa} % \changes{v2.8q}{2002/02/05}{Neu (intern)}%^^A % \changes{v3.17}{2014/02/19}{entfernt}%^^A % \end{macro} % \end{macro} % \begin{macro}{\@tempdimaismaxwidthof} % \changes{v2.8q}{2002/02/05}{Neu (intern)}%^^A % \changes{v3.17}{2014/02/19}{entfernt}%^^A % \end{macro} % Jetzt endlich zum eigentlichen Befehl. % \changes{v2.9r}{2004/01/28}{Längenbegrenzung auf \cs{hsize}}%^^A % \changes{v2.9r}{2004/01/28}{das Argument darf leer sein}%^^A % \changes{v3.17}{2015/02/19}{aus Rücksicht auf Leute, die ohne Rücksicht % auf die Anleitung einfach machen, was ihnen gerade einfällt, neu % implementiert}%^^A % \changes{v3.17}{2015/02/20}{Weil manche Leute es unbedingt auf die Spitze % treiben wollen, \cs{}\cs{} durch \cs{tabularnewline} ersetzt.}%^^A % \changes{v3.17}{2015/02/20}{Weil manche Leute es unbedingt auf die Spitze % treiben wollen, mehr \cs{strut} eingefügt.}%^^A % \changes{v3.20}{2015/10/08}{Umbruch nach dem Gruß nur, wenn wir uns im % horizontalen Modus befinden}%^^A % \changes{v3.25}{2017/11/15}{Verwendung von \cs{scr@endstrut} statt % \cs{unskip}\cs{strut}}%^^A % \begin{macrocode} \newcommand*{\closing}[1]{{% \setparsizes{\z@}{\z@}{\z@ plus 1fil}\par@updaterelative\nobreak\par \nobreak\vskip\baselineskip \stopbreaks\noindent \settowidth{\@tempdima}{% \begin{tabular}{@{}l@{}} #1\tabularnewline \usekomavar{signature}\tabularnewline \end{tabular} }% \setlength{\@tempdimb}{\hsize}% \addtolength{\@tempdimb}{-\useplength{sigindent}}% \ifdim\@tempdima>\@tempdimb\setlength{\@tempdima}{\@tempdimb}\fi \hspace{\useplength{sigindent}}% \parbox{\@tempdima}{\raggedsignature\strut\ignorespaces #1\ifhmode\scr@endstrut\\[\useplength{sigbeforevskip}] \else\vskip \useplength{sigbeforevskip}\fi \strut\ignorespaces \usekomavar{signature}\ifhmode\scr@endstrut\fi}}\par \nobreak\vskip\baselineskip } % \end{macrocode} % \end{macro} % % \begin{macro}{\ps} % \changes{v2.8n}{2001/09/08}{Komplett überarbeitet}%^^A % Ebenfalls möglich ist ein Postscriptum. Dieser Befehl erwartet das % Postscriptum nicht als Argument, sondern schaltet zum Nachtext um. % \begin{macrocode} \newcommand\ps{\par% \ifdim\parskip=\z@% \vskip\baselineskip% \fi\startbreaks\noindent\ignorespaces% } % \end{macrocode} % \end{macro} % % \begin{macro}{\cc} % Darüber hinaus gibt es noch einen Verteiler. Dieser wird sauber formatiert. % \changes{v2.6}{2001/01/03}{\cs{def} durch \cs{newcommand*} ersetzt} % \changes{v2.8n}{2001/09/08}{Komplett "uberarbeitet}%^^A % \changes{v2.9o}{2003/04/22}{\cs{parfillskip} angepasst}%^^A % \changes{v2.9q}{2004/04/26}{\cs{parfillskip} auf \texttt{1em plus 1fil} % geändert}%^^A % \changes{v2.9r}{2004/05/25}{\cs{parfillskip} auf \texttt{\cs{z@} plus % 1fil} geändert}%^^A % \changes{v3.22}{2016/12/15}{fehlender Stern bei \cs{ifkomavaremptry} % ergänzt}%^^A % \begin{macrocode} \newcommand*{\cc}[1]{\par% \ifdim\parskip=\z@% \vskip\baselineskip% \fi\noindent% \begingroup \parbox[t]{\textwidth}{% \Ifkomavarempty*{ccseparator}{}{% \@hangfrom{% \strut\usekomavar*{ccseparator}\usekomavar{ccseparator}}% }% \ignorespaces #1\strut}% \setlength{\parfillskip}{\z@ \@plus 1fil}\par \endgroup } % \end{macrocode} % \end{macro} % % \begin{macro}{\encl} % Auch Anlagen werden ordentlich gesetzt. % \changes{v2.4a}{1997/06/06}{der Doppelpunkt bei den Anlagen wird nur noch % gesetzt, wenn \cs{enclname} nicht leer ist} % \changes{v2.6}{2001/01/03}{\cs{def} durch \cs{newcommand*} ersetzt} % \changes{v2.8n}{2001/09/08}{Komplett überarbeiten}%^^A % \changes{v2.8q}{2002/01/31}{Fehlendes \% ergänzt}%^^A % \changes{v2.9o}{2003/04/22}{\cs{parfillskip} angepasst} % \changes{v2.9q}{2004/04/26}{\cs{parfillskip} auf \texttt{1em plus 1fil} % geändert} % \changes{v2.9r}{2004/05/25}{\cs{parfillskip} auf \texttt{\cs{z@} plus % 1fil} geändert} % \begin{macrocode} \newcommand*{\encl}[1]{\par% \ifdim\parskip=\z@% \vskip\baselineskip% \fi\noindent% \begingroup \parbox[t]{\textwidth}{% \Ifkomavarempty*{enclseparator}{}{% \@hangfrom{% \strut\usekomavar*{enclseparator}\usekomavar{enclseparator}}% }% \ignorespaces #1\strut}% \setlength{\parfillskip}{\z@ \@plus 1fil}\par \endgroup } % \end{macrocode} % \end{macro} % % % \subsection{Briefspezifische Feld-Variablen} % % \begin{KOMAvar}{signature} % \changes{v2.8q}{2002/01/16}{Neu}%^^A % \begin{KOMAvar}{place} % \changes{v2.8q}{2002/01/16}{Neu}%^^A % \begin{KOMAvar}{location} % \changes{v2.8q}{2002/01/16}{Neu}%^^A % \begin{KOMAvar}{backaddress} % \changes{v2.8q}{2002/01/16}{Neu}%^^A % \changes{v3.28}{2019/11/15}{\cs{ifkomavarempty} durch \cs{Ifkomavarempty} % ersetzt}%^^A % \begin{KOMAvar}{specialmail} % \changes{v2.8q}{2002/01/16}{Neu}%^^A % \begin{KOMAvar}{title} % \changes{v2.8q}{2002/01/16}{Neu}%^^A % \begin{KOMAvar}{fromlogo} % \changes{v2.8q}{2002/01/28}{Neu}%^^A % \begin{KOMAvar}{fromzipcode} % \changes{v3.03}{2009/03/04}{Neu}%^^A % \begin{KOMAvar}{PPcode} % \changes{v3.03}{2009/03/04}{Neu}%^^A % \begin{KOMAvar}{PPdatamatrix} % \changes{v3.03}{2009/03/04}{Neu}%^^A % \begin{KOMAvar}{addresseeimage} % \changes{v3.03}{2009/03/04}{Neu}%^^A % \changes{v3.03b}{2009/06/30}{Schreibfehler korrigiert}%^^A % Zunächst besitzt die Briefklasse einige Variablen, die von Haus aus nicht % über einen Ausgabenamen verfügen, weil sie üblicherweise ohne Ausgabe einer % Bezeichung verwendet werden. Diese Variablen haben teilweise auch keinen % vordefinierten Inhalt. Der Inhalt muss erst vom Anwender gesetzt % werden. Teilweise gibt es aber auch einen vordefinierten Inhalt, der von % anderen Variablen abhängt. % \begin{macrocode} \newkomavar{signature} \setkomavar{signature}{\usekomavar{fromname}} \newkomavar{place} \newkomavar{location} \newkomavar{backaddress} \setkomavar{backaddress}{% \Ifkomavarempty{fromname}{}{% \strut\ignorespaces\usekomavar{fromname}% \Ifkomavarempty{fromaddress}{}{\\}}% \Ifkomavarempty{fromaddress}{}{% \strut\ignorespaces\usekomavar{fromaddress}}% } \newkomavar{specialmail} \newkomavar{title} \newkomavar{fromlogo} \newkomavar{fromzipcode} \newkomavar{PPcode} \newkomavar{PPdatamatrix} \newkomavar{addresseeimage} % % % \end{macrocode} % \end{KOMAvar} % \end{KOMAvar} % \end{KOMAvar} % \end{KOMAvar} % \end{KOMAvar} % \end{KOMAvar} % \end{KOMAvar} % \end{KOMAvar} % \end{KOMAvar} % \end{KOMAvar} % \end{KOMAvar} % % \begin{option}{symbolicnames} % \changes{v3.12}{2013/05/13}{neue Option}%^^A % \changes{v3.17}{2015/03/16}{interne Speicherung der Werte}%^^A % \changes{v3.28}{2019/11/18}{\cs{ifstr} umbenannt in \cs{Ifstr}}%^^A % \begin{macro}{\if@scrsymbols} % \changes{v3.12}{2013/05/13}{neu (intern)}%^^A % \begin{macro}{\@scrsymbolstrue} % \changes{v3.12}{2013/05/13}{neu (intern)}%^^A % \begin{macro}{\@scrsymbolsfalse} % \changes{v3.12}{2013/05/13}{neu (intern)}%^^A % \changes{v3.27}{2019/03/21}{neue Werte}%^^A % Über diese Option kann eingestellt werden, dass an Stelle von % sprachabhängigen Bezeichnern für einige Variablen Symbole verwendet % werden. Statt nur boolsche Werte, sind ab \KOMAScript~3.27 auch die Werte % \texttt{marvosym} oder \texttt{fontawesome} möglich. \texttt{marvosym} % entspricht dabei dem bisherigen \texttt{true}. % \begin{macrocode} %<*option&letter> \newif\if@scrsymbols \KOMA@key{symbolicnames}[true]{% \KOMA@set@ifkey{symbolicnames}{@scrsymbols}{#1}% \ifx\FamilyKeyState\FamilyKeyStateProcessed \def\scr@symbols@font{marvosym}% \else \KOMA@set@ncmdkey{symbolicnames}{reserved@a}{% {marvosym}{0},% {fontawesome}{1},{awesome}{1},% }{#1}% \ifx \FamilyKeyState\FamilyKeyStateProcessed \@scrsymbolstrue \ifcase \number\reserved@a \def\scr@symbols@font{marvosym}% \else \def\scr@symbols@font{fontawesome}% \fi \fi \fi \ifx \FamilyKeyState\FamilyKeyStateProcessed \KOMA@kav@xreplacevalue{.% % \KOMAClassFileName % scrletter.\scr@pkgextension }{symbolicnames}{#1}% \if@scrsymbols \Ifstr{\scr@symbols@font}{marvosym}{% \def\scr@symbol@phone{\Telefon}% \def\scr@symbol@fax{\FAX}% \def\scr@symbol@email{\Email}% \def\scr@symbol@mobilephone{\Mobilefone}% \def\scr@symbol@www{\@empty}% }{% \def\scr@symbol@phone{\faPhone}% \def\scr@symbol@fax{\faFax}% \def\scr@symbol@email{\faEnvelopeO}% \def\scr@symbol@mobilephone{\faMobilePhone}% \def\scr@symbol@www{\faGlobe}% }% \if@atdocument \begingroup \@tempswafalse \expandafter\ifdefined\scr@symbol@phone\else\@tempswatrue\fi \expandafter\ifdefined\scr@symbol@fax\else\@tempswatrue\fi \expandafter\ifdefined\scr@symbol@email\else\@tempswatrue\fi \expandafter\ifdefined\scr@symbol@mobilephone\else\@tempswatrue\fi \expandafter\ifdefined\scr@symbol@www\else\@tempswatrue\fi \if@tempswa \aftergroup\@scrsymbolsfalse % \ClassWarning{\KOMAClassName}{% % \PackageWarning{scrletter}{% Option `symbolicnames=#1' ignorred.\MessageBreak You've tried to set option `symbolicnames'\MessageBreak after \string\begin{document}, but without\MessageBreak loading package `\scr@symbols@font' before.\MessageBreak You should either switch on option\MessageBreak `symbolicnames' before \string\begin{document}\MessageBreak or load package `\scr@letter@symbols@font' in the document\MessageBreak preamble to avoid this warning% }% \fi \endgroup \else % \end{macrocode} % \changes{v3.20}{2016/04/01}{Name der Klasse oder des Pakets ist für die % Ladeverzögerung von \textsf{marvosym} egal}%^^A % \changes{v3.20}{2016/04/01}{Ladeverzögerung für das Font-Paket % nur, wenn erforderlich und möglich}%^^A % In der Dokumentpräambel kann das Paket \textsf{marvosym} selbst geladen % werden. Allerdings funktioniert das nicht, solange wir im Optionen-Abschnitt % sind. Also muss es ggf. verzögert werden. Wie lange es zu verzögern ist, % hängt davon ab, ob wir uns in einer Klasse, einem Paket oder sonst einer % Datei mit Optionen-Abschnitt befinden. % \begin{macrocode} \ifx\@fileswith@pti@ns\@badrequireerror \Ifstr{\@currext}{\@clsextension}{% \expandafter\AtEndOfClass }{% \Ifstr{\@currext}{\@pkgextension}{% \expandafter\AtEndOfPackage }{% \expandafter\AtBeginDocument }% }% \else \expandafter\@firstofone \fi {\RequirePackage{\scr@symbols@font}}% \fi \fi \fi } \KOMA@kav@add{.% % \KOMAClassFileName % scrletter.\scr@pkgextension }{symbolicnames}{false}% % \end{macrocode} % \selectlanguage{english} % \begin{macro}{\scr@symbols@font} % \changes{v3.27}{2019/03/21}{new (internal)}%^^A % The name of the font packages used for the symbols if symbols instead of % names are activated. % \begin{macro}{\scr@symbol@phone} % \changes{v3.27}{2019/03/21}{new (internal)}%^^A % The phone symbole. % \begin{macro}{\scr@symbol@fax} % \changes{v3.27}{2019/03/21}{new (internal)}%^^A % The fax symbole. % \begin{macro}{\scr@symbol@email} % \changes{v3.27}{2019/03/21}{new (internal)}%^^A % The e-mail symbol. % \begin{macro}{\scr@symbol@mobilephone} % \changes{v3.27}{2019/03/21}{new (internal)}%^^A % The mobile-phone symbol. % \begin{macro}{\scr@symbol@www} % \changes{v3.27}{2019/03/21}{new (internal)}%^^A % The world-wide-web symbol. % \begin{macrocode} \newcommand*{\scr@symbols@font}{} \newcommand*{\scr@symbol@phone}{\undefined} \newcommand*{\scr@symbol@fax}{\undefined} \newcommand*{\scr@symbol@email}{\undefined} \newcommand*{\scr@symbol@mobilephone}{\undefined} \newcommand*{\scr@symbol@www}{\undefined} % % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \selectlanguage{ngerman} % \end{macro} % \end{macro} % \end{macro} % \end{option} % % \begin{KOMAvar}{placeseparator} % \changes{v2.8q}{2002/01/16}{Neu}%^^A % \begin{KOMAvar}{subjectseparator} % \changes{v2.8q}{2002/01/16}{Neu}%^^A % \begin{KOMAvar}{ccseparator} % \changes{v2.8q}{2002/01/16}{Neu}%^^A % \begin{KOMAvar}{enclseparator} % \changes{v2.8q}{2002/01/16}{Neu}%^^A % \begin{KOMAvar}{backaddressseparator} % \changes{v2.8q}{2002/01/22}{Neu}%^^A % \begin{KOMAvar}{phoneseparator} % \changes{v2.8q}{2002/03/25}{Neu}%^^A % \changes{v3.12}{2013/05/29}{Option \texttt{symbolicnames} wird beachtet}%^^A % \changes{v3.27}{2019/03/21}{Symbole sind indirekt gespeichert}%^^A % \begin{KOMAvar}{faxseparator} % \changes{v2.8q}{2002/03/25}{Neu}%^^A % \changes{v3.12}{2013/05/29}{Option \texttt{symbolicnames} wird beachtet}%^^A % \changes{v3.27}{2019/03/21}{Symbole sind indirekt gespeichert}%^^A % \begin{KOMAvar}{emailseparator} % \changes{v2.8q}{2002/03/25}{Neu}%^^A % \changes{v3.12}{2013/05/29}{Option \texttt{symbolicnames} wird beachtet}%^^A % \changes{v3.27}{2019/03/21}{Symbole sind indirekt gespeichert}%^^A % \begin{KOMAvar}{urlseparator} % \changes{v2.8q}{2002/03/25}{Neu}%^^A % \changes{v3.12}{2013/05/29}{Option \texttt{symbolicnames} wird beachtet}%^^A % \changes{v3.27}{2019/03/21}{Symbole sind indirekt gespeichert}%^^A % \begin{KOMAvar}{mobilephoneseparator} % \changes{v3.12}{2013/05/29}{Neu}%^^A % \changes{v3.27}{2019/03/21}{Symbole sind indirekt gespeichert}%^^A % \begin{KOMAvar}{zipcodeseparator} % \changes{v3.03}{2009/03/04}{Neu}%^^A % Daneben gibt es einige Trennzeichen. Diese haben ggf. als Ausgabenamen das % Feld, für das sie als Trennzeichen dienen. Die Trennzeichen sind % vordefiniert. % \begin{macrocode} %<*body> %<*letter> \newkomavar[\usekomavar{place}]{placeseparator} \setkomavar{placeseparator}{,\nobreakspace} \newkomavar[\subjectname]{subjectseparator} \setkomavar{subjectseparator}{: } \newkomavar[\ccname]{ccseparator} \setkomavar{ccseparator}{: } \newkomavar[\enclname]{enclseparator} \setkomavar{enclseparator}{: } \newkomavar{backaddressseparator} \setkomavar{backaddressseparator}{,\nobreakspace} \newkomavar[\if@scrsymbols\scr@symbol@phone\else\phonename\fi]{phoneseparator} \setkomavar{phoneseparator}{\if@scrsymbols\else:\fi\nobreakspace} \newkomavar[% \if@scrsymbols\scr@symbol@mobilephone\else\mobilephonename\fi ]{mobilephoneseparator} \setkomavar{mobilephoneseparator}{\usekomavar{phoneseparator}} \newkomavar[\if@scrsymbols\scr@symbol@fax\else\faxname\fi]{faxseparator} \setkomavar{faxseparator}{\if@scrsymbols\else:\fi\nobreakspace} \newkomavar[\if@scrsymbols\scr@symbol@email\else\emailname\fi]{emailseparator} \setkomavar{emailseparator}{\if@scrsymbols\else:\fi\nobreakspace} \newkomavar[\if@scrsymbols\scr@symbol@www\else\wwwname\fi]{urlseparator} \setkomavar{urlseparator}{\if@scrsymbols\else:\nobreakspace\fi} \newkomavar{zipcodeseparator} \setkomavar{zipcodeseparator}{\,--\,} % \end{macrocode} % \end{KOMAvar} % \end{KOMAvar} % \end{KOMAvar} % \end{KOMAvar} % \end{KOMAvar} % \end{KOMAvar} % \end{KOMAvar} % \end{KOMAvar} % \end{KOMAvar} % \end{KOMAvar} % \end{KOMAvar} % % \selectlanguage{english}%^^A % \begin{KOMAvar}{addressee} % \changes{v3.27}{2019/03/24}{new variable}%^^A % The package needs a variable for the addressee (used for the address field). % \begin{KOMAvar}{togivenname} % \changes{v3.27}{2019/03/24}{new variable}%^^A % \begin{KOMAvar}{tofamilyname} % \changes{v3.27}{2019/03/24}{new variable}%^^A % The package allows to build \texttt{toname} by \texttt{togivenname} and % \texttt{tofamilyname}. % \begin{macrocode} %<*package&willbe> \newkomavar{addressee} \newkomavar{togivenname} \newkomavar{tofamilyname} % % \end{macrocode} % \end{KOMAvar}%^^A tofamilyname % \end{KOMAvar}%^^A togivenname % \end{KOMAvar}%^^A addressee % \selectlanguage{ngerman}%^^A % % \begin{KOMAvar}{fromname} % \changes{v2.8q}{2002/01/16}{Neu}%^^A % \begin{KOMAvar}{fromaddress} % \changes{v2.8q}{2002/01/16}{Neu}%^^A % \begin{KOMAvar}{fromemail} % \changes{v2.8q}{2002/01/28}{Neu}%^^A % \begin{KOMAvar}{fromurl} % \changes{v2.8q}{2002/01/28}{Neu}%^^A % \begin{KOMAvar}{frombank} % \changes{v2.8q}{2002/01/28}{Neu}%^^A % \begin{KOMAvar}{toname} % \changes{v2.8q}{2002/01/16}{Neu}%^^A % \begin{KOMAvar}{toaddress} % \changes{v2.8q}{2002/01/16}{Neu}%^^A % \begin{KOMAvar}{fromphone} % \changes{v2.8q}{2002/01/16}{Neu}%^^A % \begin{KOMAvar}{frommobilephone} % \changes{v3.12}{2013/05/29}{Neu}%^^A % \begin{KOMAvar}{fromfax} % \changes{v2.8q}{2002/01/28}{Neu}%^^A % \begin{KOMAvar}{yourmail} % \changes{v2.8q}{2002/01/16}{Neu}%^^A % \begin{KOMAvar}{yourref} % \changes{v2.8q}{2002/01/16}{Neu}%^^A % \begin{KOMAvar}{myref} % \changes{v2.8q}{2002/01/16}{Neu}%^^A % \begin{KOMAvar}{customer} % \changes{v2.8q}{2002/01/16}{Neu}%^^A % \begin{KOMAvar}{invoice} % \changes{v2.8q}{2002/01/16}{Neu}%^^A % \begin{KOMAvar}{subject} % \changes{v2.8q}{2002/01/16}{Neu}%^^A % \begin{KOMAvar}{date} % \changes{v2.8q}{2002/01/16}{Neu}%^^A % \begin{macro}{\date} % \changes{v3.17}{2015/03/05}{das Makro gibt eine Warnung aus}%^^A % \begin{macro}{\scr@saved@date} % \changes{v3.17}{2015/03/05}{Neu (intern)}%^^A % Desweiteren gibt es einige Variable, die auch einen Ausgabenamen haben, weil % dieser üblicherweise vorangestellt wird. Eine Besonderheit stellt dabei % \texttt{subject} dar. Der Ausgabename beinhaltet dabei nämlich auch die % Trennzeichen, die hinter dem Namen üblicherweise stehen. Diese sind wiederum % ein Variable, deren Name der Ausgabename des Feldes ist. Will man also nur % den Namen aber nicht die Trennzeichen ändern, so ändert man statt dem Namen % von \texttt{subject} den Namen von \texttt{subjectseparator}. % % Ähnlich ist es mit \texttt{toaddress} und \texttt{fromaddress}. Dort ist der % Wert von \texttt{toname} bzw. \texttt{fromname} der Ausgabename. Bei % \texttt{toaddress} und \texttt{fromaddress} wird davon jedoch intern kein % Gebrauch gemacht. Die Variable \texttt{date} wird bereits so vordefiniert, % dass auch weiterhin \cs{date} funktioniert. % \begin{macrocode} \newkomavar[\headfromname]{fromname} \newkomavar[\usekomavar{fromname}]{fromaddress} \newkomavar[\headtoname]{toname} \newkomavar[\usekomavar{toname}]{toaddress} \newkomavar[\usekomavar*{phoneseparator}% \usekomavar{phoneseparator}]{fromphone} \newkomavar[\usekomavar*{mobilephoneseparator}% \usekomavar{mobilephoneseparator}]{frommobilephone} \newkomavar[\usekomavar*{faxseparator}% \usekomavar{faxseparator}]{fromfax} \newkomavar[\usekomavar*{emailseparator}% \usekomavar{emailseparator}]{fromemail} \newkomavar[\usekomavar*{urlseparator}% \usekomavar{urlseparator}]{fromurl} \newkomavar[\bankname]{frombank} \newkomavar[\yourrefname]{yourref} \newkomavar[\yourmailname]{yourmail} \newkomavar[\myrefname]{myref} \newkomavar[\customername]{customer} \newkomavar[\invoicename]{invoice} \newkomavar[\usekomavar*{subjectseparator}% \usekomavar{subjectseparator}]{subject} \newkomavar[\datename]{date} \setkomavar{date}{\@date} \newcommand*{\scr@saved@date}{} \let\scr@saved@date\date \renewcommand*{\date}[1]{% % \ClassWarning{\KOMAClassName}{% % \PackageWarning{scrletter}{% \string\date\space changes the internal \string\LaTeX\space date only.\MessageBreak You should note that this changes the default\MessageBreak value of variable `date' only as long as nobody\MessageBreak uses `\string\setkomavar` to change the content of\MessageBreak variable `date'.\MessageBreak Therefore, usage of `\string\setkomavar' is recommended\MessageBreak to change the letter's date% }% \scr@saved@date{#1}% } % \end{macrocode} % \end{macro}%^^A \scr@saved@date % \end{macro}%^^A \date % \end{KOMAvar} % \end{KOMAvar} % \end{KOMAvar} % \end{KOMAvar} % \end{KOMAvar} % \end{KOMAvar} % \end{KOMAvar} % \end{KOMAvar} % \end{KOMAvar} % \end{KOMAvar} % \end{KOMAvar} % \end{KOMAvar} % \end{KOMAvar} % \end{KOMAvar} % \end{KOMAvar} % \end{KOMAvar} % \end{KOMAvar} % % \iffalse % % \fi % % \iffalse % % \fi % % \Finale % \endinput % % end of file `scrkernel-notepaper.dtx' %%% Local Variables: %%% mode: doctex %%% TeX-master: t %%% End: