You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
1769 lines
59 KiB
1769 lines
59 KiB
% \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 $
|
|
%<option>%%% (run: option)
|
|
%<head>%%% (run: head)
|
|
%<body>%%% (run: body)
|
|
%<*dtx>
|
|
% \fi
|
|
\ifx\ProvidesFile\undefined\def\ProvidesFile#1[#2]{}\fi
|
|
\begingroup
|
|
\def\filedate$#1: #2-#3-#4 #5${\gdef\filedate{#2/#3/#4}}
|
|
\filedate$Date: 2020-02-25 08:33:30 +0100 (Tue, 25 Feb 2020) $
|
|
\def\filerevision$#1: #2 ${\gdef\filerevision{r#2}}
|
|
\filerevision$Revision: 3453 $
|
|
\endgroup
|
|
\ProvidesFile{scrkernel-letterclassoptions.dtx}
|
|
[\filedate\space \filerevision\space
|
|
KOMA-Script source (letter class options)]
|
|
% \iffalse
|
|
\documentclass{scrdoc}
|
|
\usepackage[english,ngerman]{babel}
|
|
\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}
|
|
%</dtx>
|
|
% \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}%^^A
|
|
% \changes{v2.97c}{2007/09/12}{an neue Optionenabarbeitung angepasst}%^^A
|
|
% 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
|
|
%<class> \AtEndOfClass
|
|
%<package> \AtEndOfPackage
|
|
\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}
|
|
%<class>\AtEndOfClass
|
|
%<package>\AtEndOfPackage
|
|
{\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}%^^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}{%
|
|
%<class> \noexpand\ClassInfo{scrlttr2%
|
|
%<package> \noexpand\PackageInfo{scrletter%
|
|
}{Letter-Class-Option `#1' loaded}%
|
|
}{%
|
|
%<class> \noexpand\ClassError{scrlttr2%
|
|
%<package> \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}{%
|
|
%<class> \ClassError{\KOMAClassName}{%
|
|
%<package> \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%
|
|
}
|
|
%<class>\AfterPackage*{typearea}{%
|
|
\ProvideUnknownPaperSizeError{letter}{%
|
|
%<class> \ClassError{scrlttr2}{%
|
|
%<package> \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.}%
|
|
}
|
|
%<class>}
|
|
\newcommand*{\@@PapersizeWarning}{%
|
|
\if@tempswa\else%
|
|
%<class> \ClassWarningNoLine{scrlttr2%
|
|
%<package> \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
|
|
%</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}%^^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> visualize%
|
|
%<DIN> DIN%
|
|
%<5008> 5008%
|
|
%<A> A%
|
|
%<B> B%
|
|
%<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}
|
|
%
|
|
% Manche \texttt{LCO}-Dateien bauen auf anderen auf:
|
|
% \begin{macrocode}
|
|
%<*5008>
|
|
\LoadLetterOption{%
|
|
%<A> DINmtext%
|
|
%<B> 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
|
|
%</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 \\
|
|
% 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> 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' 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> 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}%^^A
|
|
% 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.}%^^A
|
|
% \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}%^^A
|
|
% \begin{macrocode}
|
|
\@setplength{toaddrheight}{%
|
|
%<DIN|DINmoretext|SN|SwissLeft|KOMAold|NF> 45mm}
|
|
%<USletter2w> 1.17in}
|
|
%<UScommercial9|UScommercial9DW> 1.125in}
|
|
%</!5008>
|
|
\@setplength{toaddrindent}{%
|
|
%<DIN|DINmoretext|SN|SwissLeft|KOMAold|USletter2w|UScommercial9|UScommercial9DW> \z@}
|
|
%<*5008>
|
|
5mm}
|
|
\@setplength{locvpos}{%
|
|
\dimexpr\useplength{toaddrvpos}+\useplength{backaddrheight}}
|
|
%</5008>
|
|
%<*!5008>
|
|
%<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}
|
|
%</!5008>
|
|
%<*5008>
|
|
\@setplength{specialmailindent}{\useplength{toaddrindent}}
|
|
\@setplength{specialmailrightindent}{\z@}
|
|
%</5008>
|
|
% \end{macrocode}
|
|
% \item[Absenderergänzung]
|
|
% \begin{macrocode}
|
|
\@setplength{locwidth}{%
|
|
%<DIN|DINmoretext|SN|SwissLeft|KOMAold|NF|USletter2w|UScommercial9|UScommercial9DW> \z@}
|
|
%<5008> 75mm}
|
|
%<5008>\@setplength{lochpos}{10mm}
|
|
%<*!5008>
|
|
% \end{macrocode}
|
|
% \item[Kopf]
|
|
% \begin{macrocode}
|
|
\@setplength{firstheadvpos}{%
|
|
%<DIN|DINmoretext|SN|SwissLeft> 8mm}
|
|
%<KOMAold> 6mm}
|
|
%<NF> 15mm}
|
|
%<USletter2w> .36in}
|
|
%<UScommercial9|UScommercial9DW> .4375in}
|
|
%</!5008>
|
|
%<*5008>
|
|
\@setplength{firstheadhpos}{%
|
|
\dimexpr \useplength{toaddrhpos}+\useplength{toaddrindent}}
|
|
%</5008>
|
|
\@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>
|
|
%<5008> \dimexpr 125mm-\useplength{firstheadhpos}}
|
|
%<*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.}%^^A
|
|
% \begin{macrocode}
|
|
%<!5008>\@setplength{firstfootwidth}{\useplength{firstheadwidth}}
|
|
%<*5008>
|
|
\@setplength{firstfoothpos}{%
|
|
\dimexpr\useplength{toaddrhpos}+\useplength{toaddrindent}}%
|
|
\@setplength{firstfootwidth}{%
|
|
\dimexpr \paperwidth-\useplength{toaddrhpos}-\useplength{firstfoothpos}}%
|
|
%</5008>
|
|
%<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}
|
|
%<!(5008&B)>\@setplength{refvpos}{%
|
|
%<DIN|SN> 98.5mm}
|
|
%<DINmoretext> 80.5mm}
|
|
%<5008&A> 79.4mm}
|
|
%<SwissLeft> 89mm}
|
|
%<KOMAold> 89.5mm}
|
|
%<NF> \useplength{tfoldmarkvpos}}
|
|
%<USletter2w> 3.1in}
|
|
%<UScommercial9|UScommercial9DW> 3.4375in}
|
|
\@setplength{refaftervskip}{%
|
|
%<!KOMAold&!5008> \baselineskip}
|
|
%<KOMAold> 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}
|
|
%<DIN|DINmoretext|SN|SwissLeft>\let\raggedsignature=\centering
|
|
%<KOMAold|NF|USletter2w|UScommercial9|UScommercial9DW>\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}}
|
|
%</DINmoretext&ignorethis>
|
|
% \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}%
|
|
}
|
|
%</DINmoretext&ignorethis>
|
|
% 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}}
|
|
%</KOMAold>
|
|
% \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> A%
|
|
%<B> 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> A%
|
|
%<B> 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>
|
|
%<*!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:
|
|
|