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