summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/source/latex/koma-script/scrkernel-letterclassoptions.dtx
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/source/latex/koma-script/scrkernel-letterclassoptions.dtx')
-rw-r--r--Master/texmf-dist/source/latex/koma-script/scrkernel-letterclassoptions.dtx1464
1 files changed, 1464 insertions, 0 deletions
diff --git a/Master/texmf-dist/source/latex/koma-script/scrkernel-letterclassoptions.dtx b/Master/texmf-dist/source/latex/koma-script/scrkernel-letterclassoptions.dtx
new file mode 100644
index 00000000000..3bc69e080d7
--- /dev/null
+++ b/Master/texmf-dist/source/latex/koma-script/scrkernel-letterclassoptions.dtx
@@ -0,0 +1,1464 @@
+% \CheckSum{1467}
+% \iffalse meta-comment
+% ======================================================================
+% scrkernel-letterclassoptions.dtx
+% Copyright (c) Markus Kohm, 2006-2013
+%
+% This file is part of the LaTeX2e KOMA-Script bundle.
+%
+% This work may be distributed and/or modified under the conditions of
+% the LaTeX Project Public License, version 1.3c of the license.
+% The latest version of this license is in
+% http://www.latex-project.org/lppl.txt
+% and version 1.3c or later is part of all distributions of LaTeX
+% version 2005/12/01 or later and of this work.
+%
+% This work has the LPPL maintenance status "author-maintained".
+%
+% The Current Maintainer and author of this work is Markus Kohm.
+%
+% This work consists of all files listed in manifest.txt.
+% ----------------------------------------------------------------------
+% scrkernel-letterclassoptions.dtx
+% Copyright (c) Markus Kohm, 2006-2013
+%
+% Dieses Werk darf nach den Bedingungen der LaTeX Project Public Lizenz,
+% Version 1.3c, verteilt und/oder veraendert werden.
+% Die neuste Version dieser Lizenz ist
+% http://www.latex-project.org/lppl.txt
+% und Version 1.3c ist Teil aller Verteilungen von LaTeX
+% Version 2005/12/01 oder spaeter und dieses Werks.
+%
+% Dieses Werk hat den LPPL-Verwaltungs-Status "author-maintained"
+% (allein durch den Autor verwaltet).
+%
+% Der Aktuelle Verwalter und Autor dieses Werkes ist Markus Kohm.
+%
+% Dieses Werk besteht aus den in manifest.txt aufgefuehrten Dateien.
+% ======================================================================
+% \fi
+%
+% \CharacterTable
+% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+% Digits \0\1\2\3\4\5\6\7\8\9
+% Exclamation \! Double quote \" Hash (number) \#
+% Dollar \$ Percent \% Ampersand \&
+% Acute accent \' Left paren \( Right paren \)
+% Asterisk \* Plus \+ Comma \,
+% Minus \- Point \. Solidus \/
+% Colon \: Semicolon \; Less than \<
+% Equals \= Greater than \> Question mark \?
+% Commercial at \@ Left bracket \[ Backslash \\
+% Right bracket \] Circumflex \^ Underscore \_
+% Grave accent \` Left brace \{ Vertical bar \|
+% Right brace \} Tilde \~}
+%
+% \iffalse
+%%% From File: $Id: scrkernel-letterclassoptions.dtx 1499 2013-11-05 17:22:29Z mjk $
+%<*driver>
+% \fi
+\ProvidesFile{scrkernel-letterclassoptions.dtx}[2013/11/05 v3.12 KOMA-Script
+ (letter class options)]
+% \iffalse
+\documentclass{scrdoc}
+\usepackage[english,ngerman]{babel}
+\usepackage[latin1]{inputenc}
+\CodelineIndex
+\RecordChanges
+\GetFileInfo{scrkernel-letterclassoptions.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}
+%</driver>
+% \fi
+%
+% \selectlanguage{ngerman}
+%
+% \changes{v2.95}{2006/03/22}{%
+% erste Version aus der Aufteilung von \textsf{scrclass.dtx}}
+%
+% \section{Optionendateien für Briefe}
+%
+% Bei der Briefklasse tritt eine Besonderheit ein. Hier ist es
+% möglich, spezielle \texttt{lco}-Dateien zu definieren, die über
+% Optionen geladen werden können. Die unterschiedlichen Brieftypen
+% sind ein Fall für solche \emph{\textbf{l}etter \textbf{c}lass
+% \textbf{o}ption} Dateien.
+%
+% \StopEventually{\PrintIndex\PrintChanges}
+%
+% \iffalse
+%<*letter>
+% \fi
+%
+% \iffalse
+%<*option>
+% \fi
+%
+% \subsection{Optionen für Letter-Class-Options}
+%
+% \begin{macro}{\lco@test}
+% \changes{v2.95}{2006/03/22}{Neu}
+% \changes{v2.97c}{2007/09/12}{an neue Optionenabarbeitung angepasst}
+% Letter-Class-Optionen können auch für jede per |\documentclass| angegebene
+% keyval-Option oder sonstige scan-Option (das sind Optionen, die nicht per
+% |\DeclareOption| definiert wurden) geladen werden. Dabei wird die
+% Abarbeitung der Option nicht unterbrochen. Dazu wird dieses Makro in den
+% scan-Vorgang eingebaut
+% \begin{macrocode}
+\newcommand*{\lco@test}{%
+ \IfFileExists{\CurrentOption.lco}{%
+ \expandafter\AtEndOfClass\expandafter{%
+ \expandafter\LoadLetterOption\expandafter{\CurrentOption}%
+ }%
+ \expandafter\def\expandafter\scr@pti@nerr@r\expandafter{%
+ \expandafter\def\expandafter\scr@pti@nerr@r\expandafter{%
+ \scr@pti@nerr@r
+ }%
+ }%
+ }{}%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% Als Voreinstellung wird am Ende schon einmal die Datei \texttt{DIN.lco}
+% geladen.
+% \begin{macrocode}
+\AtEndOfClass{\LoadLetterOption{DIN}}
+% \end{macrocode}
+%
+% \iffalse
+%</option>
+%<*body>
+% \fi
+%
+% \subsection{Makros für Letter-Class-Options}
+%
+% \begin{macro}{\LoadLetterOption}
+% \changes{v2.8q}{2001/10/08}{Neu}
+% 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}%
+ \InputIfFileExists{#1.lco}{%
+ \ClassInfo{%
+ scrlttr2%
+ }{Letter-Class-Option `#1' loaded}%
+ }{%
+ \ClassError{%
+ scrlttr2%
+ }{%
+ Letter-Class-Option file `#1.lco' not found%
+ }{%
+ You've told me to load the Letter-Class-Option `#1'. So I have
+ to load\MessageBreak
+ the file `#1.lco'. But the file isn't available.}%
+ }%
+ \@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}
+% \end{macro}
+%
+% \begin{macro}{\LetterOptionNeedsPapersize}
+% \changes{v2.8q}{2001/10/17}{Neu}
+% 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
+% \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%
+ \def\ta@opt@err{%
+ \ClassError{%
+ scrlttr2%
+ }{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.}%
+ }%
+ \let\@headlines\ta@opt@err%
+ \expandafter\x@@paper\LOPNP@size paperpaper\x@@paper%
+ \fi\fi\fi
+ \@tempc
+ \endgroup%
+}
+\newcommand*{\@@PapersizeWarning}{%
+ \if@tempswa\else%
+ \ClassWarningNoLine{%
+ scrlttr2%
+ }{%
+ Letter option file `\LOPNP@option.lco'\MessageBreak
+ needs paper size `\LOPNP@size'.\MessageBreak
+ Current paper size is not `\LOPNP@size'!\MessageBreak
+ You should add `paper=\LOPNP@size' at the\MessageBreak
+ option list of \string\documentclass!\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
+%</body>
+%</letter>
+% \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}
+% \changes{v3.04}{2009/06/26}{neue LCO \texttt{USletter2w} in Zusammenarbeit
+% mit Engelbert Buxbaum und Richard Ar\`es geschaffen}
+% \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}
+% \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/}}
+% \changes{v3.04}{2009/06/26}{seit langem existierende LCO \texttt{visualize}
+% zur Visualisierung einiger Pseudolängen aufgenommen}
+% \begin{macrocode}
+\ProvidesFile{%
+%<visualize> visualize%
+%<DIN> DIN%
+%<DINmoretext> DINmtext%
+%<SN> SN%
+%<SNold> SNold%
+%<SwissLeft> SNleft%
+%<KOMAold> KOMAold%
+%<NF> NF%
+%<USletter2w> USletter2w
+%<UScommercial9> UScommercial9
+%<UScommercial9DW> UScommercial9DW
+ .lco}[\KOMAScriptVersion\space letter-class-option]
+% \end{macrocode}
+%
+% \begin{macro}{\LCOWarningNoLine}
+% \changes{v2.95}{2006/03/24}{Neu}
+% \begin{macro}{\LCOWarning}
+% \changes{v2.95}{2006/03/24}{Neu}
+% Außerdem wird ein Makro benötigt, das analog zu |\ClassWarningNoLine| oder
+% |\PackageWarningNoLine| funktioniert.
+\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%
+ }%
+}
+% \end{macro}
+% \end{macro}
+%
+% \iffalse
+%</head>
+%<*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 \\
+% 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}
+\@ifundefined{scr@fromname@var}{%
+ \LCOWarningNoLine{%
+%<DIN> DIN%
+%<DINmoretext> DINmtext%
+%<SN> SN%
+%<SNold> SNold%
+%<SwissLeft> SNleft%
+%<KOMAold> KOMAold%
+%<NF> NF%
+%<USletter2w> USletter2w%
+%<UScommercial9> UScommercial9%
+%<UScommercial9DW> UScommercial9DW%
+ }{%
+ This letter class option file was made only\MessageBreak
+ to be used with KOMA-Script letter class\MessageBreak
+ `scrlttr2'. Use with other classes may result\MessageBreak
+ in a lot of errors%
+ }%
+}{}
+% \end{macrocode}
+%
+% Dann wird geprüft, ob das richtige Papierformat vorhanden ist.
+% \begin{macrocode}
+\LetterOptionNeedsPapersize{%
+%<DIN> DIN%
+%<DINmoretext> DINmtext%
+%<SN> SN%
+%<SNold> SNold%
+%<SwissLeft> SNleft%
+%<KOMAold> KOMAold%
+%<NF> NF%
+%<USletter2w> USletter2w%
+%<UScommercial9> UScommercial9%
+%<UScommercial9DW> UScommercial9DW%
+%<*DIN|DINmoretext|SN|SNold|SwissLeft|KOMAold|NF>
+}{a4}
+%</DIN|DINmoretext|SN|SNold|SwissLeft|KOMAold|NF>
+%<*USletter2w|UScommercial9|UScommercial9DW>
+}{letter}
+%</USletter2w|UScommercial9|UScommercial9DW>
+% \end{macrocode}
+%
+% Dann werden die Werte gesetzt.
+% \begin{description}
+% \item[ZIP-Code]
+% \changes{v3.03}{2009/03/04}{Bezeichner der Variablen \texttt{fromzipcode}
+% wird gesetzt}
+% \begin{macrocode}
+%<!KOMAold>\setkomavar*{fromzipcode}{%
+%<DIN|DINmoretext> D}
+%<SwissLeft|SN> CH}
+%<NF> F}
+%<USletter2w|UScommercial9|UScommercial9DW> US}
+% \end{macrocode}
+% \item[Faltmarken]
+% \changes{v2.97e}{2007/11/20}{Die neuen Faltmarken werden berücksichtigt.}
+% \begin{macrocode}
+\@setplength{foldmarkhpos}{3.5mm}
+\@setplength{tfoldmarkvpos}{%
+%<DIN|SwissLeft|SN> 105mm}
+%<DINmoretext> 87mm}
+%<KOMAold> 103.5mm}
+%<NF> 99mm}
+%<USletter2w|UScommercial9|UScommercial9DW> 3.75in}
+\@setplength{mfoldmarkvpos}{\z@}
+\@setplength{bfoldmarkvpos}{%
+%<DIN|SwissLeft|SN> 210mm}
+%<DINmoretext> 192mm}
+%<KOMAold> 202.5mm}
+%<NF> 198mm}
+%<USletter2w> 7.4in}
+%<UScommercial9|UScommercial9DW> 7.375in}
+\@setplength{lfoldmarkhpos}{\z@}
+% \end{macrocode}
+% \item[Anschrift]
+% \begin{macrocode}
+\@setplength{toaddrvpos}{%
+%<DIN|SN> 45mm}
+%<DINmoretext> 27mm}
+%<SwissLeft> 35.5mm}
+%<KOMAold> 49mm}
+%<NF> 35mm}
+%<USletter2w> 1.8in}
+%<UScommercial9|UScommercial9DW> 2.1875in}
+\@setplength{toaddrhpos}{%
+%<DIN|DINmoretext|SwissLeft> 20mm}
+%<SN> -8mm}
+%<KOMAold> 1in}
+%<KOMAold>\@addtoplength{toaddrhpos}{\oddsidemargin}
+%<NF> -10mm}
+%<USletter2w> .73in}
+%<UScommercial9> 0.6875in}
+%<UScommercial9DW> .5625in}
+\@setplength{toaddrwidth}{%
+%<DIN|DINmoretext> 85mm}
+%<SN> 90mm}
+%<SwissLeft|NF> 100mm}
+%<KOMAold> 70mm}
+%<USletter2w> 3.11in}
+%<UScommercial9> 4.5in}
+%<UScommercial9DW> 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}
+% \begin{macrocode}
+\@setplength{toaddrheight}{%
+%<DIN|DINmoretext|SN|SwissLeft|KOMAold|NF> 45mm}
+%<USletter2w> 1.17in}
+%<UScommercial9|UScommercial9DW> 1.125in}
+\@setplength{toaddrindent}{%
+%<DIN|DINmoretext|SN|SwissLeft|KOMAold|USletter2w|UScommercial9|UScommercial9DW> \z@}
+%<NF> 10mm}
+\@setplength{backaddrheight}{%
+%<DIN|DINmoretext|SN|SwissLeft|KOMAold|NF> 5mm}
+%<USletter2w|UScommercial9|UScommercial9DW> \z@}
+%<USletter2w|UScommercial9|UScommercial9DW>\KOMAoptions{backaddress=false}
+\@setplength{specialmailindent}{\fill}
+\@setplength{specialmailrightindent}{1em}
+% \end{macrocode}
+% \item[Absenderergänzung]
+% \begin{macrocode}
+\@setplength{locwidth}{%
+%<DIN|DINmoretext|SN|SwissLeft|KOMAold|NF|USletter2w|UScommercial9|UScommercial9DW> \z@}
+% \end{macrocode}
+% \item[Kopf]
+% \begin{macrocode}
+\@setplength{firstheadvpos}{%
+%<DIN|DINmoretext|SN|SwissLeft> 8mm}
+%<KOMAold> 6mm}
+%<NF> 15mm}
+%<USletter2w> .36in}
+%<UScommercial9|UScommercial9DW> .4375in}
+\@setplength{firstheadwidth}{%
+%<KOMAold> \textwidth}
+%<NF> 170mm}
+%<*DIN|DINmoretext|SN|SwissLeft|UScommercial9>
+ \paperwidth}
+\ifdim \useplength{toaddrhpos}>\z@
+ \@addtoplength[-2]{firstheadwidth}{\useplength{toaddrhpos}}
+\else
+ \@addtoplength[2]{firstheadwidth}{\useplength{toaddrhpos}}
+\fi
+%</DIN|DINmoretext|SN|SwissLeft|UScommercial9>
+%<*USletter2w>
+ \paperwidth}
+\@addtoplength[-]{firstheadwidth}{.68in}
+%</USletter2w>
+%<*UScommercial9DW>
+ \paperwidth}
+\@addtoplength[-]{firstheadwidth}{.25in}
+%</UScommercial9DW>
+% \end{macrocode}
+% \item[Fuß]
+% \changes{v2.9u}{2005/03/05}{Der Fuß hat optional eine feste Position 16\,mm
+% über der unteren Papierkante.}
+% \begin{macrocode}
+\@setplength{firstfootwidth}{\useplength{firstheadwidth}}
+%<KOMAold>\@setplength{firstfootvpos}{\paperheight}
+%<KOMAold>\@addtoplength{firstfootvpos}{-2cm}
+%<!KOMAold&!NF>\ifnum \scr@compatibility >\@nameuse{scr@v@2.9t}\relax
+%<!KOMAold&!NF> \@setplength{firstfootvpos}{\paperheight}
+%<!KOMAold&!NF> \@addtoplength{firstfootvpos}{-16mm}
+%<!KOMAold&!NF>\else
+%<!KOMAold&!NF> \@setplength{firstfootvpos}{1in}
+%<!KOMAold&!NF> \@addtoplength{firstfootvpos}{\topmargin}
+%<!KOMAold&!NF> \@addtoplength{firstfootvpos}{\headheight}
+%<!KOMAold&!NF> \@addtoplength{firstfootvpos}{\headsep}
+%<!KOMAold&!NF> \@addtoplength{firstfootvpos}{\textheight}
+%<!KOMAold&!NF> \@addtoplength{firstfootvpos}{\footskip}
+%<!KOMAold&!NF>\fi
+%<NF>\@setplength{firstfootvpos}{266.679mm}
+% \end{macrocode}
+% \item[Geschäftszeile]
+% \begin{macrocode}
+\@setplength{refvpos}{%
+%<DIN|SN> 98.5mm}
+%<DINmoretext> 80.5mm}
+%<SwissLeft> 89mm}
+%<KOMAold> 89.5mm}
+%<NF> \useplength{tfoldmarkvpos}}
+%<USletter2w> 3.1in}
+%<UScommercial9|UScommercial9DW> 3.4375in}
+\@setplength{refaftervskip}{%
+%<!KOMAold> \baselineskip}
+%<KOMAold> 2\baselineskip}
+% \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}
+%<DIN|DINmoretext|SN|SwissLeft>\let\raggedsignature=\centering
+%<KOMAold|NF|USletter2w|UScommercial9|UScommercial9DW>\let\raggedsignature=\raggedright
+% \end{macrocode}
+% \end{description}
+% Es folgen ggf. noch zusätzliche Änderungen.
+% \begin{macrocode}
+%<*DINmoretext>
+\renewcommand*{\@firsthead}{\noindent
+ \parbox[b]{\useplength{firstheadwidth}}{\centering%
+ \usekomafont{fromaddress}{%
+ \ifkomavarempty{fromname}{}{%
+ \usekomafont{fromname}%
+ {\ignorespaces\usekomavar{fromname}\\[-8pt]
+ \rule{\useplength{firstheadwidth}}{.4pt}\\
+ }%
+ }%
+ \ifkomavarempty{fromaddress}{}{%
+ \def\\{,\ \@ogobble}%
+ \ignorespaces\usekomavar{fromaddress}%
+ }%
+ }%
+ }%
+ }
+%</DINmoretext>
+% \end{macrocode}
+%
+% 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}}%
+ }
+\ifx\@tempa\scr@backaddress@var%
+ \setkomavar{backaddress}{}
+\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}}
+%</KOMAold>
+% \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}. Das Paket wird nur dann explizit
+% geladen, wenn dies nicht bereits geschehen ist. Damit ist es möglich das
+% Paket mit Optionen vor der LCO zu laden:
+% \begin{macrocode}
+\@ifpackageloaded{eso-pic}{}{\RequirePackage{eso-pic}}
+% \end{macrocode}
+%
+% \begin{macro}{\showfields}
+% 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{%
+ \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}
+% 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}
+% 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}
+% \begin{macro}{\@@showenvelope}
+% \begin{macro}{\@@@showenvelope}
+% 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. Das Paket wird nur dann explizit geladen, wenn dies nicht bereits
+% geschehen ist. Damit ist es möglich das Paket mit Optionen vor der LCO zu
+% laden.
+% \begin{macrocode}
+\@ifpackageloaded{graphicx}{}{\RequirePackage{graphicx}}
+\newcommand*{\showenvelope}{}
+\newcommand*{\@@showenvelope}{}
+\newcommand*{\@@@showenvelope}{}
+\def\showenvelope(#1,#2){%
+ \@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){%
+ \@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
+\newkomafont{letter}{\normalcolor}
+% \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}
+% 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}
+% 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>
+%<*!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)%
+ }]%
+}
+%</UScommercial9DW>
+% \end{macrocode}
+% \end{macro}
+%
+% \iffalse
+%</!visualize>
+%</body>
+%</lco>
+% \fi
+%
+% \Finale
+%
+\endinput
+%
+% end of file `scrkernel-letterclassoptions.dtx'
+%%% Local Variables:
+%%% mode: doctex
+%%% TeX-master: t
+%%% End: