% \CheckSum{1774}
% \iffalse meta-comment
% ======================================================================
% scrkernel-letterclassoptions.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-letterclassoptions.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-letterclassoptions.dtx 3453 2020-02-25 07:33:30Z kohm $
%
%<*body>
% \fi
%
% \subsection{Makros für Letter-Class-Options}
%
% \begin{macro}{\LoadLetterOption}
% \changes{v2.8q}{2001/10/08}{Neu}%^^A
% \changes{v3.14}{2014/10/04}{Leerzeichen werden ignoriert}%^^A
% \changes{v3.26}{2018/08/29}{Verwendung von \cs{scr@sp@def} statt
% \cs{KV@@sp@def}}%^^A
% Bei der neuen Briefklasse existiert eine Anweisung, mit der eine
% \emph{\textbf{l}etter-\texttt{c}lass-\texttt{o}ption}-Datei geladen
% werden kann. Das Laden wird mit entsprechender Information in der
% \texttt{log}-Datei vermerkt. Damit in der Datei interne Makros
% verwendet werden können, muss der catcode von "`@"' entsprechend
% gesetzt sein. Damit der Befehl sowohl in der Präambel als auch in
% weiteren Optionen-Dateien oder in der Klasse selbst verwendet werden
% kann, muss der catcode am Ende wieder restauriert werden. Dabei muss
% etwas trickreich gearbeitet werden, damit tatsächlich eine
% Schachtelung möglich ist. So erfolgt die Umschaltung des catcodes
% immer nur beim ersten Aufruf innerhalb einer Schachtel.
% \begin{macrocode}
\newcommand*{\LoadLetterOption}[1]{%
\@ifundefined{@restore@catcode@level}%
{\let\@restore@catcode@level=\z@}{}%
\ifnum\@restore@catcode@level =\z@
\ifnum\catcode`\@=11
\let\@restore@catcode\relax
\else
\@tempcnta=\catcode`\@
\edef\@restore@catcode{%
\noexpand\catcode`\noexpand\@=\the\@tempcnta}%
\makeatletter
\fi
\fi
\@tempcnta=\@restore@catcode@level\relax
\advance\@tempcnta by \@ne\relax
\edef\@restore@catcode@level{\the\@tempcnta}%
\scr@sp@def\reserved@a{#1}%
\edef\reserved@a{%
\noexpand\edef\noexpand\scr@currentlco{\reserved@a}%
\noexpand\InputIfFileExists{\reserved@a.lco}{%
% \noexpand\ClassInfo{scrlttr2%
% \noexpand\PackageInfo{scrletter%
}{Letter-Class-Option `#1' loaded}%
}{%
% \noexpand\ClassError{scrlttr2%
% \noexpand\PackageError{scrletter%
}{%
Letter-Class-Option file `#1.lco' not found%
}{%
You've told me to load the Letter-Class-Option `#1'. So I have
to load\noexpand\MessageBreak
the file `#1.lco'. But the file isn't available.}%
}%
\scr@ifundefinedorrelax{scr@currentlco}{%
\unexpanded{\let\scr@currentlco\relax}%
}{%
\noexpand\def\noexpand\scr@currentlco{\scr@currentlco}%
}%
}%
% \end{macrocode}
% \changes{v3.18}{2015/06/03}{manage \cs{RequirePackage} and \cs{usepackage}
% inside \texttt{lco}-files after \cs{begin\{document\}}}%^^A
% \changes{v3.28}{2019/11/24}{Tippfehler bezüglich \cs{usepackage}
% beseitigt}%^^A
% Ehrlich gesagt, glaube ich nicht, dass das folgende wirklich sinnvoll
% funktioniert, wie es vermutlich gedacht war. Aber das eigentlich auch egal,
% weil \cs{usepackage} und \cs{RequirePackage} in \texttt{lco}-Dateien, die im
% Dokument geladen werden, ohnehin nicht funktioniert. Das sollte man gar
% nicht erst probieren.
% \begin{macrocode}
\if@atdocument
\edef\reserved@a{%
\unexpanded\expandafter{\reserved@a}%
\ifx\RequirePackage\@notprerr
\unexpanded{\let\RequirePackage\@notprerr}%
\else
\noexpand\def\noexpand\RequirePackage{%
\unexpanded\expandafter{\RequirePackage}%
}%
\fi
\ifx\usepackage\@notprerr
\unexpanded{\let\usepackage\@notprerr}%
\else
\noexpand\def\noexpand\usepackage{%
\unexpanded\expandafter{\usepackage}%
}%
\fi
}%
\let\RequirePackage\lco@RequirePackage
\let\usepackage\lco@RequirePackage
\expandafter\reserved@a
\else \expandafter\reserved@a
\fi
\@tempcnta=\@restore@catcode@level\relax
\advance\@tempcnta by \m@ne\relax
\edef\@restore@catcode@level{\the\@tempcnta}%
\ifnum\@tempcnta =\z@
\@restore@catcode
\fi
}
% \end{macrocode}
% \begin{macro}{\lco@RequirePackage}
% \changes{v3.18}{2015/06/03}{neue Anweisung (intern)}%^^A
% \changes{v3.26}{2018/08/29}{Verwendung von \cs{scr@trim@spaces} statt
% \cs{KV@@sp@def}}%^^A
% Da \texttt{lco}-Dateien auch noch nach \cs{begin\{document\}} geladen werden
% können, wird hier sinnvoll auf die Anforderung von Paketen in diesem Fall
% reagiert. In der ersten Ausbaustufe wird eine sinnvolle Fehlermeldung
% ausgegeben. Irgend wann einmal später könnte man sich eventuell noch etwas
% besseres einfallen lassen.
% Das erste, optionale Argument sind ggf. Optionen. Diese werden jedoch an
% dieser Stelle einfach ignoriert. Das zweitem, obligatorische Argument ist
% eine Liste von Paketen. Das dritte, optionale Argument ist die Version der
% Pakete, die an dieser Stelle ebenfalls ignoriert wird.
% \begin{macrocode}
\newcommand*{\lco@RequirePackage}[2][]{%
\begingroup
\@for\reserved@a:=#2\do{%
\scr@trim@spaces\reserved@a
\scr@ifundefinedorrelax{ver@\reserved@a.\scr@pkgextension}{%
% \ClassError{\KOMAClassName}{%
% \PackageError{scrletter}{%
lco-file `\scr@currentlco' can be used only in preamble%
}{%
The lco-file `\scr@currentlco' uses \string\RequirePackage\space or
\string\usepackage\space to load\MessageBreak
package `\reserved@a'. This means you have to either load
`\reserved@a'\MessageBreak
or lco-file `\scr@currentlco' in the document preamble.
}%
}{}%
}%
\endgroup
\scr@gobbleopt
}
% \end{macrocode}
% \end{macro}%^^A \lco@RequirePackage
% \end{macro}%^^A \LoadLetterOption
% \begin{macro}{\LoadLetterOptions}
% \changes{v3.14}{2014/10/04}{Neue Anweisung}%^^A
% \changes{v3.26}{2018/08/29}{\cs{scr@trim@spaces} eingefügt und damit
% Leerzeichen zwischen den Einträgen erlaubt}%^^A
% \changes{v3.26}{2018/08/29}{Behandlung für (nicht mehr mögliche)
% Leerzeicheneinträge entfernt}%^^A
% Funktioniert prinzipiell wie \cs{LoadLetterOption}, aber es werden mehrere,
% durch Komma getrennte Optionen unterstützt.
% \begin{macrocode}
\newcommand*{\LoadLetterOptions}[1]{%
\begingroup
\def\reserved@a{\endgroup}%
\@for\reserved@b:=#1\do{%
\scr@trim@spaces\reserved@b
\ifx\reserved@b\@empty\else
\edef\reserved@a{\expandafter\unexpanded\expandafter{\reserved@a
\LoadLetterOption}{\reserved@b}\relax}%
\fi
}%
\reserved@a
}
% \end{macrocode}
% \end{macro}%^^A \LoadLetterOptions
%
% \begin{macro}{\LetterOptionNeedsPapersize}
% \changes{v2.8q}{2001/10/17}{Neu}%^^A
% Es besteht die Möglichkeit, in \texttt{lco}-Dateien eine bestimmte
% Papiergröße zu fordern. Dazu wird der Name der \texttt{lco}-Datei
% und die geforderte Papiergröse als Parameter übergeben. Stimmt die
% Papiergröße nicht überein, so wird bei \cs{opening} eine Warnung
% ausgegeben.
% \begin{macro}{\@PapersizeWarning}
% \changes{v2.8q}{2002/03/25}{Neu (intern)}%^^A
% \changes{v3.12}{2013/11/05}{Abweichung von 1\,mm nach unten und oben
% erlaubt}%^^A
% \changes{v3.23}{2017/02/22}{Verwendung des neuen \cs{PaperNameToSize}}%^^A
% \begin{macro}{\@@PapersizeWarning}
% \changes{v2.8q}{2002/03/25}{Neu (intern)}%^^A
% \begin{macro}{\LOPNP@size}
% \changes{v2.8q}{2002/03/25}{Neu (intern)}%^^A
% \begin{macro}{\LOPNP@option}
% \changes{v2.8q}{2002/03/25}{Neu (intern)}%^^A
% Zur einfacheren Realisierung wird mit vier internen Hilfsmakros
% gearbeitet.
% \begin{macrocode}
\newcommand*{\LOPNP@option}{}
\newcommand*{\LOPNP@size}{}
\newcommand*{\@PapersizeWarning}{%
\begingroup%
\edef\@tempc{\noexpand\@tempswafalse
\noexpand\ifdim\paperwidth<\the\dimexpr\paperwidth-.1mm\relax
\relax
\noexpand\else
\noexpand\ifdim\paperwidth>\the\dimexpr\paperwidth+.1mm\relax
\relax
\noexpand\else
\noexpand\ifdim\paperheight<\the\dimexpr\paperheight-.1mm\relax
\relax
\noexpand\else
\noexpand\ifdim\paperheight>\the\dimexpr\paperheight+.1mm\relax
\relax
\noexpand\else
\noexpand\@tempswatrue
\noexpand\fi
\noexpand\fi
\noexpand\fi
\noexpand\fi
\noexpand\@@PapersizeWarning
}%
\def\@tempb{letter}\ifx\LOPNP@size\@tempb%
\setlength{\paperheight}{11in}\setlength{\paperwidth}{8.5in}%
\else\def\@tempb{legal}\ifx\LOPNP@size\@tempb%
\setlength{\paperheight}{14in}\setlength{\paperwidth}{8.5in}%
\else\def\@tempb{executive}\ifx\LOPNP@size\@tempb%
\setlength{\paperheight}{10.5in}\setlength{\paperwidth}{7.25in}%
\else%
\PaperNameToSize[letter]{\LOPNP@size}%
\fi
\fi
\fi
\@tempc
\endgroup%
}
%\AfterPackage*{typearea}{%
\ProvideUnknownPaperSizeError{letter}{%
% \ClassError{scrlttr2}{%
% \PackageError{scrletter}{%
papersize `\LOPNP@size' undefined}{%
You've told me to check for paper size
`\LOPNP@size'\MessageBreak
at letter option file `\LOPNP@option.lco',\MessageBreak
but this paper size is not supported.\MessageBreak
See the KOMA-Script manual for informations about known
paper sizes.}%
}
%}
\newcommand*{\@@PapersizeWarning}{%
\if@tempswa\else%
% \ClassWarningNoLine{scrlttr2%
% \PackageWarningNoLine{scrletter%
}{%
Letter option file `\LOPNP@option.lco'\MessageBreak
needs paper size `\LOPNP@size'.\MessageBreak
Current paper size is not `\LOPNP@size'!\MessageBreak
\scr@ifundefinedorrelax{KOMAClassName}{%
You should load package `typearea' either\MessageBreak
with option `paper=\LOPNP@size,paper=portrait' or
additionally\MessageBreak
}{%
You should add `paper=\LOPNP@size,paper=portrait' at the\MessageBreak
option list of `\string\documentclass' or\MessageBreak
}%
add `\string\KOMAoptions{paper=\LOPNP@size,paper=portrait}'\MessageBreak
before starting this letter!\MessageBreak
Maybe you know what you are doing,\MessageBreak
so I do not change this myself}%
\fi
}
% \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \begin{macrocode}
\newcommand*{\LetterOptionNeedsPapersize}[2]{%
\edef\LOPNP@size{#2}\edef\LOPNP@option{#1}%
}
% \end{macrocode}
% \end{macro}
%
% \iffalse
%
%
% \fi
%
% \subsection{Die Letter-Class-Optionen}
%
% Die Letter-Class-Optionen selbst werden wie bereits erwähnt über Dateien
% realisiert. In den vorgefertigen Dateien für unterschiedliche Arten von
% Briefen werden in erster Linie Pseudo-Längen passend gesetzt. In einigen
% Fällen werden aber auch zusätzlich Befehle umdefiniert.
%
% \iffalse
%<*lco>
% \fi
%
% \subsubsection{Der Datei Kopf}
%
% \iffalse
%<*head>
% \fi
%
% Im Kopf ist natürlich die Datei zu deklarieren:
% \changes{v3.04}{2009/04/21}{neue LCO \texttt{NF} von Jean-Marie Pacquet
% übernommen und ergänzt}%^^A
% \changes{v3.04}{2009/06/26}{neue LCO \texttt{USletter2w} in Zusammenarbeit
% mit Engelbert Buxbaum und Richard Ar\`es geschaffen}%^^A
% \changes{v3.04}{2009/06/29}{neue LCO \texttt{UScommercial9DW} für Papier im
% Format letter oder legal in Umschlägen im Format commercial No.\,9 mit
% zwei Fenstern}%^^A
% \changes{v3.04}{2009/06/30}{neue LCO \texttt{UScommercial9} für Papier im
% Format letter oder legal in Umschlägen im Format commercial No.\,9 mit
% einem Fenster auf Basis von
% \texttt{http://www.envelopesuperstore.com/}}%^^A
% \changes{v3.04}{2009/06/26}{seit langem existierende LCO \texttt{visualize}%^^A
% zur Visualisierung einiger Pseudolängen aufgenommen}%^^A
% \changes{v3.17}{2015/02/17}{neue LCOs \texttt{DIN5008A} und
% \texttt{DIN5008B}}%^^A
% \begin{macrocode}
\ProvidesFile{%
% visualize%
% DIN%
%<5008> 5008%
% A%
% B%
% DINmtext%
% SN%
% SNold%
% SNleft%
% KOMAold%
% NF%
% USletter2w
% UScommercial9
% UScommercial9DW
.lco}[\KOMAScriptVersion\space letter-class-option]
% \end{macrocode}
%
% Manche \texttt{LCO}-Dateien bauen auf anderen auf:
% \begin{macrocode}
%<*5008>
\LoadLetterOption{%
% DINmtext%
% DIN%
}
%5008>
% \end{macrocode}
%
% \begin{macro}{\LCOWarningNoLine}
% \changes{v2.95}{2006/03/24}{Neu}%^^A
% \begin{macro}{\LCOWarning}
% \changes{v2.95}{2006/03/24}{Neu}%^^A
% Außerdem wird ein Makro benötigt, das analog zu |\ClassWarningNoLine| oder
% |\PackageWarningNoLine| funktioniert.
%<*!5008>
\providecommand*\LCOWarningNoLine[2]{%
\LCOWarning{#1}{#2\@gobble}%
}
\providecommand*\LCOWarning[2]{%
\GenericWarning{%
(#1)\@spaces\@spaces\@spaces\@spaces\@spaces\@spaces\@spaces
}{%
Letter class option #1 Warning: #2%
}%
}
%!5008>
% \end{macro}
% \end{macro}
%
% \iffalse
%
%<*body>
%<*!visualize>
% \fi
%
% \subsubsection{Der Hauptteil}
%
% Die Maße für einige Optionen wurden nicht von mir selbst recherchiert:
% \begin{center}
% \begin{tabular}{ll}
% \texttt{lco}-Datei & Recherchiert von \\\hline\\[-1.6ex]
% DIN & mir \\
% DINmtext & mir \\
% DIN5008A & mir \\
% DIN5008B & mir \\
% KOMAold & mir \\
% SNleft & Roger Luethi \\
% SN & Roger Luethi \\
% NF & Jean-Marie Pacquet \\
% USletter2w & Engelbert Buxbaum \\
% UScommercial9 & mir \\
% UScommercial9DW & mir \\
% \end{tabular}{ll}
% \end{center}
%
% Zunächst wird geprüft, ob überhaupt die richtige Klasse geladen ist.
% \begin{macrocode}
%<*!5008>
\@ifundefined{scr@fromname@var}{%
\LCOWarningNoLine{%
% DIN%
% DINmtext%
% SN%
% SNold%
% SNleft%
% KOMAold%
% NF%
% USletter2w%
% UScommercial9%
% UScommercial9DW%
}{%
This letter class option file was made only\MessageBreak
to be used with KOMA-Script letter class\MessageBreak
`scrlttr2' or letter package `scrletter'.\MessageBreak
Use with other classes and without that package\MessageBreak
can result in a lot of errors%
}%
}{}
% \end{macrocode}
%
% Dann wird geprüft, ob das richtige Papierformat vorhanden ist.
% \begin{macrocode}
\LetterOptionNeedsPapersize{%
% DIN%
% DINmtext%
% SN%
% SNold%
% SNleft%
% KOMAold%
% NF%
% USletter2w%
% UScommercial9%
% UScommercial9DW%
%<*DIN|DINmoretext|SN|SNold|SwissLeft|KOMAold|NF>
}{a4}
%
%<*USletter2w|UScommercial9|UScommercial9DW>
}{letter}
%
% \end{macrocode}
%
% Dann werden die Werte gesetzt.
% \begin{description}
% \item[ZIP-Code]
% \changes{v3.03}{2009/03/04}{Bezeichner der Variablen \texttt{fromzipcode}%^^A
% wird gesetzt}
% \begin{macrocode}
%\setkomavar*{fromzipcode}{%
% D}
% CH}
% F}
% US}
% \end{macrocode}
% \item[Faltmarken]
% \changes{v2.97e}{2007/11/20}{Die neuen Faltmarken werden berücksichtigt.}%^^A
% \begin{macrocode}
\@setplength{foldmarkhpos}{3.5mm}
\@setplength{tfoldmarkvpos}{%
% 105mm}
% 87mm}
% 103.5mm}
% 99mm}
% 3.75in}
\@setplength{mfoldmarkvpos}{\z@}
\@setplength{bfoldmarkvpos}{%
% 210mm}
% 192mm}
% 202.5mm}
% 198mm}
% 7.4in}
% 7.375in}
\@setplength{lfoldmarkhpos}{\z@}
% \end{macrocode}
% \item[Anschrift]
% \begin{macrocode}
\@setplength{toaddrvpos}{%
% 45mm}
% 27mm}
% 35.5mm}
% 49mm}
% 35mm}
% 1.8in}
% 2.1875in}
\@setplength{toaddrhpos}{%
% 20mm}
% -8mm}
% 1in}
%\@addtoplength{toaddrhpos}{\oddsidemargin}
% -10mm}
% .73in}
% 0.6875in}
% .5625in}
\@setplength{toaddrwidth}{%
% 85mm}
% 90mm}
% 100mm}
% 70mm}
% 3.11in}
% 4.5in}
% 3.625in}
% \end{macrocode}
% \changes{v3.03}{2009/06/25}{Anschriftfeld enthält laut Doku die
% Rücksendeadresse, also machen wir das jetzt auch so}%^^A
% \begin{macrocode}
\@setplength{toaddrheight}{%
% 45mm}
% 1.17in}
% 1.125in}
%!5008>
\@setplength{toaddrindent}{%
% \z@}
%<*5008>
5mm}
\@setplength{locvpos}{%
\dimexpr\useplength{toaddrvpos}+\useplength{backaddrheight}}
%5008>
%<*!5008>
% 10mm}
\@setplength{backaddrheight}{%
% 5mm}
% \z@}
%\KOMAoptions{backaddress=false}
\@setplength{specialmailindent}{\fill}
\@setplength{specialmailrightindent}{1em}
%!5008>
%<*5008>
\@setplength{specialmailindent}{\useplength{toaddrindent}}
\@setplength{specialmailrightindent}{\z@}
%5008>
% \end{macrocode}
% \item[Absenderergänzung]
% \begin{macrocode}
\@setplength{locwidth}{%
% \z@}
%<5008> 75mm}
%<5008>\@setplength{lochpos}{10mm}
%<*!5008>
% \end{macrocode}
% \item[Kopf]
% \begin{macrocode}
\@setplength{firstheadvpos}{%
% 8mm}
% 6mm}
% 15mm}
% .36in}
% .4375in}
%!5008>
%<*5008>
\@setplength{firstheadhpos}{%
\dimexpr \useplength{toaddrhpos}+\useplength{toaddrindent}}
%5008>
\@setplength{firstheadwidth}{%
% \textwidth}
% 170mm}
%<*DIN|DINmoretext|SN|SwissLeft|UScommercial9>
\paperwidth}
\ifdim \useplength{toaddrhpos}>\z@
\@addtoplength[-2]{firstheadwidth}{\useplength{toaddrhpos}}
\else
\@addtoplength[2]{firstheadwidth}{\useplength{toaddrhpos}}
\fi
%
%<5008> \dimexpr 125mm-\useplength{firstheadhpos}}
%<*USletter2w>
\paperwidth}
\@addtoplength[-]{firstheadwidth}{.68in}
%
%<*UScommercial9DW>
\paperwidth}
\@addtoplength[-]{firstheadwidth}{.25in}
%
% \end{macrocode}
% \item[Fuß]
% \changes{v2.9u}{2005/03/05}{Der Fuß hat optional eine feste Position 16\,mm
% über der unteren Papierkante.}%^^A
% \begin{macrocode}
%\@setplength{firstfootwidth}{\useplength{firstheadwidth}}
%<*5008>
\@setplength{firstfoothpos}{%
\dimexpr\useplength{toaddrhpos}+\useplength{toaddrindent}}%
\@setplength{firstfootwidth}{%
\dimexpr \paperwidth-\useplength{toaddrhpos}-\useplength{firstfoothpos}}%
%5008>
%\@setplength{firstfootvpos}{\paperheight}
%\@addtoplength{firstfootvpos}{-2cm}
%\ifnum \scr@compatibility >\@nameuse{scr@v@2.9t}\relax
% \@setplength{firstfootvpos}{\paperheight}
% \@addtoplength{firstfootvpos}{-16mm}
%\else
% \@setplength{firstfootvpos}{1in}
% \@addtoplength{firstfootvpos}{\topmargin}
% \@addtoplength{firstfootvpos}{\headheight}
% \@addtoplength{firstfootvpos}{\headsep}
% \@addtoplength{firstfootvpos}{\textheight}
% \@addtoplength{firstfootvpos}{\footskip}
%\fi
%\@setplength{firstfootvpos}{266.679mm}
% \end{macrocode}
% \item[Geschäftszeile]
% \begin{macrocode}
%\@setplength{refvpos}{%
% 98.5mm}
% 80.5mm}
%<5008&A> 79.4mm}
% 89mm}
% 89.5mm}
% \useplength{tfoldmarkvpos}}
% 3.1in}
% 3.4375in}
\@setplength{refaftervskip}{%
% \baselineskip}
% 2\baselineskip}
%<5008> 8.46mm}
%<*!5008>
% \end{macrocode}
% Bei der Breite der Geschäftszeile brauchen wir wieder eine Sonderlösung,
% damit die Option "`wide"' auch später noch gesetzt werden kann. Also
% verwenden wir hier den Wert 0 als mit der Bedeutung "`ist bei \cs{opening}
% zu berechnen.
% \begin{macrocode}
\@setplength{refwidth}{0pt}
% \end{macrocode}
% \item[Signature]
% \begin{macrocode}
\@setplength{sigindent}{0mm}
\@setplength{sigbeforevskip}{2\baselineskip}
%\let\raggedsignature=\centering
%\let\raggedsignature=\raggedright
% \end{macrocode}
% \end{description}
% \begin{macro}{\scr@default@firsthead@fromaddress@hook}
% Einst folgte hier die Definition eines Hooks in der Form
% \changes{v3.13b}{2014/10/04}{\cs{@firsthead} existiert nicht mehr, daher nun
% mit einem neu geschaffenen \emph{hook}}%^^A
% \changes{v3.27}{2019/04/02}{\emph{hook} entfernt}%^^A
% \begin{macrocode}
%<*DINmoretext&ignorethis>
\def\scr@default@firsthead@fromaddress@hook{\def\\{,\ \@gobble}}
%
% \end{macrocode}
% Da diese Definition fehlerhaft ist, korrekt wäre etwas wie:
% \begin{macrocode}
%<*DINmoretext&ignorethis>
\def\scr@default@firsthead@fromaddress@hook{%
\renewcommand*\\[1][]{,\ \ignorespaces}%
}
%
% und das in 15 Jahren niemandem aufgefallen ist, wird davon ausgegangen, dass
% davon nie jemand Gebrauch gemacht hat und wir deshalb einfach darauf
% verzichten können.
% \end{macrocode}
% \end{macro}
%
% Außerdem gibt es noch die Kompatibilitätseinstellungen, die ebenfalls von
% \texttt{KOMAold} aktiviert werden.
% \begin{macrocode}
%<*KOMAold>
\def\yourref{\setkomavar{yourref}}
\def\yourmail{\setkomavar{yourmail}}
\def\myref{\setkomavar{myref}}
\def\customer{\setkomavar{customer}}
\def\invoice{\setkomavar{invoice}}
\@ifundefined{scr@refitemi@var}{\newkomavar{refitemi}}{}
\def\refitemi{\setkomavar{refitemi}}
\def\refitemnamei{\setkomavar*{refitemi}}
\@ifundefined{scr@refitemii@var}{\newkomavar{refitemii}}{}
\def\refitemii{\setkomavar{refitemii}}
\def\refitemnameii{\setkomavar*{refitemii}}
\@ifundefined{scr@refitemiii@var}{\newkomavar{refitemiii}}{}
\def\refitemiii{\setkomavar{refitemiii}}
\def\refitemnameiii{\setkomavar*{refitemiii}}
\l@addto@macro{\defaultreffields}{%
\addtoreffields{refitemi}%
\addtoreffields{refitemii}%
\addtoreffields{refitemiii}%
}
\addtoreffields{refitemi}%
\addtoreffields{refitemii}%
\addtoreffields{refitemiii}%
\def\toname{\usekomavar{toname}}
\def\toaddress{\usekomavar{toaddress}}
\@ifundefined{scr@branch@var}{\newkomavar{branch}}{}
\def\branch{\setkomavar{branch}}
\def\frombranch{\usekomavar{branch}}
\def\signature{\setkomavar{signature}}
\def\fromsig{\usekomavar{signature}}
\def\name{\setkomavar{fromname}}
\def\fromname{\usekomavar{fromname}}
\def\address{\setkomavar{fromaddress}}
\def\fromaddress{\usekomavar{fromaddress}}
\def\location{\setkomavar{location}}
\def\fromlocation{\usekomavar{location}}
\def\backaddress{\setkomavar{backaddress}}
\def\@tempa{%
\Ifkomavarempty{fromname}{}{%
\strut\ignorespaces\usekomavar{fromname}%
\Ifkomavarempty{fromaddress}{}{\\}}%
\Ifkomavarempty{fromaddress}{}{%
\strut\ignorespaces\usekomavar{fromaddress}}%
}
% \end{macrocode}
% \changes{v3.28}{2019/11/15}{\cs{ifkomavarempty} durch \cs{Ifkomavarempty}
% ersetzt}%^^A
% Aufgrund der Änderung bezüglich \cs{ifkomavarempty}/\cs{Ifkomavarempty} wird
% hier aus Kompatibilitätsgründen vorerst zweigleisig gefahren. Es kann aber
% an dieser Stelle tatsächlich zu einer Inkompatibilität kommen, wenn jemand
% den Code kopiert hat und jetzt eine neue Version von \KOMAScript{}
% verwendet.
% \begin{macrocode}
\ifx\@tempa\scr@backaddress@var%
\setkomavar{backaddress}{}
\else
\def\@tempa{%
\ifkomavarempty{fromname}{}{%
\strut\ignorespaces\usekomavar{fromname}%
\ifkomavarempty{fromaddress}{}{\\}}%
\ifkomavarempty{fromaddress}{}{%
\strut\ignorespaces\usekomavar{fromaddress}}%
}
\ifx\@tempa\scr@backaddress@var%
\setkomavar{backaddress}{}
\fi
\fi
\def\frombackaddress{\usekomavar{backaddress}}
\def\telephone{\setkomavar{fromphone}}
\def\telephonenum{\usekomavar{fromphone}}
\def\specialmail{\setkomavar{specialmail}}
\def\@specialmail{\usekomavar{specialmail}}
\def\title{\setkomavar{title}}
\def\@title{\usekomavar{title}}
\def\subject{\setkomavar{subject}}
\def\@subject{\usekomavar{subject}}
\def\place{\setkomavar{place}}
\def\fromplace{\usekomavar{place}}
\let\ccnameseparator=\scr@ccseparator@var
\setkomavar{ccseparator}{\ccnameseparator}
\let\enclnameseparator=\scr@enclseparator@var
\setkomavar{enclseparator}{\enclnameseparator}
\setkomafont{fromname}{\scshape}
\def\foldmarkson{\@ObsoleteCommand{\foldmarkson}{foldmarks=on}}
\def\foldmarksoff{\@ObsoleteCommand{\foldmarksoff}{foldmarks=off}}
\def\addrfieldon{\@ObsoleteCommand{\addrfieldon}{addrfield=on}}
\def\addrfieldoff{\@ObsoleteCommand{\addrfieldoff}{addrfield=off}}
\def\subjecton{\@ObsoleteCommand{\subjecton}{subject=titled}}
\def\subjectoff{\@ObsoleteCommand{\subjectoff}{subject=untitled}}
\def\subjectafteron{%
\@ObsoleteCommand{\subjectafteron}{subject=afteropening}}
\def\subjectafteroff{%
\@ObsoleteCommand{\subjectafteroff}{subject=beforeopening}}
%
% \end{macrocode}
%
% Und für \texttt{DIN5008} braucht es dann noch einige zusätzliche
% Einstellungen:
% \changes{v3.30}{2020/02/25}{unerwünschtes Leerzeichen am Ende der Warnungen
% beseitigt}%^^A
% \begin{macrocode}
%!5008>
%<*5008>
\@newplength{specialmailheight}
\@setplength{specialmailheight}{12.7mm}
\areaset[5mm]{165mm}{233mm}
\KOMAoptions{%
fromalign=locationleft,
addrfield=topaligned,
refline=narrow,
parskip=full
}
\l@addto@macro\@PapersizeWarning{%
\begingroup
\@tempswafalse
\ifdim\oddsidemargin<\dimexpr 25mm-1in-1pt\relax\@tempswatrue\else
\ifdim\oddsidemargin>\dimexpr 25mm-1in+1pt\relax\@tempswatrue\fi\fi
\ifdim\textwidth<\dimexpr \paperwidth-45mm-1pt\relax\@tempswatrue\else
\ifdim\textwidth>\dimexpr \paperwidth-45mm+1pt\relax\@tempswatrue\fi\fi
\if@tempswa
\LCOWarning{DIN5008%
% A%
% B%
}{%
DIN5008 orders exact margins and text\MessageBreak
width. Without following these values,\MessageBreak
your document does not conform DIN5008.\MessageBreak
You should use, e.g.,\MessageBreak
\space\string\areaset[5mm]{%
\the\dimexpr \paperwidth-45mm\relax}{%
\the\dimexpr 1.414\dimexpr \paperwidth-45mm\relax\relax}\MessageBreak
to follow the norm%
}%
\fi
\ifdim \dimexpr\parskip\relax=\dimexpr\baselineskip\relax\else
\LCOWarning{DIN5008%
% A%
% B%
}{%
DIN5008 orders paragraph separation by\MessageBreak
exactly one line. Without this, your\MessageBreak
document does not conform DIN5008.\MessageBreak
You shoud use, e.g.,\MessageBreak
\space\string\KOMAoption{parskip}{full}\MessageBreak
to follow the norm%
}%
\fi
\endgroup
}
% \end{macrocode}
% \begin{macro}{\backaddr@format}
% \changes{v3.25}{2017/11/15}{Verwendung von \cs{scr@endstrut} statt
% \cs{unskip}\cs{strut}}%^^A
% Nicht unterstrichene, mehrzeilig oben ausgerichtete Rücksendeadresse.
% \begin{macrocode}
\renewcommand{\backaddr@format}[1]{\hspace*{\useplength{toaddrindent}}%
\parbox[t][\useplength{backaddrheight}][t]%
{\dimexpr\useplength{toaddrwidth}-\useplength{toaddrindent}}%
{\strut\ignorespaces #1\ifhmode\scr@endstrut\fi}%
}
% \end{macrocode}
% \end{macro}
% \begin{macro}{\specialmail@format}
% \changes{v3.25}{2017/11/15}{Verwendung von \cs{scr@endstrut} statt
% \cs{unskip}\cs{strut}}%^^A
% Mehrzeilig oben ausgerichtete Versandart.
% \begin{macrocode}
\renewcommand{\specialmail@format}[1]{%
\parbox[t][\useplength{specialmailheight}][t]%
{\dimexpr\useplength{toaddrwidth}
-\useplength{specialmailindent}
-\useplength{specialmailrightindent}}%
{\strut\ignorespaces #1\ifhmode\scr@endstrut\fi}%
}
% \end{macrocode}
% \end{macro}
% Und Schrifteinstellungen:
% \begin{macrocode}
\setkomafont{specialmail}{\sffamily\fontsize{10pt}{12pt}\selectfont}
\setkomafont{backaddress}{\sffamily\fontsize{8pt}{10pt}\selectfont}
\setkomafont{addressee}{\sffamily\fontsize{10pt}{12pt}\selectfont}
\setkomafont{fromname}{\sffamily\fontsize{10pt}{12pt}\selectfont}
\setkomafont{fromaddress}{\sffamily\fontsize{10pt}{12pt}\selectfont}
\setkomafont{refvalue}{\sffamily\fontsize{10pt}{12pt}\selectfont}
\let\raggedsignature\raggedright
%5008>
% \end{macrocode}
%
% \iffalse
%!visualize>
%<*visualize>
% \fi
%
% \subsection{Makros zur Visualisierung diverser Felder in einem Brief}
%
% Diese Makros werden nur von \texttt{visualize.lco} verwendet und stellen den
% Hauptteil dieser LCO dar.
%
% Das Paket benötigt \textsf{eso-pic}.
% \changes{v3.18}{2015/06/03}{lade \textsf{eso-pic} unbedingt}%^^A
% \begin{macrocode}
\RequirePackage{eso-pic}
% \end{macrocode}
%
% \begin{macro}{\showfields}
% \changes{v3.26}{2018/08/29}{\cs{scr@trim@spaces} eingefügt}%^^A
% Diese Anweisung erlaubt es, eine Reihe von Felder zu visualisieren. Dazu
% gibt man die gewünschten Felder als Komma separierte Liste im ersten und
% einzigen Argument der Anweisung an. Gibt man ein unbekanntes Feld an, so
% wird nicht etwa ein Fehler, sondern nur eine Warnung ausgegeben. Die
% Visualisierung erfolgt im Hintergrund. Dies wird mit Hilfe des Pakets
% \textsf{eso-pic} erreicht. Wichtig ist noch, dass die Anweisung nicht
% zurückgenommen werden kann.
% \begin{macrocode}
\newcommand*{\showfields}[1]{%
\AtBeginLetter{%
\begingroup
\@for \@tempa:=#1\do{%
\scr@trim@spaces\@tempa
\ifx\@tempa\@empty\else
\@ifundefined{showfield@\@tempa}{%
\LCOWarning{visualize}{Unknown field `\@tempa' ignored}%
}{%
\edef\@tempa{%
\noexpand\AddToShipoutPicture*{%
\noexpand\AtPageUpperLeft{%
\noexpand\usekomafont{field}%
\noexpand\@nameuse{showfield@\@tempa}%
}%
}%
}\@tempa
}%
\fi
}%
\endgroup
}%
}
% \end{macrocode}
% \begin{KOMAfont}{field}
% Die Visualisierung erfolgt dabei in einer wählbaren Farbe, die über das
% Element \cs{field} definiert ist. Voreingestellt ist dabei
% \cs{normalcolor}.
% \begin{macrocode}
\newkomafont{field}{\normalcolor}
% \end{macrocode}
% \end{KOMAfont}
% \end{macro}
%
% \begin{macro}{\showfield}
% Die Visualisierung der einzelnen Felder erfolgt über eigene Anweisungen des
% Aufbaus \cs{showfield@\emph{Feldname}}. In der Regel sind die Felder
% rechteckig. Zur Visualisierung solcher Felder können daher einheitliche
% Anweisungen verwendet werden. Diese besitzen vier Argumente:
% \begin{enumerate}
% \item Abstand vom linken Rand (x-Koordinate des Rahmens)
% \item Abstand vom oberen Rand (y-Koordinate des Rahmens)
% \item Breite des Feldes
% \item Höhe des Feldes; ist dieser Wert negativ gibt es keine feste Höhe,
% sondern nur eine Art unbestimmte Ausdehnung mit einer Mindesthöhe
% \end{enumerate}
%
% \begin{macro}{\showfield@by@frame}
% Diese Anweisung visualisiert ein rechteckiges Feld durch Rahmen. Bei einer
% negativen Höhe wird ein unten offener Rahmen gezeichnet, bei dem die
% vertikalen Linien als Pfeile nach unten ausgeführt werden.
% \begin{macrocode}
\newcommand*{\showfield@by@frame}[4]{%
\thinlines
\ifdim #4<\z@
\put(\LenToUnit{#1},-\LenToUnit{#2}){\line(1,0){\LenToUnit{#3}}}%
\setlength{\@tempdima}{\dimexpr #1+#3\relax}%
\setlength{\@tempdimb}{#4}
\put(\LenToUnit{#1},-\LenToUnit{#2}){%
\vector(0,-1){\LenToUnit{-\@tempdimb}}}%
\put(\LenToUnit\@tempdima,-\LenToUnit{#2}){%
\vector(0,-1){\LenToUnit{-\@tempdimb}}}%
\else
\put(\LenToUnit{#1},-\LenToUnit{#2}){\line(1,0){\LenToUnit{#3}}}%
\put(\LenToUnit{#1},-\LenToUnit{#2}){\line(0,-1){\LenToUnit{#4}}}%
\setlength{\@tempdima}{\dimexpr #1+#3\relax}%
\setlength{\@tempdimb}{\dimexpr #2+#4\relax}%
\put(\LenToUnit\@tempdima,\LenToUnit{-\@tempdimb}){%
\line(-1,0){\LenToUnit{#3}}}%
\put(\LenToUnit\@tempdima,\LenToUnit{-\@tempdimb}){%
\line(0,1){\LenToUnit{#4}}}%
\fi
}
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\showfield@by@edges}
% Diese Anweisung visualisert ein rechteckiges Feld, indem es die Ecken des
% Feldes durch kleine Striche markiert. Bei negativer Höhe entfallen die
% unteren Eckmarkierungen.
% \begin{macrocode}
\newcommand*{\showfield@by@edges}[4]{%
\thinlines
\setlength{\@tempdima}{\dimexpr #1+#3\relax}%
\put(\LenToUnit{#1},-\LenToUnit{#2}){\line(1,0){\LenToUnit{\edgesize}}}%
\put(\LenToUnit{#1},-\LenToUnit{#2}){\line(0,-1){\LenToUnit{\edgesize}}}%
\put(\LenToUnit{\@tempdima},-\LenToUnit{#2}){\line(-1,0){\LenToUnit{\edgesize}}}%
\put(\LenToUnit{\@tempdima},-\LenToUnit{#2}){\line(0,-1){\LenToUnit{\edgesize}}}%
\ifdim #4<\z@\else
\setlength{\@tempdimb}{\dimexpr #2+#4\relax}%
\put(\LenToUnit{#1},-\LenToUnit{\@tempdimb}){\line(1,0){\LenToUnit{\edgesize}}}%
\put(\LenToUnit{#1},-\LenToUnit{\@tempdimb}){\line(0,1){\LenToUnit{\edgesize}}}%
\put(\LenToUnit{\@tempdima},-\LenToUnit{\@tempdimb}){\line(-1,0){\LenToUnit{\edgesize}}}%
\put(\LenToUnit{\@tempdima},-\LenToUnit{\@tempdimb}){\line(0,1){\LenToUnit{\edgesize}}}%
\fi
}
% \end{macrocode}
% \begin{macro}{\edgesize}
% Die Länge der Ecklinien wird über dieses Makro bestimmt. Voreingestellt ist
% 1\,ex.
% \begin{macrocode}
\newcommand*{\edgesize}{1ex}
% \end{macrocode}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\showfield@by@rule}
% Diese Anweisung visualisiert ein rechteckiges Feld, indem es das komplette
% Feld einfärbt. Es wird hier nicht zwischen unten offenen und geschlossenen
% Feldern unterschieden.
% \begin{macrocode}
\newcommand*{\showfield@by@rule}[4]{%
\ifdim #4<\z@
\put(\LenToUnit{#1},-\LenToUnit{#2}){\rule[#4]{#3}{-#4}}%
\else
\put(\LenToUnit{#1},-\LenToUnit{#2}){\rule[-#4]{#3}{#4}}%
\fi
}
% \end{macrocode}
% \end{macro}
%
% Die Voreinstellung für die Visualsierung ist mit Rahmen:
% \begin{macrocode}
\newcommand*{\showfield}{}
\let\showfield\showfield@by@frame
% \end{macrocode}
%
% \begin{macro}{\setshowstyle}
% Dieser Stil der Visualisierung kann per Anweisung umgeschaltet
% werden. Existiert ein Stil nicht, so wird kein Fehler gemldet, sondern
% lediglich eine Warnung und der Standardstil verwendet:
% \begin{macrocode}
\newcommand*{\setshowstyle}[1]{%
\@ifundefined{showfield@by@#1}{%
\LCOWarning{visualize}{Unknown show type `#1'.\MessageBreak
You should simply set one of the supported\MessageBreak
show types `frame', `edges', `rule'.\MessageBreak
Style `frame' will be used instead}%
\let\showfield\showfield@by@frame
}{%
\expandafter\let\expandafter\showfield\csname showfield@by@#1\endcsname
}%
}
% \end{macrocode}
% \end{macro}
% \end{macro}
%
% Die folgenden Felder werden derzeit unterstützt:
% \begin{macro}{\showfield@test}
% ein Testfeld \texttt{test} mit den Koordinaten:
% $(1\,\mathrm{cm},1\,\mathrm{cm})\times(10\,\mathrm{cm},15\,\mathrm{cm})$
% \begin{macrocode}
\newcommand*{\showfield@test}{%
\showfield{1cm}{1cm}{10cm}{15cm}%
}
% \end{macrocode}
% \end{macro}
% \begin{macro}{\showfield@head}
% \changes{v3.05}{2009/11/09}{neue Pseudo-Länge \texttt{firstheadhpos}%^^A
% beachtet}
% das Feld \texttt{head} für den Kopfbereich des Briefbogens:
% \begin{macrocode}
\newcommand*{\showfield@head}{%
\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
\showfield{\@tempskipa}%
{\useplength{firstheadvpos}}%
{\useplength{firstheadwidth}}%
{-\headheight}%
}
% \end{macrocode}
% \end{macro}
% \begin{macro}{\showfield@foot}
% \changes{v3.05}{2009/11/09}{neue Pseudo-Länge \texttt{firstfoothpos}%^^A
% beachtet}
% das Feld \texttt{foot} für den Fußbereich des Briefbogens:
% \begin{macrocode}
\newcommand*{\showfield@foot}{%
\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
\showfield{\@tempskipa}%
{\useplength{firstfootvpos}}%
{\useplength{firstfootwidth}}%
{-\baselineskip}%
}
% \end{macrocode}
% \end{macro}
% \begin{macro}{\showfield@address}
% \changes{v3.07a}{2011/01/10}{Implementierung der Höhe an die Änderung in
% \textsf{scrlttr}~3.03b angepasst.}
% das Feld \texttt{address} für das Feld mit der Anschrift:
% \begin{macrocode}
\newcommand*{\showfield@address}{%
\setlengthtoplength{\@tempskipa}{toaddrhpos}%
\ifdim \@tempskipa<\z@
\addtolength{\@tempskipa}{\paperwidth}%
\addtolengthplength[-]{\@tempskipa}{toaddrwidth}%
\fi
\showfield{\@tempskipa}{\useplength{toaddrvpos}}%
{\useplength{toaddrwidth}}%
{\dimexpr\useplength{toaddrheight}\relax}%
}
% \end{macrocode}
% \end{macro}
% \begin{macro}{\showfield@location}
% \changes{v3.07a}{2011/01/10}{Implementierung der Höhe an die Änderung in
% \textsf{scrlttr}~3.03b angepasst.}
% das Feld \texttt{location} mit der Absenderergänzung:
% \begin{macrocode}
\newcommand*{\showfield@location}{%
\begingroup
\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{locvpos}=\z@%
\@setplength{locvpos}{\useplength{toaddrvpos}}%
\fi
\ifdim \useplength{locheight}=\z@%
\@setplength{locheight}{\useplength{toaddrheight}}%
\fi
\setlengthtoplength[-]{\@tempskipa}{lochpos}%
\ifdim \@tempskipa<\z@
\addtolength{\@tempskipa}{\paperwidth}%
\else
\addtolengthplength{\@tempskipa}{locwidth}%
\fi
\addtolengthplength[-]{\@tempskipa}{locwidth}%
\showfield{\@tempskipa}{\useplength{locvpos}}%
{\useplength{locwidth}}{\useplength{locheight}}%
\endgroup
}
% \end{macrocode}
% \end{macro}
% \begin{macro}{\showfield@refline}
% das Feld mit der Geschäftszeile:
% \begin{macrocode}
\newcommand*{\showfield@refline}{%
\begingroup
\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
\setlength\@tempdima{\textwidth}%
\addtolengthplength[-]{\@tempdima}{refwidth}%
\setlength\@tempdimb{\oddsidemargin}%
\addtolength\@tempdimb{1in}%
\setlength{\@tempdimc}{\paperwidth}%
\addtolength{\@tempdimc}{-\textwidth}%
\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
\showfield{\useplength{refhpos}}{\useplength{refvpos}}%
{\useplength{refwidth}}{-1.5\baselineskip}%
\endgroup
}
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\showenvelope}
% \begin{macro}{\@showenvelope}
% \changes{v3.20}{2016/04/12}{\cs{@ifnextchar} replaced by
% \cs{kernel@ifnextchar}}%^^A
% \begin{macro}{\@@showenvelope}
% \begin{macro}{\@@@showenvelope}
% \changes{v3.20}{2016/04/12}{\cs{@ifnextchar} replaced by
% \cs{kernel@ifnextchar}}%^^A
% Es kann auch ein Briefumschlag angezeigt werden. Dazu müssen verschiedene
% Parameter des Umschlags bekannt sein. Der Umschlag wird immer hochkant auf
% der aktuellen Seite angezeigt. Hierfür wird das Paket \textsf{graphicx}
% benötigt.
% \changes{v3.18}{2015/06/03}{lade \textsf{graphicx} unbedingt}%^^A
% \begin{macrocode}
\RequirePackage{graphicx}
\newcommand*{\showenvelope}{}
\newcommand*{\@@showenvelope}{}
\newcommand*{\@@@showenvelope}{}
\def\showenvelope(#1,#2){%
\kernel@ifnextchar (%)
{\@showenvelope({#1},{#2})}%
{\@@@showenvelope({#1},{#2})}%
}
\def\@@@showenvelope(#1,#2){%
\begingroup
\def\@tempa{\endgroup}%
\ifdim \paperwidth>#1\relax
\LCOWarning{visualize}{%
\string\paperwidth\space > envelope width not supported}%
\else
\ifdim \paperheight>#2\relax
\ifdim .5\paperheight>#2\relax
\expandafter\ifdim \useplength{tfoldmarkvpos}>#2\relax
\LCOWarning{visualize}{%
tfoldmarkvpos > envelope height not supported}%
\else
\def\@tempa{\endgroup
\@showenvelope({#1},{#2})%
({\dimexpr (#1-\paperwidth)/2\relax},%
{\dimexpr (#2-\expandafter\dimexpr
\useplength{tfoldmarkvpos}\relax)%
/2\relax})%
}%
\fi
\else
\def\@tempa{\endgroup
\@showenvelope({#1},{#2})%
({\dimexpr (#1-\paperwidth)/2\relax},%
{\dimexpr (#2-.5\paperheight)/2\relax})%
}%
\fi
\else
\def\@tempa{\endgroup
\@showenvelope({#1},{#2})%
({\dimexpr (#1-\paperwidth)/2\relax},%
{\dimexpr (#2-\paperheight)/2\relax})%
}%
\fi
\fi
\@tempa
}
\def\@showenvelope(#1,#2)(#3,#4){%
\kernel@ifnextchar [%]
{\@@showenvelope({#1},{#2})({#3},{#4})}%
{\@@showenvelope({#1},{#2})({#3},{#4})[]}%
}
\def\@@showenvelope(#1,#2)(#3,#4)[#5]{%
% \end{macrocode}
% Die Argumente sind:
% \begin{enumerate}
% \item Breite des Umschlags,
% \item Höhe des Umschlags,
% \item Abstand des Briefbogens vom linken und rechten Rand des Umschlags,
% \item Abstand des Briefbogens vom oberen und unteren Rand des Umschlags,
% \item optionale weitere Anweisungen, zum Setzen von Elementen.
% \end{enumerate}
% \begin{macrocode}
\newpage
\vspace*{\fill}
\rotatebox{90}{%
\begin{picture}(0,0)
\begin{picture}(\LenToUnit{#1},\LenToUnit{#2})(0,\LenToUnit{#2})
\newcommand*{\PlusHOffset}[1]{%
\dimexpr \expandafter\dimexpr ##1\relax + #3\relax
}%
\newcommand*{\MinusHOffset}[1]{%
\dimexpr \expandafter\dimexpr ##1\relax - #3\relax
}%
\newcommand*{\PlusVOffset}[1]{%
\dimexpr \expandafter\dimexpr ##1\relax + #4\relax
}%
\newcommand*{\MinusVOffset}[1]{%
\dimexpr \expandafter\dimexpr ##1\relax - #4\relax
}%
\newcommand{\AtEnvelopeUpperLeft}[1]{%
\put(\LenToUnit{\PlusHOffset\z@},\LenToUnit{\MinusVOffset{#2}}){##1}%
}%
\newcommand{\AtEnvelopeLowerLeft}[1]{%
\put(\LenToUnit{\PlusHOffset\z@},\LenToUnit{\PlusVOffset\z@}){##1}%
}%
\newcommand{\AtEnvelopeUpperRight}[1]{%
\put(\LenToUnit{\MinusHOffset{#1}},\LenToUnit{\MinusVOffset{#2}}){##1}%
}%
\newcommand{\AtEnvelopeLowerRight}[1]{%
\put(\LenToUnit{\MinusHOffset{#1}},\LenToUnit{\PlusVOffset\z@}){##1}%
}%
\newcommand*{\measuredIFrame}{}%
\def\measuredIFrame(##1,##2)(##3,##4){%
\put(\LenToUnit{##1},\LenToUnit{##2}){%
\measuredFrameLB({##3},{##4})%
}%
\put(\LenToUnit{\MinusHOffset\z@},%
\LenToUnit{\dimexpr ##2-.5mm\relax}){%
\measureLineHB{\PlusHOffset{##1}}%
}%
\put(\LenToUnit{\dimexpr ##1+##3\relax},%
\LenToUnit{\dimexpr ##2-.5mm\relax}){%
\measureLineHB{\dimexpr #1-%
\PlusHOffset{\dimexpr ##1+##3\relax}\relax}%
}%
\put(\LenToUnit{\dimexpr ##1-.5mm\relax},%
\LenToUnit{\dimexpr ##2+##4\relax}){%
\measureLineVL{\PlusVOffset{\dimexpr -##2-##4\relax}}%
}%
\put(\LenToUnit{\dimexpr ##1-.5mm\relax},%
\LenToUnit{\PlusVOffset{-#2}}){%
\measureLineVL{\dimexpr #2-%
\PlusVOffset{\dimexpr -##2\relax}\relax}%
}%
}%
\put(0,0){%
\thicklines
\usekomafont{envelope}%
\measuredFrameLB({#1},{#2})%
}%
\AtEnvelopeLowerLeft{%
\usekomafont{letter}%
\dashbox{\LenToUnit{1mm}}%
(\LenToUnit{\MinusHOffset{\MinusHOffset{#1}}},%
\LenToUnit{\MinusVOffset{\MinusVOffset{#2}}}){}%
}%
\expandafter\ifdim \useplength{toaddrhpos}<\z@
\AtEnvelopeUpperLeft{%
\thicklines
\usekomafont{envelope}%
\measuredIFrame(\expandafter\dimexpr \useplength{toaddrhpos}+
\MinusHOffset{\MinusHOffset{#1}}\relax,%
-\dimexpr %
\expandafter\dimexpr\useplength{toaddrvpos}\relax
+
\expandafter
\dimexpr\useplength{toaddrheight}\relax
\relax)%
(\useplength{toaddrwidth},\useplength{toaddrheight})%
}%
\else
\AtEnvelopeUpperLeft{%
\thicklines
\usekomafont{envelope}%
\measuredIFrame(\useplength{toaddrhpos},%
-\dimexpr %
\expandafter\dimexpr\useplength{toaddrvpos}\relax
+
\expandafter
\dimexpr\useplength{toaddrheight}\relax
\relax)%
(\useplength{toaddrwidth},\useplength{toaddrheight})%
}%
\fi
\AtEnvelopeUpperLeft{#5}%
\end{picture}
\end{picture}
}%
\newpage
}
% \end{macrocode}
% \begin{KOMAfont}{envelope}
% Farbe des Umschlagrahmens.
% \begin{macrocode}
\newkomafont{envelope}{\normalcolor}
% \end{macrocode}
% \end{KOMAfont}
% \begin{KOMAfont}{letter}
% Farbe des getrichelten Briefbogens im Umschlag
% \begin{macrocode}
\newkomafont{letter}{\normalcolor}
% \end{macrocode}
% \end{KOMAfont}
% \begin{macro}{\unmeasuredFrame}
% Ein Rahmen ohne Maßlinien.
% \begin{macrocode}
\newcommand*{\unmeasuredFrame}{}
\def\unmeasuredFrame(#1,#2){%
\put(0,0){\line(1,0){\LenToUnit{#1}}}%
\put(\LenToUnit{#1},0){\line(0,1){\LenToUnit{#2}}}%
\put(\LenToUnit{#1},\LenToUnit{#2}){\line(-1,0){\LenToUnit{#1}}}%
\put(0,\LenToUnit{#2}){\line(0,-1){\LenToUnit{#2}}}%
}
% \end{macrocode}
% \end{macro}
% \begin{macro}{\measuredFrameLB}
% \begin{macro}{\measuredFrameLT}
% \begin{macro}{\measuredFrameRB}
% \begin{macro}{\measuredFrameRT}
% Die Maßlinien für ein Rechteck.
% \begin{macrocode}
\newcommand*{\measuredFrameLB}{}
\def\measuredFrameLB(#1,#2){%
\unmeasuredFrame({#1},{#2})%
\put(\LenToUnit{-.5mm},0){\measureLineVL{#2}}%
\put(0,\LenToUnit{-.5mm}){\measureLineHB{#1}}%
}
\newcommand*{\measuredFrameLT}{}
\def\measuredFrameLT(#1,#2){%
\unmeasuredFrame({#1},{#2})%
\put(\LenToUnit{-.5mm},0){\measureLineVL{#2}}%
\put(0,\LenToUnit{\expandafter\dimexpr #2+.5mm\relax}){\measureLineHT{#1}}%
}
\newcommand*{\measuredFrameRB}{}
\def\measuredFrameRB(#1,#2){%
\unmeasuredFrame({#1},{#2})%
\put(\LenToUnit{\expandafter\dimexpr #1+.5mm\relax},0){\measureLineVR{#2}}%
\put(0,\LenToUnit{-.5mm}){\measureLineHB{#1}}%
}
\newcommand*{\measuredFrameRT}{}
\def\measuredFrameRT(#1,#2){%
\unmeasuredFrame({#1},{#2})%
\put(\LenToUnit{\expandafter\dimexpr #1+.5mm\relax},0){\measureLineVR{#2}}%
\put(0,\LenToUnit{\expandafter\dimexpr #2+.5mm\relax}){\measureLineHT{#1}}%
}
% \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \begin{macro}{\measureLineV}
% Vertikale Maßlinie ohne Beschriftung:
% \begin{macrocode}
\newcommand*{\measureLineV}[1]{%
\begin{picture}(0,0)
\thinlines
\usekomafont{measure}%
\put(0,0){\vector(0,1){\LenToUnit{#1}}}%
\put(0,\LenToUnit{#1}){\vector(0,-1){\LenToUnit{#1}}}%
\end{picture}
}
% \end{macrocode}
% \end{macro}
% \begin{macro}{\measureLineVL}
% \begin{macro}{\measureLineVR}
% Vertikale Maßlinie mit Beschriftung links bzw. rechts.
% \begin{macrocode}
\newcommand*{\measureLineVL}[1]{%
\begin{picture}(0,0)
\usekomafont{measure}%
\put(0,0){\measureLineV{#1}}%
\put(0,0){\makebox(0,\LenToUnit{#1})[r]{\ValPerUnit{#1}}}%
\end{picture}
}
\newcommand*{\measureLineVR}[1]{%
\begin{picture}(0,0)
\usekomafont{measure}%
\put(0,0){\measureLineV{#1}}%
\put(0,0){\makebox(0,\LenToUnit{#1})[l]{\ValPerUnit{#1}}}%
\end{picture}
}
% \end{macrocode}
% \begin{macro}{\ValPerUnit}
% \begin{macro}{\unitfactor}
% Zeige die Längen in \cs{unitlength} mit einer Genauigkeit von
% 1/\cs{unitfactor} an.
% \begin{macrocode}
\newcommand*{\ValPerUnit}[1]{%
\begingroup
\setlength{\@tempdima}{%
\dimexpr #1/(\unitlength/\unitfactor)*\p@/\unitfactor\relax
}%
\strip@pt\@tempdima
\endgroup
}
\newcommand*{\unitfactor}{1}
% \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \begin{macro}{\measureLineH}
% Horizontale Maßlinie ohne Beschriftung:
% \begin{macrocode}
\newcommand*{\measureLineH}[1]{%
\begin{picture}(0,0)
\usekomafont{measure}%
\put(0,0){\vector(1,0){\LenToUnit{#1}}}%
\put(\LenToUnit{#1},0){\vector(-1,0){\LenToUnit{#1}}}%
\end{picture}
}
% \end{macrocode}
% \end{macro}
% \begin{macro}{\measureLineHB}
% \begin{macro}{\measureLineHT}
% Horizontale Maßlinie mit Beschriftung darunter bzw. oben.
% \begin{macrocode}
\newcommand*{\measureLineHB}[1]{%
\begin{picture}(0,0)
\usekomafont{measure}%
\put(0,0){\measureLineH{#1}}%
\put(0,\LenToUnit{\dimexpr -\ht\strutbox-.5mm\relax}){%
\makebox(\LenToUnit{#1},\LenToUnit{\baselineskip})[c]{\ValPerUnit{#1}}}%
\end{picture}
}
\newcommand*{\measureLineHT}[1]{%
\begin{picture}(0,0)
\usekomafont{measure}%
\put(0,0){\measureLineH{#1}}%
\put(0,0){%
\makebox(\LenToUnit{#1},\LenToUnit{\baselineskip})[c]{\ValPerUnit{#1}}}%
\end{picture}
}
% \end{macrocode}
% \end{macro}
% \end{macro}
% \begin{KOMAfont}{measure}
% Farbe der Maßlinien.
% \begin{macrocode}
\newkomafont{measure}{\normalcolor}
% \end{macrocode}
% \end{KOMAfont}
% \end{macro}
%
% \begin{macro}{\showISOenvelope}
% \changes{v3.28}{2019/11/18}{\cs{ifstr} umbenannt in \cs{Ifstr}}%^^A
% Zeigt einen DIN/ISO C4, C5, DL=C5/6, C6/5 Umschlag.
% \begin{macrocode}
\newcommand*{\showISOenvelope}[1]{%
\Ifstr{#1}{C4}{%
\showenvelope(324mm,229mm)%
}{%
\Ifstr{#1}{C5}{%
\showenvelope(229mm,162mm)%
}{%
\Ifstr{#1}{C5/6}{%
\showenvelope(220mm,110mm)%
}{%
\Ifstr{#1}{DL}{%
\showenvelope(220mm,110mm)%
}{%
\Ifstr{#1}{C6/5}{%
\showenvelope(229mm,114mm)%
}{%
\Ifstr{#1}{C6}{%
\showenvelope(162mm,114mm)%
}{%
\LCOWarning{visualize}{envelope size `ISO #1' unsupported}%
}%
}%
}%
}%
}%
}%
}
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\showUScommercial}
% \changes{v3.28}{2019/11/18}{\cs{ifstr} umbenannt in \cs{Ifstr}}%^^A
% Zeige ein US commercial Umschlag der Nummer 9 und 10
% \begin{macrocode}
\newcommand*{\showUScommercial}[1]{%
\Ifstr{#1}{9}{%
\showenvelope(8.875in,3.875in)%
}{%
\Ifstr{#1}{10}{%
\showenvelope(9.5in,4.125in)%
}{%
\LCOWarning{visualize}{envelope size `US commercial #1' unsupported}%
}%
}%
}
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\showUScheck}
% Zeige einen US check Umschag.
% \begin{macrocode}
\newcommand*{\showUScheck}{%
\showenvelope(8.625in,3.625in)%
}
% \end{macrocode}
% \end{macro}
%
% \iffalse
%
%<*!visualize>
% \fi
%
% \begin{macro}{\showUSletterCixDW}
% Ein Umschlag im Format commercial No. 9 mit 2 Fenstern,
% Absenderfenster $3\frac{1}{2}\,\mathrm{in}\times\frac{7}{8}\,\mathrm{in}$,
% $\frac{5}{16}\,\mathrm{in}$ von links und $2\frac{1}{2}\,\mathrm{in}$ von
% unten.
% \begin{macrocode}
%<*UScommercial9DW>
\newcommand*{\showUSletterCixDW}{%
\showUScommercial9[{%
\thicklines
\usekomafont{envelope}%
\measuredIFrame({\dimexpr (\paperwidth-
\expandafter\dimexpr \useplength{firstheadwidth}\relax%
)/2\relax},%
-\expandafter\dimexpr\useplength{firstheadvpos}\relax)%
(3.5in,.875in)%
}]%
}
%
% \end{macrocode}
% \end{macro}
%
% \iffalse
%!visualize>
%