From 9b219d1b664067729034647a4b37626cf2bf5e26 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Thu, 26 Dec 2013 23:18:36 +0000 Subject: koma-script (26dec13) git-svn-id: svn://tug.org/texlive/trunk@32489 c570f23f-e606-0410-a88d-b1316a301751 --- .../latex/koma-script/scrkernel-notepaper.dtx | 3657 ++++++++++++++++++++ 1 file changed, 3657 insertions(+) create mode 100644 Master/texmf-dist/source/latex/koma-script/scrkernel-notepaper.dtx (limited to 'Master/texmf-dist/source/latex/koma-script/scrkernel-notepaper.dtx') diff --git a/Master/texmf-dist/source/latex/koma-script/scrkernel-notepaper.dtx b/Master/texmf-dist/source/latex/koma-script/scrkernel-notepaper.dtx new file mode 100644 index 00000000000..a6e52722c9b --- /dev/null +++ b/Master/texmf-dist/source/latex/koma-script/scrkernel-notepaper.dtx @@ -0,0 +1,3657 @@ +% \CheckSum{3156} +% \iffalse meta-comment +% ====================================================================== +% scrkernel-notepaper.dtx +% Copyright (c) Markus Kohm, 2006-2013 +% +% 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-2013 +% +% 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 1380 2013-10-01 15:31:55Z mjk $ +%<*driver> +% \fi +\ProvidesFile{scrkernel-notepaper.dtx}[2013/07/31 v3.12 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} +\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} +% 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} +\newcommand*{\@firsthead}{% + \ClassWarning{scrlttr2}{% + Deprecated usage of \string\@firsthead.\MessageBreak + \string\usekomavar{firsthead} should be used\MessageBreak + instead of \string\@firsthead + }% + \usekomavar{firsthead}% +} +\newkomavar{firsthead} +\setkomavar{firsthead}{% + \parbox[b]{\useplength{firstheadwidth}}% + {\centering\usekomafont{fromaddress}{% + \ifkomavarempty{fromname}{}{% + {\usekomafont{fromname}% + {\ignorespaces\usekomavar{fromname}}}\\[-8pt] + {\usekomafont{fromrule}{\rule{\useplength{firstheadwidth}}{.4pt}}}\\ + }% + \ifkomavarempty{fromaddress}{}{% + \ignorespaces\usekomavar{fromaddress}% + }% + }% + }% +} +% \end{macrocode} +% \end{KOMAvar} +% \begin{macro}{\scr@firsthead@postsetvar} +% \changes{v3.08}{2010/10/28}{Neu (intern)} +% Ü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} +\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} +\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} +\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} +\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} +\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% + }{% + #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{scrlttr}{% + Font element `refname' should not be larger than + \string\normalsize!}% + \fi + \setbox0\hbox{\usekomafont{refvalue}\strutbox}% + \ifdim\ht0>\ht\strutbox + \ClassWarningNoLine{scrlttr}{% + 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}} +% \changes{v2.8p}{2001/09/22}{\cs{titlefont} an Stelle von \cs{sectfont}} +% \changes{v2.8q}{2001/11/13}{\cs{@parskipfalse}\cs{@parskip@indent}} +% \changes{v2.9t}{2004/09/16}{\cs{par} in Größe und Schrift des Titels} +% \changes{v2.95}{2006/03/22}{\cs{usekomafont} and Stelle fon \cs{titlefont}} +% \begin{macro}{\@subjfield} +% \changes{v2.8q}{2001/10/19}{\cs{centerline} durch \cs{centering} +% ersetzt} +% \changes{v2.8q}{2001/11/13}{\cs{@parskipfalse}\cs{@parskip@indent}} +% \changes{v2.8q}{2002/01/31}{wird mit hängendem Einzug gesetzt} +% \changes{v2.95}{2006/03/23}{Absatzeinzug mit cs{setparsizes} einstellen} +% \changes{v3.01}{2008/11/03}{Verwendung der neuen Pseudolängen +% \texttt{subjectbeforevskip} und \texttt{subjectaftervskip}} +% Der eigentliche Titel wir mit |\@maketitle| gesetzt. Dies sollte jedoch +% ebenso wie beim Betreff (|\@subjfield|) \emph{nicht} manuell geschehen. +% \begin{macrocode} +\newcommand*{\@maketitle}{% + \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} +\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} +\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} +\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} +\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 + \@maketitle + \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} +% +% +%<*option&letter> +\newif\if@scrsymbols +\KOMA@key{symbolicnames}[true]{% + \KOMA@set@ifkey{symbolicnames}{@scrsymbols}{#1}% + \if@scrsymbols + \if@atdocument + \begingroup + \@tempswafalse + \scr@ifundefinedorrelax{Telefon}{\@tempswatrue}{% + \scr@ifundefinedorrelax{FAX}{\@tempswatrue}{% + \scr@ifundefinedorrelax{Email}{\@tempswatrue}{% + \scr@ifundefinedorrelax{Mobilefone}{\@tempswatrue}{% + }% + }% + }% + }% + \if@tempswa + \aftergroup\@scrsymbolsfalse + \ClassWarning{scrlttr2}{Option `symbolicnames' + ignorred.\MessageBreak + You've tried to set option `symbolicnames'\MessageBreak + after \string\begin{document}, but without\MessageBreak + loading package `marvosym' before.\MessageBreak + You should either switch on option\MessageBreak + `symbolicnames' before \string\begin{document}\MessageBreak + or load package `marvosym' in the document\MessageBreak + preamble to avoid this warning% + }% + \fi + \endgroup + \else + \ifstr{\@currname.\@currext}{scrlttr2.cls}{% + \expandafter\AtEndOfClass + }{% + \expandafter\@firstofone + }% + {\RequirePackage{marvosym}}% + \fi + \fi +} +% +%<*body> +%<*letter> +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{option} +% +% \begin{KOMAvar}{placeseparator} +% \changes{v2.8q}{2002/01/16}{Neu} +% \begin{KOMAvar}{subjectseparator} +% \changes{v2.8q}{2002/01/16}{Neu} +% \begin{KOMAvar}{ccseparator} +% \changes{v2.8q}{2002/01/16}{Neu} +% \begin{KOMAvar}{enclseparator} +% \changes{v2.8q}{2002/01/16}{Neu} +% \begin{KOMAvar}{backaddressseparator} +% \changes{v2.8q}{2002/01/22}{Neu} +% \begin{KOMAvar}{phoneseparator} +% \changes{v2.8q}{2002/03/25}{Neu} +% \changes{v3.12}{2013/05/29}{Option \texttt{symbolicnames} wird beachtet} +% \begin{KOMAvar}{faxseparator} +% \changes{v2.8q}{2002/03/25}{Neu} +% \changes{v3.12}{2013/05/29}{Option \texttt{symbolicnames} wird beachtet} +% \begin{KOMAvar}{emailseparator} +% \changes{v2.8q}{2002/03/25}{Neu} +% \changes{v3.12}{2013/05/29}{Option \texttt{symbolicnames} wird beachtet} +% \begin{KOMAvar}{urlseparator} +% \changes{v2.8q}{2002/03/25}{Neu} +% \changes{v3.12}{2013/05/29}{Option \texttt{symbolicnames} wird beachtet} +% \begin{KOMAvar}{mobilephoneseparator} +% \changes{v3.12}{2013/05/29}{Neu} +% \begin{KOMAvar}{zipcodeseparator} +% \changes{v3.03}{2009/03/04}{Neu} +% Daneben gibt es einige Trennzeichen. Diese haben ggf. als Ausgabenamen das +% Feld, für das sie als Trennzeichen dienen. Die Trennzeichen sind +% vordefiniert. +% \begin{macrocode} +\newkomavar[\usekomavar{place}]{placeseparator} +\setkomavar{placeseparator}{,\nobreakspace} +\newkomavar[\subjectname]{subjectseparator} +\setkomavar{subjectseparator}{: } +\newkomavar[\ccname]{ccseparator} +\setkomavar{ccseparator}{: } +\newkomavar[\enclname]{enclseparator} +\setkomavar{enclseparator}{: } +\newkomavar{backaddressseparator} +\setkomavar{backaddressseparator}{,\nobreakspace} +\newkomavar[\if@scrsymbols\Telefon\else\phonename\fi]{phoneseparator} +\setkomavar{phoneseparator}{\if@scrsymbols\else:\fi\nobreakspace} +\newkomavar[% + \if@scrsymbols\Mobilefone\else\mobilephonename\fi +]{mobilephoneseparator} +\setkomavar{mobilephoneseparator}{\usekomavar{phoneseparator}} +\newkomavar[\if@scrsymbols\FAX\else\faxname\fi]{faxseparator} +\setkomavar{faxseparator}{\if@scrsymbols\else:\fi\nobreakspace} +\newkomavar[\if@scrsymbols\Email\else\emailname\fi]{emailseparator} +\setkomavar{emailseparator}{\if@scrsymbols\else:\fi\nobreakspace} +\newkomavar[\if@scrsymbols\else\wwwname\fi]{urlseparator} +\setkomavar{urlseparator}{\if@scrsymbols\else:\nobreakspace\fi} +\newkomavar{zipcodeseparator} +\setkomavar{zipcodeseparator}{\,--\,} +% \end{macrocode} +% \end{KOMAvar} +% \end{KOMAvar} +% \end{KOMAvar} +% \end{KOMAvar} +% \end{KOMAvar} +% \end{KOMAvar} +% \end{KOMAvar} +% \end{KOMAvar} +% \end{KOMAvar} +% \end{KOMAvar} +% \end{KOMAvar} +% +% \begin{KOMAvar}{fromname} +% \changes{v2.8q}{2002/01/16}{Neu} +% \begin{KOMAvar}{fromaddress} +% \changes{v2.8q}{2002/01/16}{Neu} +% \begin{KOMAvar}{fromemail} +% \changes{v2.8q}{2002/01/28}{Neu} +% \begin{KOMAvar}{fromurl} +% \changes{v2.8q}{2002/01/28}{Neu} +% \begin{KOMAvar}{frombank} +% \changes{v2.8q}{2002/01/28}{Neu} +% \begin{KOMAvar}{toname} +% \changes{v2.8q}{2002/01/16}{Neu} +% \begin{KOMAvar}{toaddress} +% \changes{v2.8q}{2002/01/16}{Neu} +% \begin{KOMAvar}{fromphone} +% \changes{v2.8q}{2002/01/16}{Neu} +% \begin{KOMAvar}{frommobilephone} +% \changes{v3.12}{2013/05/29}{Neu} +% \begin{KOMAvar}{fromfax} +% \changes{v2.8q}{2002/01/28}{Neu} +% \begin{KOMAvar}{yourmail} +% \changes{v2.8q}{2002/01/16}{Neu} +% \begin{KOMAvar}{yourref} +% \changes{v2.8q}{2002/01/16}{Neu} +% \begin{KOMAvar}{myref} +% \changes{v2.8q}{2002/01/16}{Neu} +% \begin{KOMAvar}{customer} +% \changes{v2.8q}{2002/01/16}{Neu} +% \begin{KOMAvar}{invoice} +% \changes{v2.8q}{2002/01/16}{Neu} +% \begin{KOMAvar}{subject} +% \changes{v2.8q}{2002/01/16}{Neu} +% \begin{KOMAvar}{date} +% \changes{v2.8q}{2002/01/16}{Neu} +% Desweiteren gibt es einige Variable, die auch einen Ausgabenamen haben, weil +% dieser üblicherweise vorangestellt wird. Eine Besonderheit stellt dabei +% \texttt{subject} dar. Der Ausgabename beinhaltet dabei nämlich auch die +% Trennzeichen, die hinter dem Namen üblicherweise stehen. Diese sind wiederum +% ein Variable, deren Name der Ausgabename des Feldes ist. Will man also nur +% den Namen aber nicht die Trennzeichen ändern, so ändert man statt dem Namen +% von \texttt{subject} den Namen von \texttt{subjectseparator}. +% +% Ähnlich ist es mit \texttt{toaddress} und \texttt{fromaddress}. Dort ist der +% Wert von \texttt{toname} bzw. \texttt{fromname} der Ausgabename. Bei +% \texttt{toaddress} und \texttt{fromaddress} wird davon jedoch intern kein +% Gebrauch gemacht. Die Variable \texttt{date} wird bereits so vordefiniert, +% dass auch weiterhin \cs{date} funktioniert. +% \begin{macrocode} +\newkomavar[\headfromname]{fromname} +\newkomavar[\usekomavar{fromname}]{fromaddress} +\newkomavar[\headtoname]{toname} +\newkomavar[\usekomavar{toname}]{toaddress} +\newkomavar[\usekomavar*{phoneseparator}% + \usekomavar{phoneseparator}]{fromphone} +\newkomavar[\usekomavar*{mobilephoneseparator}% + \usekomavar{mobilephoneseparator}]{frommobilephone} +\newkomavar[\usekomavar*{faxseparator}% + \usekomavar{faxseparator}]{fromfax} +\newkomavar[\usekomavar*{emailseparator}% + \usekomavar{emailseparator}]{fromemail} +\newkomavar[\usekomavar*{urlseparator}% + \usekomavar{urlseparator}]{fromurl} +\newkomavar[\bankname]{frombank} +\newkomavar[\yourrefname]{yourref} +\newkomavar[\yourmailname]{yourmail} +\newkomavar[\myrefname]{myref} +\newkomavar[\customername]{customer} +\newkomavar[\invoicename]{invoice} +\newkomavar[\usekomavar*{subjectseparator}% + \usekomavar{subjectseparator}]{subject} +\newkomavar[\datename]{date} +\setkomavar{date}{\@date} +% \end{macrocode} +% \end{KOMAvar} +% \end{KOMAvar} +% \end{KOMAvar} +% \end{KOMAvar} +% \end{KOMAvar} +% \end{KOMAvar} +% \end{KOMAvar} +% \end{KOMAvar} +% \end{KOMAvar} +% \end{KOMAvar} +% \end{KOMAvar} +% \end{KOMAvar} +% \end{KOMAvar} +% \end{KOMAvar} +% \end{KOMAvar} +% \end{KOMAvar} +% \end{KOMAvar} +% +% \iffalse +% +% \fi +% +% \iffalse +% +% \fi +% +% \Finale +% +\endinput +% +% end of file `scrkernel-notepaper.dtx' +%%% Local Variables: +%%% mode: doctex +%%% TeX-master: t +%%% End: -- cgit v1.2.3