% \CheckSum{3169}
% \iffalse meta-comment
% ======================================================================
% scrkernel-notepaper.dtx
% Copyright (c) Markus Kohm, 2006-2014
%
% 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-2014
%
% 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 1798 2014-10-04 13:59:37Z kohm $
%<*driver>
% \fi
\ifx\ProvidesFile\undefined\def\ProvidesFile#1[#2]{}\fi
\begingroup
\def\filedate$#1: #2-#3-#4 #5${\gdef\filedate{#2/#3/#4}}
\filedate$Date: 2014-10-04 15:59:37 +0200 (Sat, 04 Oct 2014) $
\def\filerevision$#1: #2 ${\gdef\filerevision{#2}}
\filerevision$Revision: 1767 $
\endgroup
\ProvidesFile{scrkernel-notepaper.dtx}
[\filedate\space v3.13b.\filerevision\space
KOMA-Script (note-paper)]
% \iffalse
\documentclass{scrdoc}
\usepackage[english,ngerman]{babel}
\usepackage[latin1]{inputenc}
\CodelineIndex
\RecordChanges
\GetFileInfo{scrkernel-notepaper.dtx}
\title{\KOMAScript{} \partname\ \texttt{\filename}%
\footnote{Dies ist Version \fileversion\ von Datei \texttt{\filename}.}}
\date{\filedate}
\author{Markus Kohm}
\begin{document}
\maketitle
\tableofcontents
\DocInput{\filename}
\end{document}
%
% \fi
%
% \selectlanguage{ngerman}
%
% \changes{v2.95}{2006/03/16}{%
% erste Version aus der Aufteilung von \textsf{scrclass.dtx}}
%
% \section{Briefbogen und Briefpapier}
%
% Bei Briefen kommt dem Briefbogen, also dem ersten Blatt des Briefes eine
% besondere Bedeutung zu. Dieser ist bei \texttt{scrlttr2} durch diverse
% Optionen, Variablen, Pseudo-Längen und Anweisungen bestimmt. Die weiteren
% Briefseiten werden hier verinfacht als das Briefpapier bezeichnet. Natürlich
% ist genau genommen auch der Briefbogen Briefpapier, aber eben ein besonderes.
%
% \StopEventually{\PrintIndex\PrintChanges}
%
% \iffalse
%<*option>
% \fi
%
% \iffalse
%<*letter>
% \fi
%
% \subsection{Option für den Briefbogen}
%
% Gerade der Briefbogen ist durch eine ganze Anzahl von Optionen
% konfigurierbar. Daher wird hier weiter thematisch untergliedert.
%
%
% \subsubsection{Optionen für den Briefkopf}
%
% Die Gestaltung des Briefkopfes war bei der alten \texttt{scrlettr}
% Klasse eng begrenzt. Deshalb hatte ich für mich selbst das
% \texttt{briefkopf} Paket geschrieben und ohne Support
% veröffentlicht. Die Funktionalität ist nun direkt verfügbar. Dazu
% werden verschiedene Optionen benötigt.
%
% \begin{option}{firsthead}
% \changes{v2.97e}{2007/11/22}{Neu}
% Der Briefkopf kann auch einfach abgeschaltet werden.
% \begin{macro}{\if@firsthead}
% \changes{v2.8q}{2002/01/25}{Neuer Schalter (intern)}
% Gespeichert wird die Information in einem einfachen Schalter.
% Voreingestellt ist die Verwendung des Briefkopfes.
% \begin{macrocode}
\KOMA@ifkey{firsthead}{@firsthead}\@firstheadtrue
% \end{macrocode}
% \end{macro}
% \end{option}
%
% \begin{option}{fromalign}
% \changes{v2.8q}{2002/01/25}{Neu}
% \changes{v3.12}{2013/03/05}{Verwendung der Status-Signalisierung mit
% \cs{FamilyKeyState}}
% Diese Option legt fest, ob der Absender linksbündig, mittig oder
% rechtsbündig gesetzt werden soll.
% \begin{macro}{\@alignfrom}
% \changes{v2.8q}{2002/01/25}{Neu}
% \changes{v2.97e}{2007/11/13}{neue Werte für Verwendung der
% Absenderergänzung}
% Die Einstellung wird in einem nummerisch auszuwertenden Makro
% gespeichert. Dabei gelten folgende Werte:
% \begin{center}
% \begin{tabular}{rl}
% Wert & Ausrichtung \\\hline
% 0 & linksbündig \\
% 1 & zentriert \\
% 2 & rechtsbündig \\
% 3 & linksbündig in der Absenderergänzung ohne Kopf \\
% 4 & rechtbündig in der Absenderergänzung ohne Kopf \\
% 10000 & nicht antasten \\
% \end{tabular}
% \end{center}
% Voreingestellt ist "`nicht antasten"'.
% \begin{macrocode}
\newcommand*{\@alignfrom}{0}
\KOMA@key{fromalign}{%
\KOMA@set@ncmdkey{fromalign}{@alignfrom}{%
{left}{0},%
{center}{1},{centered}{1},{middle}{1},%
{right}{2},%
{locationleft}{3},{leftlocation}{3},%
{locationright}{4},{rightlocation}{4},{location}{4},%
{no}{10000},{false}{10000},{off}{10000}%
}{#1}%
\ifx\FamilyKeyState\FamilyKeyStateProcessed
\ifcase\@alignfrom\or\or\or\@firstheadfalse\or\@firstheadfalse\fi
\fi
}
% \end{macrocode}
% \end{macro}
% \end{option}
%
% \begin{option}{fromrule}
% \changes{v2.8q}{2002/01/25}{Neu}
% Es kann gewählt werden, ob im Absender nach dem Namen oder nach dem
% gesamten Absender eine Linie gesetzt werden soll.
% \begin{macro}{\@rulefrom}
% \changes{v2.8q}{2002/01/25}{Neu}
% Die Einstellung wird in einem nummerisch auszuwertenden Makro
% gespeichert. Dabei gelten folgende Werte:
% \begin{center}
% \begin{tabular}{rl}
% Wert & Absenderlinie \\\hline
% 0 & keine \\
% 1 & unter dem Name \\
% 2 & unter der Adresse \\
% \end{tabular}
% \end{center}
% Voreingestellt ist keine Linie.
% \begin{macrocode}
\newcommand*{\@rulefrom}{0}
\KOMA@ncmdkey{fromrule}[below]{@rulefrom}{%
{false}{0},{no}{0},{off}{0},{aftername}{1},%
{below}{2},{afteraddress}{2},{true}{2},{yes}{2},{on}{2}%
}
% \end{macrocode}
% \end{macro}
% \end{option}
%
% \begin{option}{fromphone}
% \changes{v2.8q}{2002/01/25}{Neu}
% Ob die Telefonnummer im Absender gesetzt werden soll oder nicht,
% kann hier angegeben werden.
% \begin{macro}{\if@phone}
% \changes{v2.8q}{2002/01/25}{Neu}
% \begin{macro}{\@phonetrue}
% \changes{v2.8q}{2002/01/25}{Neu}
% \begin{macro}{\@phonefalse}
% \changes{v2.8q}{2002/01/25}{Neu}
% Gespeichert wird die Information in einem einfachen Schalter.
% Voreingestellt ist keine Telefonnummer im Absender.
% \begin{macrocode}
\KOMA@ifkey{fromphone}{@phone}
% \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{option}
%
% \begin{option}{frommobilephone}
% \changes{v3.12}{2013/05/29}{Neu}
% Ob die Handynummer im Absender gesetzt werden soll oder nicht,
% kann hier angegeben werden.
% \begin{macro}{\if@mobilephone}
% \changes{v3.12}{2013/05/29}{Neu}
% \begin{macro}{\@mobilephonetrue}
% \changes{v3.12}{2013/05/29}{Neu}
% \begin{macro}{\@mobilephonefalse}
% \changes{v3.12}{2013/05/29}{Neu}
% Gespeichert wird die Information in einem einfachen Schalter.
% Voreingestellt ist keine Handynummer im Absender.
% \begin{macrocode}
\KOMA@ifkey{frommobilephone}{@mobilephone}
% \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{option}
%
% \begin{option}{fromfax}
% \changes{v2.8q}{2002/01/25}{Neu}
% Ob die Faxnummer im Absender gesetzt werden soll oder nicht,
% kann hier angegeben werden.
% \begin{macro}{\if@fax}
% \changes{v2.8q}{2002/01/25}{Neu}
% \begin{macro}{\@faxtrue}
% \changes{v2.8q}{2002/01/25}{Neu}
% \begin{macro}{\@faxfalse}
% \changes{v2.8q}{2002/01/25}{Neu}
% Gespeichert wird die Information in einem einfachen Schalter.
% Voreingestellt ist keine Faxnummer im Absender.
% \begin{macrocode}
\KOMA@ifkey{fromfax}{@fax}
% \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{option}
%
% \begin{option}{fromemail}
% \changes{v2.8q}{2002/01/25}{Neu}
% Ob die E-Mail-Adresse im Absender gesetzt werden soll oder nicht,
% kann hier angegeben werden.
% \begin{macro}{\if@email}
% \changes{v2.8q}{2002/01/25}{Neu}
% \begin{macro}{\@emailtrue}
% \changes{v2.8q}{2002/01/25}{Neu}
% \begin{macro}{\@emailfalse}
% \changes{v2.8q}{2002/01/25}{Neu}
% Gespeichert wird die Information in einem einfachen Schalter.
% Voreingestellt ist keine E-Mail-Adresse im Absender.
% \begin{macrocode}
\KOMA@ifkey{fromemail}{@email}
% \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{option}
%
% \begin{option}{fromurl}
% \changes{v2.8q}{2002/01/25}{Neu}
% Ob die URL auf eine Homepage im Absender gesetzt werden soll oder
% nicht, kann hier angegeben werden.
% \begin{macro}{\if@www}
% \changes{v2.8q}{2002/01/25}{Neu}
% \begin{macro}{\@wwwtrue}
% \changes{v2.8q}{2002/01/25}{Neu}
% \begin{macro}{\@wwwfalse}
% \changes{v2.8q}{2002/01/25}{Neu}
% Gespeichert wird die Information in einem einfachen Schalter.
% Voreingestellt ist keine URL im Absender.
% \begin{macrocode}
\KOMA@ifkey{fromurl}{@www}
% \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{option}
%
% \begin{option}{fromlogo}
% \changes{v2.8q}{2002/01/25}{Neu}
% Ob ein Logo in den Briefkopf gesetzt werden soll oder
% nicht, kann hier angegeben werden.
% \begin{macro}{\if@logo}
% \changes{v2.8q}{2002/01/25}{Neu}
% \begin{macro}{\@logotrue}
% \changes{v2.8q}{2002/01/25}{Neu}
% \begin{macro}{\@logofalse}
% \changes{v2.8q}{2002/01/25}{Neu}
% Gespeichert wird die Information in einem einfachen Schalter.
% Voreingestellt ist kein Logo im Briefkopf.
% \begin{macrocode}
\KOMA@ifkey{fromlogo}{@logo}
% \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{option}
%
%
% \subsubsection{Optionen für Anschrift und Absenderergänzung}
%
% \begin{option}{addrfield}
% \changes{v2.8q}{2001/10/09}{Neu}
% \changes{v3.03}{2009/03/04}{neue Werte}
% Das Adressfeld für Fensterumschläge kann mit \texttt{addrfield} ein- und
% ausgeschaltet werden. Darüber hinaus kann die Art des Adressfeldes gewählt
% werden.
% \begin{macro}{\if@afield}
% \changes{v3.03}{2009/03/04}{ersetzt durch \cs{@afieldmode}}
% \begin{macro}{\@afieldtrue}
% \changes{v3.03}{2009/03/04}{ersetzt durch \cs{@afieldmode}}
% \begin{macro}{\@afieldfalse}
% \changes{v3.03}{2009/03/04}{ersetzt durch \cs{@afieldmode}}
% \begin{macro}{\@afieldmode}
% \changes{v3.03}{2009/03/04}{neu (intern)}
% Die Speicherung erfolgt wiederum in einem Makro.
% \begin{macrocode}
%<*class>
\newcommand*{\if@afield}{%
\ClassWarning{\KOMAClassName}{%
Usage of \string\if@afield\space deprecated.\MessageBreak
Internal macro \string\if@afield\space was removed at\MessageBreak
KOMA-Script version 3.03. I'll replace the usage of\MessageBreak
\string\if@afield\space by \string\ifnum
\string\@afieldmode=\string\@ne.\MessageBreak
This may result in errors. A better solution would be\MessageBreak
to change the code}%
\ifnum \@afieldmode=\@ne}
\newcommand*{\@afieldtrue}{%
\ClassWarning{\KOMAClassName}{%
Usage of \string\if@afield\space deprecated.\MessageBreak
Internal macro \string\if@afield\space was removed at\MessageBreak
KOMA-Script version 3.03. I'll replace the usage of\MessageBreak
\string\@afieldtrue\space by
\string\KOMAoptions{addrfield=true}.\MessageBreak
This may result in erros. A better solution would be\MessageBreak
to change the code}%
\KOMAoptions{addrfield=true}}
\newcommand*{\@afieldfalse}{%
\ClassWarning{\KOMAClassName}{%
Usage of \string\if@afield\space deprecated.\MessageBreak
Internal macro \string\if@afield\space was removed at\MessageBreak
KOMA-Script version 3.03. I'll replace the usage of\MessageBreak
\string\@afieldfalse\space by
\string\KOMAoptions{addrfield=false}.\MessageBreak
This may result in erros. A better solution would be\MessageBreak
to change the code}%
\KOMAoptions{addrfield=false}}
%
\newcommand*{\@afieldmode}{\@ne}
\KOMA@ncmdkey{addrfield}[true]{@afieldmode}{%
{false}{0},{off}{0},{no}{0},%
{true}{1},{on}{1},{yes}{1},%
{PP}{2},{pp}{2},%
{PPexplicite}{2},{PPExplicite}{2},%
{ppexplicite}{2},{ppExplicite}{2},%
{backgroundimage}{3},%
{PPbackgroundimage}{3},{PPBackgroundImage}{3},{PPBackGroundImage}{3},%
{ppbackgroundimage}{3},{ppBackgroundImage}{3},{ppBackGroundImage}{3},%
{image}{4},{Image}{4},%
{PPimage}{4},{PPImage}{4},%
{ppimage}{4},{ppImage}{4}%
}
% \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{option}
%
% \begin{option}{priority}
% \changes{v3.03}{2009/03/04}{neu}
% Im internationalen Briefverkehr sind zwei Prioritätseinstellungen
% bekannt. Dafür gibt es dann so etwas wie eine Versandart nicht mehr.
% \begin{macro}{\ltr@priority}
% \changes{v3.03}{2009/03/04}{neu (intern)}
% Abgelegt wird die Art der Priorität in einem Macro.
% \begin{macrocode}
\newcommand*{\ltr@priority}{0}%
\KOMA@ncmdkey{priority}[A]{ltr@priority}{%
{no}{0},{off}{0},{false}{0},{manual}{1},%
{B}{1},{b}{1},%
{economy}{1},{Economy}{1},{ECONOMY}{1},%
{B-ECONOMY}{1},{B-Economy}{1},{b-economy}{1},%
{A}{2},{a}{2},%
{priority}{2},{Priority}{2},{PRIORITY}{2},%
{A-PRIORITY}{2},{A-Priority}{2},{a-priority}{2}%
}%
% \end{macrocode}
% \end{macro}
% \end{option}
%
% \begin{option}{backaddress}
% \changes{v2.8q}{2002/01/22}{Neu}
% \changes{v3.12}{2013/03/05}{Verwendung der Status-Signalisierung mit
% \cs{FamilyKeyState}}
% Im Adressfeld kann die Rücksendeadresse gesetzt werden. Dies geschieht nun
% nicht mehr allein durch Definition einer Rücksendeadresse, sondern auch
% durch eine Option.
% \begin{macro}{\if@baddr}
% \begin{macro}{\@baddrtrue}
% \begin{macro}{\@baddrfalse}
% \begin{macro}{\backaddr@format}
% \changes{v2.96}{2006/07/31}{neu (intern)}
% Dieses Makro hat genau ein Argument und bestimmt die Form der
% Rücksendeadresse. Voreingestellt ist Unterstreichung. Dies entspricht der
% vor Version~2.96 festen Voreinstellung.
% \begin{macrocode}
\newcommand{\backaddr@format}[1]{}
\let\backaddr@format\underline
% \end{macrocode}
% \end{macro}
% Die Einstellung true/false der Option wird in einem Schalter gespeichert.
% \begin{macrocode}
\newif\if@baddr\@baddrtrue
\KOMA@key{backaddress}[true]{%
\begingroup
\KOMA@set@ncmdkey{backaddress}{@tempa}{%
{false}{0},{off}{0},{no}{0},%
{true}{1},{on}{1},{yes}{1},%
{underlined}{2},%
{plain}{3}%
}{#1}%
\ifx\FamilyKeyState\FamilyKeyStateProcessed
\aftergroup\FamilyKeyStateProcessed
\ifcase\@tempa
\endgroup
\@baddrfalse
\or
\endgroup
\@baddrtrue
\or
\endgroup
\@baddrtrue
\let\backaddr@format\underline
\or
\endgroup
\@baddrtrue
\let\backaddr@format\@firstofone
\else
\endgroup
\fi
\else
\endgroup
\FamilyKeyStateUnknownValue
\fi
}
% \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{option}
%
% \begin{option}{locfield}
% \changes{v2.8q}{2001/10/09}{Neu}
% \changes{v2.97c}{2007/03/30}{vertauschte Bedeutung korrigiert}
% \changes{v3.12}{2013/03/05}{Verwendung der Status-Signalisierung mit
% \cs{FamilyKeyState}}
% Mit Hilfe der Optione \texttt{locfield} kann der Platz neben dem Adressfeld
% groß oder klein gewählt werden.
% \begin{macro}{\if@bigloc}
% \begin{macro}{\@bigloctrue}
% \begin{macro}{\@biglocfalse}
% Die Einstellung wird in einem Schalter gespeichert.
% \begin{macrocode}
\newif\if@bigloc
% \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
% \begin{macrocode}
\KOMA@key{locfield}[wide]{%
\begingroup
\KOMA@set@ncmdkey{locfield}{@tempa}{{wide}{0},{narrow}{1}}{#1}%
\ifx\FamilyKeyState\FamilyKeyStateProcessed
\ifcase\@tempa
\endgroup
\@bigloctrue
\else
\endgroup
\@biglocfalse
\fi
\else
\endgroup
\FamilyKeyStateUnknownValue
\fi
}
% \end{macrocode}
% \begin{option}{wlocfield}
% \changes{v3.01a}{2008/11/20}{deprecated}
% \begin{option}{slocfield}
% \changes{v3.01a}{2008/11/20}{deprecated}
% \begin{macrocode}
\KOMA@DeclareDeprecatedOption{wlocfield}{locfield=wide}
\KOMA@DeclareDeprecatedOption{slocfield}{locfield=narrow}
% \end{macrocode}
% \end{option}
% \end{option}
% \end{option}
%
%
% \subsubsection{Optionen für Faltmarken}
%
% \begin{option}{foldmarks}
% \changes{v2.8q}{2001/09/10}{Neu}
% \changes{v3.00}{2008/06/06}{es muss \cs{FamilyUnkownKeyVal} statt
% \cs{KOMA@unkown@keyval} lokal umdefiniert werden}
% \changes{v3.12}{2013/03/05}{Verwendung der Status-Signalisierung mit
% \cs{FamilyKeyState}}
% Die Faltmarken können mit \texttt{foldmarks} aktiviert und deaktiviert
% werden.
% \begin{macro}{\if@fold}
% \begin{macro}{\@foldtrue}
% \begin{macro}{\@foldfalse}
% Ob Faltmarken gesetzt werden sollen oder nicht, wird in einem
% Schalter gespeichert.
% \begin{macrocode}
\newif\if@fold\@foldtrue
% \end{macrocode}
% \begin{macro}{\@usefolds}
% Welche Faltmarken gesetzt werden sollen, wird in einem Makro gespeichert.
% \changes{v2.97e}{2007/11/08}{Neu (intern)}
% \begin{macrocode}
\newcommand*{\@usefolds}{TMBPL}
\KOMA@key{foldmarks}[true]{%
\begingroup
\KOMA@set@ifkey\@empty{@fold}{#1}%
\ifx\FamilyKeyState\FamilyKeyStateProcessed
\if@fold\aftergroup\@foldtrue\else\aftergroup\@foldfalse\fi
\aftergroup\FamilyKeyStateProcessed
\else
\aftergroup\FamilyKeyStateProcessed
\def\sc@nf@ldch@rs##1{%
\ifx ##1\@nil\else
\if ##1T\g@addto@macro\@usefolds{##1}\else
\if ##1M\g@addto@macro\@usefolds{##1}\else
\if ##1B\g@addto@macro\@usefolds{##1}\else
\if ##1P\g@addto@macro\@usefolds{##1}\else
\if ##1L\g@addto@macro\@usefolds{##1}\else
\if ##1V\g@addto@macro\@usefolds{L}\else
\if ##1H\g@addto@macro\@usefolds{TMBP}\else
\if ##1t\scr@removechar\@usefolds{T}\else
\if ##1m\scr@removechar\@usefolds{M}\else
\if ##1b\scr@removechar\@usefolds{B}\else
\if ##1p\scr@removechar\@usefolds{P}\else
\if ##1l\scr@removechar\@usefolds{L}\else
\if ##1v%
\scr@removechar\@usefolds{L}%
\else
\if ##1h%
\scr@removechar\@usefolds{T}%
\scr@removechar\@usefolds{M}%
\scr@removechar\@usefolds{B}%
\else
\aftergroup\FamilyKeyStateUnknownValue
\fi
\fi
\fi
\fi
\fi
\fi
\fi
\fi
\fi
\fi
\fi
\fi
\fi
\fi
\expandafter\sc@nf@ldch@rs
\fi
}%
\expandafter\sc@nf@ldch@rs#1\@nil
\fi
\endgroup
}
% \end{macrocode}
% \begin{macro}{\scr@removechar}
% \changes{v2.97e}{2007/11/08}{Neu (intern)}
% \begin{macrocode}
\newcommand*{\scr@removechar}[2]{%
\def\in@@##1#2##2##3\in@@{%
\ifx\in@##2\else
\def\in@@####1#2\in@{\gdef#1{##1####1}}%
\in@@##2##3%
\fi}%
\expandafter\in@@#1#2\in@\in@@
}
% \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{option}
%
%
% \subsubsection{Optionen für die Geschäftszeile}
%
% \begin{option}{refline}
% \changes{v2.8n}{2001/09/08}{Neue Option}
% \changes{v2.96a}{2006/12/07}{vertauschte Bedeutung korrigiert}
% \changes{v3.12}{2013/03/05}{Verwendung der Status-Signalisierung mit
% \cs{FamilyKeyState}}
% Kopf und Fuß der ersten Seite sind normalweise so breit, dass sie
% zur Adresse des Empfängers passen. Für die Geschäftszeile gibt es
% zwei Alternativen, eine breite und eine, deren Breite der Textbreite
% entspricht. Voreingestellt ist die Textbreite.
% \begin{macro}{\if@refwide}
% \changes{v2.8n}{2001/09/08}{Neuer Schalter}
% \changes{v3.09}{2011/03/07}{Neue Werte: \texttt{dateleft},
% \texttt{dateright}, \texttt{nodate}}
% \begin{macro}{\@refwidetrue}
% \begin{macro}{\@refwidefalse}
% Gespeichert wird die Information in einem Schalter.
% \begin{macro}{\@datepos}
% \changes{v3.09}{2011/03/07}{Neu (intern)}
% Das Datum kann links oder rechts oder gar nicht gesetzt werden.
% Wo die Speicherung erfolgt wird in einem nummerischen Makro
% abglegt. Voreingestellt ist rechts.
% \begin{macrocode}
\newif\if@refwide
\newcommand*{\@datepos}{1}
\KOMA@key{refline}[wide]{%
\begingroup
\KOMA@set@ncmdkey{refline}{@tempa}{{wide}{0},{narrow}{1},%
{dateleft}{2},{leftdate}{2},%
{dateright}{3},{rightdate}{3},%
{nodate}{4}%
}{#1}%
\ifx\FamilyKeyState\FamilyKeyStateProcessed
\aftergroup\FamilyKeyStateProcessed
\ifcase\@tempa
\endgroup
\@refwidetrue
\or
\endgroup
\@refwidefalse
\or
\endgroup
\def\@datepos{2}%
\or
\endgroup
\def\@datepos{1}%
\or
\endgroup
\def\@datepos{0}%
\fi
\else
\endgroup
\FamilyKeyStateUnknownValue
\fi
}
% \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{option}
%
%
% \subsubsection{Optionen für den Betreff}
%
% \begin{option}{subject}
% \changes{v2.8q}{2001/10/09}{Neu}
% \changes{v3.12}{2013/03/05}{Verwendung der Status-Signalisierung mit
% \cs{FamilyKeyState}}
% Ein Betreff-Titel kann mit \texttt{subject} ein- und abgeschaltet
% werden. In England und Frankreich scheint es teilweise üblich zu
% sein, den Betreff erst nach der Anrede und dafür zentriert zu
% setzen\footnote{Ich kann mir nur mühsahm eine Bemerkung dazu
% verkneifen.}.
% Deshalb kann alternativ zum Einschalten des Betreff-Titels hier auch
% dies aktiviert werden.
% \begin{macro}{\subject@format}
% \changes{v2.97c}{2007/07/06}{neu (intern)}
% Das Format des Betreffs kann geändert werden.
% \begin{macrocode}
\newcommand{\subject@format}[1]{#1}
% \end{macrocode}
% \end{macro}
% \begin{macro}{\raggedsubject}
% \changes{v2.97c}{2007/07/06}{neu (intern)}
% \begin{macrocode}
\newcommand*{\raggedsubject}{}
% \end{macrocode}
% \end{macro}
% \begin{macro}{\if@subj}
% \begin{macro}{\@subjtrue}
% \begin{macro}{\@subjfalse}
% \begin{macro}{\if@subjafter}
% \begin{macro}{\@subjaftertrue}
% \begin{macro}{\@subjafterfalse}
% Die Speicherung erfolgt in zwei Schaltern.
% \begin{macrocode}
\newif\if@subj
\newif\if@subjafter
\KOMA@key{subject}{%
\begingroup
\KOMA@set@ncmdkey{subject}{@tempa}{%
{titled}{0},%
{untitled}{1},%
{afteropening}{2},%
{beforeopening}{3},%
{underlined}{4},%
{left}{5},%
{right}{6},%
{centered}{7}%
}{#1}%
\ifx\FamilyKeyState\FamilyKeyStateProcessed
\aftergroup\FamilyKeyStateProcessed
\ifcase\@tempa
\aftergroup\@subjtrue
\or
\aftergroup\@subjfalse
\or
\aftergroup\@subjaftertrue
\or
\aftergroup\@subjafterfalse
\or
\aftergroup\let\aftergroup\subject@format\aftergroup\underline
\or
\aftergroup\let\aftergroup\raggedsubject\aftergroup\raggedright
\or
\aftergroup\let\aftergroup\raggedsubject\aftergroup\raggedleft
\or
\aftergroup\let\aftergroup\raggedsubject\aftergroup\centering
\fi
\else
\aftergroup\FamilyKeyStateUnknownValue
\fi
\endgroup
}
% \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{option}
%
%
% \subsubsection{Optionen für den Satzspiegel}
%
% \begin{option}{enlargefirstpage}
% \changes{v2.8o}{2001/09/18}{Neue Option}
% Normalerweise wird der Text des Briefboges entsprechend dem
% normalen Satzspiegel gesetzt. Ist allerdings der Fuß der ersten
% Seite zu hoch, dann wird der Satzspiegel vertikal entsprechend
% verkürzt. Mit der Option \texttt{firstpageenlarge} kann erzwungen
% werden, dass im umgekehrten Fall, der Satzspiegel vertikal
% verlängert wird.
% \begin{macro}{\if@enlargefp}
% \begin{macro}{\@enlargefptrue}
% \begin{macro}{\@enlargefpfalse}
% Gespeichert wird die Information über die Optionen in einem
% Schalter.
% \begin{macrocode}
\KOMA@ifkey{enlargefirstpage}{@enlargefp}
% \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{option}
%
%
% \subsubsection{Optionen für den Briefbogenfuß}
%
% \begin{option}{firstfoot}
% \changes{v2.97e}{2007/11/22}{Neu}
% Der Fuß des Briefbogens kann auch einfach abgeschaltet werden.
% \begin{macro}{\if@firstfoot}
% \changes{v2.8q}{2002/01/25}{Neuer Schalter (intern)}
% Gespeichert wird die Information in einem einfachen Schalter.
% Voreingestellt ist die Verwendung des Fußes.
% \begin{macrocode}
\KOMA@ifkey{firstfoot}{@firstfoot}\@firstfoottrue
% \end{macrocode}
% \end{macro}
% \end{option}
%
%
% \subsection{Optionen für den Kopf des weiteren Briefpapiers}
%
% Diese Optionen haben zwar nichts mit dem eigentlichen Briefbogen zu tun. Das
% Briefpapier schließt sich aber an, weshalb die Optionen hier zu finden sind.
%
% \begin{option}{pagenumber}
% \changes{v2.8q}{2002/01/31}{Neu}
% \changes{v3.12}{2013/03/05}{Verwendung der Status-Signalisierung mit
% \cs{FamilyKeyState}}
% Bei Briefen kann gewählt werden, ob auf Folgeseiten die Seitenzahl
% im Kopf oder im Fuß stehen soll. Dabei kann zwischen Seitenzahl
% rechts, links oder zentriert gewählt werden. Voreingestellt ist der
% Fuß und mittig.
% \begin{macro}{\@pageat}
% \changes{v2.8q}{2002/01/31}{Neu}
% In dieser nummerisch auswertbaren Variablen wird gespeichert, wo die
% Seitenzahl stehen soll. Dabei gilt:
% \begin{center}\begin{tabular}{rl}
% Wert & Bedeutung für die Seitenzahl\\\hline
% -1 & keine \\
% 0 & im Kopf links \\
% 1 & im Kopf mittig \\
% 2 & im Kopf rechts \\
% 3 & im Fuß links \\
% 4 & im Fuß mittig \\
% 5 & im Fuß rechts \\
% \end{tabular}\end{center}
% \begin{macrocode}
\newcommand*{\@pageat}{4}
\KOMA@key{pagenumber}{%
\begingroup
\KOMA@set@ncmdkey{pagenumber}{@tempa}{%
{no}{-1},{off}{-1},{false}{-1},%
{topleft}{0},{headleft}{0},%
{topmiddle}{1},{topcenter}{1},{topcentered}{1},%
{headmiddle}{1},{headcenter}{1},{headcentered}{1},%
{topright}{2},{headright}{2},%
{botleft}{3},{footleft}{3},%
{botmiddle}{4},{botcenter}{4},{botcentered}{4},%
{footmiddle}{4},{footcenter}{4},{footcentered}{4},%
{botright}{5},{footright}{5},%
{top}{10},{head}{10},{bot}{11},{foot}{11},%
{left}{20},{middle}{21},{center}{21},{centered}{21},{right}{22}%
}{#1}%
\ifx\FamilyKeyState\FamilyKeyStateProcessed
\aftergroup\FamilyKeyStateProcessed
\ifnum\@tempa<10
\edef\@tempa{\endgroup\edef\noexpand\@pageat{\@tempa}}%
\else
\ifnum\@tempa<20
\@tempcnta\@pageat\relax
\ifnum\@tempcnta>2
\advance\@tempcnta by -3
\fi
\ifnum\@tempa=11
\advance\@tempcnta by 3
\fi
\edef\@tempa{\endgroup\edef\noexpand\@pageat{\the\@tempcnta}}%
\else
\ifnum\@pageat>2
\edef\@pageat{3}%
\else
\edef\@pageat{0}%
\fi
\@tempcnta\@tempa
\advance\@tempcnta by -20
\advance\@tempcnta by\@pageat
\edef\@tempa{\endgroup\edef\noexpand\@pageat{\the\@tempcnta}}%
\fi
\fi
\else
\def\@tempa{\endgroup\FamilyKeyStateUnknownValue}%
\fi
\@tempa
}
% \end{macrocode}
% \end{macro}
% \end{option}
%
%
% \iffalse
%
%
%<*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}
% \begin{macro}{\@firsthead}
% \changes{v3.08}{2010/10/28}{der Kopf des Briefbogens wird über eine
% Variable realisiert}
% \begin{macro}{\@gen@firsthead}
% \changes{v2.8q}{2002/01/28}{Neu}
% \changes{v2.97c}{2007/05/08}{Dicke der Linie konfigurierbar}
% \changes{v2.97c}{2007/05/08}{Schrift (Farbe) der Linie konfigurierbar}
% \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}
% \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
% 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.
% \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}{}{%
\csname scr@default@firsthead@fromaddress@hook\endcsname
\ignorespaces\usekomavar{fromaddress}%
}%
}%
}%
}
% \end{macrocode}
% \end{KOMAvar}
% \begin{macro}{\scr@firsthead@postsetvar}
% \changes{v3.08}{2010/10/28}{Neu (intern)}
% Ü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}{%
\renewcommand*{\@alignfrom}{10000}%
}
% \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}
% 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}
% 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}}
% Die Rücksendeadresse.
% \begin{macrocode}
\newkomafont{backaddress}{\sffamily}
% \end{macrocode}
% \end{KOMAfont}
%
% \begin{KOMAfont}{specialmail}
% \changes{v2.97c}{2007/07/06}{Neues Font-Element}
% Die Versandart.
% \begin{macrocode}
\newkomafont{specialmail}{}
% \end{macrocode}
% \end{KOMAfont}
%
% \begin{KOMAfont}{priority}
% \changes{v3.03}{2009/03/04}{Neues Font-Element}
% Grundschrift für die Priorität des Briefs, falls diese A oder B ist. Es wird
% ohne Durchschuss gearbeitet.
% \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}
% 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}
% Schrift für das Logo \texttt{P.P.}, das im Anschriftmodus \texttt{PP}
% gesetzt wird.
% \begin{macrocode}
\newkomafont{PPlogo}{\sffamily\bfseries}
% \end{macrocode}
% \end{KOMAfont}
%
% \begin{KOMAfont}{PPdata}
% \changes{v3.03}{2009/03/04}{Neues Font-Element}
% Schrift, die innerhalb des PP-Kopfes für die Daten verwendet wird.
% gesetzt wird.
% \begin{macrocode}
\newkomafont{PPdata}{\sffamily}
% \end{macrocode}
% \end{KOMAfont}
%
% \begin{KOMAfont}{addressee}
% \changes{v2.97c}{2007/07/06}{Neues Font-Element}
% Die komplette Anschrift.
% \begin{macrocode}
\newkomafont{addressee}{}
% \end{macrocode}
% \end{KOMAfont}
%
% \begin{KOMAfont}{toname}
% \changes{v2.97c}{2007/07/06}{Neues Font-Element}
% 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}
% 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}
% Die Feldnamen in der Geschäftszeile.
% \begin{macrocode}
\newkomafont{refname}{\sffamily\scriptsize}
% \end{macrocode}
% \end{KOMAfont}
%
% \begin{KOMAfont}{refvalue}
% \changes{v2.97c}{2007/05/14}{Neues Font-Element}
% \changes{v2.97d}{2007/10/09}{Voreinstellung korrigiert}
% Die Feldwerte in der Geschäftszeile.
% \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}
% 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}{title}
% \changes{v2.95}{2006/03/23}{jetzt mit \cs{newkomafont}}
% Der Brieftitel.
% \begin{macrocode}
%\scr@ifundefinedorrelax{scr@fnt@title}{%
\newkomafont{title}{\normalcolor\sffamily\bfseries}%
%}{}
% \end{macrocode}
% \end{KOMAfont}
%
% \begin{KOMAfont}{subject}
% \changes{v2.95}{2006/03/23}{jetzt mit \cs{newkomafont}}
% Der Betreff.
% \begin{macrocode}
%\scr@ifundefinedorrelax{scr@fnt@subject}{%
\newkomafont{subject}{\normalcolor\bfseries}%
%}{}
% \end{macrocode}
% \end{KOMAfont}
%
% \subsubsection{Längen für den Briefbogen}
%
% \begin{macro}{\ltr@len@foldmarkhpos}
% \changes{v2.8q}{2001/10/06}{Neu}
% 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}
% 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}
% \begin{macro}{\ltr@len@mfoldmarkvpos}
% \changes{v2.97e}{2007/11/08}{Neu}
% \begin{macro}{\ltr@len@bfoldmarkvpos}
% \changes{v2.8q}{2001/10/06}{Neu}
% 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}
% 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}
% \begin{macro}{\ltr@len@hfoldmarklength}
% \changes{v2.97e}{2007/11/10}{Neu}
% \begin{macro}{\ltr@len@mfoldmarklength}
% \changes{v2.97e}{2007/11/10}{Neu}
% \begin{macro}{\ltr@len@bfoldmarklength}
% \changes{v2.97e}{2001/11/10}{Neu}
% \begin{macro}{\ltr@len@lfoldmarklength}
% \changes{v2.97e}{2001/11/10}{Neu}
% 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}
% 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}
% 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}
% 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}
% 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}
% 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}
% 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}
% 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}
% Breite des Adressfensters
% \begin{macrocode}
\@newplength{toaddrwidth}
% \end{macrocode}
% \end{macro}
% \begin{macro}{\ltr@len@toaddrheight}
% \changes{v2.8q}{2001/10/06}{Neu}
% \changes{v3.03b}{2009/06/25}{Implementierung an Doku angepasst}
% 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}
% 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}
% 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}
% 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}
% 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}
% Abstand der Geschäftszeile von der Papieroberkante.
% \begin{macrocode}
\@newplength{refvpos}
% \end{macrocode}
% \end{macro}
% \begin{macro}{\ltr@len@refwidth}
% \changes{v2.8q}{2001/10/06}{Neu}
% Breite der Geschäftszeile.
% \begin{macrocode}
\@newplength{refwidth}
% \end{macrocode}
% \end{macro}
% \begin{macro}{\ltr@len@refhpos}
% \changes{v2.9l}{2003/01/28}{Neu}
% 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}
% 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}
% 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}
% 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}
% 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}
% 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}
% 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}
% 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}
% 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}
% 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}
% 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}
% \begin{macro}{\@firstfoot}
% \changes{v3.08}{2010/10/28}{der Fuß des Briefbogens wird über eine
% Variable realisiert}
% \begin{KOMAvar}{firstfoot}
% \changes{v3.08}{2010/10/28}{Neu}
% \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 derzeit über die |\opening|-Anweisung, die in
% einem späteren Abschnitt implementiert ist.
%
% \begin{macro}{\move@topt}
% \changes{v2.8n}{2001/09/07}{Neu}
% 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}
% 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}
% 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}
% 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}
% \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]{{%
\setbox0\vbox to\z@{#1\vss}%
\setparsizes{\z@}{\z@}{\z@ plus 1fil}\par@updaterelative
\setlength{\baselineskip}{\z@}%
\setlength{\@tempdima}{\ht0}\addtolength{\@tempdima}{\dp0}%
\box0\vskip-\@tempdima%
}%
}
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\@foldmarks}
% \changes{v2.97e}{2007/11/08}{\texttt{mfoldmarkvpos} wird verwendet}
% 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)}
% Dabei werden nur die horizontalen Faltmarken gesetzt, die tatsächlich
% existieren.
% \begin{macro}{\@foldmark}
% \changes{v2.8n}{2001/09/07}{Neu}
% \changes{v2.95}{2006/06/06}{\cs{vskip} in \cs{vb@t@z} verschoben, damit es
% vom Satzspiegel unabhängig wird}
% \changes{v2.97c}{2007/05/08}{Dicke konfigurierbar}
% \changes{v2.97c}{2007/05/08}{Schrift (Farbe) konfigurierbar}
% 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}
\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
}
\newcommand*{\@hfoldmark}[1]{%
\begingroup
\@expandtwoargs\in@{#1}{\@usefolds}%
\ifin@
\lowercase{%
\edef\@tempa{%
\noexpand\ifdim \noexpand\useplength{#1foldmarkvpos}=\noexpand\z@
\noexpand\else
\noexpand\@foldmark{%
\noexpand\useplength{#1foldmarkvpos}%
}{%
\noexpand\useplength{#1foldmarklength}%
}%
\noexpand\fi
}%
}%
\@tempa
\fi
\endgroup
}
% \end{macrocode}
% \begin{macro}{\@vfoldmark}
% \changes{v2.97e}{2007/11/10}{Neu (intern)}
% 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
\@expandtwoargs\in@{#1}{\@usefolds}%
\ifin@
\ifdim \useplength{lfoldmarkhpos}=\z@\else
\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
\fi
\fi
\endgroup
}
\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}
% \changes{v2.8q}{2001/10/30}{zusätzlich ein optionales Argument}
% \begin{macro}{\if@savevbox@warning}
% \begin{macro}{\@savevbox@warningtrue}
% \begin{macro}{\@savevbox@warningfalse}
% \changes{v2.8q}{2001/10/30}{Neu}
% 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%
\setbox0\vbox{#3}%
\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}
% \changes{v2.8q}{2001/10/30}{\cs{parfillskip} lokal auf 0 gesetzt}
% \changes{v2.8q}{2001/10/30}{Fuß explizit in eine Box gesetzt}
% \changes{v2.9l}{2003/01/23}{Positionierung verbessert}
% \changes{v2.97e}{2007/11/22}{Optionen \texttt{firsthead} und
% \texttt{firstfoot} beachten}
% \changes{v3.05}{2009/11/09}{neue Pseudo-Länge \texttt{firstheadhpos}
% beachtet}
% \changes{v3.05}{2009/11/09}{neue Pseudo-Länge \texttt{firstfoothpos}
% beachtet}
% 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.
% \begin{macrocode}
\newcommand*{\@firstheadfootfield}{%
\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}
% \changes{v2.8q}{2002/06/03}{Sonderbehandlung für Adressfeld rechts}
% \changes{v2.9o}{2003/02/20}{\cs{noindent} eingefügt bei
% \texttt{specialmail}}
% \changes{v2.96}{2006/07/31}{Benutzung von \cs{backaddr@format}}
% \changes{v3.03}{2009/03/04}{Priorität kann Versandart ersetzen}
% \changes{v3.03}{2009/03/04}{Neue Anschriftmodi \texttt{PP},
% \texttt{backgroundimage}, \texttt{addresseeimage}}
% \changes{v3.03b}{2009/06/30}{Schreibfehler bei »addressee« korrigiert}
% \changes{v3.06a}{2010/07/29}{Absatzparameter werden passend eingestellt}
% 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}
\newcommand*{\@addrfield}{%
\ifcase \@afieldmode\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%
\def\\{\usekomavar{backaddressseparator}\@ogobble}%
\backaddr@format{\scriptsize\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}}}%
}%
\vfil%
\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}}}}%
\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
\setbox\@tempboxa\hbox{%
{\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}\unskip\strut\\
\usekomavar{place}\unskip\strut
\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}}}}%
\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)}
% 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}
% 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}
% \changes{v2.8q}{2002/06/03}{Sonderbehandlung für Adressfeld rechts}
% Das "`locfield"' wird unabhängig von der Adresse gesetzt.
% \begin{macrocode}
\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}
% \changes{v2.98b}{2008/01/30}{Absenderergänzung immer setzen, wenn
% verwendet}
% 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}
% \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}
% 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)}
% 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}
% 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}}%
\setbox0\hbox{\strut\usekomafont{refname}\usekomavar*{#1}}%
\ifdim \@tempdima<\wd0\setlength{\@tempdima}{\wd0}\fi
\if@tempswa\enskip\hfill\fi
\parbox[t]{\@tempdima}{\noindent\raggedright
\strut\box0\\\usekomafont{refvalue}\strut\usekomavar{#1}}%
\@tempswatrue
}%
}
% \end{macrocode}
% \end{macro}
% \begin{macro}{\@test@reffield}
% \changes{v3.09}{2011/03/06}{Neu (intern)}
% 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}
% 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}
% 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}
% 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}
% \changes{v2.8o}{2001/09/18}{für den Brieftyp \texttt{KOMAold} anschließend
% einen zusätzlichen vertikalen Abstand eingefügt}
% \changes{v2.8q}{2001/11/13}{\cs{rlap} eingefügt}
% \changes{v2.8q}{2001/11/13}{\cs{@parskipfalse}\cs{@parskip@indent}}
% \changes{v2.8q}{2002/01/14}{Leertests entfernt, da in \cs{@set@reffield}
% bereits enthalten}
% \changes{v2.9l}{2003/01/28}{Berechnung von \texttt{refwidth} an die
% Dokumentation angepasst}
% \changes{v2.9l}{2003/01/28}{Berechnung von \texttt{refhpos} hinzugefügt}
% \changes{v2.95}{2006/03/23}{Absatzeinzug mit \cs{setparsizes} abschalten}
% \changes{v2.97c}{2007/05/14}{Neue Font-Elemente}
% \changes{v3.09}{2011/03/06}{\cs{do@set@reffield} muss initialisiert
% werden}
% \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.
% \begin{macrocode}
\setbox0\hbox{\usekomafont{refname}\strutbox}%
\ifdim\ht0>\ht\strutbox
% \ClassWarningNoLine{scrlttr2}{%
% \PackageWarningNoLine{scrletter}{%
Font element `refname' should not be larger than
\string\normalsize!}%
\fi
\setbox0\hbox{\usekomafont{refvalue}\strutbox}%
\ifdim\ht0>\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}
% \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
% \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}
% einstellen}%^^A
% \changes{v3.01}{2008/11/03}{Verwendung der neuen Pseudolängen
% \texttt{subjectbeforevskip} und \texttt{subjectaftervskip}}%^^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{title}\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{subject}%
\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}
% \begin{macro}{\@nexthead}
% \changes{v3.08}{2010/10/28}{der Kopf der Folgeseiten wird über eine
% Variable realisiert}
% \begin{KOMAvar}{nexthead}
% \changes{v3.08}{2010/10/28}{Neu}
% 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}
% \begin{macro}{\@nextfoot}
% \changes{v3.08}{2010/10/28}{der Fuß der Folgeseiten wird über eine
% Variable realisiert}
% \begin{KOMAvar}{nextfoot}
% \changes{v3.08}{2010/10/28}{Neu}
% 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}
% \changes{v2.8q}{2002/01/16}{Fußnotenzähler wird zurückgesetzt}
% \changes{v2.9d}{2002/08/12}{Fußnotenzähler wird korrekt zurückgesetzt}
% 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}
% Als erstes wird eine neue Seite begonnen. Dies kann ggf. auch eine neue
% rechte Seite sein. Danach werden alle relevanten Zähler und Strafpunkte
% zurückgesetzt und der obligatorische Parameter ausgewertet.
% \begin{macrocode}
\newpage
\if@twoside\ifodd\c@page\else\thispagestyle{empty}\null\newpage\fi\fi
\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}
% Zum Schluss werden die per \cs{AtBeginLetter} angegeben Anweisungen
% ausgeführt.
% \begin{macrocode}
\@beginletterhook
}{%
\stopletter\@@par\pagebreak\@@par%
}
% \end{macrocode}
% \begin{macro}{\stopletter}
% Damit man Material am Ende des Briefes einschleusen kann.
% \begin{macro}{\@processto}
% \changes{v2.9r}{2004/06/16}{robust gegen leeren Empfänger}
% \begin{macro}{\@xproc}
% Die Adresse, die als Argument der Briefumgebung übergeben wird, muss in Name
% und Adresse zerlegt werden.
% \begin{macrocode}
\newcommand*{\stopletter}{}
\newcommand{\@processto}[1]{%
\ifx\relax#1\relax\else
\expandafter\@xproc#1\\\@nil\ifkomavarempty{toaddress}{}{%
\expandafter\@xproc#1\@nil}%
\fi
}
\newcommand*{\@xproc}{}
\long\def\@xproc#1\\#2\@nil{%
\setkomavar{toname}{#1}\setkomavar{toaddress}{#2}}
% \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
% \begin{macro}{\flushbottom}
% \changes{v2.97c}{2007/05/17}{neue Erweiterung}
% 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}
% \end{environment}
%
% \begin{macro}{\AtBeginLetter}
% \changes{v2.8n}{2001/09/08}{Neu}
% \begin{macro}{\@beginletterhook}
% \changes{v2.8n}{2001/09/08}{Neu}
% 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}
% 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}
% \begin{macro}{\@nobreakvspace}
% \begin{macro}{\@nobreakvspacex}
% \begin{macro}{\@nobreakcr}
% 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}
\newcommand*{\@nobreakvspace}{%
\@ifstar{\@nobreakvspacex}{\@nobreakvspacex}}
\newcommand*{\@nobreakvspacex}[1]{\ifvmode\nobreak\vskip #1\relax\else
\@bsphack\vadjust{\nobreak\vskip #1}\@esphack\fi}
\newcommand*{\@nobreakcr}{%
\vadjust{\penalty\@M}\@ifstar{\@xnewline}{\@xnewline}}
\newcommand*{\startbreaks}{\let\\=\@normalcr
\interlinepenalty 200\def\par{\@@par\penalty 200}}
% \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\opening}
% \changes{v2.8n}{2001/09/08}{Komplett überarbeitet}
% \changes{v2.8q}{2001/11/13}{\cs{@parskipfalse}\cs{@parskip@indent}}
% \changes{v2.8q}{2002/03/25}{\cs{@PapersizeWarning}}
% \changes{v2.95}{2003/03/23}{Absatzformatierung mit \cs{setparsizes}
% einstellen}
% 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}
% \changes{v2.5d}{2000/06/10}{Abstand zwischen Schlussgruß und Signatur
% variabel}
% \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}
% 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}
% \changes{v2.8q}{2001/10/09}{Ersetzt durch Pseudo-Länge sigbeforevskip}
% \end{macro}
% \begin{macro}{\setpresigskip}
% \changes{v2.5d}{2000/06/10}{Neues Makro, das den Abstand zwischen
% Schlussgruß und Signatur setzt}
% \changes{v2.8q}{2001/10/09}{Mit Hilfe der neuen Pseudo-Längen definiert}
% 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)}
% \begin{macro}{\@@xtrimtempa}
% \changes{v2.8q}{2002/02/05}{Neu (intern)}
% Die beiden internen Macros werden benötigt, um beim Zerlegen eines mit
% \texttt{\cmd{\\}[\cs{dots}]} zusammengesetzten Arguments das optionale
% Argument in eckigen Klammern abzutrennen. Das Ergebnis steht anschließend in
% \cs{@tempa}.
% \begin{macrocode}
\newcommand*{\@xtrimtempa}{%
\@ifnextchar [{\@@xtrimtempa}{\@@xtrimtempa[]}}
\newcommand*{\@@xtrimtempa}{}
\def\@@xtrimtempa[#1]#2\@nil{\def\@tempa{#2}}
% \end{macrocode}
% \end{macro}
% \end{macro}
% \begin{macro}{\@tempdimaismaxwidthof}
% \changes{v2.8q}{2002/02/05}{Neu (intern)}
% Das Makro zerlegt ein mit \texttt{\cmd{\\}[\cs{dots}]} zusammengesetzten
% Arguments und merkt in \cs{@tempdima} die Länge des längsten
% Elements. \cs{@tempdima} enthält beim Aufruf die minimale Länge.
% \begin{macrocode}
\newcommand*{\@tempdimaismaxwidthof}{}
\def\@tempdimaismaxwidthof#1\\#2\@nil{%
\settowidth{\@tempdimb}{\strut\ignorespaces#1}%
\ifdim\@tempdima<\@tempdimb\setlength{\@tempdima}{\@tempdimb}\fi
\def\@tempa{#2}\ifx\@tempa\@empty
\let\@tempb\relax
\else
\expandafter\@xtrimtempa\@tempa\@nil
\def\@tempb{\expandafter\@tempdimaismaxwidthof\@tempa\@nil}%
\fi
\@tempb
}
% \end{macrocode}
% \end{macro}
% Jetzt endlich zum eigentichen Befehl.
% \changes{v2.9r}{2004/01/28}{Längenbegrenzung auf \cs{hsize}}
% \changes{v2.9r}{2004/01/28}{das Argument darf leer sein}
% \begin{macrocode}
\newcommand*{\closing}[1]{{%
\setparsizes{\z@}{\z@}{\z@ plus 1fil}\par@updaterelative\nobreak\par%
\nobreak\vskip\baselineskip%
\stopbreaks\noindent%
\setlength{\@tempdima}{0pt}%
\expandafter\@tempdimaismaxwidthof\scr@signature@var\\\@nil
\expandafter\@tempdimaismaxwidthof\strut\ignorespaces#1\\\@nil
\setlength{\@tempdimb}{\hsize}%
\addtolength{\@tempdimb}{-\useplength{sigindent}}%
\ifdim\@tempdima>\@tempdimb\setlength{\@tempdima}{\@tempdimb}\fi%
\hspace{\useplength{sigindent}}%
\parbox{\@tempdima}{\raggedsignature\strut\ignorespaces%
#1\strut\\[\useplength{sigbeforevskip}]
\strut\usekomavar{signature}\strut}}\par
\nobreak\vskip\baselineskip%
}
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\ps}
% \changes{v2.8n}{2001/09/08}{Komplett überarbeitet}
% 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}
% \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*{\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}
% \changes{v2.8q}{2002/01/31}{Fehlendes \% ergänzt}
% \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}
% \begin{KOMAvar}{place}
% \changes{v2.8q}{2002/01/16}{Neu}
% \begin{KOMAvar}{location}
% \changes{v2.8q}{2002/01/16}{Neu}
% \begin{KOMAvar}{backaddress}
% \changes{v2.8q}{2002/01/16}{Neu}
% \begin{KOMAvar}{specialmail}
% \changes{v2.8q}{2002/01/16}{Neu}
% \begin{KOMAvar}{title}
% \changes{v2.8q}{2002/01/16}{Neu}
% \begin{KOMAvar}{fromlogo}
% \changes{v2.8q}{2002/01/28}{Neu}
% \begin{KOMAvar}{fromzipcode}
% \changes{v3.03}{2009/03/04}{Neu}
% \begin{KOMAvar}{PPcode}
% \changes{v3.03}{2009/03/04}{Neu}
% \begin{KOMAvar}{PPdatamatrix}
% \changes{v3.03}{2009/03/04}{Neu}
% \begin{KOMAvar}{addresseeimage}
% \changes{v3.03}{2009/03/04}{Neu}
% \changes{v3.03b}{2009/06/30}{Schreibfehler korrigiert}
% 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/2013}{neue Option}
% \begin{macro}{\if@scrsymbols}
% \changes{v3.12}{2013/05/2013}{neu (intern)}
% \begin{macro}{\@scrsymbolstrue}
% \changes{v3.12}{2013/05/2013}{neu (intern)}
% \begin{macro}{\@scrsymbolsfalse}
% \changes{v3.12}{2013/05/2013}{neu (intern)}
% Über diese Option kann eingestellt werden, dass an Stelle von
% sprachabhängigen Bezeichnern für einige Variablen Symbole verwendet
% werden. Daztu wird das Paket \textsf{macrosym} benötigt.
% \begin{macrocode}
%
%