% \CheckSum{1442} % \iffalse meta-comment % ====================================================================== % scrklco.dtx % Copyright (c) Markus Kohm, 2006-2010 % % 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. % ---------------------------------------------------------------------- % scrklco.dtx % Copyright (c) Markus Kohm, 2006-2010 % % 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: scrklco.dtx %<*driver> % \fi \ProvidesFile{scrklco.dtx}[2009/11/09 v3.05 KOMA-Script (letter class options)] % \iffalse \documentclass{scrdoc} \usepackage[english,ngerman]{babel} \usepackage[latin1]{inputenc} \CodelineIndex \RecordChanges \GetFileInfo{scrklco.dtx} \title{\KOMAScript{} \partname\ \texttt{\filename}% \footnote{Dies ist Version \fileversion\ von Datei \texttt{\filename}.}} \date{\filedate} \author{Markus Kohm} \begin{document} \maketitle \tableofcontents \DocInput{\filename} \end{document} % % \fi % % \selectlanguage{ngerman} % % \changes{v2.95}{2006/03/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 % %<*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)} % \begin{macro}{\@@PapersizeWarning} % \changes{v2.8q}{2002/03/25}{Neu (intern)} % \begin{macro}{\LOPNP@size} % \changes{v2.8q}{2002/03/25}{Neu (intern)} % \begin{macro}{\LOPNP@option} % \changes{v2.8q}{2002/03/25}{Neu (intern)} % Zur einfacheren Realisierung wird mit vier internen Hilfsmakros % gearbeitet. % \begin{macrocode} \newcommand*{\LOPNP@option}{} \newcommand*{\LOPNP@size}{} \newcommand*{\@PapersizeWarning}{% \begingroup% \edef\@tempc{\noexpand\@tempswatrue \noexpand\ifdim\paperwidth=\the\paperwidth\noexpand\else \noexpand\@tempswafalse\noexpand\fi \noexpand\ifdim\paperheight=\the\paperheight\noexpand\else \noexpand\@tempswafalse\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 % % % \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% % DIN% % DINmtext% % SN% % SNold% % SNleft% % KOMAold% % NF% % USletter2w % UScommercial9 % 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 % %<*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% % DINmtext% % SN% % SNold% % SNleft% % KOMAold% % NF% % USletter2w% % UScommercial9% % UScommercial9DW% }{% This letter class option file was made only\MessageBreak to be used with KOMA-Script letter class\MessageBreak `scrlttr2'. 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% % DINmtext% % SN% % SNold% % SNleft% % KOMAold% % NF% % USletter2w% % UScommercial9% % UScommercial9DW% %<*DIN|DINmoretext|SN|SNold|SwissLeft|KOMAold|NF> }{a4} % %<*USletter2w|UScommercial9|UScommercial9DW> }{letter} % % \end{macrocode} % % Dann werden die Werte gesetzt. % \begin{description} % \item[ZIP-Code] % \changes{v3.03}{2009/03/04}{Bezeichner der Variablen \texttt{fromzipcode} % wird gesetzt} % \begin{macrocode} %\setkomavar*{fromzipcode}{% % D} % CH} % F} % US} % \end{macrocode} % \item[Faltmarken] % \changes{v2.97e}{2007/11/20}{Die neuen Faltmarken werden berücksichtigt.} % \begin{macrocode} \@setplength{foldmarkhpos}{3.5mm} \@setplength{tfoldmarkvpos}{% % 105mm} % 87mm} % 103.5mm} % 99mm} % 3.75in} \@setplength{mfoldmarkvpos}{\z@} \@setplength{bfoldmarkvpos}{% % 210mm} % 192mm} % 202.5mm} % 198mm} % 7.4in} % 7.375in} \@setplength{lfoldmarkhpos}{\z@} % \end{macrocode} % \item[Anschrift] % \begin{macrocode} \@setplength{toaddrvpos}{% % 45mm} % 27mm} % 35.5mm} % 49mm} % 35mm} % 1.8in} % 2.1875in} \@setplength{toaddrhpos}{% % 20mm} % -8mm} % 1in} %\@addtoplength{toaddrhpos}{\oddsidemargin} % -10mm} % .73in} % 0.6875in} % .5625in} \@setplength{toaddrwidth}{% % 85mm} % 90mm} % 100mm} % 70mm} % 3.11in} % 4.5in} % 3.625in} % \end{macrocode} % \changes{v3.03}{2009/06/25}{Anschriftfeld enthält laut Doku die % Rücksendeadresse, also machen wir das jetzt auch so} % \begin{macrocode} \@setplength{toaddrheight}{% % 45mm} % 1.17in} % 1.125in} \@setplength{toaddrindent}{% % \z@} % 10mm} \@setplength{backaddrheight}{% % 5mm} % \z@} %\KOMAoptions{backaddress=false} \@setplength{specialmailindent}{\fill} \@setplength{specialmailrightindent}{1em} % \end{macrocode} % \item[Absenderergänzung] % \begin{macrocode} \@setplength{locwidth}{% % \z@} % \end{macrocode} % \item[Kopf] % \begin{macrocode} \@setplength{firstheadvpos}{% % 8mm} % 6mm} % 15mm} % .36in} % .4375in} \@setplength{firstheadwidth}{% % \textwidth} % 170mm} %<*DIN|DINmoretext|SN|SwissLeft|UScommercial9> \paperwidth} \ifdim \useplength{toaddrhpos}>\z@ \@addtoplength[-2]{firstheadwidth}{\useplength{toaddrhpos}} \else \@addtoplength[2]{firstheadwidth}{\useplength{toaddrhpos}} \fi % %<*USletter2w> \paperwidth} \@addtoplength[-]{firstheadwidth}{.68in} % %<*UScommercial9DW> \paperwidth} \@addtoplength[-]{firstheadwidth}{.25in} % % \end{macrocode} % \item[Fuß] % \changes{v2.9u}{2005/03/05}{Der Fuß hat optional eine feste Position 16\,mm % über der unteren Papierkante.} % \begin{macrocode} \@setplength{firstfootwidth}{\useplength{firstheadwidth}} %\@setplength{firstfootvpos}{\paperheight} %\@addtoplength{firstfootvpos}{-2cm} %\ifnum \scr@compatibility >\@nameuse{scr@v@2.9t}\relax % \@setplength{firstfootvpos}{\paperheight} % \@addtoplength{firstfootvpos}{-16mm} %\else % \@setplength{firstfootvpos}{1in} % \@addtoplength{firstfootvpos}{\topmargin} % \@addtoplength{firstfootvpos}{\headheight} % \@addtoplength{firstfootvpos}{\headsep} % \@addtoplength{firstfootvpos}{\textheight} % \@addtoplength{firstfootvpos}{\footskip} %\fi %\@setplength{firstfootvpos}{266.679mm} % \end{macrocode} % \item[Geschäftszeile] % \begin{macrocode} \@setplength{refvpos}{% % 98.5mm} % 80.5mm} % 89mm} % 89.5mm} % \useplength{tfoldmarkvpos}} % 3.1in} % 3.4375in} \@setplength{refaftervskip}{% % \baselineskip} % 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} %\let\raggedsignature=\centering %\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}% }% }% }% } % % \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}} % % \end{macrocode} % % \iffalse % %<*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', `edge', `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} % 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}+ \useplength{backaddrheight}\relax}% } % \end{macrocode} % \end{macro} % \begin{macro}{\showfield@location} % 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}}% \@addtoplength{locheight}{\useplength{backaddrheight}}% \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> % \fi % % \begin{macro}{\showUSletterCixDW} % Ein Umschlag im Format commercial No. 9 mit 2 Fenstern, % Absenderfenster $3\frac{1}{2}\,\mathrm{in}\times\frac{7}{8}\,\mathrm{in}$, % $\frac{5}{16}\,\mathrm{in}$ von links und $2\frac{1}{2}\,\mathrm{in}$ von % unten. % \begin{macrocode} %<*UScommercial9DW> \newcommand*{\showUSletterCixDW}{% \showUScommercial9[{% \thicklines \usekomafont{envelope}% \measuredIFrame({\dimexpr (\paperwidth- \expandafter\dimexpr \useplength{firstheadwidth}\relax% )/2\relax},% -\expandafter\dimexpr\useplength{firstheadvpos}\relax)% (3.5in,.875in)% }]% } % % \end{macrocode} % \end{macro} % % \iffalse % % % % \fi % % \Finale % \endinput % % end of file `scrklco.dtx' %%% Local Variables: %%% mode: doctex %%% TeX-master: t %%% End: