% \CheckSum{1687} % \iffalse meta-comment % ====================================================================== % scrknpap.dtx % Copyright (c) Markus Kohm, 2006 % % 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.3b of the license. % The latest version of this license is in % http://www.latex-project.org/lppl.txt % and version 1.3b 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. % ---------------------------------------------------------------------- % scrknpap.dtx % Copyright (c) Markus Kohm, 2006 % % Dieses Werk darf nach den Bedingungen der LaTeX Project Public Lizenz, % Version 1.3b, verteilt und/oder veraendert werden. % Die neuste Version dieser Lizenz ist % http://www.latex-project.org/lppl.txt % und Version 1.3b 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: scrknpap.dtx %<*driver> % \fi \ProvidesFile{scrknpap.dtx}[2006/06/06 v2.95 KOMA-Script (note-paper)] % \iffalse \documentclass{scrdoc} \usepackage[english,ngerman]{babel} \usepackage[latin1]{inputenc} \CodelineIndex \RecordChanges \GetFileInfo{scrknpap.dtx} \title{\KOMAScript{} \partname\ \texttt{\filename}% \footnote{Dies ist Version \fileversion\ von Datei \texttt{\filename}.}} \date{\filedate} \author{Markus Kohm} \begin{document} \maketitle \tableofcontents \DocInput{\filename} \end{document} % % \fi % % \selectlanguage{ngerman} % % \changes{v2.95}{2006/03/16}{% % erste Version aus der Aufteilung von \textsf{scrclass.dtx}} % % \section{Briefbogen und Briefpapier} % % Bei Briefen kommt dem Briefbogen, also dem ersten Blatt des Briefes eine % besondere Bedeutung zu. Dieser ist bei \texttt{scrlttr2} durch diverse % Optionen, Variablen, Pseudo-Längen und Anweisungen bestimmt. Die weiteren % Briefseiten werden hier verinfacht als das Briefpapier bezeichnet. Natürlich % ist genau genommen auch der Briefbogen Briefpapier, aber eben ein besonderes. % % \StopEventually{\PrintIndex\PrintChanges} % % \iffalse %<*option> % \fi % % \iffalse %<*letter> % \fi % % \subsection{Option für den Briefbogen} % % Gerade der Briefbogen ist durch eine ganze Anzahl von Optionen % konfigurierbar. Daher wird hier weiter thematisch untergliedert. % % % \subsubsection{Optionen für den Briefkopf} % % Die Gestaltung des Briefkopfes war bei der alten \texttt{scrlettr} % Klasse eng begrenzt. Deshalb hatte ich für mich selbst das % \texttt{briefkopf} Paket geschrieben und ohne Support % veröffentlicht. Die Funktionalität ist nun direkt verfügbar. Dazu % werden verschiedene Optionen benötigt. % % \begin{option}{fromalign} % \changes{v2.8q}{2002/01/25}{Neu} % 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} % 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 \\ % 10000 & nicht antasten \\ % \end{tabular} % \end{center} % Voreingestellt ist "`nicht antasten"'. % \begin{macrocode} \newcommand*{\@alignfrom}{0} \KOMA@ncmdkey{fromalign}{@alignfrom}{% {left}{0},% {center}{1},{centered}{1},{middle}{1},% {right}{2},% {no}{10000},{false}{10000},{off}{10000}% } % \end{macrocode} % \end{macro} % \end{option} % % \begin{option}{fromrule} % \changes{v2.8q}{2002/01/25}{Neu} % Es kann gewählt werden, ob im Absender nach dem Namen oder nach dem % gesamten Absender eine Linie gesetzt werden soll. % \begin{macro}{\@rulefrom} % \changes{v2.8q}{2002/01/25}{Neu} % Die Einstellung wird in einem nummerisch auszuwertenden Makro % gespeichert. Dabei gelten folgende Werte: % \begin{center} % \begin{tabular}{rl} % Wert & Absenderlinie \\\hline % 0 & keine \\ % 1 & unter dem Name \\ % 2 & unter der Adresse \\ % \end{tabular} % \end{center} % Voreingestellt ist keine Linie. % \begin{macrocode} \newcommand*{\@rulefrom}{0} \KOMA@ncmdkey{fromrule}[below]{@rulefrom}{% {false}{0},{no}{0},{off}{0},{aftername}{1},% {below}{2},{afteraddress}{2},{true}{2},{yes}{2},{on}{2}% } % \end{macrocode} % \end{macro} % \end{option} % % \begin{option}{fromphone} % \changes{v2.8q}{2002/01/25}{Neu} % Ob die Telefonnummer im Absender gesetzt werden soll oder nicht, % kann hier angegeben werden. % \begin{macro}{\if@phone} % \changes{v2.8q}{2002/01/25}{Neu} % \begin{macro}{\@phonetrue} % \changes{v2.8q}{2002/01/25}{Neu} % \begin{macro}{\@phonefalse} % \changes{v2.8q}{2002/01/25}{Neu} % Gespeichert wird die Information in einem einfachen Schalter. % Voreingestellt ist keine Telefonnummer im Absender. % \begin{macrocode} \KOMA@ifkey{fromphone}{@phone} % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % \end{option} % % \begin{option}{fromfax} % \changes{v2.8q}{2002/01/25}{Neu} % Ob die Faxnummer im Absender gesetzt werden soll oder nicht, % kann hier angegeben werden. % \begin{macro}{\if@fax} % \changes{v2.8q}{2002/01/25}{Neu} % \begin{macro}{\@faxtrue} % \changes{v2.8q}{2002/01/25}{Neu} % \begin{macro}{\@faxfalse} % \changes{v2.8q}{2002/01/25}{Neu} % Gespeichert wird die Information in einem einfachen Schalter. % Voreingestellt ist keine Faxnummer im Absender. % \begin{macrocode} \KOMA@ifkey{fromfax}{@fax} % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % \end{option} % % \begin{option}{fromemail} % \changes{v2.8q}{2002/01/25}{Neu} % Ob die E-Mail-Adresse im Absender gesetzt werden soll oder nicht, % kann hier angegeben werden. % \begin{macro}{\if@email} % \changes{v2.8q}{2002/01/25}{Neu} % \begin{macro}{\@emailtrue} % \changes{v2.8q}{2002/01/25}{Neu} % \begin{macro}{\@emailfalse} % \changes{v2.8q}{2002/01/25}{Neu} % Gespeichert wird die Information in einem einfachen Schalter. % Voreingestellt ist keine E-Mail-Adresse im Absender. % \begin{macrocode} \KOMA@ifkey{fromemail}{@email} % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % \end{option} % % \begin{option}{fromurl} % \changes{v2.8q}{2002/01/25}{Neu} % Ob die URL auf eine Homepage im Absender gesetzt werden soll oder % nicht, kann hier angegeben werden. % \begin{macro}{\if@www} % \changes{v2.8q}{2002/01/25}{Neu} % \begin{macro}{\@wwwtrue} % \changes{v2.8q}{2002/01/25}{Neu} % \begin{macro}{\@wwwfalse} % \changes{v2.8q}{2002/01/25}{Neu} % Gespeichert wird die Information in einem einfachen Schalter. % Voreingestellt ist keine URL im Absender. % \begin{macrocode} \KOMA@ifkey{fromurl}{@www} % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % \end{option} % % \begin{option}{fromlogo} % \changes{v2.8q}{2002/01/25}{Neu} % Ob ein Logo in den Briefkopf gesetzt werden soll oder % nicht, kann hier angegeben werden. % \begin{macro}{\if@logo} % \changes{v2.8q}{2002/01/25}{Neu} % \begin{macro}{\@logotrue} % \changes{v2.8q}{2002/01/25}{Neu} % \begin{macro}{\@logofalse} % \changes{v2.8q}{2002/01/25}{Neu} % Gespeichert wird die Information in einem einfachen Schalter. % Voreingestellt ist kein Logo im Briefkopf. % \begin{macrocode} \KOMA@ifkey{fromlogo}{@logo} % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % \end{option} % % % \subsubsection{Optionen für Anschrift und Absenderergänzung} % % \begin{option}{addrfield} % \changes{v2.8q}{2001/10/09}{Neu} % Das Adressfeld für Fensterumschläge kann mit \texttt{addrfield} ein- und % ausgeschaltet werden % \begin{macro}{\if@afield} % \begin{macro}{\if@afieldtrue} % \begin{macro}{\if@afieldfalse} % Die Speicherung erfolgt wiederum in einem Schalter. % \begin{macrocode} \newif\if@afield\@afieldtrue \KOMA@ifkey{addrfield}{@afield} % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % \end{option} % % \begin{option}{backaddress} % \changes{v2.8q}{2002/01/22}{Neu} % 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} % Die Einstellung der Option wird in einem Schalter gespeichert. % \begin{macrocode} \newif\if@baddr\@baddrtrue \KOMA@ifkey{backaddress}{@baddr} % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % \end{option} % % \begin{option}{locfield} % \changes{v2.8q}{2001/10/09}{Neu} % 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}% \ifcase\@tempa \endgroup \@biglocfalse \else \endgroup \@bigloctrue \fi } \DeclareOption{wlocfield}{\@ObsoleteOption{locfield=wide}} \DeclareOption{slocfield}{\@ObsoleteOption{locfield=narrow}} % \end{macrocode} % \end{option} % % % \subsubsection{Optionen für Faltmarken} % % \begin{option}{foldmarks} % \changes{v2.8q}{2001/09/10}{Neu} % 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 \KOMA@ifkey{foldmarks}{@fold} % \end{macrocode} % \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} % 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} % \begin{macro}{\@refwidetrue} % \begin{macro}{\@refwidefalse} % Gespeichert wird die Information in einem Schalter. % \begin{macrocode} \newif\if@refwide \KOMA@key{refline}[wide]{% \begingroup \KOMA@set@ncmdkey{refline}{@tempa}{{wide}{0},{narrow}{1}}{#1}% \ifcase\@tempa \endgroup \@refwidefalse \else \endgroup \@refwidetrue \fi } % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % \end{option} % % % \subsubsection{Optionen für den Betreff} % % \begin{option}{subject} % \changes{v2.8q}{2001/10/09}{Neu} % 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}{\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{locfield}{@tempa}{% {titled}{0},% {untitled}{1},% {afteropening}{2},% {beforeopening}{3}% }{#1}% \ifcase\@tempa \endgroup \@subjtrue \or \endgroup \@subjfalse \or \endgroup \@subjaftertrue \else \endgroup \@subjafterfalse \fi } % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{option} % % % \subsubsection{Optionen für den Satzspiegel} % % \begin{option}{enlargefirstpage} % \changes{v2.8o}{2001/09/18}{Neue Option} % Normalerweise wird der Text des Briefboges entsprechend dem % normalen Satzspiegel gesetzt. Ist allerdings der Fuß der ersten % Seite zu hoch, dann wird der Satzspiegel vertikal entsprechend % verkürzt. Mit der Option \texttt{firstpageenlarge} kann erzwungen % werden, dass im umgekehrten Fall, der Satzspiegel vertikal % verlängert wird. % \begin{macro}{\if@enlargefp} % \begin{macro}{\@enlargefptrue} % \begin{macro}{\@enlargefpfalse} % Gespeichert wird die Information über die Optionen in einem % Schalter. % \begin{macrocode} \KOMA@ifkey{enlargefirstpage}{@enlargefp} % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % \end{option} % % % \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} % Bei Briefen kann gewählt werden, ob auf Folgeseiten die Seitenzahl % im Kopf oder im Fuß stehen soll. Dabei kann zwischen Seitenzahl % rechts, links oder zentriert gewählt werden. Voreingestellt ist der % Fuß und mittig. % \begin{macro}{\@pageat} % \changes{v2.8q}{2002/01/31}{Neu} % In dieser nummerisch auswertbaren Variablen wird gespeichert, wo die % Seitenzahl stehen soll. Dabei gilt: % \begin{center}\begin{tabular}{rl} % Wert & Bedeutung für die Seitenzahl\\\hline % -1 & keine \\ % 0 & im Kopf links \\ % 1 & im Kopf mittig \\ % 2 & im Kopf rechts \\ % 3 & im Fuß links \\ % 4 & im Fuß mittig \\ % 5 & im Fuß rechts \\ % \end{tabular}\end{center} % \begin{macrocode} \newcommand*{\@pageat}{4} \KOMA@key{pagenumber}{% \begingroup \KOMA@set@ncmdkey{pagenumber}{@tempa}{% {no}{-1},{off}{-1},{false}{-1},% {topleft}{0},{headleft}{0},% {topmiddle}{1},{topcenter}{1},{topcentered}{1},% {headmiddle}{1},{headcenter}{1},{headcentered}{1},% {topright}{2},{headright}{2},% {botleft}{3},{footleft}{3},% {botmiddle}{4},{botcenter}{4},{botcentered}{4},% {footmiddle}{4},{footcenter}{4},{footcentered}{4},% {botright}{5},{footright}{5},% {top}{10},{head}{10},{bot}{11},{foot}{11},% {left}{20},{middle}{21},{center}{21},{centered}{21},{right}{22}% }{#1}% \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 \@tempa } % \end{macrocode} % \end{macro} % \end{option} % % % \iffalse % % %<*body> %<*letter> % \fi % % \subsection{Anweisungen für den Briefbogen} % % Auch bei den Anweisungen zunächst alles, was mit dem Briefbogen zu tun hat. % % \subsubsection{Der Kopf des Briefbogens} % % \begin{macro}{\firsthead} % \changes{v2.8q}{2002/01/28}{\cs{@alignfrom} auf 10000 gesetzt} % \begin{macro}{\@firsthead} % \begin{macro}{\@gen@firsthead} % \changes{v2.8q}{2002/01/28}{Neu} % Bei \texttt{scrlttr2} gibt es die üblichen Seitenstile, allerdings % ist deren Verhalten etwas anders als gewohnt. Dies ist in den % Besonderheiten für Briefen begründet. Zunächst die Voreinstellung für % Briefbögen. % \begin{macrocode} \newcommand*{\@firsthead}{\noindent% \parbox[b]{\useplength{firstheadwidth}}% {\centering\usekomafont{fromaddress}{% \ifkomavarempty{fromname}{}{% {\usekomafont{fromname}% {\ignorespaces\usekomavar{fromname}}}\\[-8pt] \rule{\useplength{firstheadwidth}}{.4pt}\\ }% \ifkomavarempty{fromaddress}{}{% \ignorespaces\usekomavar{fromaddress}% }% }% }% } \newcommand*{\@gen@firsthead}{% % 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} \renewcommand*{\@firsthead}{\noindent \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 wird dabei die % Pseudo-Länge \texttt{fromrulewidth} verwendet. Ist diese 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]% \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}{.4pt}% \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. % \begin{macrocode} {\usekomafont{fromaddress}\strut\ignorespaces \usekomavar{fromaddress}% \if@phone\\\usekomavar*{fromphone}\usekomavar{fromphone}\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]% \setlength{\@tempdima}{\useplength{fromrulewidth}}% \ifdim\@tempdima=\z@ \setlength{\@tempdima}{\textwidth}% \fi \expandafter\rule\expandafter{\the\@tempdima}{.4pt}% \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 }% % \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. % \begin{macrocode} \or \renewcommand*{\@firsthead}{\noindent \parbox[b]{\textwidth}{\centering {\usekomafont{fromname}\strut\ignorespaces \usekomavar{fromname}% {% \ifnum\@rulefrom=1\\[-.5\baselineskip]% \setlength{\@tempdima}{\useplength{fromrulewidth}}% \ifdim\@tempdima=\z@ \setlength{\@tempdima}{\textwidth}% \fi \expandafter\rule\expandafter{\the\@tempdima}{.4pt}% \fi }% \\ }% {\usekomafont{fromaddress}\strut\ignorespaces \usekomavar{fromaddress}% \if@phone\\\usekomavar*{fromphone}\usekomavar{fromphone}\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]% \setlength{\@tempdima}{\useplength{fromrulewidth}}% \ifdim\@tempdima=\z@ \setlength{\@tempdima}{\textwidth}% \fi \expandafter\rule\expandafter{\the\@tempdima}{.4pt}% \fi \\ }% }% }% % \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. % \begin{macrocode} \or \renewcommand*{\@firsthead}{\noindent \if@logo \rlap{\usekomavar{fromlogo}}% \fi \parbox[b]{\textwidth}{\raggedleft {\usekomafont{fromname}\strut\ignorespaces \usekomavar{fromname}% {% \ifnum\@rulefrom=1\\[-.5\baselineskip]% \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}{.4pt}% \fi }% \\ }% {\usekomafont{fromaddress}\strut\ignorespaces \usekomavar{fromaddress}% \if@phone\\\usekomavar*{fromphone}\usekomavar{fromphone}\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]% \setlength{\@tempdima}{\useplength{fromrulewidth}}% \ifdim\@tempdima=\z@ \setlength{\@tempdima}{\textwidth}% \fi \expandafter\rule\expandafter{\the\@tempdima}{.4pt}% \fi \\ }% }% }% % \end{macrocode} % Damit ist die Umdefinierung beendet. In allen anderen Fällen wird % der Kopf nicht verändert. % \begin{macrocode} \fi } % \end{macrocode} % \end{macro} % \end{macro} % % Der Benutzer kann die Voreinstellung mit einer einfachen Anweisung ändern: % \begin{macrocode} \newcommand{\firsthead}[1]{% \renewcommand*{\@alignfrom}{10000}% \renewcommand*{\@firsthead}{\noindent#1}% } % \end{macrocode} % \end{macro} % % \subsubsection{Schrifteinstellungen für den Briefbogen} % % \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}{backaddress} % \changes{v2.95}{2006/03/23}{jetzt mit \cs{newkomafont}} % Die Rücksendeadresse. % \begin{macrocode} \newkomafont{backaddress}{\sffamily} % \end{macrocode} % \end{KOMAfont} % % \begin{KOMAfont}{title} % \changes{v2.95}{2006/03/23}{jetzt mit \cs{newkomafont}} % Der Brieftitel. % \begin{macrocode} \newkomafont{title}{\normalcolor\sffamily\bfseries} % \end{macrocode} % \end{KOMAfont} % % \begin{KOMAfont}{subject} % \changes{v2.95}{2006/03/23}{jetzt mit \cs{newkomafont}} % Der Betreff. % \begin{macrocode} \newkomafont{subject}{\normalcolor\bfseries} % \end{macrocode} % \end{KOMAfont} % % \subsubsection{Längen für den Briefbogen} % % \begin{macro}{\ltr@len@foldmarkhpos} % \changes{v2.8q}{2001/10/06}{Neu} % Abstand der Faltmarken von der linken Papierkante. % \begin{macrocode} \@newplength{foldmarkhpos} % \end{macrocode} % \end{macro} % \begin{macro}{\ltr@len@tfoldmarkvpos} % \changes{v2.8q}{2001/10/06}{Neu} % \begin{macro}{\ltr@len@bfoldmarkvpos} % \changes{v2.8q}{2001/10/06}{Neu} % Abstand der oberen und unteren Faltmarken von der oberen Papierkante. % \begin{macrocode} \@newplength{tfoldmarkvpos} \@newplength{bfoldmarkvpos} % \end{macrocode} % \end{macro} % \end{macro} % \begin{macro}{\ltr@len@toaddrvpos} % \changes{v2.8q}{2001/10/06}{Neu} % Abstand des Adressfensters von der oberen Papierkante. % \begin{macrocode} \@newplength{toaddrvpos} % \end{macrocode} % \end{macro} % \begin{macro}{\ltr@len@backaddrheight} % \changes{v2.8q}{2001/10/06}{Neu} % Höhe der Rücksendeadresse. % \begin{macrocode} \@newplength{backaddrheight} % \end{macrocode} % \end{macro} % \begin{macro}{\ltr@len@toaddrhpos} % \changes{v2.8q}{2001/10/06}{Neu} % Abstand des Adressfeldes von der linken Papierkante bzw. wenn negativ von % der rechten Papierkante. % \begin{macrocode} \@newplength{toaddrhpos} % \end{macrocode} % \end{macro} % \begin{macro}{\ltr@len@specialmailindent} % \changes{v2.8q}{2002/03/25}{Neu} % Abstand der Versandtart vom linken Rand des Adressfensters. % \begin{macrocode} \@newplength{specialmailindent} % \end{macrocode} % \end{macro} % \begin{macro}{\ltr@len@specialmailrightindent} % \changes{v2.8q}{2002/03/25}{Neu} % Abstand der Versandtart vom rechten Rand des Adressfensters. % \begin{macrocode} \@newplength{specialmailrightindent} % \end{macrocode} % \end{macro} % \begin{macro}{\ltr@len@toaddrindent} % \changes{v2.8q}{2001/10/06}{Neu} % Abstand der Adresse vom linken Rand des Adressfensters. % \begin{macrocode} \@newplength{toaddrindent} % \end{macrocode} % \end{macro} % \begin{macro}{\ltr@len@toaddrwidth} % \changes{v2.8q}{2001/10/06}{Neu} % Breite des Adressfensters % \begin{macrocode} \@newplength{toaddrwidth} % \end{macrocode} % \end{macro} % \begin{macro}{\ltr@len@toaddrheight} % \changes{v2.8q}{2001/10/06}{Neu} % Höhe des Adressfensters ohne Rücksendeadresse % \begin{macrocode} \@newplength{toaddrheight} % \end{macrocode} % \end{macro} % \begin{macro}{\ltr@len@locwidth} % \changes{v2.8q}{2001/10/06}{Neu} % Breite des Feldes neben dem Adressfenster % \begin{macrocode} \@newplength{locwidth} % \end{macrocode} % \end{macro} % \begin{macro}{\ltr@len@refvpos} % \changes{v2.8q}{2001/10/06}{Neu} % Abstand der Geschäftszeile von der Papieroberkante. % \begin{macrocode} \@newplength{refvpos} % \end{macrocode} % \end{macro} % \begin{macro}{\ltr@len@refwidth} % \changes{v2.8q}{2001/10/06}{Neu} % Breite der Geschäftszeile. % \begin{macrocode} \@newplength{refwidth} % \end{macrocode} % \end{macro} % \begin{macro}{\ltr@len@refhpos} % \changes{v2.9l}{2003/01/28}{Neu} % Horizontale Position der Geschäftszeile. % \begin{macrocode} \@newplength{refhpos} % \end{macrocode} % \end{macro} % \begin{macro}{\ltr@len@refaftervskip} % \changes{v2.8q}{2001/10/09}{Neu} % Abstand nach der Geschäftszeile. % \begin{macrocode} \@newplength{refaftervskip} % \end{macrocode} % \end{macro} % \begin{macro}{\ltr@len@sigbeforevskip} % \changes{v2.8q}{2001/10/09}{Neu} % Raum für die Unterschrift. % \begin{macrocode} \@newplength{sigbeforevskip} % \end{macrocode} % \end{macro} % \begin{macro}{\ltr@len@sigindent} % \changes{v2.8q}{2001/10/06}{Neu} % Horizontaler Einzug des Schlussgrußes und der Signatur. % \begin{macrocode} \@newplength{sigindent} % \end{macrocode} % \end{macro} % \begin{macro}{\ltr@len@@firstfootvpos} % \changes{v2.8q}{2001/10/06}{Neu} % Abstand des Fußes der ersten Seite von der Papieroberkante. % \begin{macrocode} \@newplength{firstfootvpos} % \end{macrocode} % \end{macro} % \begin{macro}{\ltr@len@firstfootwidth} % \changes{v2.8q}{2001/10/06}{Neu} % Breite des Fußes der ersten Seite. % \begin{macrocode} \@newplength{firstfootwidth} % \end{macrocode} % \end{macro} % \begin{macro}{\set@ltr@len@firstheadvspos} % \changes{v2.8q}{2001/10/06}{Neu} % Abstand des Kopfes der ersten Seite von der Papieroberkante. % \begin{macrocode} \@newplength{firstheadvpos} % \end{macrocode} % \end{macro} % \begin{macro}{\ltr@len@firstheadwidth} % \changes{v2.8q}{2001/10/06}{Neu} % Breite des Kopfes der ersten Seite. % \begin{macrocode} \@newplength{firstheadwidth} % \end{macrocode} % \end{macro} % \begin{macro}{\ltr@len@fromrulewidth} % \changes{v2.8q}{2002/01/28}{Neu} % Die Länge einer eventuell gesetzten Linie im Absender. Negative % Werte bedeuten, dass die Länge automtaisch bestimmt wird. \@newplength{fromrulewidth} \@setplength{fromrulewidth}{0pt} % \end{macro} % % % \subsubsection{Fuß des Briefbogens} % % \begin{macro}{\firstfoot} % \begin{macro}{\@firstfoot} % \begin{macrocode} % Der Fuß des Briefbogens ist in der Voreinstellung leer. \newcommand*{\@firstfoot}{} % \end{macrocode} % \end{macro} % Dies kann jedoch über eine einfache Benutzeranweisung geändert werden: % \begin{macrocode} \newcommand{\firstfoot}[1]{% \renewcommand*{\@firstfoot}{\noindent#1}% } % \end{macrocode} % \end{macro} % % % \subsubsection{Ausgabe des Briefbogens} % % Die Ausgabe selbst erfolgt derzeit über die |\opening|-Anweisung, die in % einem späteren Abschnitt implementiert ist. % % \begin{macro}{\move@topt} % \changes{v2.8n}{2001/09/07}{Neu} % Für die folgenden Aktionen wird ein Makro benötigt, mit dem man vertikal von % der relativen Seitenposition zur relativen Papierposition gelangen kann. % \begin{macrocode} \newcommand*{\move@topt}{% \null\vskip -1in\vskip -\topmargin% \vskip -\headheight\vskip -\headsep% \vskip -\topskip% \ignorespaces% } % \end{macrocode} % \begin{macro}{\move@frompt} % \changes{v2.8n}{2001/09/07}{Neu} % Natürlich wird auch ein Makro benötigt, um vertikal von einer relativen % Papierposition wieder auf die relative Seitenposition zurück zu gelangen. % \begin{macrocode} \newcommand*{\move@frompt}{% \vskip 1in\vskip \topmargin% \vskip \headheight\vskip \headsep% \vskip \topskip% \vskip -\baselineskip% \ignorespaces% } % \end{macrocode} % \end{macro} % \end{macro} % % \begin{macro}{\move@topl} % \changes{v2.8n}{2001/09/07}{Neu} % Für die folgenden Aktionen wird außerdem ein Makro benötigt, mit dem man % horizontal von der relativen Seitenposition zur relativen Papierposition % gelangen kann. % \begin{macrocode} \newcommand*{\move@topl}{% \null\hskip -1in% \ifodd\value{page}\hskip -\oddsidemargin\else\hskip -\evensidemargin\fi \ignorespaces% } % \end{macrocode} % \begin{macro}{\move@frompl} % \changes{v2.8n}{2001/09/07}{Neu} % Natürlich wird auch ein Makro benötigt, um horizontal von einer relativen % Papierposition wieder auf die relative Seitenposition zurück zu gelangen. % \begin{macrocode} \newcommand*{\move@frompl}{% \hskip 1in% \ifodd\value{page}\hskip \oddsidemargin\else\hskip \evensidemargin\fi% \ignorespaces% } % \end{macrocode} % \end{macro} % \end{macro} % % \begin{macro}{\vb@t@z} % \changes{v2.8n}{2001/09/07}{Neu} % \changes{v2.95}{2006/03/23}{Absatzformatierung mit \cs{setparsizes}} % Ausserdem wird ein vertikales Äquivalent zu |\rlap| benötigt. % \begin{macrocode} \newcommand*{\vb@t@z}[1]{{% \setbox0\vbox to\z@{#1\vss}% \setparsizes{\z@}{\z@}{\z@ plus 1fil}\par@updaterelative \setlength{\baselineskip}{\z@}% \setlength{\@tempdima}{\ht0}\addtolength{\@tempdima}{\dp0}% \box0\vskip-\@tempdima% }% } % \end{macrocode} % \end{macro} % % \begin{macro}{\@foldmarks} % 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}{\@foldmark} % \changes{v2.8n}{2001/09/07}{Neu} % \changes{v2.95}{2006/06/06}{\cs{vskip} in \cs{vb@t@z} verschoben, damit es % vom Satzspiegel unabhängig wird} % Das geht am einfachsten, wenn wir auch einen Befehl haben, mit dem man eine % einzelne Faltmarke relativ zur aktuellen Position setzen kann. Dies % geschieht mit Hilfe von |\rlap|, damit die horizontale Position unverändert % bleibt. Als Parameter werden der vertikale Abstand zur aktuellen Position % und die Länder der Marke übergeben. % \begin{macrocode} \newcommand*{\@foldmark}[2]{% \vb@t@z{\vskip #1% \rlap{\move@topl\hskip\useplength{foldmarkhpos}% \rule{#2}{.2pt}}}% \ignorespaces% } \newcommand*{\@foldmarks}{% \if@fold% \typeout{Foldmarks: yes}% \move@topt \@foldmark{\useplength{tfoldmarkvpos}}{2mm}% \@foldmark{.5\paperheight}{4mm}% \@foldmark{\useplength{bfoldmarkvpos}}{2mm}% \move@frompt \else \typeout{Foldmarks: no}% \fi% } % \end{macrocode} % \end{macro} % \end{macro} % % \begin{macro}{\@savevbox} % \changes{v2.8n}{2001/09/07}{Neu} % \changes{v2.8q}{2001/10/30}{zusätzlich ein optionales Argument} % \begin{macro}{\if@savevbox@warning} % \begin{macro}{\@savevbox@warningtrue} % \begin{macro}{\@savevbox@warningfalse} % \changes{v2.8q}{2001/10/30}{Neu} % Wenn eine der vertikalen Boxen in \cs{opening} zu einer \texttt{overbox % \string\vbox\space} Meldung führt, weiss letztlich niemand, welche Box dafür % verantwortlich war. Deshalb definieren wir hier ein Makro, das ggf. eine % Meldung ausgibt, die erklärt, welches Element die Ursache war und was man % tun kann. Das erste Argument ist dabei die Sollhöhe der Box, das zweite % Argument ist der Boxinhalt, das dritte Argument is der Name des Elements, % das zu hoch ist, das vierte der Name der Elementhöhe und das fünfte % schließlich der Befehl, mit dem das Element vom Anwender definiert werden % kann. Das optionale Argument wird nur bei der Ausgabe mit ausgegeben, findet % jedoch bei der Berechnung keine Berücksichtigung. % \begin{macrocode} \newif\if@savevbox@warning\@savevbox@warningtrue \newcommand{\@savevbox}[6][]{% \begingroup% \vbox to #2{#1#3}% \if@savevbox@warning\@savevbox@warningfalse% \setbox0\vbox{#3}% \setlength{\@tempdima}{#2}% \setlength{\@tempdimb}{\ht0}\addtolength{\@tempdimb}{\dp0}% \ifdim \@tempdimb>\@tempdima% \addtolength{\@tempdimb}{-\@tempdima}% \ClassWarning{% scrlttr2% }{% #4 is \the\@tempdimb\space too high.\MessageBreak You have to change `\string#5'\MessageBreak or you have to define a smaller\MessageBreak #4 using \string#6.\MessageBreak Because of this too high #4\MessageBreak you've got an overfull \string\vbox\space message% }% \fi% \fi% \endgroup% } % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % % \begin{macro}{\@firstheadfootfield} % \changes{v2.8n}{2001/09/08}{Neu} % \changes{v2.8q}{2001/10/30}{\cs{parfillskip} lokal auf 0 gesetzt} % \changes{v2.8q}{2001/10/30}{Fuß explizit in eine Box gesetzt} % \changes{v2.9l}{2003/01/23}{Positionierung verbessert} % Ab Version 2.8n werden Kopf und Fuß der ersten Seite nicht mehr per % Seitenstil \texttt{firstpage} gesetzt, sondern mit einem speziellen % Feld. Dabei wird auch beachtet, dass dieses Feld im Kopf eine bestimmte aber % beschränkte Höhe hat. Diese Höhe ist unabhängig von der normalen Kopfhöhe % und richtet sich stattdessen nach der Position des Adressfeldes. % \begin{macrocode} \newcommand*{\@firstheadfootfield}{% \typeout{Head of first page}% \move@topt\vskip\useplength{firstheadvpos}% \vb@t@z{% \rlap{\move@topl \setlength\@tempskipa{.5\paperwidth}% \addtolengthplength[-.5]{\@tempskipa}{firstheadwidth}% \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}{\@firsthead\vskip \z@ \@plus .00001fil}% {head of first page}{firstheadvpos}{\firsthead}% }% }% }% \vskip-\useplength{firstheadvpos}\move@frompt \typeout{Foot of first page}% \move@topt \vb@t@z{% \rlap{\move@topl \setlength\@tempskipa{.5\paperwidth}% \addtolengthplength[-.5]{\@tempskipa}{firstfootwidth}% \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}\@firstfoot}% }% }% }% \move@frompt% {% \setlength{\@tempdima}{1in}\addtolength{\@tempdima}{\topmargin}% \addtolength{\@tempdima}{\headheight}% \addtolength{\@tempdima}{\headsep}% \addtolength{\@tempdima}{\textheight}% \addtolength{\@tempdima}{\footskip}% \addtolengthplength[-1]{\@tempdima}{firstfootvpos}% \ifdim\@tempdima>\z@\enlargethispage{-\@tempdima}% \else\if@enlargefp\enlargethispage{-\@tempdima}\fi\fi }% } % \end{macrocode} % \end{macro} % % \begin{macro}{\@addrfield} % \changes{v2.8q}{2002/04/01}{\cs{parfillskip} lokal geändert} % \changes{v2.8q}{2002/06/03}{Sonderbehandlung für Adressfeld rechts} % \changes{v2.9o}{2003/02/20}{\cs{noindent} eingefügt bei % \texttt{specialmail}} % Dasselbe gilt auch für das Adressfeld für Fensterumschläge. Die % Rücksendeadresse und die Briefart wird dabei unterstrichen. % \begin{macrocode} \newcommand*{\@addrfield}{% \if@afield \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 \ifkomavarempty{specialmail}{}{% \edef\@tempa{\@tempa\@tempb specialmail}\def\@tempb{,\space}% }% \typeout{Address (\@tempa\@tempb addressee)}% \endgroup% \move@topt\vskip\useplength{toaddrvpos}% \vb@t@z{{\setlength{\parfillskip}{\z@ \@plus 1fil}% \rlap{\move@topl \setlengthtoplength{\@tempskipa}{toaddrhpos}% \ifdim \@tempskipa<\z@ \addtolength{\@tempskipa}{\paperwidth}% \addtolengthplength[-]{\@tempskipa}{toaddrwidth}% \fi \hskip\@tempskipa \@addtoplength{toaddrheight}{\useplength{backaddrheight}}% \@savevbox{\useplength{toaddrheight}}{\hsize\useplength{toaddrwidth}% \@savevbox[\vss]{\useplength{backaddrheight}}{% \hsize\useplength{toaddrwidth}% \if@baddr \ifkomavarempty{backaddress}{}{{% \noindent% \def\\{\usekomavar{backaddressseparator}\@ogobble}% \underline{\scriptsize\usekomafont{backaddress}% \usekomavar{backaddress}}}}% \fi }{backaddress}{backaddrheight}{\setkomavar}% \ifkomavarempty{specialmail}{}{% \vbox{\hsize\useplength{toaddrwidth}% \noindent\hspace*{\useplength{specialmailindent}}% \underline{\usekomavar{specialmail}}% \hspace*{\useplength{specialmailrightindent}}}% }% \vfil% \noindent\hskip\useplength{toaddrindent}% \setlength{\@tempdima}{\useplength{toaddrwidth}}% \addtolengthplength[-2]{\@tempdima}{toaddrindent}% \vbox{\hsize\@tempdima% \noindent\usekomavar{toname}\\\usekomavar{toaddress}}% \vfil\null}% {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 \typeout{Address: No}% \fi } % \end{macrocode} % \begin{macro}{\@ogobble} % \changes{v2.8q}{2002/01/22}{Neu} % In obiger Definition wird das Makro \cs{@ogobble} verwendet, um % einen optionalen Parameter zu vernichten, falls dieser existiert. % \begin{macrocode} \newcommand*{\@ogobble}[1][]{} % \end{macrocode} % \end{macro} % \end{macro} % % \begin{macro}{\@locfield} % \changes{v2.8o}{2001/09/17}{\cs{noindent} eingefügt} % \changes{v2.8q}{2002/02/07}{\cs{noindent} nach dem Logo} % \changes{v2.8q}{2002/07/23}{Berechnung der Breite hierher verschoben} % \changes{v2.8q}{2002/06/03}{Sonderbehandlung für Adressfeld rechts} % Das "`locfield"' wird unabhängig von der Adresse gesetzt. % \begin{macrocode} \newcommand*{\@locfield}{% \ifdim \useplength{locwidth}=\z@% \@setplength{locwidth}{\paperwidth}% \ifdim \useplength{toaddrhpos}>\z@ \@addtoplength[-2]{locwidth}{\useplength{toaddrhpos}}% \else \@addtoplength[2]{locwidth}{\useplength{toaddrhpos}}% \fi \@addtoplength[-1]{locwidth}{\useplength{toaddrwidth}}% \if@bigloc% \@setplength[.66667]{locwidth}{\useplength{locwidth}}% \else% \@setplength[.5]{locwidth}{\useplength{locwidth}}% \fi% \fi% \ifnum 1=\@alignfrom \if@logo \ifkomavarempty{location}{% \setkomavar{location}{\null}}{}% \fi \fi \ifkomavarempty{location}{% \typeout{Location field: empty}% }{% \typeout{Location field: yes}% \move@topt\vskip\useplength{toaddrvpos}% \vb@t@z{\rlap{% \move@topl \setlengthtoplength[-]{\@tempskipa}{toaddrhpos}% \ifdim \@tempskipa<\z@ \addtolength{\@tempskipa}{\paperwidth}% \else \addtolengthplength{\@tempskipa}{locwidth}% \fi \hskip\@tempskipa \llap{% \@savevbox{\useplength{toaddrheight}}{% \noindent\hsize\useplength{locwidth}% \ifnum 1=\@alignfrom \if@logo \ifkomavarempty{fromlogo}{}{% {\raggedleft\noindent\usekomavar{fromlogo}\\ \vskip\parskip}\noindent}% \fi \fi \usekomavar{location}\vskip \z@ \@plus .00001fil}% {location field}{toaddrheight}{\setkomavar}% }}% }% \vskip-\useplength{toaddrvpos}\move@frompt }% } % \end{macrocode} % \end{macro} % % \begin{macro}{\@datefield} % \changes{v2.8q}{2002/01/14}{Schalter \cs{if@tempwa} wird bereits hier auf % \texttt{true} gesetzt} % Je nachdem, welche Felder definiert sind, muss eine geschäftsmäßiger % Standardbrief oder ein eher persönliches Aussehen gewählt werden. % \begin{macro}{\@set@reffield} % Einzelne Felder werden mit Hilfe dieses Makros gesetzt. Als Parameter wird % der Name des Feldes übergeben. Es wird dann davon ausgegangen, dass der % Name des Feldes in der jeweiligen Sprache im Makro % \verb|\|\texttt{\emph{\#1}}\verb|name| und der Wert des Feldes in % \verb|\var|\texttt{\emph{\#1}} zu finden ist. % \begin{macrocode} \newcommand*{\@set@reffield}[1]{% \ifkomavarempty{#1}{}{% \settowidth{\@tempdima}{\strut\usekomavar{#1}}% \setbox0\hbox{\strut\scriptsize\sffamily\usekomavar*{#1}}% \ifdim \@tempdima<\wd0\setlength{\@tempdima}{\wd0}\fi \if@tempswa\enskip\hfill\fi \parbox[t]{\@tempdima}{\noindent\raggedright \strut\box0\\\strut\usekomavar{#1}}% \@tempswatrue }% } % \end{macrocode} % \end{macro} % \begin{macro}{\@set@reffields} % \changes{v2.8q}{2002/01/14}{Neu} % Dieses Makro enthält alle Aufrufe von \cs{@set@reffield}, die durchzuführen % sind. Das Makro kann mit Hilfe von \cs{addtoreffields} erweitert werden. % \begin{macrocode} \newcommand*{\@set@reffields}{}% % \end{macrocode} % \end{macro} % \begin{macro}{\addtoreffields} % 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}{\@set@reffield{#1}}% } % \end{macrocode} % \end{macro} % % \begin{macro}{\removereffields} % \changes{v2.8q}{2002/01/14}{Neu} % Es gibt auch einen Befehl, um alle Felder aus der Geschäftszeile zu % entfernen. % \begin{macrocode} \newcommand*{\removereffields}{% \renewcommand*{\@set@reffields}{}% } % \end{macrocode} % \end{macro} % % \begin{macro}{\defaultreffields} % \changes{v2.8q}{2002/01/14}{Neu} % Ebenso ein Befehl, um die üblichen Felder zu setzen. % \begin{macrocode} \newcommand*{\defaultreffields}{% \removereffields \addtoreffields{yourref}% \addtoreffields{yourmail}% \addtoreffields{myref}% \addtoreffields{customer}% \addtoreffields{invoice}% } % \end{macrocode} % Genau diesen Befehl rufen wir auch gleich auf: % \begin{macrocode} \defaultreffields % \end{macrocode} % \end{macro} % % \changes{v2.3e}{1996/05/31}{Abstand zwischen Ort und Datum eingefügt} % \changes{v2.8o}{2001/09/18}{für den Brieftyp \texttt{KOMAold} anschließend % einen zusätzlichen vertikalen Abstand eingefügt} % \changes{v2.8q}{2001/11/13}{\cs{rlap} eingefügt} % \changes{v2.8q}{2001/11/13}{\cs{@parskipfalse}\cs{@parskip@indent}} % \changes{v2.8q}{2002/01/14}{Leertests entfernt, da in \cs{@set@reffield} % bereits enthalten} % \changes{v2.9l}{2003/01/28}{Berechnung von \texttt{refwidth} an die % Dokumentation angepasst} % \changes{v2.9l}{2003/01/28}{Berechnung von \texttt{refhpos} hinzugefügt} % \changes{v2.95}{2006/03/23}{Absatzeinzug mit \cs{setparsizes} abschalten} % \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 erfolgt noch die Absatzeinzugkorrektur. Danach kommt die eigentliche % Arbeit. % \begin{macrocode} \rlap{\noindent\move@topl\hskip\useplength{refhpos}% \vbox{\hsize\useplength{refwidth}% \noindent\@set@reffields \ifkomavarempty{date}{% \if@tempswa \typeout{Reference line(s): with fields but without date}% \else \typeout{Reference line(s): no}% \aftergroup\aftergroup\aftergroup\@tempswatrue \fi }{% \if@tempswa \typeout{Reference line(s): with fields and date}% \settowidth{\@tempdima}{\strut\usekomavar{date}}% \setbox0\hbox{\scriptsize\sffamily\usekomavar*{date}}% \ifdim \@tempdima<\wd0\setlength{\@tempdima}{\wd0}\fi \enskip\hfill \parbox[t]{\@tempdima}{\noindent\raggedright% \strut\box0\\\strut\usekomavar{date}}% \else \typeout{Reference line: only place and date}% \enskip\hfill \ifkomavarempty{place}{}{% \usekomavar{place}\usekomavar{placeseparator}}% \usekomavar{date}% \@tempswatrue \fi }% }% }% \if@tempswa\vskip-\baselineskip\fi \vskip\useplength{refaftervskip}% }% } % \end{macrocode} % \end{macro} % % \begin{macro}{\@maketitle} % \changes{v2.3b}{1996/01/14}{Verwendung von \cs{sectfont} für den % \cs{title}} % \changes{v2.8p}{2001/09/22}{\cs{titlefont} an Stelle von \cs{sectfont}} % \changes{v2.8q}{2001/11/13}{\cs{@parskipfalse}\cs{@parskip@indent}} % \changes{v2.9t}{2004/09/16}{\cs{par} in Größe und Schrift des Titels} % \changes{v2.95}{2006/03/22}{\cs{usekomafont} and Stelle fon \cs{titlefont}} % \begin{macro}{\@subjfield} % \changes{v2.8q}{2001/10/19}{\cs{centerline} durch \cs{centering} % ersetzt} % \changes{v2.8q}{2001/11/13}{\cs{@parskipfalse}\cs{@parskip@indent}} % \changes{v2.8q}{2002/01/31}{wird mit hängendem Einzug gesetzt} % \changes{v2.95}{2006/03/23}{Absatzeinzug mit cs{setparsizes} einstellen} % Der eigentliche Titel wir mit |\@maketitle| gesetzt. Dies sollte jedoch % ebenso wie beim Betreff (|\@subjfield|) \emph{nicht} manuell geschehen. % \begin{macrocode} \newcommand*{\@maketitle}{% \ifkomavarempty{title}{% \typeout{Title: no}% }{% \typeout{Title: yes}% {\setparsizes{\z@}{\z@}{\z@ plus 1fil}\par@updaterelative \centering\LARGE\usekomafont{title}\usekomavar{title}\par}% \vskip\baselineskip% }% } \newcommand*{\@subjfield}{{% \setparsizes{\z@}{\z@}{\z@ plus 1fil}\par@updaterelative \ifkomavarempty{subject}{% \typeout{Subject: no}% }{% \if@subjafter% \typeout{Subject: after opening}% \centering% \else% \typeout{Subject: before opening}% \noindent% \fi% {\usekomafont{subject}\if@subj\@hangfrom{\usekomavar*{subject}}\fi% {\usekomavar{subject}}\par}\vskip2\baselineskip% }% }% } % \end{macrocode} % \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} % \begin{macro}{\@nexthead} % Die Voreinstellung ist ebenfalls von Optionen abhängig. % \begin{macrocode} \newcommand*{\@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{macro} % Die Voreinstellung ist wiederum mit einer einfachen Benutzeranweisung % änderbar. % \begin{macrocode} \newcommand{\nexthead}[1]{% \renewcommand*{\@nexthead}{\noindent#1}% } % \end{macrocode} % \end{macro} % % % \subsubsection{Fuß des Briefpapiers} % % \begin{macro}{\nextfoot} % \begin{macro}{\@nextfoot} % Je nach Optioneneinstellung kann sich die Seitenmarke in der Voreinstellung % auch im Fuß befinden. % \begin{macrocode} \newcommand*{\@nextfoot}{% \ifnum\@pageat>2 \parbox[c]{\textwidth}{% \ifcase\@pageat\or\or\or\raggedright\or\centering\or\raggedleft\fi \strut\pagemark% }% \fi } % \end{macrocode} % \end{macro} % Auch diese Einstellung ist per Benutzeranweisung leicht zu ändern. % \begin{macrocode} \newcommand{\nextfoot}[1]{% \renewcommand*{\@nextfoot}{\noindent#1}% } % \end{macrocode} % \end{macro} % % % \subsection{Die Brief-Umgebung} % % \begin{environment}{letter} % \changes{v2.8q}{2002/01/16}{optionales Argument hinzugefügt} % \changes{v2.8q}{2002/01/16}{Fußnotenzähler wird zurückgesetzt} % \changes{v2.9d}{2002/08/12}{Fußnotenzähler wird korrekt zurückgesetzt} % Diese Umgebung ist etwas anders definiert, als normalerweise von % \LaTeX gewohnt. Mit ihr können innerhalb eines Dokuments beliebig % viele Briefe erzeugt werden. Eine der Abweichungen von der % Standardklasse besteht darin, dass als optionales Argument Optionen % gesetzt werden können. % \begin{macro}{\stopletter} % \begin{macro}{\@processto} % \changes{v2.9r}{2004/06/16}{robust gegen leeren Empfänger} % \begin{macro}{\@xproc} % Die Adresse, die als Argument der Briefumgebung übergeben wird, muss in Name % und Adresse zerlegt werden. % \begin{macrocode} \newenvironment{letter}[2][]{% % \end{macrocode} % Als erstes wird eine neue Seite begonnen. Dies kann ggf. auch eine neue % rechte Seite sein. Danach werden alle relevanten Zähler und Strafpunkte % zurückgesetzt und der obligatorische Parameter ausgewertet. % \begin{macrocode} \newpage \if@twoside\ifodd\c@page\else\thispagestyle{empty}\null\newpage\fi\fi \setcounter{page}{\@ne}% \setcounter{footnote}{0}% \interlinepenalty=200\@processto{#2}% % \end{macrocode} % Dann werden ggf. die übergebenen Optionen ausgeführt. % \begin{macrocode} \KOMAoptions{#1}% % \end{macrocode} % Zum Schluss werden die per \cs{AtBeginLetter} angegeben Anweisungen % ausgeführt. % \begin{macrocode} \@beginletterhook }{% \stopletter\@@par\pagebreak\@@par% } \newcommand*{\stopletter}{} \newcommand{\@processto}[1]{% \ifx\relax#1\relax\else \expandafter\@xproc#1\\\@nil\ifkomavarempty{toaddress}{}{% \expandafter\@xproc#1\@nil}% \fi } \newcommand*{\@xproc}{} \long\def\@xproc#1\\#2\@nil{% \setkomavar{toname}{#1}\setkomavar{toaddress}{#2}} % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % \end{environment} % % \begin{macro}{\AtBeginLetter} % \changes{v2.8n}{2001/09/08}{Neu} % \begin{macro}{\@beginletterhook} % \changes{v2.8n}{2001/09/08}{Neu} % Wie oben zu sehen, wurde in den Anfang der Briefumgebung ein Haken % eingefügt. Dieser wird auch tatsächlich intern genutzt. Er funktioniert % prinzipiell wie der |\AtBeginDocument|-Haken. Zunächst macht der Haken rein % gar nichts. % \begin{macrocode} \newcommand{\AtBeginLetter}{\g@addto@macro\@beginletterhook} \newcommand{\@beginletterhook}{} % \end{macrocode} % \end{macro} % \end{macro} % % \begin{macro}{\AtEndLetter} % \changes{v2.95}{2006/03/22}{Neu} % Analog zu |\AtBeginLetter| gibt es auch ein |\AtEndLetter|. Als Haken wird % hierbei |\stopletter| verwendet. % \begin{macrocode} \newcommand{\AtEndLetter}{\g@addto@macro\stopletter} % \end{macrocode} % \end{macro} % % \begin{macro}{\stopbreaks} % \begin{macro}{\startbreaks} % \begin{macro}{\@nobreakvspace} % \begin{macro}{\@nobreakvspacex} % \begin{macro}{\@nobreakcr} % Innerhalb von Briefen wird der Umbruch etwas anders gehandhabt. % Dadurch soll der Brieftext besser positioniert werden. % \begin{macrocode} \newcommand*{\stopbreaks}{\interlinepenalty \@M \def\par{\@@par\nobreak}\let\\=\@nobreakcr \let\vspace\@nobreakvspace} \newcommand*{\@nobreakvspace}{% \@ifstar{\@nobreakvspacex}{\@nobreakvspacex}} \newcommand*{\@nobreakvspacex}[1]{\ifvmode\nobreak\vskip #1\relax\else \@bsphack\vadjust{\nobreak\vskip #1}\@esphack\fi} \newcommand*{\@nobreakcr}{% \vadjust{\penalty\@M}\@ifstar{\@xnewline}{\@xnewline}} \newcommand*{\startbreaks}{\let\\=\@normalcr \interlinepenalty 200\def\par{\@@par\penalty 200}} % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % % \begin{macro}{\opening} % \changes{v2.8n}{2001/09/08}{Komplett überarbeitet} % \changes{v2.8q}{2001/11/13}{\cs{@parskipfalse}\cs{@parskip@indent}} % \changes{v2.8q}{2002/03/25}{\cs{@PapersizeWarning}} % \changes{v2.95}{2003/03/23}{Absatzformatierung mit \cs{setparsizes} % einstellen} % Denn beim Eröffnungsgruß mit |\opening| wird neben sämtlichen Feldern auch % der Titel und der Betreff gesetzt. % \begin{macrocode} \newcommand{\opening}[1]{% \@PapersizeWarning \@gen@firsthead \@mkboth{\scr@fromname@var}{\scr@subject@var}% \thispagestyle{empty}\noindent \@foldmarks\@firstheadfootfield\@addrfield\@locfield\@datefield \@maketitle \if@subjafter\else\@subjfield\fi {\setparsizes{\z@}{\z@}{\z@ plus 1fil}\par@updaterelative#1\par}% {\setlength{\@tempdima}{\baselineskip}% \addtolength{\@tempdima}{-\parskip}% \ifdim \@tempdima>\z@\vskip\@tempdima\fi}% \if@subjafter\@subjfield\fi% \@afterindentfalse\@afterheading } % \end{macrocode} % \end{macro} % % \begin{macro}{\closing} % \changes{v2.2b}{1995/02/16}{{\cmd\fromsig} wird nicht mehr auf \cs{empty} % getestet sondern direkt eingesetzt} % \changes{v2.3b}{1996/01/14}{Abstand zwischen Schlussgruß und Signatur % erhöht} % \changes{v2.5d}{2000/06/10}{Abstand zwischen Schlussgruß und Signatur % variabel} % \changes{v2.8q}{2001/11/13}{\cs{@parskipfalse}\cs{@parskip@indent}} % \changes{v2.8q}{2002/02/05}{nicht mehr \cs{long}} % \changes{v2.8q}{2002/02/05}{darf \texttt{\cmd{\\}[\dots]} enthalten} % \changes{v2.95}{2003/03/23}{Absatzformatierung mit \cs{setparsizes} % einstellen} % Außer dem Eröffnungsgruß mit |\opening| gibt es natürlich auch einen % Schlussgruß mit |\closing|, bei dem außerdem die Unterschrift u.\,ä. gesetzt % wird. % \begin{macro}{\presig@skip} % \changes{v2.5d}{2000/06/10}{Neues Makro, das den Abstand zwischen % Schlussgruß und Signatur beinhaltet} % \changes{v2.8q}{2001/10/09}{Ersetzt durch Pseudo-Länge sigbeforevskip} % \end{macro} % \begin{macro}{\setpresigskip} % \changes{v2.5d}{2000/06/10}{Neues Makro, das den Abstand zwischen % Schlussgruß und Signatur setzt} % \changes{v2.8q}{2001/10/09}{Mit Hilfe der neuen Pseudo-Längen definiert} % Das Makro |\presig@skip| beinhaltet dabei den Abstand zwischen Schlussgruß % und Signatur. Da der Wert über ein Benutzerinterface per |\setpresigskip| % gesetzt wird, muss hier kein kostbares Längenregister (skip oder dim) % verschwendet werden, sondern ein Makro reicht aus. In |\setpresigskip| wird % allerdings noch sichergestellt, dass die Fehlermeldung bei falschem % Parameter möglichst nicht erst bei Verwendung auftritt. % \begin{macrocode} % %\def\setpresigskip{\@setplength{sigbeforevskip}} %<*letter> % \end{macrocode} % \end{macro} % \begin{macro}{\@xtrimtempa} % \changes{v2.8q}{2002/02/05}{Neu (intern)} % \begin{macro}{\@@xtrimtempa} % \changes{v2.8q}{2002/02/05}{Neu (intern)} % Die beiden internen Macros werden benötigt, um beim Zerlegen eines mit % \texttt{\cmd{\\}[\cs{dots}]} zusammengesetzten Arguments das optionale % Argument in eckigen Klammern abzutrennen. Das Ergebnis steht anschließend in % \cs{@tempa}. % \begin{macrocode} \newcommand*{\@xtrimtempa}{% \@ifnextchar [{\@@xtrimtempa}{\@@xtrimtempa[]}} \newcommand*{\@@xtrimtempa}{} \def\@@xtrimtempa[#1]#2\@nil{\def\@tempa{#2}} % \end{macrocode} % \end{macro} % \end{macro} % \begin{macro}{\@tempdimaismaxwidthof} % \changes{v2.8q}{2002/02/05}{Neu (intern)} % Das Makro zerlegt ein mit \texttt{\cmd{\\}[\cs{dots}]} zusammengesetzten % Arguments und merkt in \cs{@tempdima} die Länge des längsten % Elements. \cs{@tempdima} enthält beim Aufruf die minimale Länge. % \begin{macrocode} \newcommand*{\@tempdimaismaxwidthof}{} \def\@tempdimaismaxwidthof#1\\#2\@nil{% \settowidth{\@tempdimb}{\strut\ignorespaces#1}% \ifdim\@tempdima<\@tempdimb\setlength{\@tempdima}{\@tempdimb}\fi \def\@tempa{#2}\ifx\@tempa\@empty \let\@tempb\relax \else \expandafter\@xtrimtempa\@tempa\@nil \def\@tempb{\expandafter\@tempdimaismaxwidthof\@tempa\@nil}% \fi \@tempb } % \end{macrocode} % \end{macro} % Jetzt endlich zum eigentichen Befehl. % \changes{v2.9r}{2004/01/28}{Längenbegrenzung auf \cs{hsize}} % \changes{v2.9r}{2004/01/28}{das Argument darf leer sein} % \begin{macrocode} \newcommand*{\closing}[1]{{% \setparsizes{\z@}{\z@}{\z@ plus 1fil}\par@updaterelative\nobreak\par% \nobreak\vskip\baselineskip% \stopbreaks\noindent% \setlength{\@tempdima}{0pt}% \expandafter\@tempdimaismaxwidthof\scr@signature@var\\\@nil \expandafter\@tempdimaismaxwidthof\strut\ignorespaces#1\\\@nil \setlength{\@tempdimb}{\hsize}% \addtolength{\@tempdimb}{-\useplength{sigindent}}% \ifdim\@tempdima>\@tempdimb\setlength{\@tempdima}{\@tempdimb}\fi% \hspace{\useplength{sigindent}}% \parbox{\@tempdima}{\raggedsignature\strut\ignorespaces% #1\strut\\[\useplength{sigbeforevskip}] \strut\usekomavar{signature}\strut}}\par \nobreak\vskip\baselineskip% } % \end{macrocode} % \end{macro} % % \begin{macro}{\ps} % \changes{v2.8n}{2001/09/08}{Komplett überarbeitet} % Ebenfalls möglich ist ein Postscriptum. Dieser Befehl erwartet das % Postscriptum nicht als Argument, sondern schaltet zum Nachtext um. % \begin{macrocode} \newcommand\ps{\par% \ifdim\parskip=\z@% \vskip\baselineskip% \fi\startbreaks\noindent\ignorespaces% } % \end{macrocode} % \end{macro} % % \begin{macro}{\cc} % Darüber hinaus gibt es noch einen Verteiler. Dieser wird sauber formatiert. % \changes{v2.6}{2001/01/03}{\cs{def} durch \cs{newcommand*} ersetzt} % \changes{v2.8n}{2001/09/08}{Komplett "uberarbeitet} % \changes{v2.9o}{2003/04/22}{\cs{parfillskip} angepasst} % \changes{v2.9q}{2004/04/26}{\cs{parfillskip} auf \texttt{1em plus 1fil} % geändert} % \changes{v2.9r}{2004/05/25}{\cs{parfillskip} auf \texttt{\cs{z@} plus % 1fil} geändert} % \begin{macrocode} \newcommand*{\cc}[1]{\par% \ifdim\parskip=\z@% \vskip\baselineskip% \fi\noindent% \begingroup \parbox[t]{\textwidth}{% \ifkomavarempty{ccseparator}{}{% \@hangfrom{% \strut\usekomavar*{ccseparator}\usekomavar{ccseparator}}% }% \ignorespaces #1\strut}% \setlength{\parfillskip}{\z@ \@plus 1fil}\par \endgroup } % \end{macrocode} % \end{macro} % % \begin{macro}{\encl} % Auch Anlagen werden ordentlich gesetzt. % \changes{v2.4a}{1997/06/06}{der Doppelpunkt bei den Anlagen wird nur noch % gesetzt, wenn \cs{enclname} nicht leer ist} % \changes{v2.6}{2001/01/03}{\cs{def} durch \cs{newcommand*} ersetzt} % \changes{v2.8n}{2001/09/08}{Komplett überarbeiten} % \changes{v2.8q}{2002/01/31}{Fehlendes \% ergänzt} % \changes{v2.9o}{2003/04/22}{\cs{parfillskip} angepasst} % \changes{v2.9q}{2004/04/26}{\cs{parfillskip} auf \texttt{1em plus 1fil} % geändert} % \changes{v2.9r}{2004/05/25}{\cs{parfillskip} auf \texttt{\cs{z@} plus % 1fil} geändert} % \begin{macrocode} \newcommand*{\encl}[1]{\par% \ifdim\parskip=\z@% \vskip\baselineskip% \fi\noindent% \begingroup \parbox[t]{\textwidth}{% \ifkomavarempty*{enclseparator}{}{% \@hangfrom{% \strut\usekomavar*{enclseparator}\usekomavar{enclseparator}}% }% \ignorespaces #1\strut}% \setlength{\parfillskip}{\z@ \@plus 1fil}\par \endgroup } % \end{macrocode} % \end{macro} % % % \subsection{Briefspezifische Feld-Variablen} % % \begin{KOMAvar}{signature} % \changes{v2.8q}{2002/01/16}{Neu} % \begin{KOMAvar}{place} % \changes{v2.8q}{2002/01/16}{Neu} % \begin{KOMAvar}{location} % \changes{v2.8q}{2002/01/16}{Neu} % \begin{KOMAvar}{backaddress} % \changes{v2.8q}{2002/01/16}{Neu} % \begin{KOMAvar}{specialmail} % \changes{v2.8q}{2002/01/16}{Neu} % \begin{KOMAvar}{title} % \changes{v2.8q}{2002/01/16}{Neu} % \begin{KOMAvar}{fromlogo} % \changes{v2.8q}{2002/01/28}{Neu} % 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} % \end{macrocode} % \end{KOMAvar} % \end{KOMAvar} % \end{KOMAvar} % \end{KOMAvar} % \end{KOMAvar} % \end{KOMAvar} % \end{KOMAvar} % % \begin{KOMAvar}{placeseparator} % \changes{v2.8q}{2002/01/16}{Neu} % \begin{KOMAvar}{subjectseparator} % \changes{v2.8q}{2002/01/16}{Neu} % \begin{KOMAvar}{ccseparator} % \changes{v2.8q}{2002/01/16}{Neu} % \begin{KOMAvar}{enclseparator} % \changes{v2.8q}{2002/01/16}{Neu} % \begin{KOMAvar}{backaddressseparator} % \changes{v2.8q}{2002/01/22}{Neu} % \begin{KOMAvar}{phoneseparator} % \changes{v2.8q}{2002/03/25}{Neu} % \begin{KOMAvar}{faxseparator} % \changes{v2.8q}{2002/03/25}{Neu} % \begin{KOMAvar}{emailseparator} % \changes{v2.8q}{2002/03/25}{Neu} % \begin{KOMAvar}{urlseparator} % \changes{v2.8q}{2002/03/25}{Neu} % Daneben gibt es einige Trennzeichen. Diese haben ggf. als Ausgabenamen das % Feld, für das sie als Trennzeichen dienen. Die Trennzeichen sind % vordefiniert. % \begin{macrocode} \newkomavar[\usekomavar{place}]{placeseparator} \setkomavar{placeseparator}{,~} \newkomavar[\subjectname]{subjectseparator} \setkomavar{subjectseparator}{: } \newkomavar[\ccname]{ccseparator} \setkomavar{ccseparator}{: } \newkomavar[\enclname]{enclseparator} \setkomavar{enclseparator}{: } \newkomavar{backaddressseparator} \setkomavar{backaddressseparator}{,~} \newkomavar[\phonename]{phoneseparator} \setkomavar{phoneseparator}{:~} \newkomavar[\faxname]{faxseparator} \setkomavar{faxseparator}{:~} \newkomavar[\emailname]{emailseparator} \setkomavar{emailseparator}{:~} \newkomavar[\wwwname]{urlseparator} \setkomavar{urlseparator}{:~} % \end{macrocode} % \end{KOMAvar} % \end{KOMAvar} % \end{KOMAvar} % \end{KOMAvar} % \end{KOMAvar} % \end{KOMAvar} % \end{KOMAvar} % \end{KOMAvar} % \end{KOMAvar} % % \begin{KOMAvar}{fromname} % \changes{v2.8q}{2002/01/16}{Neu} % \begin{KOMAvar}{fromaddress} % \changes{v2.8q}{2002/01/16}{Neu} % \begin{KOMAvar}{fromemail} % \changes{v2.8q}{2002/01/28}{Neu} % \begin{KOMAvar}{fromurl} % \changes{v2.8q}{2002/01/28}{Neu} % \begin{KOMAvar}{frombank} % \changes{v2.8q}{2002/01/28}{Neu} % \begin{KOMAvar}{toname} % \changes{v2.8q}{2002/01/16}{Neu} % \begin{KOMAvar}{toaddress} % \changes{v2.8q}{2002/01/16}{Neu} % \begin{KOMAvar}{fromphone} % \changes{v2.8q}{2002/01/16}{Neu} % \begin{KOMAvar}{fromfax} % \changes{v2.8q}{2002/01/28}{Neu} % \begin{KOMAvar}{yourmail} % \changes{v2.8q}{2002/01/16}{Neu} % \begin{KOMAvar}{yourref} % \changes{v2.8q}{2002/01/16}{Neu} % \begin{KOMAvar}{myref} % \changes{v2.8q}{2002/01/16}{Neu} % \begin{KOMAvar}{customer} % \changes{v2.8q}{2002/01/16}{Neu} % \begin{KOMAvar}{invoice} % \changes{v2.8q}{2002/01/16}{Neu} % \begin{KOMAvar}{subject} % \changes{v2.8q}{2002/01/16}{Neu} % \begin{KOMAvar}{date} % \changes{v2.8q}{2002/01/16}{Neu} % Desweiteren gibt es einige Variable, die auch einen Ausgabenamen haben, weil % dieser üblicherweise vorangestellt wird. Eine Besonderheit stellt dabei % \texttt{subject} dar. Der Ausgabename beinhaltet dabei nämlich auch die % Trennzeichen, die hinter dem Namen üblicherweise stehen. Diese sind wiederum % ein Variable, deren Name der Ausgabename des Feldes ist. Will man also nur % den Namen aber nicht die Trennzeichen ändern, so ändert man statt dem Namen % von \texttt{subject} den Namen von \texttt{subjectseparator}. % % Ähnlich ist es mit \texttt{toaddress} und \texttt{fromaddress}. Dort ist der % Wert von \texttt{toname} bzw. \texttt{fromname} der Ausgabename. Bei % \texttt{toaddress} und \texttt{fromaddress} wird davon jedoch intern kein % Gebrauch gemacht. Die Variable \texttt{date} wird bereits so vordefiniert, % dass auch weiterhin \cs{date} funktioniert. % \begin{macrocode} \newkomavar[\headfromname]{fromname} \newkomavar[\usekomavar{fromname}]{fromaddress} \newkomavar[\headtoname]{toname} \newkomavar[\usekomavar{toname}]{toaddress} \newkomavar[\usekomavar*{phoneseparator}% \usekomavar{phoneseparator}]{fromphone} \newkomavar[\usekomavar*{faxseparator}% \usekomavar{faxseparator}]{fromfax} \newkomavar[\usekomavar*{emailseparator}% \usekomavar{emailseparator}]{fromemail} \newkomavar[\usekomavar*{urlseparator}% \usekomavar{urlseparator}]{fromurl} \newkomavar[\bankname]{frombank} \newkomavar[\yourrefname]{yourref} \newkomavar[\yourmailname]{yourmail} \newkomavar[\myrefname]{myref} \newkomavar[\customername]{customer} \newkomavar[\invoicename]{invoice} \newkomavar[\usekomavar*{subjectseparator}% \usekomavar{subjectseparator}]{subject} \newkomavar[\datename]{date} \setkomavar{date}{\@date} % \end{macrocode} % \end{KOMAvar} % \end{KOMAvar} % \end{KOMAvar} % \end{KOMAvar} % \end{KOMAvar} % \end{KOMAvar} % \end{KOMAvar} % \end{KOMAvar} % \end{KOMAvar} % \end{KOMAvar} % \end{KOMAvar} % \end{KOMAvar} % \end{KOMAvar} % \end{KOMAvar} % \end{KOMAvar} % \end{KOMAvar} % % \iffalse % % \fi % % \iffalse % % \fi % % \Finale % \endinput % % end of file `scrknpap.dtx' %%% Local Variables: %%% mode: doctex %%% TeX-master: t %%% End: