Standard Document Class ‘dinbrief’ for L^{A}TEX version 2e Standard Document Style ‘dinbrief’ for L^{A}TEX version 2.09

Copyright \begin{matrix}c \\ ◯ \end{matrix} 1993, 94, 95, 96, 98, 2000 by Klaus Dieter Braune, Richard Gussmann

March 13, 2000

Abstract

This document serves as User’s Guide and as documentation of the new L^{A}TEX-Style or a L^{A}TEX 2ε-Class. This class/style implements a new document layout for writing letters, according to the rules of DIN (Deutsches Institut für Normung, German standardization institute). The User’s Guide is written in German, since we assume the style is of minor interest outside Germany. Of course, most of the macros are explained in English.

Contents

1 Benutzerhandbuch (User’s Guide) 3

2 Zusätzliche Optionen der dinbrief-Klasse 4

3 Befehle in der dinbrief-Klasse 4 3.1 Aus der letter-Klasse übernommene Befehle . . . . . . . . . . . . 4 3.2 Zusätzliche Befehle im DIN-Brief . . . . . . . . . . . . . . . . . . . 6 3.3 Befehlsreferenz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 3.4 Bezugszeichenzeile . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 3.5 Standardkonfiguration mit einer Konfigurationsdatei . . . . . . . . 15 3.6 Briefkopf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 3.7 Kopfzeilen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 3.8 Einblenden von Unterschriften . . . . . . . . . . . . . . . . . . . . 18 3.9 Briefe in englischer oder französischer Sprache . . . . . . . . . . . . 18 3.10 Serienbriefe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 3.11 Einige Regeln für das Briefeschreiben . . . . . . . . . . . . . . . . . 19 3.12 Adreß–Etiketten . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 3.13 Kompatibilität zu Rainer Sengerlings ‘dinbrief’ . . . . . . . . . . . 22 4 Documentation 26

4.1 The class/style file ‘dinbrief’ . . . . . . . . . . . . . . . . . . . . . . 26 4.2 Get system information . . . . . . . . . . . . . . . . . . . . . . . . 26 4.3 Print informations about this style . . . . . . . . . . . . . . . . . . 27

4.3.1 Print the banner . . . . . . . . . . . . . . . . . . . . . . . . 27 4.3.2 Print system information . . . . . . . . . . . . . . . . . . . 27

4.4 L^{A}TEX 2ε version control . . . . . . . . . . . . . . . . . . . . . . . . 27 4.5 Initial code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

4.5.1 temporary variables . . . . . . . . . . . . . . . . . . . . . . 28 4.5.2 dinbrief programming environment . . . . . . . . . . . . . 28 4.5.3 Choosing the type size . . . . . . . . . . . . . . . . . . . . . 31

4.6 Defining the jobname . . . . . . . . . . . . . . . . . . . . . . . . . . 32 4.7 Stuff from original classes . . . . . . . . . . . . . . . . . . . . . . . 32 4.8 Setting paper sizes . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 4.9 Two-side or one-side printing . . . . . . . . . . . . . . . . . . . . . 33 4.10 Support for both variants of DIN 676 letter layout . . . . . . . . . 33 4.11 Draft option . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 4.12 Twocolumn printing . . . . . . . . . . . . . . . . . . . . . . . . . . 33 4.13 Defining internal font selection commands . . . . . . . . . . . . . . 34 4.14 Executing options . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 4.15 Loading Packages . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 4.16 Error messages in this class/style . . . . . . . . . . . . . . . . . . . 35

4.16.1 General error message . . . . . . . . . . . . . . . . . . . . . 35 4.16.2 Warning within L^{A}TEX 2ε for forbidden commands . . . . . 35 4.16.3 Modelling \ClassWarning in L^{A}TEX 2.09 . . . . . . . . . . . 36

4.17 Font changing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36

4.17.1 Defining old font changing commands for L^{A}TEX 2ε . . . . . 36 4.18 A special distance . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 4.19 Fontsizes und other parameters . . . . . . . . . . . . . . . . . . . . 37 4.20 Document layout . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41

4.20.1 User definable layout positions . . . . . . . . . . . . . . . . 42 4.20.2 Rules above and below the receiver’s window . . . . . . . . 45 4.20.3 Lines for splitting letters . . . . . . . . . . . . . . . . . . . . 45 4.20.4 \backaddress API function . . . . . . . . . . . . . . . . . . 45 4.20.5 Macros for splitting the receiver’s address . . . . . . . . . . 46 4.20.6 The \opening-Procedure . . . . . . . . . . . . . . . . . . . 48

4.21 Initialization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60

4.21.1 Words . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60 4.22 More letter macros . . . . . . . . . . . . . . . . . . . . . . . . . . . 60 4.23 Styles for the labels . . . . . . . . . . . . . . . . . . . . . . . . . . . 61

4.23.1 Labels with different sizes . . . . . . . . . . . . . . . . . . . 61 4.23.2 Defining the standard dinbrief labels . . . . . . . . . . . . . 62

4.24 Empty labels within labelstyle plain . . . . . . . . . . . . . . . . . 62

4.24.1 different labelstyles . . . . . . . . . . . . . . . . . . . . . . . 62 4.25 Processing of a single letter . . . . . . . . . . . . . . . . . . . . . . 67

4.25.1 Controlling the generation of labels . . . . . . . . . . . . . . 75 4.26 Fonts — paragraphing . . . . . . . . . . . . . . . . . . . . . . . . . 80 4.27 Lists . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80

4.27.1 General list parameters . . . . . . . . . . . . . . . . . . . . 80 4.27.2 Enumerate . . . . . . . . . . . . . . . . . . . . . . . . . . . 82 4.27.3 Itemize . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82 4.27.4 Description . . . . . . . . . . . . . . . . . . . . . . . . . . . 82 4.27.5 Verse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83 4.27.6 Quotation . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83 4.27.7 Quote . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83

4.28 Setting parameters for existing environments . . . . . . . . . . . . 83 4.28.1 Array and tabular . . . . . . . . . . . . . . . . . . . . . . . 83 4.28.2 Tabbing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 4.28.3 Minipage . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 4.28.4 Framed boxes . . . . . . . . . . . . . . . . . . . . . . . . . . 84 4.28.5 Equation and eqnarray . . . . . . . . . . . . . . . . . . . . . 84

4.29 Footnotes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85 4.30 The current date . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86 4.31 Old dinbrief commands . . . . . . . . . . . . . . . . . . . . . . . . 89

4.31.1 dinquote . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91 4.32 More initializations . . . . . . . . . . . . . . . . . . . . . . . . . . . 92 4.33 The short class file/the short style file . . . . . . . . . . . . . . . . 93 4.34 The configuration file . . . . . . . . . . . . . . . . . . . . . . . . . . 93

5 An example letter 93 5.1 The letter head . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93 5.2 The letter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94

6 Testing the class/style 97

7 Example for using the old dinbrief API 103

8 The documentation driver file 107

1 Benutzerhandbuch (User’s Guide)

Mit L^{A}TEX können (natürlich) auch Briefe geschrieben werden. Für englische Briefe gibt es die Dokumentklasse letter. Deutsche Briefe können mit der Klasse dinbrief geschrieben werden.

Die vorliegende Klasse dinbrief basiert auf dem dinbrief-Stil der Universität Karlsruhe. Dieser Stil wurde aus dletter.sty entwickelt, welcher von D. Heinrich abgefaßt wurde. Seinerseits geht dieser zurück auf den Stil a4letter von H. Partl, welcher seinen Ursprung im ursprünglichen letter-Stil von L. Lamport hatte. Zusätzlich wurden aus den dinbrief.sty von R. Sengerling der Befehlsvorrat und die Option norm übernommen. Ferner enthält diese Klasse Tips und Anregungen von B. Raichle.

In den Briefen können u.a. Formeln, Tabellen und beliebige Listen verwendet werden. In einem Dokument können mehrere Briefe geschrieben werden. Die Gliederung in Absätze erfolgt durch Einfügen einer Leerzeile (wie in L^{A}TEX üblich).

2 Zusätzliche Optionen der dinbrief-Klasse

In der DIN Norm 676 werden zwei Formen von Briefen festgelegt. In älteren Versionen dieses Paketes wurde nur diejenige Form unterstützt, in der oben ein Rand von 45mm für den Briefkopf freigelassen wird. In der zweiten Version ist dieser Rand auf 27mm verkürzt; damit steht für den Brieftext mehr Platz (18mm) zur Verfügung.

Die Wahl der gewünschten Form kann durch Angabe der Optionen addresshigh für einen oberen Rand von 27mm oder addressstd für einen oberen Rand von 45mm getroffen werden. Die Angabe der Option addressstd kann unterbleiben, da sie ohnehin voreingestellt ist.

3 Befehle in der dinbrief-Klasse

Bereits vor \begin{document} kann man Angaben machen, die für alle Briefe gültig sind, z.B. Absender (\address bzw. \backaddress), Absendeort (\place), Telefon (\phone) und Unterschrift (\signature).

3.1 Aus der letter-Klasse übernommene Befehle

Jeder Brief steht in einer eigenen letter-Umgebung. Der Empfänger wird als Argument des \begin{letter}-Befehls angegeben (\begin{letter}{⟨Anschrift⟩}).

Eine entscheidende Bedeutung beim Schreiben von Briefen hat der \opening-Befehl. Nur dieser Befehl setzt den Briefkopf, die Absenderangaben und die Adresse des Empfängers. Die Anrede des Empfängers wird als Argument angegeben (\opening{⟨Anrede⟩}).

Danach folgt der eigentliche Brieftext. Die abschließende Grußformel wird mit dem Befehl \closing{⟨Grußformel⟩} gesetzt. Dieser Befehl fügt auch die maschinenschriftliche Wiederholung der Unterschrift an, wie sie mit dem \signature-Befehl festgelegt wurde. Die erweiterte Form \closing[⟨Unterschrift⟩]{⟨Grußformel⟩} ermöglicht es, die Unterschrift unter den Brief als Text oder Graphik einzubinden.

Im Anschluß an die Grußformel werden Anlagen- (\encl{⟨Anlage⟩}), Verteilvermerke (\cc{⟨Verteiler⟩}) und das Postscriptum (\ps{⟨Postscriptum⟩}) an den Brief angefügt.

Mit dem Befehl \makelabels (vor \begin{document}) werden zusätzlich Adreß-Etiketten erzeugt.

Darüberhinaus wurden die oben erwähnten Befehle \address, \place und \signature aus der letter-Klasse übernommen.

\documentclass[12pt]{dinbrief}
\usepackage{german}
\address{R"udiger Kurz\\
         Am See 1\\
         76133 Karlsruhe}
\backaddress{R. Kurz, Am See 1, 76133 Karslruhe}
\signature{R"udiger Kurz}
\place{Karlsruhe}
\begin{document}
\phone{0721}{222222}
\begin{letter}{Deutsche Bundespost\\
               Fernmeldeamt Karlsruhe\\
               Postfach 7300\\[\medskipamount]
               {\bf 76131 Karlsruhe}}
\yourmail{01.04.93}
\sign{123456}
\subject{Betrieb eines Mikrowellensenders}
\opening{Sehr geehrte Damen und Herren,}
anbei sende ich Ihnen eine Kopie der bisherigen Genehmigung f"ur
unseren Mikrowellenherd...
... Ihre Bem"uhungen im voraus vielen Dank.
\closing{Mit freundlichen Gr"u"sen,}
\ps{Wir bitten um schnelle Erledigung.}
\cc{Deutsche Bundespost\\
    Karlsruher Privatfunk \\
    S"uddeutscher Rundfunk}
\encl{Abschrift der Urkunde}
\end{letter}
\end{document}

Abbildung 1: Brief mit L^{A}TEX.

3.2 Zusätzliche Befehle im DIN-Brief

Der Befehl \phone{⟨Vorwahl⟩}{⟨Rufnummer/Durchwahl⟩} legt die Telefonnummer des Absenders fest. Sie wird in der Bezugszeichenzeile ausgegeben.

Der Bezug auf einen empfangenen Brief ist möglich mit Hilfe des Befehls \yourmail{⟨Ihre Zeichen, Ihre Nachricht vom⟩}.

Mit dem Befehl \sign{⟨Unsere Zeichen, unsere Nachricht vom⟩} kann eine eigene Kennzeichnung des Briefes angegeben werden.

Mit dem Befehl \writer{⟨Sachbearbeiter⟩} kann der Name des Sachbearbeiters festgelegt werden.

Die Bezugszeichenzeile wird nur gesetzt, falls einer der Befehle \yourmail, \sign oder \writer verwendet wird. Der Befehl \writer schaltet zusätzlich auf das in der DIN Norm 676 (Entwurf Mai 1991) festgelegte Layout um.

Der Betreff (die stichwortartige Inhaltsangabe) des Briefes wird durch den Befehl \subject{⟨Betreff ⟩} angegeben. Mit \backaddress wird die Adresse festgelegt, die als Absenderadresse im Brieffenster eingeblendet wird.

Abbildung 1 enthält ein Beispiel für einen Brief. Die Anwendung der Befehle und ihre Reihenfolge in der Quelldatei kann dem Beispiel entnommen werden.

Für alle, denen das ”Fenster“ um die Adresse nicht gefällt, besteht die Möglichkeit, durch Angabe von \nowindowrules vor dem Befehl \opening dieses abzuschalten. Durch \windowrules läßt es sich wieder aktivieren.

Der Trennstrich zwischen der Rücksendeadresse und der Anschrift im Anschriftenfeld kann mit dem Befehl \nobackaddressrule unterdrückt und bei folgenden Briefen mit \backaddressrule wieder aktiviert werden.

Die Faltmarkierung am linken Blattrand wird durch den Befehl \nowindowtics ab- und mit \windowtics wieder angeschaltet.

Die Veränderung des Layouts der Briefe ist mit Hilfe von insgesamt 13 Befehlen möglich. Um für einen Brief wirksam zu werden, müssen diese Befehle vor dem Befehl \opening angegeben werden. Die ersten 9 dieser Befehle legen Größe und Position des Fensters für die Anschrift und der Adresse des Absenders im Anschriften-Fenster fest. Die übrigen Befehle legen den Abstand der Oberkante der Bezugszeichenzeile, den Abstand der Oberkante des Bereiches für Angaben zu Kapitalgesellschaften und die Abstände der Faltmarkierungen vom oberen Papierrand fest. Ein Befehl zur Festlegung der Lochmarkierung ist übrigens nicht vorgesehen, da die Lochmarkierung in die Mitte der Seite – abhängig vom Wert der Länge \paperheight – gesetzt wird.

Der Befehl \setaddressllcorner{⟨Längenangabe⟩}{⟨Längenangabe⟩} legt mit seinen beiden Argumenten die Position der linken unteren Ecke des Fensters bezogen auf die linke obere Ecke des Blattes fest: das erste den Abstand vom linken und das zweite den Anstand vom oberen Blattrand. Der Abstand des Fensters vom linken Rand – ohne Änderung des Abstandes vom oberen Rand – kann mit dem Befehl \setaddressllhpos{⟨Längenangabe⟩} festgelegt werden. Entsprechend legt der Befehl \setaddressllvpos{⟨Längenangabe⟩} den Abstand des unteren Randes des Fensters vom oberen Blattrand fest.

Zur Auswahl der zu verwendenden Variante der Briefform – hochgestellte oder tiefer gestelltes Feld für die Anschrift – stehen die beiden Befehle \addresshigh (hochgestellte Anschrift) und \addressstd (voreingestellte tiefer gestellte Anschrift) zur Verfügung. Beide Befehle sind nur wirksam, wenn sie vor dem \opening-Befehl angegeben werden. Gegebenenfalls können sie auch – wie viele anderen Befehle – in der Konfigurationsdatei verwendet werden.

Auch zur Festlegung der Höhe und Breite des Fensters für die Anschrift sind Befehle vorgesehen. Der Befehl \setaddresswidth{⟨Längenangabe⟩} setzt die Breite des Fensters auf die angegebene Länge. Entsprechend legt der Befehl \setaddressheight{⟨Längenangabe⟩} die Höhe des Fensters fest (ohne das direkt darüber angeordnete Feld für den Absender).

In der Regel möchte man den Text der Anschrift nicht direkt am linken Rand beginnen lassen – wie auch in diesem Paket voreingstellt. Mit dem Befehl \setaddressoffset{⟨Längenangabe⟩} kann man diese Einrückung selbst festlegen. Der Text der Anschrift wird übrigens nicht abgeschnitten und kann daher gegebenenfalls über den rechten Rand des Fensters hinausragen – bitte brechen Sie in diesem Fall zu lange Zeilen an einer geigneten Stelle selbst um.

Die Höhe des Feldes für den Absender direkt oben anschließend an das Feld für die Anschrift kann mit dem Befehl \setbackaddressheight{⟨Längenangabe⟩} festgelegt werden.

Werden der DIN Norm entsprechende Fensterumschläge verwendet, sollten die Voreinstellungen für Größe und Position des Fensters für die Anschrift und den Absender nicht verändert werden, damit sie im Fenster sichtbar sind.

Der Befehl \setreflinetop{⟨Längenangabe⟩} legt den Abstand der Oberkante der Bezugszeichenzeile vom oberen Papierrand fest; bei den beiden Formen der DIN Norm liegt diese Oberkante 8.5mm unterhalb des Fensters für die Anschrift.

Am Ende der ersten Seite von Briefen ist ein Feld für Angaben zu Kapitalgesellschaften vorgesehen, das man bei eigenen Briefen gegebenenfalls zur Angabe des eigenen Kontos verwenden kann. Die Formblätter der Norm sehen für dieses Feld nur die letzten 16mm des Papiers vor. Benötigt man mehr Platz für Angaben in diesem Feld, kann man mit dem Befehl \setbottomtexttop{⟨Längenangabe⟩} die Oberkante des Feldes geeignet festlegen. Der für den Brieftext zur Verfügung stehende Platz wird automatisch angepaßt.

Im Zusammenhang mit einer Verschiebung des Fensters für die Anschrift müssen gegebenenfalls die Faltmarkierungen angepaßt werden. Den Abstand der oberen Faltmarkierung vom oberen Blattrand legt man mit dem Befehl \setupperfoldmarkvpos{⟨Längenangabe⟩} fest, den der unteren Faltmarkierung entsprechend mit dem Befehl \setlowerfoldmarkvpos{⟨Längenangabe⟩}. Die Höhe der Markierung zum Lochen (in der Blattmitte) ergibt sich automatisch aus der Blatthöhe und kann nicht verändert werden.

Ausführungen und Erläuterungen zum Erstellen von Adreß-Etiketten finden Sie in einem eigenen Abschnitt weiter hinten in diesem Dokument. Die Befehlsreferenz enthält ebenfalls kurze Beschreibungen der Befehle zu den Adreß-Etiketten.

Eine einfache Absenderanschrift in der auf Schreibmaschinen üblichen Form (DIN 5008) wird durch den Befehl \stdaddress{⟨Absenderanschrift⟩} anstelle von \address erreicht. Die einzelnen Zeilen sind durch \\ zu trennen. Das Datum wird ebenfalls oben ausgegeben. Die Bezugszeichenzeile entfällt.

Mit dem Befehl \postremark kann ein Postvermerk gesetzt werden. Dieser Vermerk erscheint im Anschriftenfeld oben, von den übrigen im Argument des Befehls \begin{letter}{⟨Anschrift⟩} durch eine Leerzeile getrennt. Der Behandlungsvermerk wird durch den Befehl \handling{⟨Text⟩} vereinbart.

Die Anlagen- und Verteilvermerke können mit dem Befehl \enclright rechts auf Grad 50 anstelle nach der Grußformel ausgegeben werden. Die Befehle \encl und \cc sind dazu vor dem \closing-Befehl anzugeben.

3.3 Befehlsreferenz

\begin{letter}{⟨Anschrift⟩ } . . . \end{letter}

Diese Befehle rahmen jeden einzelnen Brief ein. Die Anschrift des Empfängers wird als Argument des Befehls \begin{letter}{⟨Anschrift⟩} angegeben. Die einzelnen Zeilen in der Anschrift werden durch \\ getrennt. Es dürfen weitere Briefe folgen.

\signature{⟨Unterschrift des Absenders⟩ } Dieser Befehl legt die maschinenschriftliche Wiederholung der Unterschrift fest. Der Befehl gilt solange, bis ein weiterer \signature-Befehl eine neue ”Unterschrift“ festlegt.

\address{⟨Name und Adresse des Absenders⟩ } Die Adresse des Absenders wird vereinbart. Dieser Befehl gilt für den laufenden und alle weiteren Briefe; er gilt solange, bis ein weiterer \address-Befehl angegeben wird.

\backaddress{⟨Absenderadresse im Brieffenster⟩ } Der Befehl legt die Anschrift des Absenders oben im Anschriftenfeld des Briefs fest.

\place{⟨Ortsangabe im Brief ⟩ } Mit diesem Befehl wird der Absendeort angegeben, der zusammen mit dem Datum im Briefkopf ausgegeben wird.

\date{⟨Briefdatum⟩ } Soll als Absendedatum nicht das aktuelle Tagesdatum (des Rechners) eingesetzt werden, kann mit diesem Befehl das Datum explizit angegeben werden.

Ohne diesen Befehl wird das aktuelle Tagesdatum im Brief verwendet.

\yourmail{⟨Ihre Zeichen, Ihre Nachricht vom⟩ } Der Befehl legt den Inhalt des Feldes Ihre Zeichen, Ihre Nachricht vom in der Bezugszeichenzeile fest.

\sign{⟨Unsere Zeichen (, unsere Nachricht vom)⟩ } Dieser Befehl legt den Inhalt des Feldes Unsere Zeichen … fest.

\phone{⟨Vorwahl⟩ }{⟨Rufnummer/Durchwahl⟩ } Die Telefonnummer aufgeteilt nach Vorwahl und Rufnummer oder Durchwahl wird mit dem Befehl \phone vereinbart. Diese Angaben werden in der Bezugszeichenzeile ausgegeben.

\writer{⟨Sachbearbeiter⟩ } Die Neufassung der Norm DIN 676 vom Mai 1991 sieht in der Bezugszeichenzeile ein weiteres Feld für den Sachbearbeiter vor. Mit dem Befehl \writer kann ein solcher Sachbearbeiter angegeben werden.

Die Verwendung dieses Befehls gestaltet den Brief entsprechend der Norm DIN 676 vom Mai 1991.

\subject{⟨Betreff ⟩ }

Mit diesem Befehl wird der Betreff gesetzt, der den Empfänger über den Gegenstand des Briefes informiert.

\concern steht aus historischen Gründen als Synonym bis auf weiteres zur Verfügung.

\centeraddress

Die Empfängeranschrift wird im Brieffenster vertikal zentriert.

\normaladdress

Die Empfängeranschrift wird im Anschriftenfeld unten gesetzt.

\opening{⟨Anrede⟩ }

Dieser Befehl vereinbart die Anrede des Empfängers und setzt den Briefkopf, die Empfängerangaben, eine eventuell vorhandene Bezugszeichenzeile, den Betreff und die Anrede des Empfängers.

Dieser Befehl darf nicht fehlen!

\closing[⟨Unterschrift⟩ ]{⟨Grußformel⟩ } Der Befehl \closing setzt die Grußformel und nach drei Leerzeilen die maschinenschrifliche Wiederholung der Unterschrift.

Die erweiterte Form \closing[⟨Unterschrift⟩]{⟨Grußformel⟩} setzt zusätzlich das optionale Argument – beispielsweise eine mit \includegraphics eingebundene PostScript-Datei – als Unterschrift in die freigelassenen Zeilen. Überschreitet die Höhe des optionalen Argumentes zwei Zeilen, rutscht die maschinenschrifliche Wiederholung der Unterschrift entsprechend nach unten. Bitte beachten Sie, daß ein optionales Argument eckige Klammern nur enthalten darf, wenn das optionale Argument selbst in geschweifte Klammern eingeschlossen ist.

\encl{⟨Anlagen⟩ } Der Vermerk über dem Brief beigefügte Anlagen wird mit dem Befehl \encl an den Brief angehängt. Die einzelnen Eintragungen können durch \\ getrennt werden.

Die Reihenfolge der Verwendung der Befehle \encl, \cc und \ps ist beliebig, falls die Befehle nach dem \closing-Befehl angegeben werden. Die Norm empfiehlt allerdings den Anlagenvermerk vor dem Verteilvermerk anzubringen.

\cc{⟨Verteiler⟩ } Der Vermerk über weitere Empfänger dieses Briefes wird mit dem Befehl \cc gesetzt. Die einzelnen Eintragungen können durch \\ getrennt werden.

Die Befehle \encl und \cc können sowohl vor wie auch nach dem \closing-Befehl stehen. Wird der Befehl \enclright verwendet, müssen die beiden Befehle vor dem \closing-Befehl stehen.

\ps{⟨Postscriptum⟩ } Geschäftsbriefe enthalten kein Postskriptum. Es wurde trotzdem die Möglichkeit geschaffen, ein solches zu verwenden. Mit dem Befehl \ps wird ein Postskriptum gesetzt.

\makelabels

Dieser Befehl muß in der Präambel stehen; also zwischen \documentstyle oder \documentclass und dem \begin{document}-Befehl. Er aktiviert das Ausdrucken von Adress-Etiketten.

\labelstyle{⟨Stil der Label⟩ } Dieser Befehl vereinbart das Layout der Adress-Etiketten. Es gibt Drucker, die in der Lage sind, Briefumschläge zu bedrucken. Mit diesem Befehl legt man die Form der Briefumschläge fest.

Zur Zeit steht nur das Layout \labelstyle{plain} zur Verfügung.

\bottomtext{⟨Feld für Kapitalgesellschaften⟩ } Am Fuß der ersten Briefseite werden Geschäftsangaben und zusätzlich bei Kapitalgesellschaften gesellschaftsrechtliche Angaben angegeben. Der Befehl \bottomtext vereinbart diese Angaben.

Dieser Befehl muß nach \begin{document} stehen.

\windowrules

Das Anschriftenfeld im Brief wird durch Linien ober- und unterhalb vom übrigen Brief abgegrenzt. Die Hervorhebung wird aktiviert.

\nowindowrules

Der Befehl schaltet den Rahmen ab.

\backaddressrule

Der Absender und die Anschrift im Anschriftenfeld des Briefes werden durch eine Linie getrennt (Voreinstellung).

\nobackaddressrule

Die Trennungslinie zwischen dem Absender und der Anschrift im Anschriftenfeld des Briefes wird unterdrückt.

\windowtics

Es werden Faltmarkierungen am linken Briefrand geruckt.

\nowindowtics

Es werden keine Faltmarkierungen am linken Briefrand ausgedruckt.

\disabledraftstandard

Der Brief wird entsprechend den Vorschriften der Norm DIN 676 vom Dezember 1976 auf dem Briefbogen ausgegeben.

\enabledraftstandard

Der Brief wird entsprechend den Vorschriften des Entwurfs der Norm DIN 676 vom Mai 1991 auf dem Briefbogen ausgegeben.

\setaddressllcorner{⟨Abstand vom linken Rand⟩ } {⟨Abstand vom oberen Rand⟩ }

Mit diesem Befehl legt man die Position der linken unteren Ecke des Fensters für die Anschrift des Empfängers fest. Beide Argumente sind Längen, wobei die erste den (horizontalen) Abstand zum linken Blattrand und die zweite den (vertikalen) Abstand zum oberen Blattrand angibt.

\setaddressllhpos{⟨Abstand vom linken Rand⟩ } Der Befehle legt den (horizontalen) Abstand des Fensters für die Anschrift vom linken Blattrand fest. Soll gleichzeitig die Höhe des Fensters geändert werden, kann der Befehle \setaddressllcorner verwendet werden.

In der DIN Norm ist der Abstand vom linken Rand fest als 20mm vorgegeben (dieser Wert ist voreingestellt).

\setaddressllvpos{⟨Abstand vom oberen Rand⟩ } Der Befehl legt den (vertikalen) Abstand des Fensters für die Anschrift vom oberen Blattrand fest. Soll das Fenster gleichzeitig horizontal verschoben werden, kann der Befehle \setaddressllcorner verwendet werden.

Die DIN Norm sieht zwei Varianten mit einer hochgestellten und einer tiefer gestellten Anschrift vor. Voreingestellt ist die tiefer gestellte Variante mit einem Wert von 90mm. Für die hochgestellte Variante ist der Wert 72mm vorgeschrieben.

Zur einfachen Auswahl der Varianten stehen die beiden Optionen addresshigh (hochgestellte Anschrift) und addressstd (voreingestellte tiefer gestellte Anschrift) vorgesehen.

\addresshigh
Dieser Befehl setzt die Längen \addrvpos, \reflinevpos, \ufldmarkvpos

und \lfldmarkvpos entsprechend der Variante mit hochgestelltem Feld für die Anschrift entsprechend der Form A der DIN Norm. Der Befehl ist nur wirksam, wenn er vor dem \opening-Befehl steht (auch in der Konfigurationsdatei).

\addressstd
Der Befehl setzt die Längen \addrvpos, \reflinevpos, \ufldmarkvpos und

\lfldmarkvpos entsprechend der Variante mit tiefer gestelltem Feld für die Anschrift entsprechend der Form B der DIN Norm und entspricht der Voreinstellung. Der Befehl ist ebenfalls nur vor dem \opening-Befehl wirksam (auch in der Konfigurationsdatei).

\setaddresswidth{⟨Breite des Fensters für die Anschrift⟩ } Mit diesem Befehl wird die Breite des Fensters für die Anschrift festgelegt (voreingestellt: 85mm).

\setaddressheight{⟨Höhe des Fensters für die Anschrift⟩ } Die Höhe des Fensters für die Anschrift kann man mit diesem Befehl festlegen. Voreingestellt sind 40mm.

\setaddressoffset{⟨Abstand vom linken Fensterrand⟩ } In der Regel möchte man, daß die Anschrift nicht direkt am linken Rand des Fensters für die Anschrift beginnt, sondern einige Millimeter eingerückt ist. Mit diesem Befehl kann man die Einrückung festlegen. Voreingestellt sind 4mm. Die Anschrift beginnt bei dieser Einstellung bündig mit dem Text des Briefes.

\setbackaddressheight{⟨Höhe des Feldes für den Absender⟩ } Das Feld für den Absender schließt oben an das Fensters für die Anschrift an. Die Höhe dieses Feldes wird mit dem Befehl \setbackaddressheight festgelegt. Voreingestellt sind 5mm.

\setreflinetop{⟨Abstand vom oberen Rand⟩ } Mit diesem Befehl wird der Abstand der Oberkante der Bezugszeichenzeile vom oberen Blattrand festgelegt. Voreingestellt sind 98.5mm; bei Angabe der Option für eine hochgestellte Anschrift wird der Wert auf 80.5mm gesetzt.

\setbottomtexttop{⟨Abstand vom oberen Rand⟩ } Mit diesem Befehl legt man den den Abstand der Oberkante des Feldes für Geschäftsangaben und (nur bei Kapitalgesellschaften) gesellschaftsrechtliche Angaben auf der ersten Seite und dem oberen Blattrand fest. Voreingestellt sind 281mm; bei mehrzeiligen Angaben in diesem Fekd muß man den Wert entsprechend verringern. Der Abgleich mit der Höhe der letzten verfügbaren Zeile auf der Seite erfolgt automatisch.

\setupperfoldmarkvpos{⟨Abstand vom oberen Rand⟩ }

Mit diesem Befehl legt man den Abstand der oberen Faltmarkierung vom oberen Blattrand fest. Voreingestellt sind 105mm und bei Angabe der Option für eine hochgestellte Anschrift 87mm.

\setlowerfoldmarkvpos{⟨Abstand vom oberen Rand⟩ }

Den Abstand der unteren Faltmarkierung vom oberen Blattrand legt man mit diesem Befehl fest. Voreingestellt sind 210mm und bei Angabe der Option für eine hochgestellte Anschrift 192mm.

\setlabelwidth{⟨Breite eines Labels⟩ } Dieser Befehl legt die Breite eines Labels fest. Als Argument erwartet dieser Befehl eine Längenangabe.

Die Labelbreite ist in der vorliegenden Version auf 105 mm festgelegt worden und sollte nicht geändert werden. Dieser Befehl ist für spätere Erweiterungen reserviert.

\setlabelheight{⟨Höhe eines Labels⟩ }

Der Befehl \setlabelheight vereinbart die im Argument angegebene Länge als Labelhöhe.

\setlabeltopmargin{⟨oberer Rand⟩ }

Bevor die beiden obersten Label (bei beiden Spalten) ausgegeben werden, wird oben ein Rand gelassen, dessen Höhe mit \setlabeltopmargin angegeben wird. Es wird eine Längenangabe erwartet.

\setlabelnumber{⟨Labelanzahl pro Spalte⟩ } Dieser Befehl bestimmt die Zahl der Labels in einer Spalte.

\spare{⟨Anzahl leerer Labels⟩ } Es werden die im Argument des Befehls angegebene Anzahl von Label freigelassen, bevor das erste Adreß–Etikett ausgegeben wird. Die Label werden spaltenweise durchgezählt.

\stdaddress{⟨Adresse des Absenders⟩ } Dieser Befehl setzt die Absenderanschrift in der auf Schreibmaschinen üblichen Form (DIN 5008). Mit diesem Befehl kann der Briefkopf nicht frei gestaltet werden.

\begin{dinquote} . . . \end{dinquote}

Diese Umgebung rückt den Text auf der linken Seite um ein Inch ein. Rechts folgt keine Einrückung.

\enclright

Die Anlagen- und Verteilvermerke beginnen, falls sie vor den \closing-Befehl angegeben wurden, rechts neben der Grußformel.

\postremark{⟨Postvermerk⟩ }

Der Postvermerk wird mit dem Befehl \postremark vereinbart. Der Postvermerk geht der Empfängeranschrift mit einer Leerzeile voraus. Dieser Befehl muß zwischen \begin{letter} und dem Befehl \opening stehen.

\handling{⟨Behandlungsvermerk⟩ } Der Behandlungsvermerk wird rechts neben der Empfängeranschrift auf Grad 50 (bei einer 10er Teilung) in Höhe der letzten Zeile der Empfängeranschrift ausgegeben. Dieser Befehl muß zwischen \begin{letter} und dem Befehl \opening stehen.

Tabelle 1: Zusammenfassung der Dinbrief-Befehle (Teil 1):

\begin{document}
\end{document}
\begin{letter}{⟨Anschrift⟩}
\end{letter}

\signature{⟨Unterschrift des Absenders⟩} \address{⟨Name und Adresse des Absenders⟩} \backaddress{⟨Absenderadresse im Brieffenster⟩} \place{⟨Ortsangabe im Brief ⟩} \date{⟨Briefdatum⟩} \yourmail{⟨Ihre Zeichen, Ihre Nachricht vom⟩} \sign{⟨Unsere Zeichen (, unsere Nachricht vom)⟩} \phone{⟨Vorwahl⟩}{⟨Rufnummer/Durchwahl⟩} \writer{⟨Sachbearbeiter⟩}

\subject{⟨Betreff ⟩}
\concern{⟨Betreff ⟩}
\opening{⟨Anrede⟩}

\closing[⟨Unterschrift⟩]{⟨Grußformel⟩}

\centeraddress
\normaladdress

\encl{⟨Anlagen⟩} \ps{⟨Postscriptum⟩} \cc{⟨Verteiler⟩}

\makelabels

\labelstyle{⟨Stil der Label⟩} \bottomtext{⟨Feld für Kapitalgesellschaften⟩}

\nowindowrules
\windowrules
\nobackaddressrule
\backaddressrule
\nowindowtics
\windowtics
\disabledraftstandard
\enabledraftstandard

\setaddressllcorner{⟨Abstand vom linken Rand⟩} \setaddressllhpos{⟨Abstand vom linken Rand⟩} \setaddressllvpos{⟨Abstand vom oberen Rand⟩}

\addresshigh
\addressstd

\setaddresswidth{⟨Breite des Anschriften-Fensters⟩} \setaddressheight{⟨Höhe des Anschriften-Fensters⟩} \setaddressoffset{⟨Abstand vom linken Fensterrand⟩} \setbackaddressheight{⟨Höhe des Anschriften-Fensters⟩} \setreflinetop{⟨Abstand vom oberen Rand⟩} \setbottomtexttop{⟨Abstand vom oberen Rand⟩}

\setupperfoldmarkvpos{⟨Abstand vom oberen Rand⟩}
\setlowerfoldmarkvpos{⟨Abstand vom oberen Rand⟩}

14 Tabelle 2: Zusammenfassung der Dinbrief-Befehle (Teil 2):

\setlabelwidth{⟨Breite eines Labels⟩}

\setlabelheight{⟨Höhe eines Labels⟩}
\setlabeltopmargin{⟨oberer Rand⟩}

\setlabelnumber{⟨Labelanzahl pro Spalte⟩} \spare{⟨Anzahl leerer Labels⟩} \stdaddress{⟨Adresse des Absenders⟩}

\begin{dinquote}
\end{dinquote}
\enclright
\postremark{⟨Postvermerk⟩}

\handling{⟨Behandlungsvermerk⟩}

Tabelle 3: Überschriftvariablen und deren Inhalt

(Voreinstellung entspricht DIN)

\ccname{Verteiler}
\enclname{Anlage(n)}
\psname{PS}
\phonemsg{Telefon}
\signmsgold{Unsere Zeichen}
\signmsgnew{Unsere Zeichen, unsere Nachricht vom}
\yourmailmsg{Ihre Zeichen, Ihre Nachricht vom}

3.4 Bezugszeichenzeile

Die vorliegende Version des dinbriefs enthält zwei verschiedene Formen von Bezugszeichenzeilen. Die beiden Formen sind in der Norm 676 vom Dezember 1976 und im Entwurf zur Norm 676 vom Mai 1991 definiert. Mit den Befehlen

\enabledraftstandard und \disabledraftstandard schaltet man auf die Form

des Entwurfs oder der geltenden Norm um. Die beiden Formen sind zur besseren Unterscheidung in Abbildung 2 wiedergegeben.

3.5 Standardkonfiguration mit einer Konfigurationsdatei

Am Ende der Bearbeitung der Dokumentklasse dinbrief wird die Konfigurationsdatei dinbrief.cfg eingelesen, falls eine Datei dieses Namens im Suchpfad für TEX-Eingabedateien gefunden wird. Die Suche wird in der gleichen Weise durchgeführt wie bei anderen TEX-Eingabedateien.

In der Konfigurationsdatei können alle Befehle verwendet werden, die man vor \begin{⟨document⟩} angeben darf. Beispielsweise kann die Datei mit den dafür

Ihre Zeichen, Ihre Nachricht vom

    \yourmail

Unsere Zeichen

                      \sign

\phone^{Telefon}

Ortsname (Datum) \place \date

Bezugszeichenzeile nach DIN 676 vom Dezember 1976

Ihr Zeichen, Ihre Nachricht vom

    \yourmail

Unser Zeichen, unsere Nachricht vom

                      \sign

Telefon, Bearbeiter

                                        \phone
                                        \writer

                                                          Datum \place \date

Bezugszeichenzeile nach DIN 676 vom Mai 1991 (Entwurf)

Abbildung 2: Formen von Bezugszeichenzeilen

vorgesehenen Befehlen das Layout des Briefes abweichend von der DIN Norm festlegen, einen Briefkopf definieren oder das Feld für Angaben bei Kapitalgesellschaften vergröërn und auch die Angaben selbst mit dem Befehl \bottomtext festlegen.

Die Angabe der Optionen addresshigh oder addressstd überschreibt Angaben vertikalen Positionierung des Feldes für die Anschrift, der Bezugszeichenzeile und der Faltmarkierungen. Explizite Festlegungen vor dem Befehl \opening überschreiben sowohl Einstellungen durch Angabe von Optionen in der \documentclass-Anweisung als auch in der Konfigurationsdatei.

Beim Auspacken der dinbrief-Verteilung wird auch eine Konfigurationsdatei erstellt, die nur Kommentare enthält. Einzelne Befehle können durch Entfernen des Kommentarzeichens aktiviert werden. Die verwendeten Befehle sind in dieser Dokumentation beschrieben.

3.6 Briefkopf

Bei häufigem Briefeschreiben kommt sicher bald der Wunsch nach einem eigenen Briefkopf auf; auch dies ist mit L^{A}TEX zu verwirklichen. Am besten eröffnet man sich in seiner Briefdatei (die man sicher früher oder später anlegen wird) ein File mit dem Namen brfkopf.tex. In dieses kann man z.B. den Briefkopf in Abb. 3 aufnehmen. Am besten erstellt man eine Datei mit den Einstellungen für eigene Briefe, wie im Beispiel die Datei brfkopf.tex. Diese Datei kann z.B. den Briefkopf aus Abb. 3 enthalten.

Am Anfang des Briefes sollte nun der Befehl \input{brfkopf} aufgenommen werden gefolgt von \address{\myaddress} . Dies sorgt für die gewünschte Ausgabe des Briefkopfes am Beginn des Briefes. Natürlich lassen sich auch andere als die hier verwendeten Schriftarten verwenden.

3.7 Kopfzeilen

Es stehen verschiedene Kopfzeilen zur Verfügung die über die Option \pagestyle{...} ausgewählt werden können. Bei plain wird eine Seitennume-

\newlength{\UKAwd}
\newlength{\ADDRwd}
\font\fa=cmcsc10  scaled 1440
\font\fb=cmss12   scaled 1095
\font\fc=cmss10   scaled 1000
\def\briefkopf{
 \settowidth{\UKAwd}{\fa Institut f"ur Verpackungen}
 \settowidth{\ADDRwd}{\fc EARN/BITNET: yx99 at dkauni2}
 \vspace*{7truemm}
 \raisebox{-11.3mm}{%
   \setlength{\unitlength}{1truemm}
   \begin{picture}(15,15)(0,0)
     \thicklines
     \put(7.5,7.5){\circle{15}}
     \put(7.5,7.5){\circle{10}}
     \put(7.5,7.5){\circle{ 5}}
   \end{picture}%
 }
 {\fc\hspace{.7em}}
 \parbox[t]{\UKAwd}{
        \centering{\fa Universit\"at Gralsruhe} \\
        \centering{\fa Institut f"ur Verpackungen} \\[.5ex]
        \centering{\fb Prof.\ Dr.\ Fritz Schreiber}
        }
 \hfill
 \parbox[t]{\ADDRwd}{
        \fc Engesserstr.\ 9 $\cdot$ Postfach 6980 \\
        \fc 76128 Karlsruhe\\
        \fc Telefon: (0721) 608-9790 \\
        }  }
\signature{Prof.\ Dr.\ Fritz Schreiber}
\place{Karlsruhe}
\address{\briefkopf}
\phone{(0721)}{608-9790}
\def\FS{Prof.\,F.\,Schreiber, Univ.\,Karlsruhe,
        Postf.\,6980, 76128\,Karlsruhe\rule[-1ex]{0pt}{0pt}}

Abbildung 3: Definition eines Briefkopfs rierung bei mehrseitigen Briefen in der Fußzeile eingeblendet, die Kopfzeile bleibt leer. Durch headings wird die Kopfzeile mit einer Anrede und der Seitenzahl bei mehrseitigen Briefen gesetzt.

3.8 Einblenden von Unterschriften

\closing[⟨Unterschrift⟩]{⟨Grußformel⟩} erlaubt es, die Unterschrift als Graphik einzubinden. Für unser Beispiel nehmen wir an, daß die Graphik als encapuslated Postscript-Datei im Verzeichnis und mit Namen graph/sig.eps vorliegt. Die Befehle zum Einbinden von Graphiken stellt das Paket graphics zur Verfgung. In der Präambel des Briefes wird ein Befehl zum Setzen der Unterschrift definiert:

    \newcommand{\setsignature}{\includegraphics{graph/sig.eps}}

Die Grußformel wird dann in der erweiterten Form gesetzt:

    \closing[\protect\setsignature]{Mit freundlichen Gr"u"sen}

Gegebenenfalls ist es notwendig, die Unterschrift mit dem Befehl \raisebox in die notwendige Position zu schieben. Dazu ist die Definition des Macros zum Einbinden der Unterschrift wie folgt anzupassen:

    \newcommand{\setsignature}{\raisebox{-3mm}{\includegraphics{graph/sig.eps}}}

Die Längenangabe (hier -3mm) ist entsprechend anzupassen.

3.9 Briefe in englischer oder französischer Sprache

Wer Briefe in anderen Sprachen schreiben möchte, kann für Englisch und Französisch die Trennung (abhängig von der Installation) und Befehle für Buchstaben mit Akzenten mit dem Befehl \selectlanguage{⟨Sprache⟩} umschalten. Das Umsetzen von Bezeichnungen z.B. für Anlage … muß explizit durch Befehle erfolgen, die in der Dokumentation zum dinbrief beschrieben sind.

3.10 Serienbriefe

Mit L^{A}TEX lassen sich auch Serienbriefe schreiben. Man benötigt dazu nur ein kleines Makro wie z.B. das folgende:

         \def\mailto#1{
           \begin{letter}{#1}
           \input{brftext}
           \end{letter}}

Mit dem Befehl \input{brftext} wird die Datei geladen, die den Text für den Serienbrief enthält. In einer weiteren Datei stehen unsere Adressaten im folgenden Format:

         \mailto{Karle Huber\\
                 Lichtensteinstr. 45\\[\medskipamount]
                 77777 Hintertupfingen}
         \mailto{Anna H"aberle\\
                 Wallstra"se 7\\[\medskipamount]
                 88888 L"andle}

Die Briefe können nun mit einer Umgebung wie der in Abbildung 4 ausgedruckt werden. In der Zeile \input{#address} ist der Platzhalter #address durch den Dateinamen zu ersetzen.

Beachten sollte man, daß dann der Text in der Datei brftext.tex direkt mit

\opening{...} beginnt (also kein \begin{letter} und \end{letter} enthält)
und mit \closing{...} bzw. \ps{...} abschließt.

Ein Beispiel für die Datei brftext.tex finden Sie in Abbildung 5.

3.11 Einige Regeln für das Briefeschreiben

Dieser Abschnitt enthält Passagen aus den Normen DIN 5008 (Regeln für das Maschinenschreiben) und DIN 676 (Geschäftsbrief), ergänzt um einige zusätzliche Hinweise und Tips. Der Abschnitt erhebt keinen Anspruch auf Vollständigkeit. Er soll Anfängern wie auch Geübten einen Überblick über die wichtigsten Regeln geben. Ferner werden die Grenzen der vorliegenden Version aufgezeigt und es wird auf bekannte Fehler hingewiesen.

1. Zeilenabstand

Es wird mit einfachem Grundzeilenabstand geschrieben.

2. Anschriftenfeld

Die Angaben im Anschriftenfeld werden auf folgende Weise gegliedert:

(a) Sendungsart, Versendungsform, Vorausverfügung

(b) Leerzeile

(c) Empfängerbezeichnung

(d) Postfach oder Straße und Hausnummer

(e) Leerzeile

(f) Postleitzahl und Bestimmungsort

(g) Leerzeile

(h) Bestimmungsland

Bei Auslandsanschriften ist die Leerzeile zwischen der Zeile mit Postfach oder Straße und Hausnummer und der Zeile mit dem Bestimmungsort entbehrlich, wenn das Bestimmungsland unter der entsprechenden Zeile angegeben werden muß.

Im Verkehr mit bestimmten Ländern kann auf die Angabe des Bestimmungslandes verzichtet werden, wenn das Unterscheidungskennzeichen für den grenzüberschreitenden Kraftfahrzeugverkehr der Postleitzahl — durch einen Bindestrich getrennt — vorangestellt wird.

3. Bezugszeichen und Tagangabe

Die Eintragungen in dieser Zeile werden automatisch an der richtigen Stelle plaziert.

\documentclass[12pt]{dinbrief}
\usepackage{german}
\input{brfkopf}
\address{\myaddress}
\backaddress{R. Kurz, Am See 1, 76139 Karlsruhe}
\signature{R. Kurz}
\place{76139 Karlsruhe}
\def\mailto#1{                % zum ausdrucken von
                              % Serienbriefen
  \begin{letter}{#1}
  \input{brftext}             % Datei, die den Text enthaelt
  \end{letter}}
\begin{document}
\input{#address}              % Adress-Datei
\end{document}

Abbildung 4: Erstellen von Serienbriefen

\opening{Betrieb eines Mikrowellensenders}
Sehr geehrte Damen und Herren,
anbei sende ich Ihnen eine Kopie der bisherigen Genehmigung f"ur
unseren Mikrowellenherd...
... Ihre Bem"uhungen im voraus vielen Dank.
\closing{Mit freundlichen Gr"u"sen,}
\ps{Wir bitten um schnelle Erledigung.}
\cc{Deutsche Bundespost\\
    Karlsruher Privatfunk\\
    S"uddeutscher Rundfunk}
\encl{Abschrift der Urkunde}

Abbildung 5: Rumpf eines Serienbriefes 4. Betreff und Teilbetreff

Betreff und Teilbetreff sind stichwortartige Inhaltsangaben. Der Betreff bezieht sich auf den ganzen Brief, Teilbetreffe beziehen sich auf Briefteile. Der Wortlauf des Betreffs wird ohne Schlußpunkt geschrieben.

5. Behandlungsvermerke Behandlungsvermerke (z.B. eilt) werden neben das Anschriftenfeld, beginnend auf Grad 50 (bei einer 10er Teilung), oder im Anschluß an die Betreffangabe geschrieben; sie können hervorgehoben werden.

6. Anlagen- und Verteilvermerke Anlagen- und Verteilvermerke beginnen an der Fluchtlinie oder auf Grad 50 (60 oder 75). Die vorliegende Version des ‘dinbriefs’ unterstützt nur Anlagenund Verteilvermerke auf der Fluchtlinie. Der Anlagenvermerk geht dem Verteilvermerk voraus.

7. Postscriptum Die DIN Norm 5008 sieht kein Postscriptum vor. Die vorliegende Version des ‘dinbriefs’ unterstützt trotzdem ein Postscriptum. Wir empfehlen das Postscriptum unmittelbar nach der Grußformel \closing oder nach Anlagenund Verteilvermerken zu setzen.

8. Seitennumerierung Die Seiten eines Schriftstücks sind von der 2. Seite an oben fortlaufend zu benummern. Die Pagestyles headings und contheadings unterstützen diese Forderung. Das Verfahren ist jedoch noch nicht befriedigend.

9. Hinweis auf Folgeseiten Wenn der Text eines Schriftstücks eine nächste Seite beansprucht, wird empfohlen

• am Fuß der bereits beschrifteten Seite,

• nach der letzten Textzeile,

• mit mindestens einer Leerzeile Abstand,

• auf Grad 60 (72 oder 90) beginnend,

als Hinweis auf die folgende Seite drei Punkte zu schreiben. Dieses Vorgehen wird zur Zeit nicht unterstützt. Der Pagestyle contheadings schreibt jedoch an das Ende der laufenden Seite die Seitenzahl der Folgeseite und auf Folgeseiten die aktuelle Seite in der Kopf der Seite. Die Kombination des Befehls \bottomtext, zum Einblenden einer weiteren Kommunikationszeile am unteren Blattende der ersten Seite sowie von gesellschaftsrechtlichen Angaben, mit Seitenstilen, die die Fußzeile unten mit der Seitennummer oder Folgeseitennummer beschriften, hat unter Umständen zur Folge, daß die Seiten- oder Folgeseitennummer von diesen Feldern überschrieben wird.

10. Kommunikationszeile am Blattende und gesellschaftsrechtliche Angaben

Eine Kommunikationszeile am Blattende kann die folgenden Angaben enthalten: Geschäftsräume, Telefon, Telefax, Teletex, Telex, Btx und Kontoverbindungen.

Bei Kapitalgesellschaften sind die Angaben über

• die Rechtsform und den Sitz der Gesellschaft,

• das Registergericht des Sitzes der Gesellschaft und die Nummer, unter der die Gesellschaft in das Handelsregister eingetragen ist,

• den Namen des Vorsitzenden des Aufsichtsrates (sofern die Gesellschaft nach gesetzlicher Vorschrift einen Aufsichtsrat zu bilden hat),

• die Namen des Vorsitzenden und aller Mitglieder des Vorstandes (bei Gesellschaften mit beschränkter Haftung die Namen der Geschäftsführer),

am Fuß des Vordrucks aufzuführen.

Die Rechtsform kann auch im Briefkopf als Bestandteil der Firma angegeben werden.

3.12 Adreß–Etiketten

Das Ausdrucken von Adreß-Etiketten ist wünschenswert, wenn keine Fensterbriefhüllen verwendet werden. Damit das Bedrucken von verschiedenen Etikettsätzen möglich wird, kann die Breite und Höhe der einzelnen Etiketten mit den Befehlen \setlabelwidth{⟨Breite⟩} und \setlabelheight{⟨Höhe⟩} eingestellt werden. Der obere Rand kann mit dem Befehl \setlabeltopmargin{⟨oberer Rand⟩} festgelegt werden. Die Anzahl der Labels in einer Spalte wird durch den Befehl \setlabelnumber{⟨Anzahl⟩} angegeben. Die mehrfache Verwendung eines Etikettenblatts wird durch den Befehl \spare{⟨Anzahl⟩} möglich. Dieser Befehl rückt den Druckbeginn um Anzahl Positionen vor. Die Ausgabe der Adreß–Etiketten erfolgt spaltenweise.

In vielen Druckern bleiben die Etikettenblätter hängen, wenn die Trägerfolie in beiden Spalten freiliegt. Drucker, die alternativ einen ebenen Papiertransport besitzen, sollten zur Ausgabe von Etiketten auf diesen umgeschaltet werden.

3.13 Kompatibilität zu Rainer Sengerlings ‘dinbrief’

Im Jahr 1992 wurde an der Universität Karlsruhe ein Briefstil entwickelt, dem der Namen ‘dinbrief’ gegeben wurde. Im gleichen Jahr veröffentlichte Rainer Sengerling einen Briefstil unter dem gleichen Namen.

Rainer Sengerling hat darauf verzichtet seinen Briefstil an L^{A}TEX 2ε anzupassen. Daraufhin haben wir den Briefstil ‘dinbrief’ im Dezember 1994 als L^{A}TEX 2ε-Klasse veröffentlicht. Die beiden Briefstile haben unterschiedliche Befehlssätze, was bei vielen Benutzern zu Verwirrung und Irritationen geführt hat. Wegen der unterschiedlichen Befehle der beiden Stile haben uns viele Anfragen erreicht. Die jetzt vorliegende Fassung stellt beide Befehlssätze zur Verfügung und führt die bisher unabhänigen Briefstile zusammen.

Gegenwärtig wird die Klassenoption german nicht ausgewertet und führt zu einer Warnung. Alternativ muß mit dem Befehl

\usepackage{german}

der Stil ”german“ geladen werden.

\Retouradresse{⟨Absenderadresse im Brieffenster⟩ } Der Befehl legt die Anschrift des Absenders oben im Anschriftenfeld des Briefs fest.

\Retourlabel

Dieser Befehl erzeugt Absenderadreß-Etiketten, falls die Erzeugung der Etiketten aktiviert wurde.

Ferner wird die Ausgabe der \Retouradresse unterdrückt.

Dieser Befehl wird gegenwärtig nicht unterstützt und erzeugt eine Warnung.

\Fenster

Bei der Verwendung von Fensterbriefhüllen wird die mit \Retouradresse vereinbarte einzeilige Rücksendeadresse (Absenderadresse) oben im Anschriftenfeld eingeblendet, falls der Befehl \Fenster angegeben wurde. Ferner werden die Faltmarken am linken Rand ausgegeben.

Dafür wird die Ausgabe der Etiketten unterdrückt.

Dieser Befehl wird gegenwärtig nicht unterstützt und erzeugt eine Warnung.

\Postvermerk{⟨Postvermerk⟩ }

Dieser Befehl vereinbart Vermerke für den Postversand wie z.B. Einschreiben.

\Behandlungsvermerk{⟨Behandlungsvermerk⟩ }

Der Befehl \Behandlungsvermerk dient zur Angabe von (man wirds kaum glauben) Behandlungsvermerken wie z.B. Eilt, persönlich oder ”Für die unterste Schublade“.

\Absender{⟨Name und Adresse des Absenders⟩ } Die Adresse des Absenders wird vereinbart. Dieser Befehl gilt für den laufenden und alle weiteren Briefe; er gilt solange, bis ein weiterer \Absenderoder \address-Befehl angegeben wird.

\Absender{⟨Teil 1::Teil 2 ⟩ } Dies ist eine Sonderform des \Absender-Befehls. Der durch :: abgetrennte Teil2 erscheint im Briefkopf, aber nicht im Absenderetikett, falls ein solches mit dem Befehl \Retourlabel angefordert wurde.

Dieser Befehl wird korrekt unterstützt. Da aber der Befehl \Retourlabel nicht implementiert wurde, hat die Aufteilung im Moment praktisch keine Bedeutung; sie kann aber in späteren Versionen wieder notwendig sein.

\Datum{⟨Briefdatum⟩ } Soll als Absendedatum nicht das aktuelle Tagesdatum (des Rechners) eingesetzt werden, kann mit diesem Befehl das Datum explizit angegeben werden.

Der Befehl \heute wird nicht unterstützt.

\Betreff{⟨Betreff ⟩ }

Mit diesem Befehl wird der Betreff gesetzt, der den Empfänger über den Gegenstand des Briefes informiert. Der Betreff kann ein oder mehrzeilig sein.

\Einrueckung{⟨Text⟩ }

Der Text wird um 1in eingerückt und geht bis zum rechten Rand. Der Text darf Absätze enthalten.

\anlagenrechts

Die Anlagen- und Verteilvermerke beginnen rechts neben der Grußformel auf Grad 50. Mit diesem Befehl kann Platz gespart werden, falls die Seite fast voll ist, und kein neues Blatt begonnen werden soll. Dieser Befehl muß vor \closing stehen. Die Anlagen- und Verteilvermerke müssen in diesem Fall ebenfalls vor dem \closing-Befehl stehen.

\Anlagen{⟨Anlagenvermerk⟩ } Mit diesem Befehl werden eventuelle Anlagenvermerke vereinbart oder gesetzt. Dieser Befehl darf sowohl vor dem \closing-Befehl als auch hinter diesem stehen. Der Anlagenvermerk wird nur vereinbart falls der Befehl vor dem \closing-Befehl angegeben wird. Der Anlagenvermerk wird sofort ausgegeben und gesetzt, falls der Befehl nach dem \closing-Befehl angegeben wird.

\Verteiler{⟨Verteilvermerk⟩ } Dieser Befehl vereinbart oder setzt Verteilvermerke. Die Ausführungen zum \Anlagen-Befehl gelten auch für diesen Befehl.

\Etihoehe{⟨Höhe eines Adressetiketts⟩ } Verschiedene Herstelle vertreiben Adressetiketten, die alle ein bischen anders sind. Um den Briefstil an unterschiedlich hohe Adreßetiketten anzupassen, kann mit dem Befehl \Etihoehe die Höhe eines Etiketts angegeben werden.

\Etirand{⟨oberer Rand⟩ } Die Bögen mit den Adreßetiketten haben oft einen Versatz oder oberen Rand. Mit dem Befehl \Etirand kann dieser Versatz eingestellt werden.

\Etizahl{⟨Zahl der Etiketten⟩ } Auf ein Blatt mit Adreßetiketten passen leider nicht beliebig viele sondern nur eine begrenzte Anzahl von Etiketten, die sich dann auch nicht kunterbunt auf dem Blatt tummeln, sondern Spaltenweise angeordnet sind. Die Zahl der Etiketten, die in eine Spalte passen werden durch den Befehl \Etizahl angegeben.

\spare{⟨n⟩}

Das Bedrucken der Adreßetiketten beginnt nach n leeren Adreßlabeln. Die Label werden spaltenweise durchgezählt.

4 Documentation

1 ⟨∗class | style⟩

We store the date, version and name of this file in four control sequences, for future use.

 2 \def\RCSdate{$Date: 2000/03/02 12:49:21 $}
 3 \def\RCSrevision{$Revision: 1.73 $}
 4 %
 5 {%
 6 \def\stripone $#1${\def\partone{#1}}
 7 \def\striptwo Date: #1\stop{\gdef\filedate{#1}\gdef\docdate{#1}}
 8 \expandafter\stripone\RCSdate
 9 \expandafter\striptwo\partone\stop
10 }%

11 %

12 {%
13 \def\stripone $#1${\def\partone{#1}}
14 \def\striptwo Revision: #1\stop{\gdef\fileversion{#1}}
15 \expandafter\stripone\RCSrevision
16 \expandafter\striptwo\partone\stop
17 }%

18 %

19 \def\filename{dinbrief.dtx}

4.1 The class/style file ‘dinbrief’

This is DINBRIEF.STY in text format, as of 1994/12/21, by K. Braune and R. Gussmann (Rechenzentrum der Universität Karlsruhe).

It is based on DLETTER.STY in text format, as of December 16, 1987, by D. Heinrich (TH Karlsruhe).

It is based on A4LETTER.STY in text format, as of June 16, 1987, and letter.sty 17-Jan-86 with modifications for DIN-A4 paper + window envelopes, by H. Partl (Wien)

4.2 Get system information

First we use three conditions to identify whether or not this file is running under LaTeX 2.09 or L^{A}TEX 2ε and which font selection scheme is in use.

\ifka@db@ltxtwoe is true if and only if this style is running in an L^{A}TEX 2εenvironment. \ifka@db@nfss is true if we are using an NFSS 1 and \ifka@db@nfsstwo is true if we are using the NFSS 2.

20 \newif\ifka@db@ltxtwoe
21 \ka@db@ltxtwoefalse
22 \newif\ifka@db@nfss
23 \ka@db@nfssfalse
24 \newif\ifka@db@nfsstwo
25 \ka@db@nfsstwofalse

Then we check what is present on the system.

26 \expandafter\ifx\csname documentclass\endcsname\relax\else
27  \ka@db@ltxtwoetrue
28 \fi
29 \expandafter\ifx\csname size\endcsname\relax\else
30  \ka@db@nfsstrue
31 \fi
32 \expandafter\ifx\csname fontsize\endcsname\relax\else
33  \ka@db@nfsstwotrue
34 \fi

4.3 Print informations about this style

4.3.1 Print the banner

35 \typeout{}
36 \typeout{Document Class/Style 'dinbrief' - %
37  Version \fileversion}
38 \typeout{University of Karlsruhe - \filedate}
39 \typeout{}

4.3.2 Print system information

40 \ifka@db@ltxtwoe
41  \typeout{*** dinbrief: Running in LaTeX 2e mode!}
42 \else
43  \typeout{*** dinbrief: Running in LaTeX 2.09 mode!}
44 \fi
45 \ifka@db@nfss
46  \typeout{*** dinbrief: NFSS!}
47 \else
48  \ifka@db@nfsstwo
49  \typeout{*** dinbrief: NFSS 2!}
50  \else
51  \typeout{*** dinbrief: original LaTeX 2.09 font %
52  selection mechanism found!!!}
53  \fi
54 \fi

4.4 L^{A}TEX 2ε version control

55 \ifka@db@ltxtwoe
56 \NeedsTeXFormat{LaTeX2e}[1996/12/01]
57 \ProvidesClass{dinbrief}[2000/03/02 LaTeX2e class]
58 \else
59 \long\def\@firstofone#1{#1}
60 \fi

4.5 Initial code

In this part we define a few comands that are used later on.

4.5.1 temporary variables

\ka@db@tmpdima \ka@db@tmpdimb Unfortunately we have to define our own temporary dimen variables, because inside a parbox \@tempdima and \@tempdimb are used. \@tempdimc ist used maybe in fontswitch commands.

61 \newdimen\ka@db@tmpdima
62 \newdimen\ka@db@tmpdimb

4.5.2 dinbrief programming environment

We define a few commands that are used later on.

dinbrief has many variables to store information about a letter in it. These informations can be local to one letter or global to all letters in the file. Here is a table of all variables, and a mark if they are local, global or both.

old name  new name local global  holds
\@backaddress backaddress  •  •  backaddress
not used  cc  •  carbon copy
not used  encl  •  enclosures
not used  ps  •  postscriptum
\@fromsig  signature  •  •  sign of author
\@fromaddress fromaddress  •  •  address of author
\@place  place  •  place
\@prephone  prephone  •  dialing code
\@phone  phone  •  telephone number
\@mymail  sign  •  •  my sign
\@yourmail  yourmail  •  your mail
\@writer  writer  •  •  writer, processor

Currently the new nameing scheme is only used for cc, encl and ps. No features of are currently used.

\ka@db@assignvarglobal Assigns the argument to the global entity of that variable.

63 \long\def\ka@db@assignvarglobal#1#2{%
64 \protect\pka@db@assignvarglobal{#1}{#2}}%
65 \long\def\pka@db@assignvarglobal#1#2{%
66 % \bgroup
67 %   \let\\=\relax
68 %   \message{assignvarglobal: #1 = #2}%
69 % \egroup
70 \global\@namedef{ka@db@g@#1}{#2}%

71 }

\ka@db@assignvarlocal Assigns the argument to the local entity of that vairable.

72 \long\def\ka@db@assignvarlocal#1#2{%
73 \protect\pka@db@assignvarlocal{#1}{#2}}%
74 \long\def\pka@db@assignvarlocal#1#2{%
75 % \bgroup
76 %   \let\\=\relax
77 %   \message{assignvarlocal: #1 = #2}%

78 % \egroup
79 \global\@namedef{ka@db@l@#1}{#2}%

80 }

\ka@db@declvar The macro \ka@db@declvar{⟨NAME⟩} defines two control sequences with the following names \ka@db@l@NAME and \ka@db@gNAME. The control sequences are initialized with \@empty.

81 \def\ka@db@declvar#1{%
82 \ka@db@assignvarglobal{#1}{}%
83 \ka@db@assignvarlocal{#1}{}%

84 }

\ka@db@assignvar Assigns the given argument either to the local or global entity depending on the value of the boolean variable ifka@db@inletter. We do the same as in L^{A}TEX. We define a normal and a protected version.

85 \long\def\ka@db@assignvar#1#2{\protect\pka@db@assignvar{#1}{#2}}%
86 \long\def\pka@db@assignvar#1#2{%
87 % \message{assignvar: #1 = #2}%
88 \ifnum\c@lt@state>0\relax
89  \pka@db@assignvarlocal{#1}{#2}%
90 \else
91  \pka@db@assignvarglobal{#1}{#2}%
92 \fi

93 }

\ka@db@usevarglobal Use the global entity.
94 \def\ka@db@usevarglobal#1{\protect\pka@db@usevarglobal{#1}}%
95 \def\pka@db@usevarglobal#1{%
96 \@nameuse{ka@db@g@#1}%

97 }

\ka@db@usevarlocal Use the local entity.
98 \def\ka@db@usevarlocal#1{\protect\pka@db@usevarlocal{#1}}%
99 \def\pka@db@usevarlocal#1{%
100 \@nameuse{ka@db@l@#1}%

101 }

\ka@db@usevar Use the global or local entity. If the local entity is empty take the value from the global entity. There is no check if the local entity holds valid data.

\ka@db@inletter-Flag is not used.
102 \def\ka@db@usevar#1{%
103 \bgroup
104  \def\protect{\noexpand\protect\noexpand}%
105  \let\\=\relax
106  \edef\tmpa{\pka@db@usevarlocal{#1}}%
107  % \typeout{usevar: varlocal #1 = \meaning\tmpa}%
108  \expandafter\egroup
109  \ifx\tmpa\@empty
110  % \message{Using global var, because local var is empty!}%

111  \pka@db@usevarglobal{#1}%
112  \else
113  % \message{Using local var!}%
114  \pka@db@usevarlocal{#1}%
115  \fi

116 }

\ka@db@ifemptydynvar Argument one has to be a control sequence. Argument two is the argument of the control sequence given in the first argument. If the macro combined with the first two arguments is empty, then the third argument is executed. Otherwise the fourth argument is executed. We do an expansion into a temporary controlsequence. Therefore all control sequences in the expanded macro which should not be expanded should be protected. \protect and \\ are set so that no expansion is given for protected control sequences and also for \\.

117 \long\def\ka@db@ifemptydynvar#1#2#3#4{%
118 \bgroup
119  \def\protect{\noexpand\protect\noexpand}%
120  \let\\=a% because characters are not expanded
121  \edef\tmpa{#1{#2}}%
122  % \typeout{ifempty: \string#1\space var #2 = \meaning#1{#2}}%
123  % \typeout{ifempty: \string#1\space var #2 = \meaning\tmpa}%
124  \expandafter\egroup
125  \ifx\tmpa\@empty
126  % \message{var is empty!}%
127  #3% <- otherwise a space is inserted
128  \else
129  % \message{var is not empty!}%
130  #4% <- otherwise a space is inserted
131  \fi

132 }

\ka@db@ifemptyvarlocal Checks if the local entity of a variable is empty or not.

133 \long\def\ka@db@ifemptyvarlocal#1#2#3{%
134 \ka@db@ifemptydynvar{\pka@db@usevarlocal}{#1}{#2}{#3}%

135 }

\ka@db@ifemptyvarglobal Checks if the global entity of a variable is empty or not.

136 \long\def\ka@db@ifemptyvarglobal#1#2#3{%
137 \ka@db@ifemptydynvar{\pka@db@usevarglobal}{#1}{#2}{#3}%

138 }

\ka@db@ifemptyvar If both entities of the variable (local and global) are empty then the second argument is executed. Otherwise the third argument is executed.

139 \long\def\ka@db@ifemptyvar#1#2#3{%
140 \ka@db@ifemptyvarlocal{#1}{% then
141  \ka@db@ifemptyvarglobal{#1}{#2}{#3}%
142  }{#3}%

143 }

\ka@db@execatletter \ka@db@atletter The macro \ka@db@execatletter appends at the end of the macro
\ka@db@atletter the stuff added in the argument of \ka@db@execatletter.

The macro \@ka@db@atletter will be executed everytime the \begin{letter}- command is processed.

144 \def\ka@db@execatletter#1{%
145 \bgroup
146  \let\\=\relax
147  \def\protect{\noexpand\protect\noexpand}%
148  \xdef\ka@db@atletter{\ka@db@atletter #1}
149 \egroup

150 }

151 \def\ka@db@atletter{}

\ka@db@execatendletter \ka@db@endletter The same as above except that the list is executed if the \end{letter}-command is processed.

152 \def\ka@db@execatendletter#1{%
153 \bgroup
154  \let\\=\relax
155  \def\protect{\noexpand\protect\noexpand}%
156  \xdef\ka@db@atendletter{\ka@db@atendletter #1}
157 \egroup

158 }

159 \def\ka@db@atendletter{}

4.5.3 Choosing the type size

\@ptsize \ds@12pt \ds@11pt \ds@10pt \ds@norm The control sequence \@ptsize is used to store the second digit of the pointsize

we are typesetting in. So, normally, it’s value is one of 0, 1 or 2.

To be compatible with the old ‘dinbrief’, pointsize 3 is used to switch to a special size setting exactly 6 lines per inch. (… it’s used to feature some other size following the rules of old stupid typewriters).

The type size options are handled by defining \@ptsize to contain the last digit of the size in question and branching on \ifcase statements. This is done for historical reasons to stay compatible with other packages that use the \@ptsize variable to select special actions.

To follow the programming conventions of L^{A}TEX 2ε, we split the definition of the macros into two parts. One for the old L^{A}TEX and one for L^{A}TEX 2ε.

160 \ifka@db@ltxtwoe
161 \newcommand\@ptsize{}
162 \DeclareOption{10pt}{\renewcommand\@ptsize{0}}
163 \DeclareOption{11pt}{\renewcommand\@ptsize{1}}
164 \DeclareOption{12pt}{\renewcommand\@ptsize{2}}
165 \DeclareOption{norm}{\renewcommand\@ptsize{3}}
166 \else
167 \def\@ptsize{0}
168 \@namedef{ds@10pt}{\def\@ptsize{0}}
169 \@namedef{ds@11pt}{\def\@ptsize{1}}
170 \@namedef{ds@12pt}{\def\@ptsize{2}}

171 \@namedef{ds@norm}{\def\@ptsize{3}}
172 \fi

4.6 Defining the jobname

\jobname@aux \jobname@lbl This control sequence is used to store the name of the aux-file. Therefore character _temporally is given catcode 12.

173 {%

174 \catcode`\_=12
175 \gdef\jobname@aux{\jobname.aux}% .aux or _aux or ...
176 \gdef\jobname@lbl{\jobname.lbl}%

177 }%

\@mainlbl
178 \newwrite\@mainlbl

4.7 Stuff from original classes

\if@restonecol If the document has to be printed in two columns, we sometimes have to temporarily switch to one column. This switch is used to remember to switch back.

179 \newif\if@restonecol

4.8 Setting paper sizes

The variables \paperwidth and \paperheight should reflect the physical paper size after trimming. For desk printer output this is usually the real paper size since there is no post-processing.

180 \ifka@db@ltxtwoe
181 \DeclareOption{a4paper}
182  {\paperheight=297mm%
183  \paperwidth =210mm}
184 \DeclareOption{a5paper}
185  {\paperheight=210mm%
186  \paperwidth =148mm}
187 \DeclareOption{b5paper}
188  {\paperheight=250mm%
189  \paperwidth =176mm}
190 \DeclareOption{letterpaper}
191  {\paperheight=11in%
192  \paperwidth =8.5in}
193 \DeclareOption{legalpaper}
194  {\paperheight=14in%
195  \paperwidth =8.5in}
196 \DeclareOption{executivepaper}
197  {\paperheight=10.5in%
198  \paperwidth =7.25in}
199 \fi

4.9 Two-side or one-side printing

Sometimes it’s necessary to have two-sided printing. For example if you have a two-sided printer, and you write two letters the first one having an odd number of pages. The second then starts on the backside of the last page of the first letter. To avoid this problem you can specify the twoside option. Each letters then starts on a new sheet on a two-sided printer.

200 \ifka@db@ltxtwoe
201 \DeclareOption{twoside}{\@twosidetrue}
202 \fi
203 \@twosidefalse

4.10 Support for both variants of DIN 676 letter layout

Changing the letter layout parameters from absolute lengths to length variables allows easy support of both versions of the DIN 676 letter layout: ‘Form A’ with address filed put high on the page (addresshigh), and ‘Form B’ with address field 18mm lower (addrl ow). Since up to now only ‘Form B’ has been supported, it has been choosen to be the default. The option code is executed after the other class commands since the lengths used are introduced later on. These options are available only in case of using L^{A}TEX 2ε. Specification of the length \addrvpos, \ufldmarkvpos and \lfldmarkvpos in the configuration file overwrite these options.

204 \ifka@db@ltxtwoe
205 \DeclareOption{addresshigh}{\AtEndOfClass{\addresshigh}}
206 \DeclareOption{addressstd}{\AtEndOfClass{\addressstd}}
207 \fi

4.11 Draft option

If the user requests draft we show any overfull boxes. We could probably add some more interesting stuff to this option.

208 \def\ds@draft{\overfullrule 5pt}
209 \def\ds@final{\overfullrule 0pt}

4.12 Twocolumn printing

Two-column and one-column printing is again realized via a switch.

This makes no sense in letters following the rules of DIN. But maybe it is sometimes usefull.

Some labels use twocolumn output.

210 \ifka@db@ltxtwoe
211 \DeclareOption{onecolumn}{\@twocolumnfalse}
212 \DeclareOption{twocolumn}{\@twocolumntrue}
213 \fi

4.13 Defining internal font selection commands

To be compatible to all font selection schemes we define our own font selection

 commands \ka@db@fontshape (1), \ka@db@fontseries (1), ka@db@fontsize (2),
 \ka@db@selectfont (0).

Note: In the definition of the original L^{A}TEX 2.09 font selection system the command \rm is used. This causes no error because \rm is well defined in this version of L^{A}TEX.

214 \ifka@db@nfss
215  \let\ka@db@selectfont\selectfont
216  \let\ka@db@fontseries\series
217  \let\ka@db@fontshape\shape
218  \let\ka@db@fontsize\size
219 \else
220  \ifka@db@nfsstwo
221  \let\ka@db@selectfont\selectfont
222  \let\ka@db@fontseries\fontseries
223  \let\ka@db@fontshape\fontshape
224  \let\ka@db@fontsize\fontsize
225  \else
226  \def\ka@db@selectfont{\relax}
227  \def\ka@db@fontseries#1{\relax}
228  \def\ka@db@fontshape#1{\ifx#1n\rm\else\relax\fi}
229  \def\ka@db@fontsize#1#2{\expandafter
230  \ifnum#1=12
231  \@setsize\normalsize{15pt}\xiipt\@xiipt
232  \abovedisplayskip 12pt plus3pt minus7pt
233  \belowdisplayskip \abovedisplayskip
234  \abovedisplayshortskip \z@ plus3pt
235  \belowdisplayshortskip 6.5pt plus3.5pt minus3pt
236  \else
237  \ifnum#1=8
238  \@setsize\scriptsize{8pt}\viipt\@viipt
239  \else
240  \@setsize\scriptsize{9.5pt}\viiipt\@viiipt
241  \fi
242  \fi}
243  \fi
244 \fi

4.14 Executing options

Here we execute the default options to initialize certain variables.

245 \ifka@db@ltxtwoe
246 \ExecuteOptions{a4paper,10pt,onecolumn,final}
247 \fi

The \ProcessOptions command causes the execution of the code for every option FOO which is declared and for which the user typed the FOO option in his \documentclass command. For every option BAR he typed, which is not declared, the option is assumed to be a global option. All options will be passed as document options to any \usepackage command in the document preamble.

In the old L^{A}TEX the user starts his file with the command

\documentstyle [OPTION1, ... ,OPTIONk]{STYLE} which saves the OPTION’s

and \input’s the file STYLE.STY. When the STYLE.STY file issues the command \@options, the following happens for each i:

If the control sequence \ds@OPTIONi is defined then execute this option \ds@OPTIONi. In the other case save OPTIONi on a list of unprocessed options.

After STYLE.STY has been executed, the file OPTIONi.STY is read for each OPTIONi on the list of unprocessed options.

248 \ifka@db@ltxtwoe
249  \ProcessOptions
250 \else
251  \@options
252 \fi

4.15 Loading Packages

The ‘dinbrief’ class/style file does not load additional packages. The user should load ‘german.sty’.

4.16 Error messages in this class/style

4.16.1 General error message

\ka@db@error
253 \def\ka@db@error#1{%
254 \@latexerr{%
255  Document style/class `dinbrief' error^^J%
256  #1%
257 }{%
258  No help is available for this error message.^^J%
259  Please check your input file!

260 }% 261 }

4.16.2 Warning within L^{A}TEX 2ε for forbidden commands

Therefore we define a warning message in case forbidden commands are used.

\ka@db@warning
262 \ifka@db@ltxtwoe
263 \def\ka@db@warning#1{%
264  \@@warning{The control sequence \string#1\space should %
265  not be used in LaTeX 2e}%

266 }

267 \fi

4.16.3 Modelling \ClassWarning in L^{A}TEX 2.09

268 \ifka@db@ltxtwoe\else
269 \def\ClassWarning#1#2{%
270  \typeout{Style #1 Warning: #2\on@line.}%

271 }

272 \fi

4.17 Font changing

4.17.1 Defining old font changing commands for L^{A}TEX 2ε

Defining the font change commands for L^{A}TEX 2ε.

The following commands are only available in L^{A}TEX 2ε. In older versions of L^{A}TEX the commands are defined in lfonts.??? (I think so).

273 \ifka@db@ltxtwoe

Here we supply the declarative font changing commands that were common in L^{A}TEX version 2.09 and earlier. These commands work in text mode and in math mode. They are provided for compatibility, but one should start using the \text... and \math... commands instead. These commands are redefined using \@renewfontswitch, a command with three arguments: the user command to be defined, L^{A}TEX’s command to be executed in text mode, and L^{A}TEX’s command to be executed in math mode.

\rm \sf \tt The commands to change the family:

274 \DeclareOldFontCommand{\rm}{\normalfont\rmfamily}{\mathrm}
275 \DeclareOldFontCommand{\sf}{\normalfont\sffamily}{\mathsf}
276 \DeclareOldFontCommand{\tt}{\normalfont\ttfamily}{\mathtt}

\bf The command to change to the bold series. One should use \mdseries to explicitly switch back to medium series.

277 \DeclareOldFontCommand{\bf}{\normalfont\bfseries}{\mathbf}

\it \sl \sc And the commands to change the shape of the font. The slanted and small caps shapes are not available by default as math alphabets, so these changes do nothing in math mode. One should use \upshape to explicitly change back to the upright shape.

278 \DeclareOldFontCommand{\it}{\normalfont\itshape}{\mathit}
279 \DeclareOldFontCommand{\sl}{\normalfont\slshape}{\@nomath\sl}
280 \DeclareOldFontCommand{\sc}{\normalfont\scshape}{\@nomath\sc}

{\cal \atop \mit} The commands \cal and \mit should only be used in math mode, outside math mode they have no effect. Currently, the New Font Selection Scheme defines these commands to generate warning messages. Therefore, we have to define them manually.

281 \DeclareRobustCommand*{\cal}{\@fontswitch{\relax}{\mathcal}}
282 \DeclareRobustCommand*{\mit}{\@fontswitch{\relax}{\mathnormal}}

The end of the conditional code for the font changing commands for L^{A}TEX 2ε.

283 \fi

4.18 A special distance

\GZA Baselinedistance 1/6 in = 4,23 mm (Grundzeilenabstand DIN 2107, 2142)

284 \newdimen\GZA
285 \GZA=1in \divide\GZA by 6

4.19 Fontsizes und other parameters

286 \ifcase \@ptsize\relax
\@normalsize
287 \def\@normalsize{\@setsize\normalsize{12pt}\xpt\@xpt
288 \abovedisplayskip 10\p@ plus2\p@ minus5\p@
289 \belowdisplayskip \abovedisplayskip
290 \abovedisplayshortskip \z@ plus3\p@
291 \belowdisplayshortskip 6\p@ plus3\p@ minus3\p@
292 \let\@listi\@listI

293 }%

\small
294 \def\small{\@setsize\small{11pt}\ixpt\@ixpt
295 \abovedisplayskip 8.5\p@ plus 3\p@ minus 4\p@
296 \belowdisplayskip \abovedisplayskip
297 \abovedisplayshortskip \z@ plus2\p@
298 \belowdisplayshortskip 4\p@ plus2\p@ minus 2\p@
299 \def\@listi{\leftmargin\leftmargini
300  \topsep 4\p@ \@plus2\p@ \@minus2\p@
301  \parsep 2\p@ \@plus\p@ \@minus\p@
302  \itemsep \parsep}%

303 }%

\footnotesize
304 \def\footnotesize{\@setsize\footnotesize{9.5pt}\viiipt\@viiipt
305 \abovedisplayskip 6\p@ plus 2\p@ minus 4\p@
306 \belowdisplayskip \abovedisplayskip
307 \abovedisplayshortskip \z@ plus 1\p@
308 \belowdisplayshortskip 3\p@ plus 1\p@ minus 2\p@
309 \def\@listi{\leftmargin\leftmargini
310  \topsep 3\p@ \@plus\p@ \@minus\p@
311  \parsep 2\p@ \@plus\p@ \@minus\p@
312  \itemsep \parsep}%

313 }%

\scriptsize
\tiny
\large
\Large
\LARGE
\huge
\Huge

314 \def\scriptsize{\@setsize\scriptsize{8pt}\viipt\@viipt}
315 \def\tiny{\@setsize\tiny{6pt}\vpt\@vpt}
316 \def\large{\@setsize\large{14pt}\xiipt\@xiipt}
317 \def\Large{\@setsize\Large{18pt}\xivpt\@xivpt}
318 \def\LARGE{\@setsize\LARGE{22pt}\xviipt\@xviipt}
319 \def\huge{\@setsize\huge{25pt}\xxpt\@xxpt}

320 \def\Huge{\@setsize\Huge{30pt}\xxvpt\@xxvpt}
321 \or % 11 pt option
\@normalsize
322 \def\@normalsize{\@setsize\normalsize{13.6pt}\xipt\@xipt
323 \abovedisplayskip 11\p@ plus3\p@ minus6\p@
324 \belowdisplayskip \abovedisplayskip
325 \abovedisplayshortskip \z@ plus3\p@
326 \belowdisplayshortskip 6.5\p@ plus3.5\p@ minus3\p@
327 \let\@listi\@listI

328 }%

\small
329 \def\small{\@setsize\small{12pt}\xpt\@xpt
330 \abovedisplayskip 10\p@ plus2\p@ minus5\p@
331 \belowdisplayskip \abovedisplayskip
332 \abovedisplayshortskip \z@ plus3\p@
333 \belowdisplayshortskip 6\p@ plus3\p@ minus3\p@
334 \def\@listi{\leftmargin\leftmargini
335  \topsep 6\p@ \@plus2\p@ \@minus2\p@
336  \parsep 3\p@ \@plus2\p@ \@minus\p@
337  \itemsep \parsep}%

338 }%

\footnotesize
339 \def\footnotesize{\@setsize\footnotesize{11pt}\ixpt\@ixpt
340 \abovedisplayskip 8\p@ plus 2\p@ minus 4\p@
341 \belowdisplayskip \abovedisplayskip
342 \abovedisplayshortskip \z@ plus 1\p@
343 \belowdisplayshortskip 4\p@ plus 2\p@ minus 2\p@
344 \def\@listi{\leftmargin\leftmargini
345  \topsep 4\p@ \@plus2\p@ \@minus2\p@
346  \parsep 2\p@ \@plus\p@ \@minus\p@
347  \itemsep \parsep}%

348 }%

\scriptsize
\tiny
\large
\Large
\LARGE
\huge
\Huge

349 \def\scriptsize{\@setsize\scriptsize{9.5pt}\viiipt\@viiipt}
350 \def\tiny{\@setsize\tiny{7pt}\vipt\@vipt}
351 \def\large{\@setsize\large{14pt}\xiipt\@xiipt}
352 \def\Large{\@setsize\Large{18pt}\xivpt\@xivpt}
353 \def\LARGE{\@setsize\LARGE{22pt}\xviipt\@xviipt}
354 \def\huge{\@setsize\huge{25pt}\xxpt\@xxpt}
355 \def\Huge{\@setsize\Huge{30pt}\xxvpt\@xxvpt}
356 \or % 12pt option
\@normalsize

357 \def\@normalsize{\@setsize\normalsize{15pt}\xiipt\@xiipt
358 \abovedisplayskip 12\p@ plus3\p@ minus7\p@
359 \belowdisplayskip \abovedisplayskip
360 \abovedisplayshortskip \z@ plus3\p@
361 \belowdisplayshortskip 6.5\p@ plus3.5\p@ minus3\p@
362 \let\listi\listI

363 }%

\small
364 \def\small{\@setsize\small{13.6pt}\xipt\@xipt
365 \abovedisplayskip 11\p@ plus3\p@ minus6\p@
366 \belowdisplayskip \abovedisplayskip
367 \abovedisplayshortskip \z@ plus3\p@
368 \belowdisplayshortskip 6.5\p@ plus3.5\p@ minus3\p@
369 \def\@listi{\leftmargin\leftmargini
370  \topsep 9\p@ \@plus3\p@ \@minus5\p@
371  \parsep 4.5\p@ \@plus2\p@ \@minus\p@
372  \itemsep \parsep}%

373 }%

\footnotesize
374 \def\footnotesize{\@setsize\footnotesize{12pt}\xpt\@xpt
375 \abovedisplayskip 10\p@ plus2\p@ minus5\p@
376 \belowdisplayskip \abovedisplayskip
377 \abovedisplayshortskip \z@ plus3\p@
378 \belowdisplayshortskip 6\p@ plus3\p@ minus3\p@
379 \def\@listi{\leftmargin\leftmargini
380  \topsep 6\p@ \@plus2\p@ \@minus2\p@
381  \parsep 3\p@ \@plus2\p@ \@minus\p@
382  \itemsep \parsep}%

383 }%

\scriptsize
\tiny
\large
\Large
\LARGE
\huge
\Huge

384 \def\scriptsize{\@setsize\scriptsize{9.5pt}\viiipt\@viiipt}
385 \def\tiny{\@setsize\tiny{7pt}\vipt\@vipt}
386 \def\large{\@setsize\large{18pt}\xivpt\@xivpt}
387 \def\Large{\@setsize\Large{22pt}\xviipt\@xviipt}
388 \def\LARGE{\@setsize\LARGE{25pt}\xxpt\@xxpt}
389 \def\huge{\@setsize\huge{30pt}\xxvpt\@xxvpt}
390 \let\Huge=\huge
391 \or  % Norm-Option (DIN 2107, 2142)
\@normalsize
392 \def\@normalsize{\@setsize\normalsize{\GZA}\xipt\@xipt
393 \abovedisplayskip 11\p@ plus3\p@ minus6\p@
394 \belowdisplayskip \abovedisplayskip
395 \abovedisplayshortskip \z@ plus3\p@
396 \belowdisplayshortskip 6.5\p@ plus3.5\p@ minus3\p@

397 \let\@listi\@listI
398 }% Setting of \@listi added 22 Dec 87
\small
399 \def\small{\@setsize\small{11pt}\xpt\@xpt
400 \abovedisplayskip 10\p@ plus2\p@ minus5\p@
401 \belowdisplayskip \abovedisplayskip
402 \abovedisplayshortskip  \z@ plus3\p@
403 \belowdisplayshortskip  6\p@ plus3\p@ minus3\p@
404 \def\@listi{\leftmargin\leftmargini %% Def of \@listi added 22 Dec 87
405  \topsep 6\p@ plus2\p@ minus2\p@
406  \parsep 3\p@ plus2\p@ minus\p@
407  \itemsep \parsep}%

408 }%

\footnotesize
409 \def\footnotesize{\@setsize\footnotesize{11pt}\ixpt\@ixpt
410 \abovedisplayskip 8\p@ plus2\p@ minus4\p@
411 \belowdisplayskip \abovedisplayskip
412 \abovedisplayshortskip \z@ plus\p@
413 \belowdisplayshortskip 4\p@ plus2\p@ minus2\p@
414 \def\@listi{\leftmargin\leftmargini %% Def of \@listi added 22 Dec 87
415  \topsep 4\p@ plus2\p@ minus2\p@
416  \parsep 2\p@ plus\p@ minus\p@
417  \itemsep \parsep}%

418 }%

\scriptsize
\tiny
\large
\Large
\LARGE
\huge
\Huge

419 \def\scriptsize{\@setsize\scriptsize{9.5pt}\viiipt\@viiipt}
420 \def\tiny{\@setsize\tiny{7pt}\vipt\@vipt}
421 \def\large{\@setsize\large{14pt}\xiipt\@xiipt}
422 \def\Large{\@setsize\Large{18pt}\xivpt\@xivpt}
423 \def\LARGE{\@setsize\LARGE{22pt}\xviipt\@xviipt}
424 \def\huge{\@setsize\huge{25pt}\xxpt\@xxpt}
425 \def\Huge{\@setsize\Huge{30pt}\xxvpt\@xxvpt}
426 \fi

\normalsize We are doing here something different from the class files of L^{A}TEX 2ε. This may

be necessary for backward compatibility.

If we are in L^{A}TEX 2ε, then we have to define the controlsequence \normalsize.

427 \ifka@db@ltxtwoe
428 \let\normalsize\@normalsize
429 \fi

We initially choose the normalsize font. This code has to be executed following the definition of \baselinestretch, if we are not running NFSS2. (This may also be true also for NFSS1.)

430 \ifka@db@nfss

431  \normalsize
432 \else
433  \ifka@db@nfsstwo
434  \normalsize
435  \fi
436 \fi

4.20 Document layout

In this section we are finally dealing with the nasty typographical details.

437 % \addtolength\voffset{0.8truemm}
438 % \addtolength\hoffset{-1.4truemm}
439 \oddsidemargin=0in
440 \evensidemargin=0in
441 \marginparwidth=.08in
442 \marginparsep=.01in
443 \marginparpush=5pt
444 \topmargin=-5mm
\ltf@headheight \lts@headheight \ltf@headsep \lts@headsep \ltf@textheight \lts@textheight These dimens are used to store different values for the first page and the following

pages. All dimens starting with ltf@XXX hold values for the first page and all dimens starting with lts@XXX hold values for the second and follwing pages. We have to do here such a funny coding because L^{A}TEX’s \thispagestyle-mechanism is not flexible enough. (This code may not complete yet!)

We use this to move the start of the first page of a letter 12 mm up.

445 \newdimen\ltf@headheight
446 \newdimen\lts@headheight
447 \newdimen\ltf@headsep
448 \newdimen\lts@headsep
449 \newdimen\ltf@textheight
450 \newdimen\lts@textheight
451 \ltf@headheight=4.2truemm %
452 \lts@headheight=0truemm %
453 \ltf@headsep=8.8truemm %
454 \lts@headsep=0truemm %

\footheight L^{A}TEX 2ε has no dimen register \footheight, because there is no such register in other L^{A}TEX-versions.

455 \ifka@db@ltxtwoe
456  \relax
457 \else
458  \footheight=4.2truemm
459 \fi
460 \footskip=8.8truemm
461 \textheight=254truemm
462 \textwidth=165truemm

463 \columnsep=10pt
464 \columnseprule=0pt
465 \raggedbottom

\footnotesep \footnotesep is the height of the strut placed at the beginning of every footnote. It equals the height of a normal \footnotesize strut in this class; thus no extra space occurs between footnotes.

The class/style ‘dinbrief’ uses only one value for \footnotesep in all pt-sizes.

466 \footnotesep=4.2truemm

\footins \skip\footins is the space between the last line of the main text and the top of

the first footnote.

The class/style ‘dinbrief’ uses only one value for \footins in all pt-sizes.

467 \skip\footins 10pt plus 2pt minus 4pt
468 \floatsep=12pt plus 2pt minus 2pt
469 \textfloatsep=20pt plus 2pt minus 4pt
470 \intextsep=12pt plus 2pt minus 2pt
471 \dblfloatsep=12pt plus 2pt minus 2pt
472 \dbltextfloatsep=20pt plus 2pt minus 4pt
473 \ifka@db@ltxtwoe
474  \relax
475 \else
476  \@maxsep=20pt
477  \@dblmaxsep=20pt
478 \fi
479 \@fptop=0pt plus 1fil
480 \@fpsep=8pt plus 2fil
481 \@fpbot=0pt plus 1fil
482 \@dblfptop=0pt plus 1fil
483 \@dblfpsep=8pt plus 2fil
484 \@dblfpbot=0pt plus 1fil

4.20.1 User definable layout positions

This section defines some layout relevant lengths, all preset according to DIN 676. Some of them can be redefined by the user, others are bound to the class definition.

\ka@db@txtlmarg The length \ka@db@txtlmarg describes the left margin of the letter text and is used for correct horizontal positioning.

485 \newdimen\ka@db@txtlmarg
486 \ka@db@txtlmarg=24truemm
\addrhpos \addrvpos \addrwd \addrht \addroffset \ka@db@addrhoffs These length describe the position and size of the address field. \addrhpos and

\addrvpos specify the lower left corner of this field, \addrwd and \addrht describe the width and the height of the field. The length \addroffset is an offset of the address text to the left margin of the address field, since in most cases it is preferred to start it a small amount off that margin. The default value is 4mm.

\ka@db@addrhoffs specifies the offset of the address field against the beginning of the text lines (defined as 24mm off the left paper bound).

487 \newdimen\addrhpos
488 \newdimen\addrvpos
489 \newdimen\addrwd
490 \newdimen\addrht
491 \newdimen\addroffset
492 \newdimen\ka@db@addrhoffs
493 \addrhpos=20truemm
494 \addrvpos=90truemm
495 \addrwd=85truemm
496 \addrht=40truemm
497 \addroffset=4truemm
498 \ka@db@addrhoffs=-4truemm
\setaddressllcorner \setaddressllhpos \setaddressllvpos \setaddresswidth \setaddressheight \setaddressoffset \addresshigh \addressstd Four macros assign values to the lengths just defined: \setaddressllcorner sets
both \addrhpos and \addrvpos, \setaddresswidth and \setaddressheight set

the height \addrht and the width \addrwd of the address window (without the backaddress field, \setaddressoffset defines an offset for the address text against the left margin of the address window. The two remaining macros \addresshigh

and \addressstd preset then length \addrvpos, \reflinevpos, \ufldmarkvpos

and \lfldmarkvpos as required by the two variants of the DIN norm, the high and the lower address fields, respectively.

499 \def\setaddressllcorner#1#2{\global\addrhpos=#1\global\addrvpos=#2\relax}
500 \def\setaddressllhpos#1{\global\addrhpos=#1\relax}
501 \def\setaddressllvpos#1{\global\addrvpos=#1\relax}
502 \def\setaddresswidth#1{\global\addrwd=#1\relax}
503 \def\setaddressheight#1{\global\addrht=#1\relax}
504 \def\setaddressoffset#1{\global\addroffset=#1\relax}
505 \def\addresshigh{\addrvpos    =72truemm%
506  \reflinevpos =80.5truemm%
507  \ufldmarkvpos=87truemm%
508  \lfldmarkvpos=192truemm}
509 \def\addressstd{\addrvpos    =90truemm%
510  \reflinevpos =98.5truemm%
511  \ufldmarkvpos=105truemm%
512  \lfldmarkvpos=210truemm}

\backaddrht \reflinevpos \backaddrht gives the height of the field for the backaddress placed directly above the address fields described above. \reflinevpos specifies the distance distance from top of the paper to the upper bound of the reference line (Bezugszeichenzeile).

513 \newdimen\backaddrht
514 \newdimen\reflinevpos
515 \backaddrht=5truemm
516 \reflinevpos=98.5truemm
\setbackaddressheight \setreflinetop These two macros are used to redefine the length \backaddrht and \reflinevpos.
517 \def\setbackaddressheight#1{\global\backaddrht=#1\relax}
518 \def\setreflinetop#1{\global\reflinevpos=#1\relax}

\ufldmarkvpos \lfldmarkvpos \perfmarkvpos \ka@db@foldmarkhoffs \ka@db@perfmarkhoffs \ka@db@foldmarklen \ka@db@perfmarklen The first three length describe the height of the tic marks: \ufldmarkvpos and

\lfldmarkvpos the upper and lower fold marks, and \perfmarkvpos the mark for perforation. \ka@db@foldmarkhoffs specifies the offset of the fold marks against the beginning of the text lines (defined as 24mm off the left paper bound), \ka@db@perfmarkhoffs definies the corresponding offset for the perforation mark.

519 \newdimen\ufldmarkvpos
520 \newdimen\lfldmarkvpos
521 \newdimen\perfmarkvpos
522 \newdimen\ka@db@foldmarkhoffs
523 \newdimen\ka@db@perfmarkhoffs
524 \newdimen\ka@db@foldmarklen
525 \newdimen\ka@db@perfmarklen
526 \ufldmarkvpos=105truemm
527 \lfldmarkvpos=210truemm
528 \ifka@db@ltxtwoe
529 \perfmarkvpos=.5\paperheight
530 \else
531 \perfmarkvpos=148.5truemm
532 \fi
533 \ka@db@foldmarkhoffs=-24truemm
534 \ka@db@perfmarkhoffs=-18truemm
535 \ka@db@foldmarklen=7truemm
536 \ka@db@perfmarklen=6truemm

\setupperfoldmarkvpos \setlowerfoldmarkvpos Two macros are provided to set the distance of the upper and lower fold marks from the top of the paper sheet.

537 \def\setupperfoldmarkvpos#1{\global\ufldmarkvpos=#1\relax}
538 \def\setlowerfoldmarkvpos#1{\global\lfldmarkvpos=#1\relax}

\bottomtextvpos The height of the lower bound of the bottom text is given by the length

\bottomtextvpos.
539 \newdimen\bottomtextvpos
540 \bottomtextvpos=281truemm
\setbottomtexttop
541 \def\setbottomtexttop#1{\global\bottomtextvpos=#1\relax}

\ka@db@headup This length specifies the shift of the letter head, normally showing information about the sender of the letter. It is preset with a negative value shifting the letter head up as much as possible leaving a small distance to the upper paper bound. The definition of the letter head can shift the head downwards (upwards is not recommended).

542 \newdimen\ka@db@headup
543 \ka@db@headup=-19.4truemm

\ka@db@vfuzz This length is introduced to correct absolute position values as specified by the length describing the letter layout onto the internal TeX positions used within this class. The value is choosen as difference of positions as specified by the DIN Norm and the values used in earlier versions of this class.

544 \newdimen\ka@db@vfuzz
545 \ka@db@vfuzz=23.9truemm

\ka@db@stdskip This length specifies a standard skip value used for example between the address and backadress field and the window rules. It is used at some other places, too.

546 \newdimen\ka@db@stdskip
547 \ka@db@stdskip=2.5truemm
\ka@db@fieldwd \ka@db@fldskip \ka@db@shfldwd  \ka@db@fieldwd defines the (used) width of the fields. The length \ka@db@fldskip

gives the skip (space) between consecutive fileds. In case of the old reference line the phone number field has a different width, specified by the length

\ka@db@shfldwd.
548 \newdimen\ka@db@fieldwd
549 \newdimen\ka@db@fldskip
550 \newdimen\ka@db@shfldwd
551 \ka@db@fieldwd=50.8truemm
552 \ka@db@fldskip=0truemm
553 \ka@db@shfldwd=25.4truemm

4.20.2 Rules above and below the receiver’s window

\ifka@db@windowrules \windowrules \nowindowrules The window rules above and below the receivers address can be switched on or off. The boolean variable \ifka@db@windowrules is true if the rules have to be typeset. The user commands \windowrules and \nowindowrules toggle the boolean variable.

554 \newif\ifka@db@windowrules
555 \def\windowrules{\global\ka@db@windowrulestrue}
556 \def\nowindowrules{\global\ka@db@windowrulesfalse}
557 \windowrules

4.20.3 Lines for splitting letters

\ifka@db@windowtics \windowtics \nowindowtics Save as above except the tics on the left side are typeset or not.

558 \newif\ifka@db@windowtics
559 \def\windowtics{\global\ka@db@windowticstrue}
560 \def\nowindowtics{\global\ka@db@windowticsfalse}
561 \windowtics

4.20.4 \backaddress API function

\backaddress
\@backaddress
562 \def\backaddress#1{\gdef\@backaddress{#1}}
563 \backaddress{}

\ifka@db@baddrrule \backaddressrule \nobackaddressrule The rules below the backaddress can be switched on or off by setting the boolean variable \ifka@db@baddrrule which is true if the rule is to be typeset. The

user commands \backaddressrule (default) and \nobackaddressrule toggle the

boolean variable.

564 \newif\ifka@db@baddrrule
565 \def\backaddressrule{\global\ka@db@baddrruletrue}
566 \def\nobackaddressrule{\global\ka@db@baddrrulefalse}
567 \backaddressrule

4.20.5 Macros for splitting the receiver’s address

\@splitoncr \@splitoncrlist The macro \@splitoncr splits the first argument on each \\. The second argument is a macro with exactly one argument. For each part the macro (in the second) argument is called. \@splitoncrlist is called inside \@splitoncr and does the real work.

568 \long\def\@splitoncr#1#2{%
569 \begingroup
570  % \tracingmacros=1
571  \let\\=a% because characters are not expanded
572  \long\def\@rgjob##1{#2{##1}}%
573  % \expandafter\@splitoncrlist#1\\\stop \\
574  \@splitoncrlist#1\\\stop \\
575 \endgroup}

There is a bug in the macro \@splitoncrlist. If the argument starts with to two equal letters, the comparision evaluates to true and the macro \stop is executed. This stops all activities and ends L^{A}TEX. So we change the order of the arguments of the \ifx oder \ifx command. We check \stop against the arguments of the macro. This will work.

576 \long\def\@splitoncrlist#1\\{%
577 \ifx\stop#1\relax
578  \let\next=\relax
579 %     \message{Stop encountered}%
580 \else
581  \@rgjob{#1}%
582 %    % \typeout{The sequence: #1}%
583  \let\next=\@splitoncrlist
584 \fi
585 \next

586 }

\@ignorebrackets The first argument in brackets is ignored. The third argument is the name of a control sequece. This cs will be defined globally with the contents of the second argument.

587 \long\def\@ignorebrackets[#1]#2\stop#3{%
588 \gdef#3{#2}\relax

589 }

\@withmarkcr
590 \long\def\@withmarkcr!#1\stop{%
591 \xdef\@addresslist{%
592  \@addresslist\ifx\@addresslist\empty\else\leavevmode\\\fi{#1}}%
593 \@ifnextchar[%]
594  {\@ignorebrackets}{\@ignorebrackets[]}#1\stop{\@addressname}

595 }

\@withoutmarkcr
596 \long\def\@withoutmarkcr#1\stop{%
597 \xdef\@addresslist{%
598  \@addresslist\ifx\@addresslist\empty\else\leavevmode\\\fi{#1}}
599 \ifx\@addressname\relax
600  \@ifnextchar[%]
601  {\@ignorebrackets}{\@ignorebrackets[]}#1\stop{\@addressname}
602 \fi

603 }

\@withmark
604 \long\def\@withmark!#1\stop{%
605 \xdef\@addresslist{\@addresslist {#1}}
606 \@ifnextchar[%]
607  {\@ignorebrackets}{\@ignorebrackets[]}#1\stop{\@addressname}%

608 }

\@withoutmark This macro is not allowed to insert a \\ into the \@addresslist.

609 \long\def\@withoutmark#1\stop{%
610 \xdef\@addresslist{\@addresslist {#1}}
611 \ifx\@addressname\relax
612  \@ifnextchar[%]
613  {\@ignorebrackets}{\@ignorebrackets[]}#1\stop{\@addressname}
614 \fi

615 }

\@withlbracket Adds to the \@addresslist in brackets the contents of the brackts following the \\. Looks for a !.

616 \long\def\@withlbracket[#1]#2\stop{%
617 \xdef\@addresslist{\@addresslist\ifx\@addresslist\empty\else\leavevmode\\\fi[#1]}
618 \@ifnextchar!{\@withmark}{\@withoutmark}#2\stop

619 }

\@withoutlbracket Checks if ! is immediately following the \\. If so \@withmarkcr is called otherwise

 \@withoutmarkcr is called.
620 \long\def\@withoutlbracket#1\stop{%
621 \@ifnextchar!{\@withmarkcr}{\@withoutmarkcr}#1\stop

622 }

\@checkformark Checks of the existence of a left bracket. Depending on the presence of such a left bracket the control sequence \@withlbracket or \@withoutlbracket is executed.

623 \long\def\@checkformark#1{%
624 \@ifnextchar[{\@withlbracket}{\@withoutlbracket}#1\stop

625 }

\@splitaddress This macro splits the receivers address and extracts the contents of a line marked with a starting !. Lines in this context are all stuff between two \\ or the stuff between the beginning or the ending of the argument and one \\. If no ! is given, the first line in the argument is taken (as in the former versions). If more than one ! is given (in different lines) the last line containing a ! is taken. Valid forms

 are \\!, \\ !, \\![\medskipamount] and \\[\medskipamount]!. All four forms

produce the expected output!

626 \long\def\@splitaddress#1{%
627 \def\@addressbase{#1}
628 \let\@addressname=\relax
629 \def\@addresslist{}
630 \expandafter\@splitoncr\expandafter{\@addressbase}{\@checkformark}%
631 \gdef\toname{\@addressname}
632 % \typeout{Addresslist: \@addresslist}%
633 % \typeout{Addressname: \@addressname}%
634 % \typeout{\string\toname: \toname}%

635 }

4.20.6 The \opening-Procedure

The following macros typeset most static text areas of the letter.

\ka@db@indadr
636 \newdimen\ka@db@indadr
637 \ka@db@indadr=0pt
\ka@db@tsfromaddress
638 \def\ka@db@tsfromaddress{%
639 \ifx\@empty\@fromaddress
640  \vbox to 0pt{\vss}\nointerlineskip
641 \else
642  \vbox to 0pt{\vskip \ka@db@headup\raggedright\@fromaddress\vss}%
643  \nointerlineskip
644 \fi

645 }

\ka@db@tswindowtics
646 \def\ka@db@tswindowtics{%
647 \ifka@db@windowtics
648  \ka@db@tmpdimb=\ufldmarkvpos
649  \advance\ka@db@tmpdimb by -\ka@db@vfuzz
650  \vbox to 0pt{%

651  \rule{0pt}{\ka@db@tmpdimb}%
652  \hbox to 0pt{\hspace*{\ka@db@foldmarkhoffs}%
653  \vbox{\hrule width \ka@db@foldmarklen}\hss}%
654  \vss}\nointerlineskip
655  \ka@db@tmpdimb=\perfmarkvpos
656  \advance\ka@db@tmpdimb by -\ka@db@vfuzz
657  \vbox to 0pt{%
658  \rule{0pt}{\ka@db@tmpdimb}%
659  \hbox to 0pt{\hspace*{\ka@db@perfmarkhoffs}%
660  \vbox{\hrule width \ka@db@perfmarklen}\hss}%
661  \vss}\nointerlineskip
662  \ka@db@tmpdimb=\lfldmarkvpos
663  \advance\ka@db@tmpdimb by -\ka@db@vfuzz
664  \vbox to 0pt{%
665  \rule{0pt}{\ka@db@tmpdimb}%
666  \hbox to 0pt{\hspace*{\ka@db@foldmarkhoffs}%
667  \vbox{\hrule width \ka@db@foldmarklen}\hss}%
668  \vss}\nointerlineskip
669 \else
670  \ka@db@tmpdimb=\ufldmarkvpos
671  \advance\ka@db@tmpdimb by -\ka@db@vfuzz
672  \vbox to 0pt{\rule{0pt}{\ka@db@tmpdimb}%
673  \hbox to 0pt{\vbox{\hrule width 0pt}\hss}%
674  \vss}\nointerlineskip
675  \ka@db@tmpdimb=\perfmarkvpos
676  \advance\ka@db@tmpdimb by -\ka@db@vfuzz
677  \vbox to 0pt{\rule{0pt}{\ka@db@tmpdimb}%
678  \hbox to 0pt{\vbox{\hrule width 0pt}\hss}%
679  \vss}\nointerlineskip
680  \ka@db@tmpdimb=\lfldmarkvpos
681  \advance\ka@db@tmpdimb by -\ka@db@vfuzz
682  \vbox to 0pt{\rule{0pt}{\ka@db@tmpdimb}%
683  \hbox to 0pt{\vbox{\hrule width 0pt}\hss}%
684  \vss}\nointerlineskip
685 \fi

686 }

\ka@db@tsbottomtext
687 \def\ka@db@tsbottomtext{%
688 %  \ifdim\ht\@@bottomtext>0pt
689 \ifx\empty\ka@db@bottomtext
690  \relax
691 \else
692  \ka@db@tmpdimb=\bottomtextvpos
693  \advance\ka@db@tmpdimb by -\ka@db@vfuzz
694  \vbox to 0pt{%
695  \rule{0pt}{\ka@db@tmpdimb}%

696 %      \unhcopy\@@bottomtext
697  \hbox to 0pt{\hskip0pt minus 4truemm%
698  \vbox to 0pt {\raggedright \ka@db@bottomtext
699  \vss}%
700  \hss}
701  \vss
702  }\nointerlineskip%
703 \fi

704 }

\ka@db@bafntsel The macro \ka@db@bafntsel selects the font size and other parameters for the backaddress in the window.

705 \def\ka@db@bafntsel{%
706 \ka@db@fontsize{8}{9pt}%
707 \ka@db@selectfont

708 }

\ka@db@tstoaddress
709 \def\ka@db@tstoaddress{%
710 %  \ka@db@tmpdima=\addrhpos
711 %  \advance\ka@db@tmpdima by -\ka@db@txtlmarg
712 \vbox to 0pt{\vss%
713  \ifka@db@windowrules
714 %      \hbox to 0pt{\hspace*{\ka@db@tmpdima}\vbox{\hrule width \addrwd}\hss}%
715  \hbox to 0pt{\vbox{\hrule width \addrwd}\hss}%
716  \else
717  \hbox to 0pt{\hss}%
718  \fi
719  \vss

720 }%

721 \nointerlineskip
722 \ka@db@tmpdimb=\backaddrht
723 \advance\ka@db@tmpdimb by \ka@db@stdskip
724 \ifx\@empty\@backaddress
725  \vbox to \ka@db@tmpdimb{%
726  \vfill

727 }%

728  \nointerlineskip
729 \else
730  \vbox to \ka@db@tmpdimb{%
731  \vskip \ka@db@stdskip
732  \vss
733 %      \hbox to 0pt{\hspace*{\ka@db@tmpdima}%
734  \hbox to 0pt{%
735  \vbox{%
736  \hbox to \addrwd{\hfil
737  {\ka@db@bafntsel\@backaddress}\hfil}%
738  \ifka@db@baddrrule
739  \hrule width \addrwd%

740  \else
741  \hrule width 0pt%
742  \fi%
743  }\hss%

744 }% 745 }%

746  \nointerlineskip
747 \fi
748 \moveright\addroffset%
749 \vbox to \addrht{%
750  \vss
751  \hbox to 0pt{\hskip0pt minus 4truemm%
752  \setbox\@tempboxa=\vbox{%
753  \if@letterform
754  \relax
755  \else
756  % \typeout{Start dumping \string\@addresslist}%
757  \leavevmode
758  \ka@db@ifemptyvarlocal{postremark}{}{%
759  \ka@db@usevarlocal{postremark}\\[\medskipamount]

760 }%

761  \raggedright \@addresslist
762  % \typeout{End dumping \string\@addresslist}%
763  \fi

764 }%

765  \ifdim\ht\@tempboxa>\the\addrht
766  %\@warning{Receivers address is larger than letter window}%
767  \ClassWarning{dinbrief}{%
768  Receivers address is larger than letter window}%
769  \else
770  \setbox\@tempboxa=\vbox{%
771  \hbox{%
772  \ifdim\ka@db@indadr>0pt
773  \else
774  \hbox to 0pt{\hskip4in\ka@db@usevarlocal{handling}\hss}%
775  \fi
776  \box\@tempboxa

777 }%

778  \if@toadrcenter\relax
779  \else\vskip \the\ka@db@stdskip minus \the\ka@db@stdskip
780  \fi

781 }%

782  \fi
783  \box\@tempboxa
784  \hss

785 }%

786  \if@toadrcenter
787  \vss
788  \fi

789 }\nointerlineskip
790 \vskip \ka@db@stdskip
791 \vbox to 0pt{\vss%
792  \ifka@db@windowrules
793 %      \hbox to 0pt{\hspace*{\ka@db@tmpdima}\vbox{\hrule width \addrwd}\hss}%
794  \hbox to 0pt{\vbox{\hrule width \addrwd}\hss}%
795  \else
796  \hbox to 0pt{\hss}%
797  \fi
798  \vss
799 }\nointerlineskip

800 % 801 }

\ka@db@tsrefline
802 \def\ka@db@tsrefline{%
803 \if@norefline\else
804 %   \vbox{\vskip 6truemm
805  \vbox{%
806  \if@refline
807  \@answerto
808  \else
809  \if@letterform\relax\else
810  \ifx\@empty\@place
811  \raggedleft \@date
812  \else
813  \raggedleft \@place,\space\@date
814  \fi
815  \fi
816  \fi

817 }%

818 %   }%
819  \nointerlineskip
820  \par
821  \bigskip
822 \fi %\if@norefline

823 }

\ka@db@tsconcern
824 \def\ka@db@tsconcern{%
825 \ifx\@empty\@concern \else
826  \if@letterform\relax\else
827  \@concern \par
828  \bigskip
829  \fi
830 \fi
831 \vspace{0pt plus 10truemm}%

832 }

\ka@db@tsopening
833 \def\ka@db@tsopening#1{%
834 \if@letterform\relax\else
835 #1\par
836 \fi

837 }

The following macros just link type above one to the calls. This makes it more easy to modify parts in one letter or to modify the layout.

\ka@db@placefromaddress
\ka@db@placewindowtics
\ka@db@placebottomtext
\ka@db@placetoaddress
\ka@db@placerefline
\ka@db@placeconcern
\ka@db@placeopening

838 \def\ka@db@placefromaddress{%
839 \vbox to 0pt{\ka@db@tsfromaddress\vss}\nointerlineskip

840 }%

841 \def\ka@db@placewindowtics{%
842 \vbox to 0pt{\ka@db@tswindowtics\vss}\nointerlineskip

843 }%

844 \def\ka@db@placebottomtext{%
845 \vbox to 0pt{\ka@db@tsbottomtext\vss}\nointerlineskip

846 }%

847 \def\ka@db@placetoaddress{%
848 \ka@db@tmpdima=\addrvpos
849 \advance\ka@db@tmpdima by -\ka@db@vfuzz
850 \advance\ka@db@tmpdima by -\addrht
851 \advance\ka@db@tmpdima by -\backaddrht
852 \advance\ka@db@tmpdima by -\ka@db@stdskip
853 \vskip \ka@db@tmpdima
854 \ka@db@tmpdima=\addrht
855 \advance\ka@db@tmpdima by \backaddrht
856 \advance\ka@db@tmpdima by 2\ka@db@stdskip
857 \ka@db@tmpdimb=\addrhpos
858 \advance\ka@db@tmpdimb by -\ka@db@txtlmarg
859 \moveright\ka@db@tmpdimb\vbox to \ka@db@tmpdima{\ka@db@tstoaddress\vss}%
860 \nointerlineskip
861 \ka@db@tmpdima=\reflinevpos
862 \advance\ka@db@tmpdima by -\addrvpos
863 \advance\ka@db@tmpdima by -\ka@db@stdskip
864 \vskip \ka@db@tmpdima

865 }%

866 \def\ka@db@placerefline{%
867 \vbox{\ka@db@tsrefline}\nointerlineskip

868 }%

869 \def\ka@db@placeconcern{
870 \vbox{\ka@db@tsconcern}\nointerlineskip

871 }%

872 \def\ka@db@placeopening#1{%
873 \ka@db@tsopening{#1}%
874 \nobreak

875 }%

\opening This macro draws the letter from the top until the subject (concern). And if

available also the bottomtext.

First we switch to a special pagestyle.

876 \def\opening#1{%
877 \setcounter{lt@state}{2}
878 \thispagestyle{first@page}

Actually enlarge the first page by the negative height of the footer:

879 \ifka@db@ltxtwoe
880  \ifx\empty\ka@db@bottomtext
881  \relax
882  \else
883  \ka@db@tmpdima=\textheight
884  \advance\ka@db@tmpdima by \topmargin
885  \advance\ka@db@tmpdima by \ka@db@vfuzz
886  \ifdim\footskip>0pt
887  \advance\ka@db@tmpdima by \footskip
888  \else
889 \advance\ka@db@tmpdima by 8.8truemm
890  \fi
891  \advance\ka@db@tmpdima by -\bottomtextvpos
892  \ifdim\ka@db@tmpdima>0pt
893  \enlargethispage{-\ka@db@tmpdima}
894  \fi
895  \fi
896 \fi

Then we start printing the parts of the letter. The following macros expect special positions on the paper to print their contents on the correct position.

\ka@db@placefromaddress, \ka@db@placewindowtics and

\ka@db@placebottomtext start from the left top corner of the paper. (Maybe not correct: top: 1in + \headheight + \headsep + \topskip(?) left: ???) \ka@db@placetoaddres starts at the position, mentioned in the DIN 676. It has to typeset to box containing the address of the receiver plus the necessary space (normaly two lines). The other three macros \ka@db@placerefline,

\ka@db@placeconcern and \ka@db@placeopening typeset their contents and the

necessary space. All these macros should typeset boxes. There should be no \interlineskip between each of those boxes.

897 \ka@db@placefromaddress
898 \ka@db@placewindowtics
899 \ka@db@placebottomtext
900 \ka@db@placetoaddress
901 \ka@db@placerefline
902 \ka@db@placeconcern
903 \ka@db@placeopening{#1}%

904 }

\oldopening
905 \def\oldopening#1{\thispagestyle{first@page}

Actually enlarge the first page by the negative height of the footer:

906 \ifka@db@ltxtwoe
907  \expandafter\ifx\csname @@bottomtext\endcsname\relax
908  \newbox\@@bottomtext
909  \fi
910  \ifx\empty\ka@db@bottomtext
911  \setbox\@@bottomtext=\vbox to 0pt{}
912  \else
913 \setbox\@@bottomtext=\hbox to 0pt{\hskip0pt minus 4truemm%
914  \vbox{\raggedright \ka@db@bottomtext}%
915  \hss}
916  \fi
917  \enlargethispage{-\ht\@@bottomtext}
918 \fi
919 \ifx\@empty\@fromaddress
920  \vbox to 0pt{\vss}\nointerlineskip
921 \else
922  \vbox to 0pt{\vskip -19.4truemm\raggedright\@fromaddress\vss}%
923 \fi
924 \vskip 13.1truemm

925 %

926 \ifx\@empty\@@windowtics
927  \vbox to 0pt{\rule{0pt}{62.5truemm}%
928  \hbox to 0pt{\vbox{\hrule width 0pt}\hss}%
929  \vss}\nointerlineskip
930  \vbox to 0pt{\rule{0pt}{106.0truemm}%
931  \hbox to 0pt{\vbox{\hrule width 0pt}\hss}%
932  \vss}\nointerlineskip
933  \vbox to 0pt{\rule{0pt}{167.5truemm}%
934  \hbox to 0pt{\vbox{\hrule width 0pt}\hss}%
935  \vss}\nointerlineskip
936 \else
937  \vbox to 0pt{%
938  \rule{0pt}{62.5truemm}%
939  \hbox to 0pt{\hspace*{-24truemm}\vbox{\hrule width 7truemm}\hss}%
940  \vss}\nointerlineskip
941  \vbox to 0pt{%
942  \rule{0pt}{106.0truemm}%
943  \hbox to 0pt{\hspace*{-18truemm}\vbox{\hrule width 6truemm}\hss}%
944  \vss}\nointerlineskip
945  \vbox to 0pt{%
946  \rule{0pt}{167.5truemm}%
947  \hbox to 0pt{\hspace*{-24truemm}\vbox{\hrule width 7truemm}\hss}%
948  \vss}\nointerlineskip
949 \fi
950 \ifdim\ht\@@bottomtext>0pt
951  \vbox to 0pt{%
952  \rule{0pt}{243.5truemm}%

953  \unhcopy\@@bottomtext
954  \vss}\nointerlineskip%
955 \fi
956 \vbox to 0pt{\vss%
957 \ifx\@empty\@@windowrules
958  \hbox to 0pt{\hss}%
959 \else
960  \hbox to 0pt{\hspace*{-4truemm}\vbox{\hrule width 85truemm}\hss}%
961 \fi
962 \vss}\nointerlineskip

963 %

964 \ifx\@empty\@backaddress
965  \vbox to 7.5truemm{
966  \vfill
967  }\nointerlineskip
968 \else
969  \vbox to 7.5truemm{
970  \vskip 2.5truemm
971  \vss
972  \hbox to 0pt{\hspace*{-4truemm}\vbox{%
973  \hbox to 85truemm{\hfill
974  {\ka@db@fontsize{8}{9pt}
975  \ka@db@selectfont \@backaddress}\hfill}%
976  \hrule width 85truemm}\hss}%
977  \vss}\nointerlineskip
978 \fi

979 %

980 \vbox to 40truemm{%
981 \vss
982 \hbox to 0pt{\hskip0pt minus 4truemm%
983 \vbox{%
984  \if@letterform
985  \relax
986  \else
987  % \typeout{Start dumping \string\@addresslist}%
988  \raggedright \@addresslist %\toname \\ \toaddress%
989  % \typeout{End dumping \string\@addresslist}%
990  \if@toadrcenter\relax
991  \else\vskip 2.5truemm minus 2.5truemm
992  \fi
993  \fi

994 }%

995 \hss}
996 \if@toadrcenter
997  \vss
998 \fi
999 }\nointerlineskip
1000 \vskip 2.5truemm

1001 %

1002 \vbox to 0pt{\vss%
1003 \ifx\@empty\@@windowrules
1004  \hbox to 0pt{\hss}%
1005 \else
1006  \hbox to 0pt{\hspace*{-4truemm}\vbox{\hrule width 85truemm}\hss}%

1007 \fi

1008 \vss}\nointerlineskip

1009 %

1010 \if@norefline\else
1011  \vbox{\vskip 6truemm
1012  \vbox{%
1013  \if@refline
1014  \@answerto
1015  \else
1016  \if@letterform\relax\else
1017  \ifx\@empty\@place
1018  \raggedleft \@date
1019  \else
1020  \raggedleft \@place,\space\@date

1021 \fi 1022 \fi 1023 \fi 1024 }% 1025 }%

1026  \nointerlineskip
1027  \par
1028  \bigskip
1029 \fi %\if@norefline
1030 \ifx\@empty\@concern \else
1031 \if@letterform\relax\else
1032  \@concern \par
1033  \bigskip

1034 \fi 1035 \fi

1036 \ifx\@empty\@footer \else

1037 \fi

1038 \vspace{0pt plus 10truemm}
1039 \if@letterform\relax\else
1040 #1\par

1041 \fi

1042 \nobreak}
\closing
\ka@db@closinghook
1043 \long\def\closing{%
1044 \@ifnextchar[%]
1045  {\ka@db@closing}{\ka@db@closing[]}%

1046 }

1047 \long\def\ka@db@closing[#1]#2{%
1048 \setcounter{lt@state}{3}

1049 \setbox\@tempboxa=\hbox{#1}
1050 \ka@db@tmpdimb=\ht\@tempboxa
1051 \advance\ka@db@tmpdimb by \dp\@tempboxa
1052 \par\nobreak
1053 \vspace{\parskip}
1054 \stopbreaks

1055 {%

1056  \leavevmode
1057  \ifka@db@enclright
1058  \bgroup
1059 %        \@tempdima=\textwidth
1060  \ka@db@tmpdima=4in
1061 %        \advance\@tempdima by -\ka@db@tmpdima
1062 %        \hbox to 0pt{%
1063 %          \hskip\@tempdimb\relax
1064 %          \parbox[t]{\@tempdima}{%\parskip .7em
1065 %                                 \ka@db@tsenclcc}%
1066 %          \hss

1067 % }%

1068  \parbox[t]{\ka@db@tmpdima}{%\parskip .7em%
1069  \raggedright
1070  \ifdim\ka@db@tmpdimb>0pt
1071  \ignorespaces #2\\[1\baselineskip]
1072  \else
1073  \ignorespaces #2\\[3\baselineskip]

1074 \fi

1075  \leavevmode
1076 %          \vbox to 0pt{%
1077 %            \vskip -4\baselineskip\relax
1078 %            \hbox to 0pt{\strut#1\hss}%
1079 %          \vss}%
1080 %          \ifx\@empty\@fromsig
1081 %          \else \@fromsig
1082 %          \fi\strut
1083  \ifdim\ka@db@tmpdimb>0pt
1084  \rule{0pt}{2\baselineskip}\box\@tempboxa \newline
1085  \ka@db@ifemptyvar{signature}{}{%
1086  \ka@db@usevar{signature}%

1087 }%

1088  \else
1089  \ka@db@ifemptyvar{signature}{}{%
1090  \ka@db@usevar{signature}%

1091 }% 1092 \fi

1093  \strut

1094 }%

1095  \@tempdima=\textwidth
1096  \advance\@tempdima by -\ka@db@tmpdima
1097  \parbox[t]{\@tempdima}{%\parskip .7em%
1098  \raggedright

1099  \ka@db@tsenclcc
1100  \unskip % <- removing unneccessary skip from
1101  %    \cmd\ka@db@tsenclcc

1102 }%

1103  \egroup
1104  \else
1105  \raggedright
1106  \ifdim\ka@db@tmpdimb>0pt
1107  \ignorespaces #2\\[1\baselineskip]
1108  \else
1109  \ignorespaces #2\\[3\baselineskip]

1110 \fi

1111  \leavevmode%
1112 %      \vbox to 0pt{%
1113 %        \vskip -4\baselineskip\relax
1114 %        \hbox to 0pt{\strut#1\hss}%
1115 %      \vss}%
1116 %      \ifx\@empty\@fromsig
1117 %      \else \@fromsig
1118 %      \fi\strut
1119  \ifdim\ka@db@tmpdimb>0pt
1120  \rule{0pt}{2\baselineskip}\box\@tempboxa \\
1121  \ka@db@ifemptyvar{signature}{}{%
1122  \ka@db@usevar{signature}%

1123 }%

1124  \else
1125  \ka@db@ifemptyvar{signature}{}{%
1126  \ka@db@usevar{signature}%

1127 }% 1128 \fi

1129  \strut

1130 \fi 1131 }%

1132 \par\medskip
1133 \ifka@db@enclright
1134 \else
1135  \raggedright
1136  \ka@db@tsenclcc

1137 \fi

1138 \ka@db@closinghook

1139 }

1140 \def\ka@db@closinghook{}
\ka@db@tsenclcc
1141 \def\ka@db@tsenclcc{%
1142 \ka@db@ifemptyvarlocal{encl}%
1143  {}{\ka@db@usevarlocal{encl}\\[\baselineskip]}%
1144 \ka@db@ifemptyvarlocal{cc}%
1145  {}{\ka@db@usevarlocal{cc}\\[\baselineskip]}%

1146 }

4.21 Initialization

4.21.1 Words

\ccname \enclname \psname This document style/class is prepared for documents in German. To prepare a

version for another language, various German words must be replaced.

All German words that require replacement are defined below in command names. (Not all!)

1147 \def\ccname{Verteiler}
1148 \def\enclname{Anlage(n)}
1149 \def\psname{PS}
\headtoname \pagename These two words are used in the pagestyles headings and contheadings.
1150 \def\headtoname{An}
1151 \def\pagename{Seite}

4.22 More letter macros

\handling
1152 \def\handling#1{%
1153 \ka@db@assignvarlocal{handling}{#1}%

1154 }

1155 \ka@db@execatletter{\ka@db@assignvarlocal{handling}{}}%
\postremark
1156 \def\postremark#1{%
1157 \ka@db@assignvarlocal{postremark}{#1}%

1158 }

1159 \ka@db@execatletter{\ka@db@assignvarlocal{postremark}{}}%

\ka@db@genencl The macro \ka@db@genencl can be called at every position inside the letterenvironment. If it is called between \closing and \end{letter} it directly typesets its arguments. If it is called before \closing is given it stores its arguments in the variable. \closing will typeset all the stuff.

1160 \def\ka@db@genencl#1[#2]#3{%
1161 \ifnum\c@lt@state=3\relax
1162  \par
1163  \noindent{%
1164  \bgroup
1165  \def\tmpa{#2}%
1166  \expandafter\egroup
1167  \ifx\tmpa\@empty\else
1168  #2\hfil\break

1169 \fi

1170  \ignorespaces #3\strut}%
1171  \par
1172 \else
1173  \bgroup

1174  \def\tmpa{#2}%
1175  \expandafter\egroup
1176  \ifx\tmpa\@empty
1177  \ka@db@assignvarlocal{#1}{#3}%
1178  \else
1179  \ka@db@assignvarlocal{#1}{#2\hfil\break #3}%

1180 \fi 1181 \fi 1182 }

{\cc \atop \encl} The macros \cc and \encl new use the generic enclosures macro.

1183 \def\cc{%
1184 \@ifnextchar[%]
1185  {\ka@db@genencl{cc}}{\ka@db@genencl{cc}[\ccname]}%

1186 }

1187 \ka@db@execatletter{\ka@db@assignvarlocal{cc}{}}%
1188 \def\encl{%
1189 \@ifnextchar[%]
1190  {\ka@db@genencl{encl}}{\ka@db@genencl{encl}[\enclname]}%

1191 }

1192 \ka@db@execatletter{\ka@db@assignvarlocal{encl}{}}%

\ps
1193 \def\ps#1{\par\noindent{\psname \newline
1194  \ignorespaces #1\strut}\par}

\stopletter \stopletter ist a hook to execute own commands at the end of a given letter.

1195 \def\stopletter{}

4.23 Styles for the labels

4.23.1 Labels with different sizes

\dlabelheight \dlabeltopmargin \dlabelwidth \clabelnumber The size of labels in the labelstyle plain can be modified. Therefore we define some dimen-register (count-register) holding the hight, the topmargin and the number of labels.

1196 \newdimen\dlabelheight
1197 \newdimen\dlabeltopmargin
1198 \newdimen\dlabelwidth
1199 \newcount\clabelnumber
\setlabelheight \setlabelwidth \setlabeltopmargin \setlabelnumber These four macros assigns values to the lengths and counter defined above.
1200 \def\setlabelheight#1{\global\dlabelheight=#1\relax}
1201 \def\setlabelwidth#1{\global\dlabelwidth=#1\relax}
1202 \def\setlabeltopmargin#1{\global\dlabeltopmargin=#1\relax}
1203 \def\setlabelnumber#1{\global\clabelnumber=#1\relax}

\Etihoehe \Etirand \Etizahl These three macros assigns values to the counters defined above.

1204 \def\Etihoehe#1{%
1205 %\@warning{Use \string\setlabelheight\space instead %
1206 %          of \string\Etihoehe}%
1207 \ClassWarning{dinbrief}{%
1208  Use \string\setlabelheight\space instead of \string\Etihoehe}%
1209 \setlabelheight{#1}%

1210 }

1211 \def\Etirand#1{
1212 %\@warning{Use \string\setlabeltopmargin\space instead %
1213 %          of \string\Etirand}%
1214 \ClassWarning{dinbrief}{%
1215  Use \string\setlabeltopmargin\space instead of \string\Etirand}%
1216 \setlabeltopmargin{#1}%

1217 }

1218 \def\Etizahl#1{
1219 %\@warning{Use \string\setlabelnumber\space instead %
1220 %          of \string\Etizahl}%
1221 \ClassWarning{dinbrief}{%
1222  Use \string\setlabelnumber\space instead of \string\Etizahl}%
1223 \setlabelnumber{#1}%

1224 }

4.23.2 Defining the standard dinbrief labels

The following parameters are for the a4-label-papers from Herma (copy-print, No. 4452).

1225 \setlabelheight{41.15truemm}%
1226 \setlabeltopmargin{8.85truemm}%
1227 \setlabelwidth{80truemm}%
1228 \setlabelnumber{7}%

4.24 Empty labels within labelstyle plain

\cspare
1229 \newcount\cspare
1230 \cspare=0
\spare
1231 \def\spare#1{\cspare=#1\relax}

4.24.1 different labelstyles

This version of the dinbrief supports different styles for labels. This allows the generation of papers containing several labels or printing directly on envelopes. The control sequence \labelstyle allows to change the layout.

For each layout two control sequences \label@STYLENAME and \lstyle@STYLENAME have to be defined. \label@STYLENAME is called from \mlabel for each label and has to typeset this label. \lstyle@STYLENAME is called from \startlabels and has to do the general setup (for example changing the page layout).

It is very difficult to say which counters and lengths have to redefined in this macros.

\labelstyle \labelstyle is a command to define the layout of the labels. Normally, labels are printed on special paper, but some printers are able to print on envelopes. Therefore we define some styles for printing labels on envelops:

Briefhüllenformat  Gebräuchliches

Einlagenformat

Kurz- Außenmaße Kurz-  Maße
zeichen mm ± 1,5 zeichen  mm
C6  114 × 162  A6  105 × 148
DL  110 × 220  —  105 × 210
C6/C5 114 × 229  —  105 × 210

Das Einlagenformat 105 mm × 210 mm ergibt sich durch Faltung nach DIN 676.

\@labelstyle Labelstyle holds the current value.

1232 \def\labelstyle#1{\def\@labelstyle{#1}}
1233 \labelstyle{plain}
\if@kadb@tracelabels
1234 \newif\if@kadb@tracelabels
1235 \@kadb@tracelabelsfalse
\label@plain
1236 \long\def\label@plain#1#2{\setbox0\vbox{\hsize=\dlabelwidth
1237 \strut\ignorespaces #2}%{}%
1238 \vbox to\dlabelheight{%
1239 \if@kadb@tracelabels
1240  \hrule

1241 \fi

1242 \vss
1243 \hbox to \dlabelwidth{%
1244  \hss
1245  \if@kadb@tracelabels
1246  \vrule

1247 \fi

1248  \vbox to\dlabelheight{\vss \box0 \vss}%
1249  \if@kadb@tracelabels
1250  \vrule

1251 \fi

1252  \hss

1253 }%

1254 \vss

1255 \if@kadb@tracelabels
1256  \hrule

1257 \fi 1258 }%

1259 \advance\labelcount by 1\nointerlineskip
1260 \ifnum\labelcount<\clabelnumber
1261 \else
1262 \vfill\newpage
1263 \labelcount=0
1264 \fi}
\label@C6
\label@DL
\label@C6/C5
\label@deskjet

1265 \long\def\label@deskjet#1#2{\setbox0\vbox{\parbox[b]{3.6in}{
1266  \vbox to 0pt{\vss%
1267  \ifx\@empty\@@windowrules
1268  \hbox to 0pt{\hss}%
1269  \else
1270  \hbox to 0pt{\hspace*{-4truemm}%
1271  \vbox{\hrule width 85truemm}\hss}%
1272 %        \hbox to 0pt{\hspace*{\ka@db@addrhoffs}%
1273 %                     \vbox{\hrule width \addrwd}\hss}%

1274 \fi

1275  \vss}\nointerlineskip

1276 %

1277  \vbox to 7.5truemm{
1278 %    \ka@db@tmpdimb=\backaddrht
1279 %    \advance\ka@db@tmpdimb by \ka@db@stdskip
1280 %    \vbox to \ka@db@tmpdimb{%
1281  \vskip 2.5truemm
1282 %      \vskip \ka@db@stdskip
1283  \vss
1284  \hbox to 0pt{\hspace*{-4truemm}\vbox{%
1285  \hbox to 85truemm{\hfill{\ka@db@fontsize{8}{9pt}
1286  \ka@db@selectfont #1}\hfill}
1287  \hrule width 85truemm}\hss}%
1288 %      \hbox to 0pt{\hspace*{\ka@db@addrhoffs}\vbox{%
1289 %        \hbox to \addrwd{\hfil{\ka@db@fontsize{8}{9pt}
1290 %                               \ka@db@selectfont #1}\hfil}
1291 %        \hrule width \addrwd}\hss}%
1292  \vss}\nointerlineskip

1293 %

1294  \vbox to 40truemm{%
1295 %    \vbox to \addrht{%
1296  \vss
1297  \hbox to 0pt{\hskip0pt minus 4truemm%
1298  \vbox{\raggedright #2%
1299  \if@toadrcenter
1300  \relax\else\vskip 2.5truemm minus 2.5truemm
1301 %           \relax\else\vskip \the\ka@db@stdskip minus \the\ka@db@stdskip
1302  \fi}%

1303  \hss}
1304  \if@toadrcenter
1305  \vss

1306 \fi

1307  }\nointerlineskip
1308  \vskip 2.5truemm
1309 %    \vskip \ka@db@stdskip

1310 %

1311  \vbox to 0pt{\vss%
1312  \ifx\@empty\@@windowrules
1313  \hbox to 0pt{\hss}%
1314  \else
1315  \hbox to 0pt{\hspace*{-4truemm}%
1316  \vbox{\hrule width 85truemm}\hss}%
1317 %        \hbox to 0pt{\hspace*{\ka@db@addrhoffs}%
1318 %                     \vbox{\hrule width \addrwd}\hss}%

1319 \fi

1320  \vss}\nointerlineskip

1321 }}%

1322 \vbox to 0pt{\vss}%
1323 \vskip 18.0truemm
1324 %  \vskip ???
1325 \vbox to 50.8truemm{\vss \box0 \vss}%
1326 %  \vbox to \ka@db@???{\vss \box0 \vss}%
1327 \ifnum\labelcount=4 \labelcount=0
1328  \else \advance\labelcount by 1\nointerlineskip

1329 \fi

1330 \vfill
1331 \newpage

1332 }

1333 \expandafter\let\csname label@C6\endcsname    =\label@deskjet
1334 \expandafter\let\csname label@DL\endcsname    =\label@deskjet
1335 \expandafter\let\csname label@C6/C5\endcsname =\label@deskjet

\mlabel \mlabel typesets a single label.

1336 \long\def\mlabel#1#2{\@nameuse{label@\@labelstyle}{#1}{#2}}
\lstyle@plain
1337 \def\lstyle@plain{
1338 \topmargin=-25.4truemm%
1339 \advance\topmargin\dlabeltopmargin
1340 \headsep\z@
1341 \headheight\z@
1342 \topskip\z@
1343 \oddsidemargin=-12.9truemm
1344 \evensidemargin=-12.9truemm
1345 \textheight=\clabelnumber\dlabelheight
1346 \advance\textheight by .0001truemm
1347 \@colht=\textheight \@colroom=\textheight \vsize=\textheight
1348 \columnsep=25mm

1349 \textwidth=2\dlabelwidth
1350 \advance\textwidth by\columnsep
1351 \ka@db@fontsize{12}{14.4pt}\ka@db@selectfont
1352 \boxmaxdepth\z@
1353 \parindent\z@
1354 \parskip\z@skip
1355 \twocolumn\relax
1356 \ifnum\cspare>\z@
1357  \ifnum\cspare<\clabelnumber\else
1358  \mbox{}%
1359  \newpage
1360  \advance\cspare -\clabelnumber

1361 \fi

1362  \advance\labelcount by\cspare
1363  \nointerlineskip
1364  \vbox to \cspare\dlabelheight{\vfill}%
1365 %    \vbox{\rule{4pt}{\cspare\dlabelheight}}%
1366  \nointerlineskip
1367  \nobreak
1368 \else
1369  \nointerlineskip

1370 \fi 1371 }

\lstyle@deskjet
1372 \def\lstyle@deskjet{
1373 \textheight=25.4truecm
1374 \advance\textheight by .0001truemm
1375 %  \@colht=\textheight \@colroom=\textheight \vsize=\textheight
1376 \textwidth=193.3truemm
1377 \columnsep=25pt
1378 %  \ka@db@fontsize{12}{14.4pt}\ka@db@selectfont
1379 %  \boxmaxdepth=0pt
1380 %  \twocolumn
1381 \relax

1382 }

\startlabels
1383 \def\startlabels{%
1384 \nointerlineskip
1385 \labelcount=0
1386 \pagestyle{empty}
1387 \let\@texttop=\relax
1388 % \topmargin=-17.6truemm
1389 % \headsep=0pt
1390 % \oddsidemargin=-12.3truemm
1391 % \evensidemargin=-12.3truemm
1392 % \textheight=25.4truecm
1393 % \advance\textheight by .0001truemm
1394 % \@colht=\textheight \@colroom=\textheight \vsize=\textheight

1395 % \textwidth=193.3truemm
1396 % \columnsep=25pt
1397 % \ka@db@fontsize{12}{14.4pt}\ka@db@selectfont
1398 % \boxmaxdepth=0pt
1399 % \twocolumn\relax
1400 \@nameuse{lstyle@\@labelstyle}

1401 }

4.25 Processing of a single letter

lt@state The counter c@lt@state holds values from 0 to 3. These values indicate different

states inside the letter.

0 We are outside the letter environment.

      1 We are between \begin{letter} and \opening
      2 We are between \opening and \closing
      3 We are between \closing and \end{letter}

This counter should replace the old boolean flag \ifka@db@inletter. We further use the different states to change the behavior of some API macros. This is necessary because the old dinbrief requests to have \Anlagen and \Verteiler beeing in front of \closing. And our implementation wants to have \encl and \cc after the \closing-command.

1402 \newcounter{lt@state}%
1403 \setcounter{lt@state}{0}%

letter The counter letter counts the number of letters.

1404 \newcounter{letter}
\letter
1405 \long\def\letter#1{%
1406 \ifnum\c@lt@state>0
1407  \ka@db@error{%
1408  Command \string\begin{letter} inside the
1409  \string\begin{letter}-environment found.

1410 } 1411 \fi

1412 \setcounter{lt@state}{1}%
1413 % \typeout{\string\ka@db@atletter\space\ka@db@atletter}%
1414 \ka@db@atletter
1415 \clearpage
1416 \thispagestyle{empty}
1417 \cleardoublepage
1418 \refstepcounter{letter}%
1419 \c@page\@ne
1420 \global\ka@db@lastpagefalse
1421 \interlinepenalty=200
1422 % \@processto{#1}%
1423 % \message{Starting \string\@splitaddress}%

1424 \bgroup
1425  \def\protect{\noexpand\protect\noexpand}%
1426  \let\\=\relax
1427  \let\vspace=\relax
1428  \@splitaddress{#1}
1429 \egroup
1430 % \message{Ending \string\@splitaddress}%

1431 }

\endletter
1432 \def\endletter{%
1433 \setcounter{lt@state}{0}%
1434 \ka@db@lastpagetrue

\stopletter is a hook to insert commands in the \endletter.

1435 \stopletter
1436 \@@par
1437 \pagebreak
1438 \@@par
1439 \gdef\@yourmail{}
1440 \gdef\@mymail{}
1441 \global\@reflinefalse
1442 \if@filesw
1443  \ifnum\c@labelgen>1
1444  \begingroup
1445  \def\protect{\string}
1446  \let\\=\relax
1447  \def\protect##1{\string##1\space}
1448  \let\vspace=\relax
1449  \let\rule=\relax
1450  %\immediate\write\@auxout{\string\mlabel{\@backaddress}{\toname
1451  %\\\toaddress}}
1452  %\immediate\write\@auxout{%
1453  %  \string\mlabel{\@backaddress}{\@addresslist}}%
1454  %\immediate\write\@auxout{\string\mlabel{\@backaddress}{%
1455  %  \ka@db@ifemptyvarlocal{postremark}{}{%
1456  %    \ka@db@usevarlocal{postremark}\\[\string\medskipamount]%

1457 % }%

1458  %  \@addresslist
1459  %}}%
1460  \ka@db@ifemptyvarlocal{postremark}{% then
1461  \immediate\write\@mainlbl{\string\mlabel{\@backaddress}{%
1462  \@addresslist}}%
1463  }{% else
1464  \immediate\write\@mainlbl{\string\mlabel{\@backaddress}{%
1465  \pka@db@usevarlocal{postremark}\\[\string\medskipamount]%
1466  \@addresslist}}%
1467  }% endif

1468  \endgroup

1469 \fi

1470  %\ifnum\c@labelgen=1
1471  %  \onlabels
1472  %\fi

1473 \fi

1474 \ka@db@atendletter

1475 }

\@processto
1476 \long\def\@processto#1{%
1477 \@xproc #1\\@@@%
1478 \ifx\toaddress\@empty
1479 \else
1480  \@yproc #1@@@%
1481 \fi}
\@xproc
1482 \long\def\@xproc #1\\#2@@@{\def\toname{#1}\def\toaddress{#2}}
\@yproc
1483 \long\def\@yproc #1\\#2@@@{\def\toaddress{#2}}
\stopbreaks
1484 \def\stopbreaks{\interlinepenalty \@M
1485 \def\par{\@@par\nobreak}\let\\=\@nobreakcr
1486 \let\vspace\@nobreakvspace}
\@nobreakvspace
1487 \def\@nobreakvspace{\@ifstar{\@nobreakvspacex}{\@nobreakvspacex}}
\@nobreakvspacex
1488 \def\@nobreakvspacex#1{\ifvmode\nobreak\vskip #1\relax\else
1489 \@bsphack\vadjust{\nobreak\vskip #1}\@esphack\fi}
\@nobreakcr
1490 \ifka@db@ltxtwoe
1491 \def\@nobreakcr{\@ifstar{\@normalcr*}{\@normalcr*}}
1492 \else
1493 \def\@nobreakcr{\vadjust{\penalty\@M}\@ifstar{\@xnewline}{\@xnewline}}

1494 \fi

\startbreaks
1495 \def\startbreaks{\let\\=\@normalcr
1496 \interlinepenalty 200\def\par{\@@par\penalty 200}}
\labelcount
1497 \newcount\labelcount

\if@refline \if@norefline \if@refline is true if a referline according to the rules of DIN 676 and Draft DIN 676 is typeset. If the user wishes no referline at all, to print for example place and date on the top of the letter, you can set \if@norefline to true.

1498 \newif\if@refline
1499 \@reflinefalse
1500 \newif\if@norefline
1501 \@noreflinefalse
\if@toadrcenter
1502 \newif\if@toadrcenter
1503 \@toadrcenterfalse
\if@letterform
\letterform
\noletterform

1504 \newif\if@letterform
1505 \@letterformfalse
1506 \def\letterform{\@letterformtrue}
1507 \def\noletterform{\@letterformfalse}
\centeraddress
1508 \def\centeraddress{\@toadrcentertrue}
\normaladdress
1509 \def\normaladdress{\@toadrcenterfalse}
\signature
1510 \def\signature#1{%
1511 \ka@db@assignvar{signature}{#1}%

1512 }

1513 \ka@db@execatletter{\ka@db@assignvarlocal{signature}{}}%
\@fromsig
1514 % \def\@fromsig{}
\address
1515 \long\def\address#1{\def\@fromaddress{#1}}
\@fromaddress
1516 \def\@fromaddress{}
\footer
1517 \long\def\footer#1{\def\@footer{#1}}
\@footer
1518 \def\@footer{}
\returnaddress
1519 \def\returnaddress{}

\place
1520 \def\place#1{\gdef\@place{#1}}
\@place
1521 \def\@place{}
\phone
\@prephone
\@phone
\@telephonenum

1522 \def\phone#1#2{%
1523 \gdef\@prephone{#1}%
1524 \gdef\@phone{#2}%
1525 \gdef\@telephonenum{#1#2}}
1526 \def\@prephone{}
1527 \def\@phone{}
1528 \def\@telephonenum{}
\phonemsg
1529 \def\phonemsg{Telefon}
\date
1530 \def\date#1{\gdef\@date{#1}\gdef\@ntoday{#1}}
\@date
1531 \def\@date{\today}
\sign
1532 \def\sign#1{\gdef\@mymail{#1}\@reflinetrue}
\@mymail
1533 \def\@mymail{}
\signmsg \signmsgold \signmsgnew
1534 \def\signmsgold{Unsere Zeichen}
1535 \def\signmsgnew{Unsere Zeichen, unsere Nachricht vom}
1536 \let\signmsg\signmsgold
\datemsg
1537 \def\datemsg{Datum}
\yourmail
1538 \def\yourmail#1{\gdef\@yourmail{#1}\global\@reflinetrue}
\@yourmail
1539 \def\@yourmail{}
\yourmailmsg
1540 \def\yourmailmsg{Ihre Zeichen, Ihre Nachricht vom}

\writer This macro takes as argument the name of the writer (Sachbearbeiter) and stores it in the var writer. It also toggles the the \@reflinetrue-switch to get an referline and further enables the layout of the new DIN draft standard 676 from May 1991.

1541 \def\writer#1{%
1542 \ka@db@assignvar{writer}{#1}%
1543 \@reflinetrue
1544 \enabledraftstandard

1545 }

1546 \ka@db@execatletter{\ka@db@assignvarlocal{writer}{}}%
1547 \ka@db@assignvarglobal{writer}{}%
\writermsg
1548 \def\writermsg{,\ Bearbeiter}
\@concern
1549 \def\@concern{}

\bottomtext Defines the text which is printed on the bottom of the first page. This is used to include special informations such as the number of the giroconto, or the name of the chairman of a corporation.

The implementation of \bottomtext puts its argument into the macro \ka@db@bottomtext preset with \relax (maybe, the name of this internal command should be changed). This allows the bottom text to be specified before \begin{⟨document⟩}. The contents of the macro \ka@db@bottomtext are put into a box of height and width 0pt by \ka@db@tsbottomtext as well as \oldopening which is immediately set into the letter (without using a box register). Wheter bottom text is to be set can be checked by comparing \ka@db@bottomtext to \relax.

1550 % \newbox\@@bottomtext
1551 % \setbox\@@bottomtext=\vbox to 0pt{}
1552 % \def\ka@db@bottomtextmsg{}
1553 % \long\def\ka@db@praebottomtext#1{%
1554 %   \gdef\ka@db@bottomtextmsg{#1}%

1555 % }

1556 % \long\def\ka@db@mainbottomtext#1{%
1557 %   \setbox\@@bottomtext=\hbox to 0pt{\hskip0pt minus 4truemm%
1558 %        \vbox{\raggedright #1}%
1559 %        \hss}%

1560 % }

1561 \def\ka@db@bottomtext{}
1562 \long\def\bottomtext#1{%
1563 \ifka@db@ltxtwoe \relax \else
1564  \@@warning{\string\bottomtext \space is reserving space for
1565  typesetting its argument only in case of LaTeX 2e.
1566  With other LaTeX formats you will have to place a
1567  \string\clearpage-command at the appropriate position}%

1568 \fi

1569 %  \ka@db@bottomtext{#1}%

1570 \long\gdef\ka@db@bottomtext{#1}%
1571 % \gdef\ka@db@bottomtextmsg{#1}%
1572 % \setbox\@@bottomtext=\hbox to 0pt{\hskip0pt minus 4truemm%
1573 %      \vbox{\raggedright #1}%
1574 %      \hss}%

1575 }

1576 % \long\def\ka@db@bottomtext#1{\ka@db@praebottomtext{#1}}

1577 1578

1579 % \long\def\bottomtext#1{%
1580 %   \ifka@db@ltxtwoe \relax \else
1581 %      \@@warning{\string\bottomtext \space is reserving space for
1582 %                 typesetting its argument only in case of LaTeX 2e.
1583 %                 With other LaTeX formats you will have to place a
1584 %                 \string\clearpage-command at the appropriate position}%
1585 %  \fi
1586 %  \setbox\@@bottomtext=\hbox to 0pt{\hskip0pt minus 4truemm%
1587 %       \vbox{\raggedright #1}%
1588 %       \hss}%
1589 % %  \@@bottomht \ht\@@bottomtext}

1590 % }

1591 % \long\def\bottomtext#1{\def\@@bottomtext{#1}}
\@@bottomtext
1592 % \def\@@bottomtext{}
\document
1593 \def\document{%
1594 \endgroup

If some options on \documentclass haven’t been used by any package we will now give a warning since this is most certainly a misspelling.

1595 \ifka@db@ltxtwoe
1596  \ifx\@unusedoptionlist\@empty\else
1597  \@latex@warning@no@line{Unused global option(s):^^J%
1598  \@spaces[\@unusedoptionlist]}%

1599 \fi 1600 \fi

1601 \@colht=\textheight
1602 \@colroom=\textheight
1603 \vsize=\textheight
1604 \columnwidth=\textwidth
1605 \@clubpenalty=\clubpenalty
1606 \if@twocolumn
1607  \advance\columnwidth -\columnsep
1608  \divide\columnwidth\tw@
1609  \hsize=\columnwidth
1610  \@firstcolumntrue

1611 \fi

1612 \hsize=\columnwidth
1613 \linewidth=\hsize
1614 \begingroup
1615  \@floatplacement
1616  \@dblfloatplacement
1617  \makeatletter
1618  \ifka@db@ltxtwoe
1619  \let\@writefile\@gobbletwo

1620 \fi

1621  \@input{\jobname@aux}%
1622 \endgroup
1623 \if@filesw
1624  \ifnum\c@labelgen>0
1625  \immediate\openout\@mainlbl=\jobname@lbl
1626  \immediate\write\@mainlbl{\string\relax}%
1627  \immediate\write\@mainlbl{\string\startlabels\string\@startlabels}%

1628 \fi

1629  \immediate\openout\@mainaux=\jobname@aux
1630  \immediate\write\@mainaux{\string\relax}%

1631 \fi

1632 \ifka@db@ltxtwoe
1633  \process@table
1634  \let\glb@currsize\@empty  %% Force math initialisation.

1635 \fi

1636 \@normalsize
1637 \everypar{}%
1638 \ifka@db@ltxtwoe
1639  \@noskipsecfalse

\G@refundefinedfalse ist not longer needed. D. Carlile send us an E-Mail (95/12/12) to avoid conflicts with the December 1995 release of L^{A}TEX 2ε.

1640 \fi

Just before disabling the preamble commands we execute the begin document hook which contains any code contributed by \AtBeginDocument. Also disable the gathering of the file list, if no \listfiles has been issued. Since a value of exactly 0pt for \topskip causes \twocolumn[] to misbehave, we add this check, hoping that it will not cause any problems elsewhere.

Most of the following assignments will be done globally in case the user adds something like \begin{multicols} to the document hook, ie starts a group in

  \begin{document}.
1641 \ifka@db@ltxtwoe
1642  \@begindocumenthook
1643  \ifdim\topskip<1sp
1644  \topskip 1sp
1645  \relax

1646 \fi

1647  \let\@begindocumenthook\@undefined
1648  \ifx\@listfiles\@undefined
1649  \let\@filelist\relax

1650  \let\@addtofilelist\@gobble

1651 \fi 1652 \fi

At the very end we disable all preamble commands. This has to happen after the begin document hooks was executed so that this hook can still use such commands.

\AtBeginDocument.
1653 \def\do##1{\let ##1\@notprerr}%
1654 \@preamblecmds

The next line is a pure safty measure in case a do list is ever expanded at the wrong place. In addition it will save a few tokens to get rid of the above definition.

1655 \global\let\do\noexpand
1656 %  \long\def\ka@db@bottomtext##1{\ka@db@mainbottomtext{##1}}

1657 }

\enddocument
1658 \def\enddocument{%
1659 \@checkend{document}
1660 \newpage
1661 \begingroup
1662  \if@filesw
1663  \ifnum\c@labelgen>0
1664  \immediate\closeout\@mainlbl
1665  \makeatletter
1666  \input \jobname@lbl\relax
1667  \clearpage

1668 \fi

1669  \immediate\closeout\@mainaux

1670 \fi

1671 \endgroup
1672 \deadcycles\z@
1673 \@@end}

4.25.1 Controlling the generation of labels

\makelabels is a preamble command to enable the generation of labels. To control the generation of labels for single letters, we provide three other commands. This commands work only if \makelabels is given in the preamble.

The other three commands \nolabels, \offlabels and \onlabels, which only work if \makelabels had been given in the preamle, control the generation of single or in case of \offlabels the remaining label(s). \nolabels avoids the label for the current letter. Further if the generation of labels was permanently disabled with \offlabels this also switches the generation of labels from the next letter on. \offlabels stops the generation of labels. \onlabels switch the generation of label on again.

The counter \c@labelgen indicates the current state of the generation of labels:

0 generation of labels is switched off
1 generation of current label is beeing temporary switched off
2 generation of labels is in force

\makelabels \makelabels is a command to enable the generation of labels.

1674 \def\makelabels{%
1675 % \@fileswtrue
1676 \c@labelgen=2

1677 }

\c@labelgen
1678 \newcount\c@labelgen
1679 \c@labelgen=0
\ka@db@asslabelgen
1680 \def\ka@db@asslabelgen#1#2#3{%
1681 \if@filesw
1682  #3\c@labelgen=#1\relax
1683 \else
1684  %\@warning{\string\makelabels\space not given. %
1685  %          \string#2\space has no effect}%
1686  \ClassWarning{dinbrief}{%
1687  \string\makelabels\space not given. %
1688  \string#2\space has no effect}%

1689 \fi 1690 }

\nolabels
1691 \def\nolabels{%
1692 \ka@db@asslabelgen{1}{\nolabels}{\relax}%

1693 }

\offlabels
1694 \def\offlabels{%
1695 \ka@db@asslabelgen{0}{\offlabels}{\global}%

1696 }

\onlabels
1697 \def\onlabels{%
1698 \ka@db@asslabelgen{2}{\onlabels}{\global}%

1699 }

\@startlabels
1700 \def\@startlabels{}
1701 \let\@texttop=\relax

\ifka@db@lastpage The following switch is used by pagestyle contheadings to detect the last page.

1702 \newif\ifka@db@lastpage
1703 \ka@db@lastpagefalse
\ps@headings
1704 \def\ps@headings{
1705 \headheight=\ltf@headheight
1706 \headsep=\ltf@headsep
1707 \ifka@db@ltxtwoe
1708  \relax
1709  \else
1710  \footheight 0truemm

1711 \fi

1712 \footskip 0truemm
1713 \def\@oddhead{%
1714  \sl \headtoname\
1715  \ignorespaces\toname \hfil \@date
1716  \hfil \pagename{} \thepage}
1717 \def\@oddfoot{}
1718 \def\@evenhead{%
1719  \sl \headtoname\
1720  \ignorespaces\toname \hfil \@date
1721  \hfil \pagename{} \thepage}
1722 \def\@evenfoot{}
1723 ⟨debug⟩ \message{executing pagestyle headings}%

1724 }

\ps@empty
1725 \def\ps@empty{%
1726 \headheight=\lts@headheight
1727 \headsep=\lts@headsep
1728 \ifka@db@ltxtwoe
1729  \relax
1730  \else
1731  \footheight 0truemm

1732 \fi

1733 \footskip 0truemm
1734 \def\@oddhead{}
1735 \def\@oddfoot{}
1736 \def\@evenhead{}
1737 \def\@evenfoot{}
1738 ⟨debug⟩ \message{executing pagestyle empty}%

1739 }

\ps@first@page
1740 \def\ps@first@page{%
1741 \headheight=\lts@headheight
1742 \headsep=\lts@headsep
1743 \ifka@db@ltxtwoe

1744  \relax
1745  \else
1746  \footheight 4.2truemm

1747 \fi

1748 \footskip 8.8truemm

We do not redefine the macros \@oddfoot and \@evenfoot. So the first page gets the same layout in the foot as the other pages.

We can talk about use of such a half pagestyle. So we provide here a hook psfirstpagehook and the user can complete this pagestyle (if he wishes) simply by doing:

      \def\psfirstpagehook{%
        \def\@oddfoot{}
        \def\@evenfoot{}}
1749 \def\@oddhead{}
1750 \def\@evenhead{}
1751 \expandafter\ifx\csname psfirstpagehook\endcsname\relax
1752  \else
1753  \psfirstpagehook

1754 \fi

1755 ⟨debug⟩ \message{executing pagestyle firstpage}%

1756 }

\psfirstpagehook
1757 \def\psfirstpagehook{%
1758 \def\@oddfoot{}
1759 \def\@evenfoot{}}
\ps@plain
1760 \def\ps@plain{%
1761 \headheight=\lts@headheight
1762 \headsep=\lts@headsep
1763 \ifka@db@ltxtwoe
1764  \relax
1765  \else
1766  \footheight 4.2truemm

1767 \fi

1768 \footskip 8.8truemm
1769 \def\@oddhead{}
1770 \def\@oddfoot{\hfil{\ka@db@fontshape{n}%
1771  \ka@db@fontseries{m}\ka@db@selectfont\thepage}
1772  \hfil}%
1773 \def\@evenhead{}
1774 \def\@evenfoot{}
1775 ⟨debug⟩ \message{executing pagestyle plain}%

1776 }

ps@myheadings

1777 \def\ps@myheadings{%\let\@mkboth\@gobbletwo
1778 \headheight=\ltf@headheight
1779 \headsep=\ltf@headsep
1780 \ifka@db@ltxtwoe
1781  \relax
1782  \else
1783  \footheight 0truemm

1784 \fi

1785 \footskip 0truemm
1786 \def\@oddhead{{\sl \rightmark}}%
1787 \def\@oddfoot{}
1788 \def\@evenhead{{\sl \leftmark}}%
1789 \def\@evenfoot{}
1790 ⟨debug⟩ \message{executing pagestyle myheadings}%

1791 }

ps@contheadings Like pagestyle ’headings’ with pagenumber in top line and number of following page in bottom line.

Problem to be solved before this pagestyle can be introduced: There must be found a method to detect the last page is typesetted (endletter is not sufficient, since there may be another pagebreak when TEX has seen the command - due to an overfull page)

1792 \def\ps@contheadings{%\let\@mkboth\@gobbletwo
1793 \headheight=\ltf@headheight
1794 \headsep=\ltf@headsep
1795 \ifka@db@ltxtwoe
1796  \relax
1797  \else
1798  \footheight 0truemm

1799 \fi

1800 \footskip 8.8truemm
1801 \def\@oddhead{{\sl \headtoname\ \ignorespaces\toname \hfil \@date
1802  \hfil\pagename{} \thepage}}%
1803 \def\@oddfoot{\ifka@db@lastpage
1804  \relax
1805 ⟨debug⟩  \message{ignoring oddfoot in contheadings}%
1806  \else
1807  \addtocounter{page}{1}%
1808  \hfil--- \thepage{} ---\hfil%
1809  \addtocounter{page}{-1}%
1810 ⟨debug⟩  \message{executing oddfoot in contheadings}%
1811  \fi}
1812 \def\@evenhead{{\sl \headtoname\ \ignorespaces\toname \hfil \@date
1813  \hfil\pagename{} \thepage}}%
1814 \def\@evenfoot{\ifka@db@lastpage
1815  \relax
1816 ⟨debug⟩  \message{ignoring evenfoot in contheadings}%
1817  \else
1818  \addtocounter{page}{1}%

1819  ~\hfil--- \thepage{} ---~%
1820  \addtocounter{page}{-1}%
1821 ⟨debug⟩  \message{executing evenfoot in contheadings}%
1822  \fi}
1823 ⟨debug⟩ \message{executing pagestyle contheadings}%

1824 }

4.26 Fonts — paragraphing

These parameters control TEX’s behaviour when two lines tend to come too close together.

1825 \lineskip 1pt
1826 \normallineskip 1pt

\baselinestretch This is used as a multiplier for \baselineskip. The default is not to stretch the baselines.

1827 \def\baselinestretch{1}

\parskip \parindent \parskip gives extra vertical space between paragraphs and \parindent is the width of the paragraph indentation.

1828 \parskip .7em
1829 \parindent 0pt
1830 \topsep .4em
1831 \partopsep 0pt
1832 \itemsep .4em
\@lowpenalty \@medpenalty \@highpenalty The commands \nopagebreak and \nolinebreak put in penalties to discourage

these breaks at the point they are put in. They use \@lowpenalty, \@medpenalty or \@highpenalty, dependant on their argument.

1833 \@lowpenalty 51
1834 \@medpenalty 151
1835 \@highpenalty 301
1836 \@beginparpenalty -\@lowpenalty
1837 \@endparpenalty -\@lowpenalty
1838 \@itempenalty -\@lowpenalty

4.27 Lists

4.27.1 General list parameters

The following commands are used to set default values for the list environment’s parameters. See the L^{A}TEX manual for an explanation of the meanings of these parameters. Defaults for the list environment are set as follows. First,

\rightmargin, \listparindent and \itemindent are set to 0pt. Then, for a

Kth level list, the command \@listK is called, where ‘K’ denotes ‘i’, ’‘i’, ... , ‘vi’. (I.e., \@listiii is called for a third-level list.) By convention, \@listK should

set \leftmargin to \leftmarginK.

\leftmargin \leftmargini \leftmarginii \leftmarginiii \leftmarginiv \leftmarginv \leftmarginvi For efficiency, level-one list’s values are defined at top level, and \@listi is defined
  to set only \leftmargin.
1839 \leftmargini 2.5em
1840 \leftmarginii 2.2em
1841 \leftmarginiii 1.87em
1842 \leftmarginiv 1.7em
1843 \leftmarginv 1em
1844 \leftmarginvi 1em

Here we set the top level leftmargin.

1845 \leftmargin\leftmargini

\labelsep \labelwidth \labelsep is the distance between the label and the text of an item; \labelwidth is the width of the label.

1846 \labelwidth\leftmargini
1847 \advance\labelwidth-\labelsep
1848 \labelsep 5pt
1849 \parsep 0pt
\@listi
1850 \let\@listi\relax

\@listii \@listiii \@listiv \@listv \@listvi Here are the same macros for the higher level lists.

1851 \def\@listii{%
1852 \leftmargin\leftmarginii
1853 \labelwidth\leftmarginii
1854 \advance\labelwidth-\labelsep}
1855 \def\@listiii{%
1856 \leftmargin\leftmarginiii
1857 \labelwidth\leftmarginiii
1858 \advance\labelwidth-\labelsep
1859 \topsep .2em
1860 \itemsep \topsep}
1861 \def\@listiv{%
1862 \leftmargin\leftmarginiv
1863 \labelwidth\leftmarginiv
1864 \advance\labelwidth-\labelsep}
1865 \def\@listv{%
1866 \leftmargin\leftmarginv
1867 \labelwidth\leftmarginv
1868 \advance\labelwidth-\labelsep}
1869 \def\@listvi{%
1870 \leftmargin\leftmarginvi
1871 \labelwidth\leftmarginvi
1872 \advance\labelwidth-\labelsep}

4.27.2 Enumerate

The enumerate environment uses four counters: enumi, enumii, enumiii and enumiv, where enumN controls the numbering of the Nth level enumeration.

\theenumi \theenumii \theenumiii \theenumiv The counters are already defined in latex.tex, but their representation is changed here.

1873 \def\theenumi{\arabic{enumi}}
1874 \def\theenumii{\alph{enumii}}
1875 \def\theenumiii{\roman{enumiii}}
1876 \def\theenumiv{\Alph{enumiv}}
\labelenumi \labelenumii \labelenumiii \labelenumiv The label for each item is generated by the commands
\labelenumi ... \labelenumiv.
1877 \def\labelenumi{\arabic{enumi}.}
1878 \def\labelenumii{(\alph{enumii})}
1879 \def\labelenumiii{\roman{enumiii}.}
1880 \def\labelenumiv{\Alph{enumiv}.}
\p@enumii \p@enumiii \p@enumiv The expansion of \p@enumN\theenumN defines the output of a \ref command

when referencing an item of the Nth level of an enumerated list.

1881 \def\p@enumii{\theenumi}
1882 \def\p@enumiii{\theenumi(\theenumii)}
1883 \def\p@enumiv{\p@enumiii\theenumiii}

4.27.3 Itemize

\labelitemi \labelitemii \labelitemiii \labelitemiv Itemization is controlled by four commands: \labelitemi, \labelitemii,

\labelitemiii, and \labelitemiv, which define the labels of thevarious itemization levels: the symbols used are bullet, bold en-dash, asterisk and centred dot.

1884 \def\labelitemi{$\bullet$}
1885 \def\labelitemii{\bf --}
1886 \def\labelitemiii{$\ast$}
1887 \def\labelitemiv{$\cdot$}

4.27.4 Description

\description \descriptionlabel \enddescription The description environment is defined here – while the itemize and enumerate

environments are defined in latex.tex.

To change the formatting of the label, you must redefine \descriptionlabel.

1888 \def\descriptionlabel#1{%
1889 \hspace\labelsep \bf #1}
1890 \def\description{%
1891 \list{}{\labelwidth\z@ \itemindent-\leftmargin
1892  \let\makelabel\descriptionlabel}}
1893 \let\enddescription\endlist

4.27.5 Verse

\verse \endverse The verse environment is defined by making clever use of the list environment’s parameters. The user types \\ to end a line. This is implemented by \let’ing \\

equal \@centercr.
1894 \def\verse{\let\\=\@centercr
1895 \list{}{\itemsep\z@
1896  \itemindent -15pt
1897  \listparindent \itemindent
1898  \rightmargin\leftmargin
1899  \advance\leftmargin 15pt}\item[]}
1900 \let\endverse\endlist

4.27.6 Quotation

\quotation \endquotation The quotation environment is also defined by making clever use of the list environment’s parameters. The lines in the environment are set smaller than \textwidth. The first line of a paragraph inside this environment is indented.

1901 \def\quotation{%
1902 \list{}{\listparindent 1.5em
1903  \itemindent\listparindent
1904  \rightmargin\leftmargin}%
1905 \item[]}
1906 \let\endquotation=\endlist

4.27.7 Quote

\quote \endquote The quote environment is like the quotation environment except that paragraphs are not indented.

1907 \def\quote{%
1908 \list{}{\rightmargin\leftmargin}%
1909 \item[]}
1910 \let\endquote=\endlist

4.28 Setting parameters for existing environments

4.28.1 Array and tabular

\arraycolsep The columns in an array environment are separated by 2\arraycolsep.

1911 \arraycolsep 5pt

\tabcolsep The columns in an tabular environment are separated by 2\tabcolsep.

1912 \tabcolsep 6pt

\arrayrulewidth The width of rules in the array and tabular environments is given by

\arrayrulewidth.
1913 \arrayrulewidth .4pt

\doublerulesep The space between adjacent rules in the array and tabular environments is given

by \doublerulesep.
1914 \doublerulesep 2pt

4.28.2 Tabbing

\tabbingsep This controls the space that the \' command puts in. (See L^{A}TEX manual for an explanation.)

1915 \tabbingsep \labelsep

4.28.3 Minipage

\@minipagerestore The macro \@minipagerestore is called upon entry to a minipage environment to set up things that are to be handled differently inside a minipage environment. In the current styles, it does nothing.

\@mpfootins Minipages have their own footnotes; \skip\@mpfootins plays the same rôle for footnotes in a minipage as \skip\footins does for ordinary footnotes.

1916 \skip\@mpfootins = \skip\footins

4.28.4 Framed boxes

\fboxsep The space left by \fbox and \framebox between the box and the text in it.

1917 \fboxsep = 3pt

\fboxrule The width of the rules in the box made by \fbox and \framebox.

1918 \fboxsep = 3pt
1919 \fboxrule = .4pt

4.28.5 Equation and eqnarray

\theequation The equation counter will be reset at beginning of a new letter. The equation counter will be typeset using arabic numbers.

1920 \def\theequation{\arabic{equation}}
1921 \@addtoreset{equation}{letter}

\jot \jot is the extra space added between lines of an eqnarray environment. The default value is used.

1922 % \jot=3pt

\@eqnnum The macro \@eqnnum defines how equation numbers are to appear in equations. Again the default is used.

1923 % \def\@eqnnum{(\theequation)}

4.29 Footnotes

\footnoterule Usually, footnotes are separated from the main body of the text by a small rule. This rule is drawn by the macro \footnoterule. We have to make sure that the rule takes no vertical space (see plain.tex) so we compensate for the natural heigth of the rule of 0.4pt by adding the right amount of vertical skip.

To prevent the rule from colliding with the footnote we first add a little negative vertical skip, then we put the rule and make sure we end up at the same point where we begun this operation.

1924 \def\footnoterule{%
1925 \kern-1\p@
1926 \hrule width .4\columnwidth
1927 \kern .6\p@}

\c@footnote The dinbrief style/class does not use this macro.

(Footnotes are numbered within chapters in the report and book document styles.)

\@makefntext The footnote mechanism of L^{A}TEX calls the macro \@makefntext to produce the actual footnote. The macro gets the text of the footnote as its argument and should use \@thefnmark as the mark of the footnote. The macro \@makefntext is called when effectively inside a \parbox of width \columnwidth (i.e., with \hsize

= \columnwidth).

An example of what can be achieved is given by the following piece of TEX code.

1928 %          \long\def\@makefntext#1{%
1929 %             \@setpar{\@@par
1930 %                      \@tempdima = \hsize
1931 %                      \advance\@tempdima-10pt
1932 %                      \parshape \@ne 10pt \@tempdima}%
1933 %             \par
1934 %             \parindent 1em\noindent
1935 %             \hbox to \z@{\hss$\m@th^{\@thefnmark}$}#1}

The effect of this definition is that all lines of the footnote are indented by 10pt, while the first line of a new paragraph is indented by 1em. To change these dimensions, just substitute the desired value for ‘10pt’ (in both places) or ‘1em’. The mark is flushright against the footnote.

In this document class we use a simpler macro, in which the footnote text is set like an ordinary text paragraph, with no indentation except on the first line of a paragraph, and the first line of the footnote. Thus, all the macro must do is set \parindent to the appropriate value for succeeding paragraphs and put the proper indentation before the mark.

1936 % \long\def\@makefntext#1{%
1937 %     \parindent 1em%
1938 %     \noindent
1939 %     \hbox to 1.8em{\hss$\m@th^{\@thefnmark}$}#1}

\@makefntext
1940 \long\def\@makefntext#1{%
1941 \noindent
1942 \hangindent 5pt%
1943 \hbox  to 5pt{\hss $^{\@thefnmark}$}#1}

\@makefnmark The footnote markers printed in the text to point to the footnotes should be produced by the macro \@makefnmark. We use the default definition for it.

1944 %\def\@makefnmark{\hbox{$^{\@thefnmark}\m@th$}}
1945 \c@topnumber=2
1946 \def\topfraction{.7}
1947 \c@bottomnumber=1
1948 \def\bottomfraction{.3}
1949 \c@totalnumber=3
1950 \def\textfraction{.2}
1951 \def\floatpagefraction{.5}
1952 \c@dbltopnumber= 2
1953 \def\dbltopfraction{.7}
1954 \def\dblfloatpagefraction{.5}

4.30 The current date

\today
1955 \def\today{\number\day.\space\ifcase\month\or
1956 Januar\or Februar\or M\"arz\or April\or Mai\or Juni\or
1957 Juli\or August\or September\or Oktober\or November\or Dezember\fi
1958 \space\number\year}

\@znumber \ntoday \@ntoday The following code is not Y2K ready. It has to be replaced by the code suggested by Heiko Oberdiek (below).

1959 %\yearcnt\year
1960 %\advance\yearcnt-\number1900

New we cut off only the first the numbers. This should work from the year 1000 up to 9999. This means Y3K, Y4K and so on ready.

1961 \newcount\yearcnt
1962 \yearcnt=\expandafter\@gobbletwo\the\year
1963 % \def\@znumber#1{\ifnum\number#1<10 0\number#1\else\number#1\fi}

This makes the use of \@znumber more save. Thanks to Heiko Oberdiek for this suggestion.

1964 \def\@znumber#1{%
1965 \ifnum\number#1<10 0\fi
1966 \expandafter\@firstofone\expandafter{\number#1}%

1967 }

1968 \def\ntoday{\@znumber{\number\day}.%
1969  \@znumber{\number\month}.%
1970  \@znumber{\the\yearcnt}}
1971 \def\@ntoday{\ntoday}

1972 \def\up#1{\leavevmode \raise.16ex\hbox{#1}}
\concern \subject
1973 \newbox\@betr
1974 \long\def\concern#1{%
1975 \setbox\@betr=\hbox{}
1976 \def\@concern{\hangindent=\wd\@betr
1977  \hangafter=1
1978  \unhbox\@betr #1\par}}
1979 \let\subject=\concern

\@fordate \@fordate is the length of the remaining part of the referline.

1980 %\newdimen\@fordate
1981 %\@fordate=\textwidth
1982 %\addtolength{\@fordate}{-131truemm}

\@answertoold The macro \@answertoold is used to typeset the referline in the original DIN 676

style.

The length \@fordate is the width of the field for date and place. This length is being determined by subtracting the length of the other fields (50,8mm + 50,8mm + 25,4mm + 4mm) 131 mm from \textwidth. (why 4mm?) The length of the field for date and/or place – the remaining part of the reference line – is no longer computed since its specific value has no effect to the output. Instead, the field width is set to \ka@db@shfldwd=25.4mm leaving 8.2mm to the right paper bound.

1983 \def\@answertoold{%
1984 \parbox[b]{\ka@db@fieldwd}{{\ka@db@fontsize{9}{11pt}\ka@db@selectfont
1985  \yourmailmsg{}}%
1986  \hfil\newline \@yourmail\hbox{}\hss}%
1987 \hskip\ka@db@fldskip%
1988 \parbox[b]{\ka@db@fieldwd}{{\ka@db@fontsize{9}{11pt}\ka@db@selectfont
1989  \signmsg{}}%
1990  \hfil\newline \@mymail\hbox{}\hss}%
1991 \hskip\ka@db@fldskip%
1992 \parbox[b]{\ka@db@shfldwd}{{\ka@db@fontsize{9}{11pt}\ka@db@selectfont
1993  \phonemsg{} \@prephone{}}%
1994  \hfil\newline \@phone\hbox{}\hss}%
1995 \hskip\ka@db@fldskip%
1996 \parbox[b]{\ka@db@shfldwd}{{\ka@db@fontsize{9}{11pt}\ka@db@selectfont
1997  \ifx\@empty\@place
1998  \vphantom{K}\rule{2pt}{0pt}
1999  \else
2000  \@place{}%

2001 \fi

2002  }\hfil\newline \@ntoday}

2003 }

\@answertonew The draft proposal of the new DIN 676 has an additional field for the name of a

person who has written the letter.

The new DIN 676 (draft) has a big disadvantage. The referline is larger than the normal \textwidth. So we have to add some extra space to this box. This code should be rewritten. Currently, it is just a hack.

2004 \def\@answertonew{%
2005 \hbox to \textwidth{%
2006  \parbox[b]{\ka@db@fieldwd}{{\ka@db@fontsize{7}{9pt}\ka@db@selectfont
2007  \yourmailmsg{}}%
2008  \hfil\newline \@yourmail\hbox{}\hss}%
2009  \hskip\ka@db@fldskip%
2010  \parbox[b]{\ka@db@fieldwd}{{\ka@db@fontsize{7}{9pt}\ka@db@selectfont
2011  \signmsg{}}%
2012  \hfil\newline \@mymail\hbox{}\hss}%
2013  \hskip\ka@db@fldskip%
2014  \parbox[b]{\ka@db@fieldwd}{{\ka@db@fontsize{7}{9pt}\ka@db@selectfont
2015  \phonemsg{}%
2016  \writermsg{}%

2017 }%

2018  \hfil\newline
2019  \ifx\@empty\@prephone\relax
2020  \else
2021  \@prephone{}

2022 \fi

2023  \@phone
2024  \ka@db@ifemptyvar{writer}%
2025  {}% true
2026  {% false
2027  \ifx\@empty\@phone\relax
2028  \else
2029  ,\ % insert comma and blank only
2030  \fi%   if both are nonempty
2031  \ka@db@usevar{writer}%

2032 }%

2033 %                               \ifx\@empty\@writer\relax
2034 %                               \else
2035 %                                 \ifx\@empty\@phone\relax
2036 %                                 \else
2037 %                                   ,\ % insert comma and blank only if both
2038 %                                 \fi% are nonempty
2039 %                                 \@writer
2040 %                               \fi
2041  \hbox{}\hss}%
2042  \hskip\ka@db@fldskip%
2043  \parbox[b]{\ka@db@shfldwd}{{\ka@db@fontsize{7}{9pt}\ka@db@selectfont
2044  \datemsg
2045  }\hfil\newline \@ntoday}
2046  \hss}%

2047 }

\enabledraftstandard \disabledraftstandard \@answerto The macros \enabledraftstandard and \disabledraftstandard are used to

switch between the two DIN versions 676 (the old and the draft one). This is simply done by letting the \@answerto pointing to \@answertoold or \@answertonew.

By default, we use the old version and therefore the german standard.

2048 \def\enabledraftstandard{%
2049 \let\signmsg=\signmsgnew
2050 \let\@answerto=\@answertonew

2051 } 2052 %

2053 \def\disabledraftstandard{%
2054 \let\signmsg=\signmsgold
2055 \let\@answerto=\@answertoold

2056 } 2057 %

2058 \disabledraftstandard

4.31 Old dinbrief commands

\Postvermerk
2059 \def\Postvermerk#1{%
2060 %\@warning{Use \string\postremark\space instead %
2061 %          of \string\Postvermerk}%
2062 \ClassWarning{dinbrief}{%
2063  Use \string\postremark\space instead %
2064  of \string\Postvermerk}%
2065 \postremark{#1}%

2066 }

\Behandlungsvermerk
2067 \def\Behandlungsvermerk#1{%
2068 %\@warning{Use \string\handling\space instead of %
2069 %          \string\Behandlungsvermerk}%
2070 \ClassWarning{dinbrief}{%
2071  Use \string\handling\space instead of %
2072  \string\Behandlungsvermerk}%
2073 \handling{#1}%

2074 }

\Datum
2075 \def\Datum#1{%
2076 \date{#1}%

2077 }

2078 \long\def\ka@db@splitondblpt#1{%
2079 \ka@db@splitdblptx #1::\@st@p@
2080 \ifx\ka@db@fromadrtwo\@empty
2081 \else
2082  \ka@db@splitdblpty #1\@st@p@

2083 \fi

2085 \def\ka@db@fromadrone{}%
2086 \def\ka@db@fromadrtwo{}%
2087 \long\def\ka@db@splitdblptx #1::#2\@st@p@{%
2088 \def\ka@db@fromadrone{#1}%
2089 \def\ka@db@fromadrtwo{#2}%

2090 }

2091 \long\def\ka@db@splitdblpty #1::#2\@st@p@{%
2092 \def\ka@db@fromadrtwo{#2}%

2093 }

\stdaddress
2094 \long\def\stdaddress#1{%
2095 \ka@db@splitondblpt{#1}
2096 \address{%
2097  \vspace*{7truemm}
2098  \leavevmode
2099  \hbox to 0pt{\hbox to \textwidth{\hfil\@date}\hss}%
2100  \parbox[t]{\textwidth}{\ka@db@fromadrone\ka@db@fromadrtwo}%

2101 }%

2102 \@noreflinetrue

2103 }

\Absender
2104 \long\def\Absender#1{%
2105 %\@warning{Use \string\stdaddress\space instead of \string\Absender}%
2106 \stdaddress{#1}%

2107 }

\Retourlabel
2108 \def\Retourlabel{%
2109 %\@warning{\string\Retourlabel\space not yet implemented.}%
2110 \ClassWarning{dinbrief}{%
2111  \string\Retourlabel\space not yet implemented.}%

2112 }

\Fenster
2113 \def\Fenster{%
2114 \ClassWarning{dinbrief}{%
2115  \string\Fenster\space not yet implemented.}%

2116 }

\Retouradresse
2117 \def\Retouradresse#1{%
2118 \ClassWarning{dinbrief}{%
2119  Use \string\backaddress\space instead of \string\Retouradresse}%
2120 \backaddress{#1}%

2121 }

\Betreff
2122 \def\Betreff#1{%
2123 \ClassWarning{dinbrief}{%
2124  Use \string\subject\space instead of \string\Betreff}%
2125 \concern{#1}%

2126 }

4.31.1 dinquote

\dinquote \enddinquote The dinquote environment is like the quote environment except that the indentation on left side is 1in and there is no indentation on the right side.

2127 \def\dinquote{%
2128 \list{}{\leftmargin=1in}%
2129 \item[]}
2130 \let\enddinquote=\endlist
\Einrueckung
2131 \long\def\Einrueckung#1{%
2132 \ClassWarning{dinbrief}{%
2133  Use the environment dinquote in future}%
2134 \begin{dinquote}%

2135 #1

2136 \end{dinquote}%

2137 }

\ifka@db@enclright \ifka@db@enclright is true if the enclosures and/or the carbon copies have to placed on the right side.

2138 \newif\ifka@db@enclright
2139 \ka@db@enclrightfalse
\enclright
2140 \def\enclright{%
2141 \ka@db@enclrighttrue

2142 }

\enclnoenclright
2143 \def\noenclright{%
2144 \ka@db@enclrightfalse

2145 }

\anlagenrechts The enclosures are placed on the right side (at degree 50) 101.6mm from the left margin. They start at the same line as the closing formula.

2146 \def\anlagenrechts{%
2147 \ka@db@enclrighttrue

2148 }

\Anlagen
2149 \def\Anlagen#1{%
2150 %\@warning{Use \string\encl\space instead of \string\Anlagen}%
2151 \ClassWarning{dinbrief}{%
2152  Use \string\encl\space instead of \string\Anlagen}%
2153 \encl[]{#1}%

2154 }

\Verteiler
2155 \def\Verteiler#1{%
2156 %\@warning{Use \string\cc\space instead of \string\Verteiler}%
2157 \ClassWarning{dinbrief}{%
2158  Use \string\cc\space instead of \string\Verteiler}%
2159 \cc[]{#1}%

2160 }

4.32 More initializations

We initially choose the normalsize font. This code has to be executed following the definition of \baselinestretch if the original L^{A}TEX font selection scheme is used.

2161 \ifka@db@nfss
2162 \else
2163  \ifka@db@nfsstwo
2164  \else
2165  \normalsize

2166 \fi 2167 \fi

2168 \smallskipamount=.5\parskip
2169 \medskipamount=\parskip
2170 \bigskipamount=2\parskip
2171 \pagestyle{plain}
2172 \pagenumbering{arabic}
2173 \onecolumn
2174 % \@fileswfalse
2175 \errorcontextlines=10

Finally, read the configuration file - if it exists.

2176 \ifka@db@ltxtwoe
2177 \IfFileExists{dinbrief.cfg}{%
2178  \makeatother%
2179  \input{dinbrief.cfg}%
2180  \makeatletter%
2181 }{\relax}

2182 \fi

2183 ⟨/class | style⟩

4.33 The short class file/the short style file

This file only inputs the dinbrief.sty file.

2184 ⟨∗shortclass⟩

2185 \input dinbrief.sty

2186 ⟨/shortclass⟩

This file only inputs the dinbrief.cls file.

2187 ⟨∗shortstyle⟩

2188 \input dinbrief.cls

2189 ⟨/shortstyle⟩

4.34 The configuration file

The configuration file is searched according to the standard search path for TEX files. It is input by the last command of the class but before any package.

2190 ⟨∗cfg⟩

¡¡COMMENTSONLY

2191 % Example configuration file

2192 %

2193 % This file is input by the last command of the class `dinbrief'

2194 %

2195 %\setaddressllhpos{100truemm}
2196 %\setaddressllvpos{96truemm}
2197 %\setaddressllcorner{20truemm}{72truemm}
2198 %\addressstd
2199 %\nobackaddressrule
2200 %\nowindowrules
2201 %\address{R\"udiger Kurz\\ % Package `german' not yet loaded!
2202 %         Am See 1\\
2203 %         76133 Karlsruhe}
2204 %\backaddress{R.~Kurz, Am See 1, 76133 Karslruhe}
2205 %\place{Gralsruhe}
2206 %\phone{(0127)}{806-0815}
2207 %\signature{R\"udiger Kurz}
2208 %\setbottomtexttop{284.9truemm}
2209 %\bottomtext{%
2210 %  \makebox[\textwidth][c]{\small\sf
2211 %     Bankverbindung $\cdot$ Kreissparkasse Gralsruhe %
2212 %     (BLZ~999~500~00) 98~765~4}}
2213 %COMMENTSONLY

2214 ⟨/cfg⟩

5 An example letter

5.1 The letter head

2215 ⟨∗brfkopf⟩

2216 %

2217 \newlength{\UKAwd}
2218 \newlength{\ADDRwd}

2219 %

2220 \font\fa=cmcsc10  scaled 1440
2221 \font\fb=cmss12   scaled 1095
2222 \font\fc=cmss10   scaled 1000

2223 %

2224 \def\briefkopf{
2225 \settowidth{\UKAwd}{\fa Institut f"ur Verpackungen}
2226 \settowidth{\ADDRwd}{\fc EARN/BITNET: yx99 at dkauni2}
2227 \expandafter\ifx\csname fontsize\endcsname\relax\else
2228 \fontsize{12}{14.4pt}\selectfont

2229 \fi 2230 %

2231 \vspace*{7truemm}
2232 \raisebox{-11.3mm}{%
2233 \setlength{\unitlength}{1truemm}
2234 \begin{picture}(15,15)(0,0)
2235  \thicklines
2236  \put(7.5,7.5){\circle{15}}
2237  \put(7.5,7.5){\circle{10}}
2238  \put(7.5,7.5){\circle{ 5}}
2239 \end{picture}%

2240 }

2241 {\fc\hspace{.2em}}
2242 \parbox[t]{\UKAwd}{\centering{\fa Universit\"at Gralsruhe} \\
2243  \centering{\fa Institut f"ur Verpackungen} \\[.5ex]
2244  \centering{\fb Prof.\ Dr.\ Fritz Schreiber} }
2245 \hfill
2246 \parbox[t]{\ADDRwd}{\fc Im Hinterhof 2 $\cdot$ Postfach 8960 \\
2247  \fc D--76821 Gralsruhe \\
2248  \fc Telefon: (0127) 806-0815 \\
2249  \fc Electronic Mail: \\
2250  \fc EARN/BITNET: yx99 at error2 }

2251 } 2252 %

2253 \signature{Prof.\ Dr.\ Fritz Schreiber}
2254 \place{Gralsruhe}
2255 \address{\briefkopf}
2256 \phone{(0127)}{806-0815}
2257 \def\FS{Prof.\,F.\,Schreiber, Uni.\,Gralsruhe,
2258  Postf.\,8960, 76821\,Gralsruhe\rule[-1ex]{0pt}{0pt}}

2259

2260 ⟨/brfkopf⟩

5.2 The letter

2261 ⟨∗example⟩

This will be a letter.

2262

2263 \expandafter\ifx\csname documentclass\endcsname\relax
2264  \documentstyle[german]{dinbrief}
2265 \else
2266  \begin{filecontents*}{signatur.ps}
2267 %!PS-Adobe-2.0 EPSF-2.0
2268 %%BoundingBox: 0 0 57 32
2269 %%EndComments
2270 /$F2psDict 200 dict def
2271 $F2psDict begin
2272 $F2psDict /mtrx matrix put
2273 /col0 {0.000 0.000 0.000 srgb} bind def

2274 end

2275 save
2276 1.0 30.0 translate
2277 1 -1 scale

2278

2279 /c  {curveto} bind def
2280 /cp {closepath} bind def
2281 /ef {eofill} bind def
2282 /gr {grestore} bind def
2283 /gs {gsave} bind def
2284 /rs {restore} bind def
2285 /l {lineto} bind def
2286 /m {moveto} bind def
2287 /n {newpath} bind def
2288 /s {stroke} bind def
2289 /slw {setlinewidth} bind def
2290 /srgb {setrgbcolor} bind def
2291 /sc {scale} bind def
2292 /tr {translate} bind def
2293 /DrawEllipse {
2294 /endangle exch def
2295 /startangle exch def
2296 /yrad exch def
2297 /xrad exch def
2298 /y exch def
2299 /x exch def
2300 /savematrix mtrx currentmatrix def
2301 x y tr xrad yrad sc 0 0 1 startangle endangle arc
2302 closepath
2303 savematrix setmatrix
2304 } def

2305

2306 /$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def
2307 /$F2psEnd {$F2psEnteredState restore end} def
2308 %%EndProlog

2309

2310 $F2psBegin

2311 10 setmiterlimit
2312 n -1000 1472 m -1000 -1000 l 1888 -1000 l 1888 1472 l cp clip
2313 0.06299 0.06299 sc
2314 25.000 slw
2315 n 338 432 10 10 0 360 DrawEllipse gs col0 s gr
2316 n 183 9 m 267 450 l gs col0 s gr
2317 n 273 447 m 273 444 250 427 376 22 c 376 22 400 -40 426 21 c gs col0 s gr
2318 n 9 390 m 9 410 35 480 59 411 c 59 411 150 224 177 3 c gs col0 s gr
2319 n 778 432 10 10 0 360 DrawEllipse gs col0 s gr
2320 n 623 9 m 707 450 l gs col0 s gr
2321 n 713 447 m 713 444 690 427 816 22 c 816 22 840 -40 866 21 c gs col0 s gr
2322 n 449 390 m 449 410 475 480 499 411 c 499 411 590 224 617 3 c gs col0 s gr
2323 $F2psEnd

2324 rs

2325  \end{filecontents*}
2326  \documentclass[10pt]{dinbrief}
2327  \usepackage{german}
2328  \usepackage{graphicx}

2329 \fi

2330

2331 \input brfkopf

2332

2333 % \makelabels
2334 % \labelstyle{deskjet}

2335

2336 \pagestyle{contheadings}

2337

2338 \begin{document}

2339

2340 \bottomtext{%
2341 \makebox[\textwidth][c]{\small\sf
2342 Bankverbindung $\cdot$ Kreissparkasse Gralsruhe %
2343 (BLZ~999~500~00) 98~765~4

2344 } 2345 }

2346

2347 \date{9.~Juli 1999}

2348

2349 \setlength{\topmargin}{-15pt}
2350 \backaddress{\FS}

2351

2352 \begin{letter}{Prof.\ Dr.\ Hans Forschegut\\
2353  Institut f"ur Abfallbeseitigung\\
2354  Fachhochschule Waldstadt\\
2355  Postfach 3322\\[\medskipamount]
2356  1100 Waldstadt}
2357 \yourmail{\ }
2358 \subject{Bitte um "Uberlassung einer Sammlung von Alka-Seltzer Flaschen}

2359

2360 \opening{Sehr geehrter Herr Prof.\ Forschegut,}

2362 von Kollegen habe ich erfahren, da"s sich bei Ihnen eine gro"se
2363 Anzahl von Alka-Seltzer Flaschen mit nur noch einer Tablette
2364 angesammelt hat, da eine Flasche 25~Tabletten enth"alt, der
2365 Beipackzettel aber angibt, da"s stets 2~Tabletten gleichzeitig
2366 einzunehmen sind.

2367

2368 Ich forsche gerade im Bereich m"oglicher Anwendungen einzelner
2369 Schmerztabletten. Falls Sie so freundlich w"aren, Ihre Alka-Seltzer
2370 Sammlung f"ur unser Projekt zu stiften, w"urde ich Ihnen gerne
2371 Vorabdrucke aller zuk"unftigen Forschungsberichte zur Verf"ugung
2372 stellen, die wir "uber dieses kritische Problem ver"offentlichen.

2373

2374 \expandafter\ifx\csname documentclass\endcsname\relax
2375  \closing{Mit freundlichen Gr"u"sen}
2376 \else
2377  \closing[{\includegraphics[height=2\baselineskip]{signatur.ps}}]%
2378  {Mit freundlichen Gr"u"sen}

2379 \fi

2380

2381 \ps{Falls Sie es w"unschen, lasse ich "uberpr"ufen, ob Sie Ihre
2382  Schenkung in Verbindung mit unserer Forschung von der Steuer
2383  absetzen k"onnen.}
2384 \encl{Forschungsbericht Nr.\ 6/99 des IfA}
2385 \cc{Future Pharma\\
2386  Bundesministerium zur Unterst"utzung der Pharmaindustrie}

2387

2388 \end{letter}

2389

2390 \end{document}

2391 ⟨/example⟩

6 Testing the class/style

2392 ⟨∗brfbody⟩

2393 \yourmail{\ }
2394 \subject{Bitte um "Uberlassung einer Sammlung von Alka-Seltzer Flaschen}

2395

2396 \opening{Sehr geehrter Herr Prof.\ Forschegut,}

2397

2398 von Kollegen habe ich erfahren, da"s sich bei Ihnen eine gro"se
2399 Anzahl von Alka-Seltzer Flaschen mit nur noch einer Tablette
2400 angesammelt hat, da eine Flasche 25~Tabletten enth"alt, der
2401 Beipackzettel aber angibt, da"s stets 2~Tabletten gleichzeitig
2402 einzunehmen sind.

2403

2404 Ich forsche gerade im Bereich m"oglicher Anwendungen einzelner
2405 Schmerztabletten. Falls Sie so freundlich w"aren, Ihre Alka-Seltzer
2406 Sammlung f"ur unser Projekt zu stiften, w"urde ich Ihnen gerne

2407 Vorabdrucke aller zuk"unftigen Forschungsberichte zur Verf"ugung
2408 stellen, die wir "uber dieses kritische Problem ver"offentlichen.

2409

2410 {\bf Testing \verb|itemize|}\hfil\break
2411 \begin{itemize}
2412 \item Dies ist ein \verb|\item|.
2413  \begin{itemize}
2414  \item \verb|\item| in Level 2.
2415  \item
2416  \begin{itemize}
2417  \item \verb|\item| in Level 3.
2418  \end{itemize}
2419  \end{itemize}
2420 \item Zweites \verb|\item|.
2421 \end{itemize}

2422

2423 {\bf Testing \verb|enumerate|}\hfil\break
2424 \begin{enumerate}
2425 \item Dies ist ein \verb|\item|.
2426  \begin{enumerate}
2427  \item \verb|\item| in Level 2.
2428  \item
2429  \begin{enumerate}
2430  \item \verb|\item| in Level 3.
2431  \end{enumerate}
2432  \end{enumerate}
2433 \item Zweites \verb|\item|.
2434 \end{enumerate}

2435

2436 {\bf Testing \verb|description|}\hfil\break
2437 \begin{description}
2438 \item[First] Dies ist ein \verb|\item|.
2439  \begin{description}
2440  \item[Second] \verb|\item| in Level 2.
2441  \item[Third]
2442  \begin{description}
2443  \item \verb|\item| in Level 3.
2444  \item Zweites \verb|\item| in Level 3.
2445  \end{description}
2446  \end{description}
2447 \item[Second] Zweites \verb|\item|.
2448 \end{description}

2449

2450 {\bf Testing Lists}\hfil\break
2451 \begin{description}
2452 \item[First] Dies ist ein \verb|\item|.
2453  \begin{itemize}
2454  \item \verb|\item| in Level 2.
2455  \item
2456  \begin{enumerate}

2457  \item \verb|\item| in Level 3.
2458  \item Zweites \verb|\item| in Level 3.
2459  \end{enumerate}
2460  \end{itemize}
2461 \item[Second] Zweites \verb|\item|.
2462 \item[Third]
2463  \begin{enumerate}
2464  \item Genius \LaTeX.
2465  \item Why has been there so large distance between the label
2466  and the first number in elder versions of \LaTeX?
2467  \end{enumerate}
2468 \end{description}

2469

2470 {\bf Testing \verb|verse|}\hfil\break
2471 \begin{verse}
2472 {\bf Die F"u"se im Feuer\/}

2473

2474 Wild zuckt der Blitz,\\
2475 im fahlen Lichte steht ein Turn,\\
2476 der Donner rollt,\\
2477 ein Reiter k"ampft mit seinem Ro"s,\\
2478 springt ab un pocht ans Tor und l"armt.\\
2479 Sein Mantel saust im Wind,\\
2480 und knarrent "offnet jetzt das Tor ein Edelmann.\\
2481 \dots\\
2482 Der Reiter tritt in einen dunklen Ahnensaal.

2483

2484 Von eines weiten Herdes Feuer schwach erhellt,\\
2485 droht hier ein Hugenott im Harnisch,\\
2486 dort ein Weib, ein stolzes Weib in braunen Ebenbild.\\
2487 Der Reiter wirft sich in den Sessel vor dem Herd\\
2488 und starrt in den lebendgen Brand\\
2489 \dots \\
2490 Die Flamme zischt, zwei F"u"se zucken in der Glut.

2491

2492 \dots
2493 \end{verse}

2494

2495 {\bf Testing \verb|quotation|}\hfil\break
2496 \begin{quotation}
2497 ``Ich finde'', sagte einst Winston Churchill im
2498 Unterhaus, ``die Art von Kritik, wie ich sie am
2499 Sonntagmorgen bei meiner Ankunft in den Zeitungen
2500 fand, erinnert mich immer an die Geschichte von
2501 dem Matrosen, der in ein Hafenbecken sprang ---
2502 in Plymouth, glaube ich ---, um einen kleinen
2503 Jungen vom Ertrinken zu retten.

2504

2505 Dort sprach eine Frau den Matrosen an:\\
2506 `Sind Sie der Mann, der meinen Sohn neulich

2507 aus dem Wasser gezogen hat?'\\
2508 Bescheiden erwiderte der Matrose:\\
2509 `Ja, das stimmt.'\\
2510 `Aha', sagte die Frau: `Ich suche Sie schon
2511 die ganze Zeit \dots\ Wo ist seine M"utze?'{}''
2512 \end{quotation}

2513

2514 {\bf Testing \verb|quote|}\hfil\break
2515 \begin{quote}
2516 Ein {\em klassisches\/} Werk ist ein Buch,\\
2517 das die Leute loben,\\
2518 aber nie lesen. \hfill({\em E.\ Hemingway\/})
2519 \end{quote}

2520

2521 {\bf Testing \verb|equation|}\hfil\break
2522 \begin{equation}
2523 x^2 = y^2 + z^2
2524 \end{equation}

2525

2526 {\bf Testing \verb|tabular|}\hfil\break

2527

2528 {\bf Testing \verb|tabbing|}\hfil\break

2529

2530 \closing{Mit freundlichen Gr"u"sen}

2531

2532 \ps{Falls Sie es w"unschen, lasse ich "uberpr"ufen, ob Sie Ihre
2533  Schenkung in Verbindung mit unserer Forschung von der Steuer
2534  absetzen k"onnen.}
2535 \encl{Forschungsbericht Nr.\ 6/99 des IfA}
2536 \cc{Future Pharma\\
2537  Bundesministerium zur Unterst"utzung der Pharmaindustrie}

2538

2539 ⟨/brfbody⟩

2540 ⟨∗10pt⟩

2541 \expandafter\ifx\csname documentclass\endcsname\relax
2542  \documentstyle[german]{dinbrief}
2543  \typeout{Using the command \string\documentstyle.}
2544 \else
2545  \documentclass[10pt]{dinbrief}
2546  \usepackage{german}
2547  \typeout{Using the command \string\documentclass.}

2548 \fi

2549 ⟨/10pt⟩

2550 ⟨∗11pt⟩

2551 \expandafter\ifx\csname documentclass\endcsname\relax
2552  \documentstyle[11pt,german]{dinbrief}
2553  \typeout{Using the command \string\documentstyle.}

2554 \else
2555  \documentclass[11pt]{dinbrief}
2556  \usepackage{german}
2557  \typeout{Using the command \string\documentclass.}

2558 \fi

2559 ⟨/11pt⟩

2560 ⟨∗12pt⟩

2561 \expandafter\ifx\csname documentclass\endcsname\relax
2562  \documentstyle[12pt,german]{dinbrief}
2563  \typeout{Using the command \string\documentstyle.}
2564 \else
2565  \documentclass[12pt]{dinbrief}
2566  \usepackage{german}
2567  \typeout{Using the command \string\documentclass.}

2568 \fi

2569 ⟨/12pt⟩

2570 ⟨∗norm⟩

2571 \expandafter\ifx\csname documentclass\endcsname\relax
2572  \documentstyle[norm,german]{dinbrief}
2573  \typeout{Using the command \string\documentstyle.}
2574 \else
2575  \documentclass[norm]{dinbrief}
2576  \usepackage{german}
2577  \typeout{Using the command \string\documentclass.}

2578 \fi

2579 ⟨/norm⟩

2580 ⟨∗test⟩

2581 \input brfkopf.tex

2582

2583 \newcommand{\oneletter}{%
2584 \begin{letter}{%
2585 Herrn Professor\\
2586 Dr.\ Hans Forschegut\\
2587 Institut f"ur Abfallbeseitigung\\
2588 Fachhochschule Waldstadt\\
2589 Postfach 3322\\[\medskipamount]
2590 {\bf 1100 Waldstadt}}

2591

2592 \input brfbody.tex

2593

2594 \end{letter}

2595

2596 }

2597

2598 \begin{document}

2599

2600 \bottomtext{%
2601 \makebox[\textwidth][c]{\small\sf
2602 Bankverbindung $\cdot$ Kreissparkasse Gralsruhe %
2603 (BLZ~999~500~00) 98~765~4

2604 } 2605 }

2606

2607 \backaddress{\FS}

2608

2609 \pagestyle{empty}

2610

2611 \enabledraftstandard

2612

2613 \oneletter

2614

2615 \disabledraftstandard

2616

2617 \oneletter

2618

2619 \pagestyle{plain}

2620

2621 \writer{Gussmann}

2622

2623 \enabledraftstandard

2624

2625 \oneletter

2626

2627 \disabledraftstandard

2628

2629 \oneletter

2630

2631 \pagestyle{headings}

2632

2633 \writer{Gussmann}

2634

2635 \enabledraftstandard

2636

2637 \oneletter

2638

2639 \disabledraftstandard

2640

2641 \oneletter

2642

2643 \pagestyle{contheadings}

2644

2645 \enabledraftstandard

2646

2647 \oneletter

2648

2649 \disabledraftstandard

2651 \oneletter

2652

2653 ⟨/test⟩

2654 ⟨∗10pt | 11pt | 12pt | norm⟩

2655 \end{document}

2656 ⟨/10pt | 11pt | 12pt | norm⟩

7 Example for using the old dinbrief API

2657 ⟨∗dinbriefold⟩

2658 %

2659 % example letter, example receiver addresses

2660 %

2661 % Most of the following code has taken from the dinbrief released
2662 % at May 11th, 1992. This code is originated by Rainer Sengerling.

2663 %

2664 % The following example contains all commands of the old dinbrief.sty
2665 % API (application programming interface). We recommend to use the
2666 % new dinbrief API which is much more powerfull. The outcome may be
2667 % quiet unsatisfied if you mix both APIs. We had made a few changes
2668 % to adapt the file to \LaTeXe.

2669 %

2670 \expandafter\ifx\csname documentclass\endcsname\relax
2671  \documentstyle[german]{dinbrief}
2672  \typeout{Using the command \string\documentstyle.}
2673 \else
2674  \documentclass[10pt]{dinbrief}
2675  \usepackage{german}
2676  \typeout{Using the command \string\documentclass.}

2677 \fi

2678

2679 \Etihoehe{41mm}%
2680 \Etirand{46.3mm}%
2681 \Etizahl{6}%
2682 \makelabels
2683 \spare{1}
2684 %\pagestyle{empty}
2685 \begin{document}

2686 %

2687 % Musterbrief -- Anfang
2688 % In der vorliegenden Version (beachte Auskommentierungen mit %)
2689 % liefert er das Anwendungsbeispiel 4 von DIN 5008

2690 %

2691 \begin{letter}{%
2692 Stadt G"ottingen\\
2693 Stadtbauamt\\
2694 Postfach 28 17\par
2695 3400 G"ottingen

2697 \Postvermerk{Einschreiben}
2698 \Behandlungsvermerk{E\ i\ l\ t}
2699 \Datum{G"ottingen, 29.04.86}
2700 \Absender{Klaus Waldmann\\B"urgerstra"se 135\\3400 G"ottingen\\::Tel.\
2701 (05 51) 9 34 56}
2702 \Retourlabel
2703 \Fenster
2704 \Retouradresse{K. Waldmann $\cdot$ B"urgerstr.\ 135 $\cdot$
2705  3400 G"ottingen}
2706 \Betreff{Mein Bauvorhaben Waldrebenweg 9}
2707 \signature{K. Waldmann}
2708 \opening{Sehr geehrte Damen und Herren,}
2709 den Antrag zur Genehmigung f"ur den Neubau eines Einfamilienhauses auf
2710 meinem Grund\-st"uck G"ottingen, Waldrebenweg 9, hat der Architekt,
2711 Herr Dipl.-Ing.\ G. Schwarz, mit allen erforderlichen Unterlagen am
2712 03.01.86 eingereicht. Die Baugenehmigung habe ich bis heute nicht
2713 erhaltern.

2714

2715 \Einrueckung{%Der folgende Text wird eingerueckt
2716 Da ich die Finanzierung des Bauvorhabens ohne die Baugenehmigung nicht
2717 endg"ultig kl"aren kann und der Beginn der Bauarbeiten nicht verz"ogert
2718 werden soll, bitte ich dringend, das Genehmigungsverfahren zu
2719 beschleunigen.
2720 }  % Ende der Einrueckung

2721

2722 Gleichzeitig bitte ich um Auskunft, ob damit zu rechnen ist, da"s der
2723 nur geschotterte Waldrebenweg in absehbarer Zeit zu einer "`Stra"se im
2724 vorl"aufigen Ausbau"' umgestaltet wird.

2725

2726 \anlagenrechts
2727 \Anlagen{2 Anlagen}
2728 \Verteiler{Verteiler:\\Landratsamt}

2729

2730 \closing{Mit freundlichen Gr"u"sen}
2731 \ps{Also bis bald!}
2732 \end{letter}

2733

2734 % normgerecht geschriebene Adressen

2735

2736 \begin{letter}{Frau\\Erika Werner\\bei M"uller\\Bahnhofstr.\ 4 -- 6

2737

2738 8580 Bayreuth}
2739 \end{letter}

2740

2741 \begin{letter}{Frau\\ Annemarie Hartmann\\Vogelsangstr.\ 17 II\par
2742 2870 Delmenhorst}
2743 \Postvermerk{Briefdrucksache}
2744 \end{letter}

2745

2746 \begin{letter}{02694/73\\Herrn Gutsverwalter\\Dipl.-Ldw.\ Otto Winter\\
2747 Hauptstr.\ 3

2748

2749 8221 Alm Post Neukirchen}
2750 \Postvermerk{Nicht nachsenden}
2751 \end{letter}

2752

2753 \begin{letter}{Eheleute\\Erika und Hans M"uller\\Hochstr.\ 4

2754

2755 4709 Bergkamen}
2756 \Postvermerk{Warensendung}
2757 \end{letter}

2758

2759 \begin{letter}{Herrn Staatsanwalt\\Dr.\ Ernst Meyer und Frau\\
2760 Talblick 2

2761

2762 8200 Rosenheim}
2763 \Postvermerk{Eilzustellung -- auch nachts}
2764 \end{letter}

2765

2766 \begin{letter}{Herrn Rechtsanwalt\\Dr.\ Otto Freiherr von Bergheim\\
2767 Leonhard-Eck-Str.\ 7 W 36

2768

2769 8000 M"unchen 19}
2770 \Postvermerk{Einschreiben -- R"uckschein}
2771 \end{letter}

2772

2773 \begin{letter}{Herrn Direktor\\Dipl.-Kfm.\ Kurt Gr"aser\\Massivbau AG\\
2774 Postfach 21 03 14

2775

2776 5600 Wuppertal 21}
2777 \end{letter}

2778

2779 \begin{letter}{Frau Luise Weber\\Herrn Max Weber\\Rosenstra"se 35

2780

2781 7030 B"oblingen}
2782 \end{letter}

2783

2784 \begin{letter}{Lack- und Farbwerke\\Dr.\ Hans Sendler \& Co.\\
2785 Abt.\ FDM 412/10\\Postfach 80 19 36\par
2786 6230 Frankfurt 80}
2787 \end{letter}

2788

2789 \begin{letter}{Lehmann \& Krause KG\\z.\ H. Herrn E. Winkelmann\\
2790 Gartenhaus III r.\\Johannisberger Str.\ 5 a\par 1000 Berlin 31}
2791 \end{letter}

2792

2793 \begin{letter}{W"aschegro"shandel\\Robert Bergmann\\Venloer
2794 Stra"se 80 -- 82\par 5000 K"oln 30}
2795 \end{letter}

2797 \begin{letter}{Firma\\Otto Pfleiderer\\Braunenweiler\\Hauptstr.\ 5\par
2798 7968 Saulgau 1}
2799 \Postvermerk{Drucksache}
2800 \end{letter}

2801

2802 \begin{letter}{Amtsgericht Leer\\Grundbuchamt\\Postfach 11 24\par
2803 2950 Leer}
2804 \end{letter}

2805

2806 \begin{letter}{Regierungspr"asident\\Dezernat 44.II.2\\
2807 Postfach 59 07\par 4400 M"unster}
2808 \end{letter}

2809

2810 \begin{letter}{Nassauische Heimst"atte GmbH\\
2811 Abt.\ Landestreuhandstelle\\Postfach 10 29 17\par 6000 Frankfurt 1}
2812 \end{letter}

2813

2814 \begin{letter}{Volksbank Friedberg\\Hauptzweigstelle Bad Nauheim\\
2815 Aliceplatz 4\par 6350 Bad Nauheim}
2816 \end{letter}

2817

2818 \begin{letter}{VEB Ph"onix-Apparatewerk\\
2819 Absatzabteilung\\Inselstr.\ 14/20

2820

2821 DDR-7021 Leipzig}
2822 \Postvermerk{Einschreiben}
2823 \end{letter}

2824

2825 \begin{letter}{Mevrouv J. de Vries\\ Poste restante A. Cuypstraat\\
2826 Postbus 99730\\1000 NA AMSTERDAM

2827

2828 NIEDERLANDE}
2829 \end{letter}

2830

2831 \begin{letter}{Monsieur P. Dubois\\Expert en assurances\\
2832 Escalier 3, b\^atiment C\\4, rue Jean Jaur\`es

2833

2834 F-58500 CLAMECY}
2835 \end{letter}

2836

2837 \begin{letter}{Mr.\ W. Smith\\514 Kingsbridge Road\\PURLEY, SURREY\\DE
2838 1\\GROSSBRITANNIEN CRZ 4TH}
2839 \end{letter}

2840

2841 \end{document}

2842 ⟨/dinbriefold⟩

8 The documentation driver file

We have our own document class to format the L^{A}TEX 2εdocumentation.

2843 ⟨∗driver⟩

2844 \documentclass{ltxdoc}
2845 \usepackage{german}
2846 \originalTeX

We don’t want everything to appear in the index

We start with a nearly empty list and go then further and further. So we can catch all interesting macros.

2847 \DoNotIndex{\@empty,\\,\space,\@warning}
2848 \DoNotIndex{\begin,\bfseries,\bgroup,\box,\def,\edef,\egroup}
2849 \DoNotIndex{\else,\end,\endcsname,\expandafter,\fi,\gdef}
2850 \DoNotIndex{\hbox}
2851 \DoNotIndex{\hfil,\hfill,\hss,\ifx,\item,\let,\long,\message}
2852 \DoNotIndex{\nointerlineskip}
2853 \DoNotIndex{\originalTeX,\p@,\par,\parbox,\parsep,\relax}
2854 \DoNotIndex{\setlength}
2855 \DoNotIndex{\space,\string,\strut,\tmpa,\typeout,\verb}
2856 \DoNotIndex{\vbox,\vskip,\vspace,\vss}
2857 \DoNotIndex{\xdef,\z@,\z@skip}
2858 \DoNotIndex{\LaTeX,\LaTeXe}
2859 \DoNotIndex{\OnlyDescription,\PrintChanges,\PrintIndex,\RecordChanges}

We do want an index, using linenumbers

2860 \EnableCrossrefs
2861 \CodelineIndex
2862 %\DisableCrossrefs
2863 \RecordChanges
2864 %\OnlyDescription
2865 \typeout{Expect some under- and overfull boxes}

We also want the full details.

2866 \begin{document}
2867 \DocInput{dinbrief.dtx}
2868 \PrintChanges
2869 \PrintIndex
2870 \end{document}

2871 ⟨/driver⟩

End each file with \endinput.

2872 \endinput

Index

Numbers written in italic refer to the page where the corresponding entry is de-

scribed, the ones underlined to the code line of the definition, the rest to the code

lines where the entry is used.

  abovedisplayshortskip=  \subitem *+\abovedisplayshortskip+, 234, 290, 297, 307, 325, 332,342,

360, 367, 377, 395, 402, 412

abovedisplayskip=  \subitem *+\abovedisplayskip+, 232, 233, 288, 289, 295, 296,305,

306, 323, 324, 330, 331, 340, 341, 358, 359, 365, 366, 375, 376, 393, 394, 400, 401, 410, 411

Absender=  \subitem *+\Absender+, \main{2104}, 2700
address=  \subitem *+\address+, \main{1515}, 2096, 2201, 2255
addresshigh=  \subitem *+\addresshigh+, 205, \main{499}
addressstd=  \subitem *+\addressstd+, 206, \main{499}, 2198
addrhpos=  \subitem *+\addrhpos+, \main{487}, 499, 500, 710, 857
addrht=  \subitem *+\addrht+, \main{487}, 503, 749, 765, 850, 854, 1295
addroffset=  \subitem *+\addroffset+, \main{487}, 504, 748
addrvpos=  \subitem *+\addrvpos+, \main{487}, 499, 501, 505, 509, 848, 862
ADDRwd=  \subitem *+\ADDRwd+, 2218, 2226, 2246
addrwd=  \subitem *+\addrwd+, \main{487}, 502, 714, 715, 736, 739, 793, 794,1273,

1289, 1291, 1318

addtocounter=  \subitem *+\addtocounter+, 1807, 1809, 1818, 1820
addtolength=  \subitem *+\addtolength+, 437, 438, 1982
advance=  \subitem *+\advance+, 649, 656, 663, 671, 676, 681, 693, 711, 723,849–

852, 855, 856, 858, 862, 863, 884, 885, 887, 889, 891, 1051, 1061, 1096, 1259, 1279, 1328, 1339, 1346, 1350, 1360, 1362, 1374, 1393, 1607, 1847, 1854, 1858, 1864, 1868, 1872, 1899, 1931, 1960

Alph=  \subitem *+\Alph+, 1876, 1880
alph=  \subitem *+\alph+, 1874, 1878
Anlagen=  \subitem *+\Anlagen+, \main{2149}, 2727
anlagenrechts=  \subitem *+\anlagenrechts+, \main{2146}, 2726
arabic=  \subitem *+\arabic+, 1873, 1877, 1920
arraycolsep=  \subitem *+\arraycolsep+, \main{1911}
arrayrulewidth=  \subitem *+\arrayrulewidth+, \main{1913}
ast=  \subitem *+\ast+, 1886
AtEndOfClass=  \subitem *+\AtEndOfClass+, 205, 206
backaddress=  \subitem *+\backaddress+, \main{562}, 2119, 2120, 2204, 2350, 2607
backaddressrule=  \subitem *+\backaddressrule+, \main{564}

backaddressrule=\backaddressrule,

6

backaddrht=  \subitem *+\backaddrht+, \main{513}, 517, 722, 851, 855, 1278
baselineskip=  \subitem *+\baselineskip+, 1071, 1073, 1077, 1084, 1107, 1109, 1113,1120,

1143, 1145, 2377

baselinestretch=  \subitem *+\baselinestretch+, \main{1827}
begingroup=  \subitem *+\begingroup+, 569, 1444, 1614, 1661
Behandlungsvermerk=  \subitem *+\Behandlungsvermerk+, \main{2067}, 2698
belowdisplayshortskip=  \subitem *+\belowdisplayshortskip+, 235, 291, 298, 308, 326, 333,343,

361, 368, 378, 396, 403, 413

belowdisplayskip=  \subitem *+\belowdisplayskip+, 233, 289, 296, 306, 324, 331, 341,359,

366, 376, 394, 401, 411

Betreff=  \subitem *+\Betreff+, \main{2122}, 2706

Bezugszeichenzeile, 15

bf=  \subitem *+\bf+, \main{277}, 1885, 1889, 2410, 2423, 2436, 2450,2470,

2472, 2495, 2514, 2521, 2526, 2528, 2590

bigskip=  \subitem *+\bigskip+, 821, 828, 1028, 1033
bigskipamount=  \subitem *+\bigskipamount+, 2170
bottomfraction=  \subitem *+\bottomfraction+, 1948
bottomtext=  \subitem *+\bottomtext+, \main{1550}, 2209, 2340, 2600
bottomtextvpos=  \subitem *+\bottomtextvpos+, \main{539}, 541, 692, 891
boxmaxdepth=  \subitem *+\boxmaxdepth+, 1352, 1379, 1398
break=  \subitem *+\break+, 1168, 1179, 2410, 2423, 2436, 2450, 2470, 2495,2514,

2521, 2526, 2528 Briefe¿DIN 676, 4 Briefe¿dinbrief=dinbrief,

4 Briefe¿Optionen, 4 Briefkopf, 16

briefkopf=  \subitem *+\briefkopf+, 2224, 2255
bullet=  \subitem *+\bullet+, 1884
bottomnumber=  \subitem bottomnumber+, 1947
dbltopnumber=  \subitem dbltopnumber+, 1952
footnote=  \subitem footnote+, \main{1928}
labelgen=  \subitem labelgen+, 1443, 1470, 1624, 1663, 1676, \main{1678}, 1682
page=  \subitem page+, 1419
topnumber=  \subitem topnumber+, 1945
totalnumber=  \subitem totalnumber+, 1949
cal=  \subitem *+\cal+, \main{281}
catcode=  \subitem *+\catcode+, 174
cc=  \subitem *+\cc+, \main{1183}, 2156, 2158, 2159, 2385, 2536
ccname=  \subitem *+\ccname+, \main{1147}, 1185
cdot=  \subitem *+\cdot+, 1887, 2211, 2246, 2342, 2602, 2704
centeraddress=  \subitem *+\centeraddress+, \main{1508}
centering=  \subitem *+\centering+, 2242--2244

circle=  \subitem *+\circle+, 2236--2238
clabelnumber=  \subitem *+\clabelnumber+, \main{1196}, 1203, 1260, 1345, 1357,1360
ClassWarning=  \subitem *+\ClassWarning+, 269, 767, 1207, 1214, 1221, 1686, 2062,2070,

2110, 2114, 2118, 2123, 2132, 2151, 2157

cleardoublepage=  \subitem *+\cleardoublepage+, 1417
clearpage=  \subitem *+\clearpage+, 1415, 1567, 1584, 1667
closeout=  \subitem *+\closeout+, 1664, 1669
closing=  \subitem *+\closing+, \main{1043}, 2375, 2377, 2530, 2730
clubpenalty=  \subitem *+\clubpenalty+, 1605
cmd=  \subitem *+\cmd+, 1101
CodelineIndex=  \subitem *+\CodelineIndex+, 2861
columnsep=  \subitem *+\columnsep+, 463, 1348, 1350, 1377, 1396, 1607
columnseprule=  \subitem *+\columnseprule+, 464
columnwidth=  \subitem *+\columnwidth+, 1604, 1607--1609, 1612, 1926
concern=  \subitem *+\concern+, \main{1973}, 2125
csname=  \subitem *+\csname+, 26, 29, 32, 907, 1333--1335, 1751, 2227, 2263,2374,

2541, 2551, 2561, 2571, 2670

cspare=  \subitem *+\cspare+, \main{1229}, 1231, 1356, 1357, 1360, 1362,1364,

1365

date=  \subitem *+\date+, \main{1530}, 2076, 2347
datemsg=  \subitem *+\datemsg+, \main{1537}, 2044
Datum=  \subitem *+\Datum+, \main{2075}, 2699
day=  \subitem *+\day+, 1955, 1968
dblfloatpagefraction=  \subitem *+\dblfloatpagefraction+, 1954
dblfloatsep=  \subitem *+\dblfloatsep+, 471
dbltextfloatsep=  \subitem *+\dbltextfloatsep+, 472
dbltopfraction=  \subitem *+\dbltopfraction+, 1953
deadcycles=  \subitem *+\deadcycles+, 1672
DeclareOldFontCommand=  \subitem *+\DeclareOldFontCommand+, 274--280
DeclareOption=  \subitem *+\DeclareOption+, 162--165, 181, 184, 187, 190, 193, 196,201,

205, 206, 211, 212

DeclareRobustCommand=  \subitem *+\DeclareRobustCommand+, 281, 282
description=  \subitem *+\description+, \main{1888}
descriptionlabel=  \subitem *+\descriptionlabel+, \main{1888}

DIN-Brief, 4 dinbrief¿Befehle, 14, 15 dinbrief¿Uberschriftvariablen,

15

dinquote=  \subitem *+\dinquote+, \main{2127}
DisableCrossrefs=  \subitem *+\DisableCrossrefs+, 2862
disabledraftstandard=  \subitem *+\disabledraftstandard+, \main{2048}, 2615, 2627, 2639,2649
divide=  \subitem *+\divide+, 285, 1608
dlabelheight=  \subitem *+\dlabelheight+, \main{1196}, 1200, 1238, 1248, 1345,1364,

1365

dlabeltopmargin=  \subitem *+\dlabeltopmargin+, \main{1196}, 1202, 1339
dlabelwidth=  \subitem *+\dlabelwidth+, \main{1196}, 1201, 1236, 1243, 1349

do=  \subitem *+\do+, 1653, 1655
docdate=  \subitem *+\docdate+, 7
DocInput=  \subitem *+\DocInput+, 2867
document=  \subitem *+\document+, \main{1593}
documentclass=  \subitem *+\documentclass+, 2326, 2545, 2547, 2555, 2557, 2565,2567,

2575, 2577, 2674, 2676, 2844

documentstyle=  \subitem *+\documentstyle+, 2264, 2542, 2543, 2552, 2553,2562,

2563, 2572, 2573, 2671, 2672

DoNotIndex=  \subitem *+\DoNotIndex+, 2847--2859
dots=  \subitem *+\dots+, 2481, 2489, 2492, 2511
doublerulesep=  \subitem *+\doublerulesep+, \main{1914}
dp=  \subitem *+\dp+, 1051
10pt=  \subitem 10pt+, \main{160}
11pt=  \subitem 11pt+, \main{160}
12pt=  \subitem 12pt+, \main{160}
draft=  \subitem draft+, 208
final=  \subitem final+, 209
norm=  \subitem norm+, \main{160}
Einrueckung=  \subitem *+\Einrueckung+, \main{2131}, 2715
em=  \subitem *+\em+, 2516, 2518
empty=  \subitem *+\empty+, 592, 598, 617, 689, 880, 910
EnableCrossrefs=  \subitem *+\EnableCrossrefs+, 2860
enabledraftstandard=  \subitem *+\enabledraftstandard+, 1544, \main{2048}, 2611, 2623,2635,

2645

encl=  \subitem *+\encl+, \main{1183}, 2150, 2152, 2153, 2384, 2535
enclname=  \subitem *+\enclname+, \main{1147}, 1190
enclnoenclright=  \subitem *+\enclnoenclright+, \main{2143}
enclright=  \subitem *+\enclright+, \main{2140}
enddescription=  \subitem *+\enddescription+, \main{1888}
enddinquote=  \subitem *+\enddinquote+, \main{2127}
enddocument=  \subitem *+\enddocument+, \main{1658}
endgroup=  \subitem *+\endgroup+, 575, 1468, 1594, 1622, 1671
endinput=  \subitem *+\endinput+, 2872
endletter=  \subitem *+\endletter+, \main{1432}
endlist=  \subitem *+\endlist+, 1893, 1900, 1906, 1910, 2130
endquotation=  \subitem *+\endquotation+, \main{1901}
endquote=  \subitem *+\endquote+, \main{1907}
endverse=  \subitem *+\endverse+, \main{1894}
enlargethispage=  \subitem *+\enlargethispage+, 893, 917
errorcontextlines=  \subitem *+\errorcontextlines+, 2175
Etihoehe=  \subitem *+\Etihoehe+, \main{1204}, 2679
Etirand=  \subitem *+\Etirand+, \main{1204}, 2680
Etizahl=  \subitem *+\Etizahl+, \main{1204}, 2681
evensidemargin=  \subitem *+\evensidemargin+, 440, 1344, 1391
everypar=  \subitem *+\everypar+, 1637
ExecuteOptions=  \subitem *+\ExecuteOptions+, 246

                          fa=  \subitem *+\fa+, 2220, 2225, 2242, 2243
                          fb=  \subitem *+\fb+, 2221, 2244
                          fboxrule=  \subitem *+\fboxrule+, \main{1918}
                          fboxsep=  \subitem *+\fboxsep+, \main{1917}, 1918
                          fc=  \subitem *+\fc+, 2222, 2226, 2241, 2246--2250
                          Fenster=  \subitem *+\Fenster+, \main{2113}, 2703
                          filedate=  \subitem *+\filedate+, 7, 38
                          filename=  \subitem *+\filename+, 19
                          fileversion=  \subitem *+\fileversion+, 14, 37
                          floatpagefraction=  \subitem *+\floatpagefraction+, 1951
                          floatsep=  \subitem *+\floatsep+, 468
                          font=  \subitem *+\font+, 2220--2222
                          fontseries=  \subitem *+\fontseries+, 222
                          fontshape=  \subitem *+\fontshape+, 223
                          fontsize=  \subitem *+\fontsize+, 224, 2228
                          footer=  \subitem *+\footer+, \main{1517}
                          footheight=  \subitem *+\footheight+, \main{455}, 1710, 1731, 1746, 1766, 1783,1798
                          footins=  \subitem *+\footins+, \main{467}, 1916
                          footnoterule=  \subitem *+\footnoterule+, \main{1924}
                          footnotesep=  \subitem *+\footnotesep+, \main{466}
                          footnotesize=  \subitem *+\footnotesize+, \main\{304\}, \main\{339\}, \main\{374\},\underline{409}
                          footskip=  \subitem *+\footskip+, 460, 886, 887, 1712, 1733, 1748, 1768, 1785,1800
                          FS=  \subitem *+\FS+, 2257, 2350, 2607
                          currsize=  \subitem currsize+, 1634
                          global=  \subitem *+\global+, 70, 79, 499--504, 517, 518, 537, 538, 541,555,

556, 559, 560, 565, 566, 1200– 1203, 1420, 1441, 1538, 1655, 1695, 1698

                          GZA=  \subitem *+\GZA+, \main{284}, 392
                          handling=  \subitem *+\handling+, \main{1152}, 2068, 2071, 2073
                          hangafter=  \subitem *+\hangafter+, 1977
                          hangindent=  \subitem *+\hangindent+, 1942, 1976
                          headheight=  \subitem *+\headheight+, 1341, 1705, 1726, 1741, 1761, 1778, 1793

headings=headings, 18

                          headsep=  \subitem *+\headsep+, 1340, 1389, 1706, 1727, 1742, 1762, 1779,1794
                          headtoname=  \subitem *+\headtoname+, \main{1150}, 1714, 1719, 1801, 1812
                          hoffset=  \subitem *+\hoffset+, 438
                          hrule=  \subitem *+\hrule+, 653, 660, 667, 673, 678, 683, 714, 715, 739,741,

793, 794, 928, 931, 934, 939, 943, 947, 960, 976, 1006, 1240, 1256, 1271, 1273, 1287, 1291, 1316, 1318, 1926

                                                   hsize=  \subitem *+\hsize+, 1236, 1609, 1612, 1613, 1930
                                                   hskip=  \subitem *+\hskip+, 697, 751, 774, 913, 982, 1063, 1297, 1557, 1572,1586,

1987, 1991, 1995, 2009, 2013, 2042

                                                   hspace=  \subitem *+\hspace+, 652, 659, 666, 714, 733, 793, 939, 943, 947,960,

972, 1006, 1270, 1272, 1284, 1288, 1315, 1317, 1889, 2241

                                                   ht=  \subitem *+\ht+, 688, 765, 917, 950, 1050, 1589
                                                   Huge=  \subitem *+\Huge+, \main{314}, \main{349}, \main{384}, \main{419}
                                                   huge=  \subitem *+\huge+, \main{314}, \main{349}, \main{384}, \main{419}
                                                   filesw=  \subitem filesw+, 1442, 1623, 1662, 1681
                                                   letterform=  \subitem letterform+, 753, 809, 826, 834, 984, 1016, 1031, 1039,\underline{1504}
                                                   norefline=  \subitem norefline+, 803, 822, 1010, 1029, \main{1498}
                                                   refline=  \subitem refline+, 806, 1013, \main{1498}
                                                   restonecol=  \subitem restonecol+, \main{179}
                                                   toadrcenter=  \subitem toadrcenter+, 778, 786, 990, 996, 1299, 1304, \main{1502}
                                                   twocolumn=  \subitem twocolumn+, 1606
                                                   ifcase=  \subitem *+\ifcase+, 286, 1955
                                                   ifdim=  \subitem *+\ifdim+, 688, 765, 772, 886, 892, 950, 1070, 1083, 1106,1119,

1643

                                                   IfFileExists=  \subitem *+\IfFileExists+, 2177
                                                   ifnum=  \subitem *+\ifnum+, 88, 230, 237, 1161, 1260, 1327, 1356, 1357,1406,

1443, 1470, 1624, 1663, 1963, 1965

                                                   ifvmode=  \subitem *+\ifvmode+, 1488
                                                   ignorespaces=  \subitem *+\ignorespaces+, 1071, 1073, 1107, 1109, 1170, 1194, 1237,1715,

1720, 1801, 1812

                                                   immediate=  \subitem *+\immediate+, 1450, 1452, 1454, 1461, 1464, 1625--1627,1629,

1630, 1664, 1669

                                                   includegraphics=  \subitem *+\includegraphics+, 2377
                                                   input=  \subitem *+\input+, 1666, 2179, 2185, 2188, 2331, 2581, 2592
                                                   interlinepenalty=  \subitem *+\interlinepenalty+, 1421, 1484, 1496
                                                   intextsep=  \subitem *+\intextsep+, 470
                                                   it=  \subitem *+\it+, \main{278}
                                                   itemindent=  \subitem *+\itemindent+, 1891, 1896, 1897, 1903
                                                   itemsep=  \subitem *+\itemsep+, 302, 312, 337, 347, 372, 382, 407, 417, 1832,1860,

1895

                                                   itshape=  \subitem *+\itshape+, 278
                                                   ixpt=  \subitem *+\ixpt+, 294, 339, 409
                                                   aux=  \subitem aux+, \main{173}, 1621, 1629
                                                   lbl=  \subitem lbl+, \main{173}, 1625, 1666
                                                   jobname=  \subitem *+\jobname+, 175, 176
                                                   jot=  \subitem *+\jot+, \main{1922}
                                                   kern=  \subitem *+\kern+, 1925, 1927

Konfigurationsdatei, 15 Kopfzeilen, 16

C6/C5=  \subitem C6/C5+, \main{1265}
C6=  \subitem C6+, \main{1265}
deskjet=  \subitem deskjet+, \main{1265}
DL=  \subitem DL+, \main{1265}
plain=  \subitem plain+, \main{1236}
labelcount=  \subitem *+\labelcount+, 1259, 1260, 1263, 1327, 1328, 1362, 1385,\underline{1497}
labelenumi=  \subitem *+\labelenumi+, \main{1877}
labelenumii=  \subitem *+\labelenumii+, \main{1877}
labelenumiii=  \subitem *+\labelenumiii+, \main{1877}
labelenumiv=  \subitem *+\labelenumiv+, \main{1877}
labelitemi=  \subitem *+\labelitemi+, \main{1884}
labelitemii=  \subitem *+\labelitemii+, \main{1884}
labelitemiii=  \subitem *+\labelitemiii+, \main{1884}
labelitemiv=  \subitem *+\labelitemiv+, \main{1884}
labelsep=  \subitem *+\labelsep+, \main{1846}, 1854, 1858, 1864, 1868, 1872,1889,

1915

labelstyle=  \subitem *+\labelstyle+, \main{1232}, 2334
labelwidth=  \subitem *+\labelwidth+, \main{1846}, 1853, 1854, 1857, 1858,1863,

1864, 1867, 1868, 1871, 1872, 1891

LARGE=  \subitem *+\LARGE+, \main{314}, \main{349}, \main{384}, \main{419}
Large=  \subitem *+\Large+, \main{314}, \main{349}, \main{384}, \main{419}
large=  \subitem *+\large+, \main{314}, \main{349}, \main{384}, \main{419}
leavevmode=  \subitem *+\leavevmode+, 592, 598, 617, 757, 1056, 1075, 1111, 1972,2098
leftmargin=  \subitem *+\leftmargin+, 299, 309, 334, 344, 369, 379, 404, 414,\underline{1839},

1852, 1856, 1862, 1866, 1870, 1891, 1898, 1899, 1904, 1908, 2128

leftmargini=  \subitem *+\leftmargini+, 299, 309, 334, 344, 369, 379, 404, 414,\underline{1839},

1846

leftmarginii=  \subitem *+\leftmarginii+, \main{1839}, 1852, 1853
leftmarginiii=  \subitem *+\leftmarginiii+, \main{1839}, 1856, 1857
leftmarginiv=  \subitem *+\leftmarginiv+, \main{1839}, 1862, 1863
leftmarginv=  \subitem *+\leftmarginv+, \main{1839}, 1866, 1867
leftmarginvi=  \subitem *+\leftmarginvi+, \main{1839}, 1870, 1871
leftmark=  \subitem *+\leftmark+, 1788
letter=  \subitem *+\letter+, \main{1404, 1405}
letterform=  \subitem *+\letterform+, \main{1504}
lfldmarkvpos=  \subitem *+\lfldmarkvpos+, 508, 512, \main{519}, 538, 662, 680
lineskip=  \subitem *+\lineskip+, 1825
linewidth=  \subitem *+\linewidth+, 1613
list=  \subitem *+\list+, 1891, 1895, 1902, 1908, 2128
listI=  \subitem *+\listI+, 362
listi=  \subitem *+\listi+, 362

listparindent=  \subitem *+\listparindent+, 1897, 1902, 1903
deskjet=  \subitem deskjet+, \main{1372}
plain=  \subitem plain+, \main{1337}
state=  \subitem state+, \main{1402}
headheight=  \subitem headheight+, \main{445}, 1705, 1778, 1793
headsep=  \subitem headsep+, \main{445}, 1706, 1779, 1794
textheight=  \subitem textheight+, \main{445}
headheight=  \subitem headheight+, \main{445}, 1726, 1741, 1761
headsep=  \subitem headsep+, \main{445}, 1727, 1742, 1762
textheight=  \subitem textheight+, \main{445}
th=  \subitem th+, 1935, 1939, 1944
makeatletter=  \subitem *+\makeatletter+, 1617, 1665, 2180
makeatother=  \subitem *+\makeatother+, 2178
makebox=  \subitem *+\makebox+, 2210, 2341, 2601
makelabel=  \subitem *+\makelabel+, 1892
makelabels=  \subitem *+\makelabels+, \main{1674}, 1684, 1687, 2333, 2682
marginparpush=  \subitem *+\marginparpush+, 443
marginparsep=  \subitem *+\marginparsep+, 442
marginparwidth=  \subitem *+\marginparwidth+, 441
mathbf=  \subitem *+\mathbf+, 277
mathcal=  \subitem *+\mathcal+, 281
mathit=  \subitem *+\mathit+, 278
mathnormal=  \subitem *+\mathnormal+, 282
mathrm=  \subitem *+\mathrm+, 274
mathsf=  \subitem *+\mathsf+, 275
mathtt=  \subitem *+\mathtt+, 276
mbox=  \subitem *+\mbox+, 1358
meaning=  \subitem *+\meaning+, 107, 122, 123
medskip=  \subitem *+\medskip+, 1132
medskipamount=  \subitem *+\medskipamount+, 759, 1456, 1465, 2169, 2355, 2589
mit=  \subitem *+\mit+, \main{281}
mlabel=  \subitem *+\mlabel+, \main{1336}, 1450, 1453, 1454, 1461, 1464
month=  \subitem *+\month+, 1955, 1969
moveright=  \subitem *+\moveright+, 748, 859

myaddress=\myaddress, 16

NeedsTeXFormat=  \subitem *+\NeedsTeXFormat+, 56
newbox=  \subitem *+\newbox+, 908, 1550, 1973
newcommand=  \subitem *+\newcommand+, 161, 2583
newcount=  \subitem *+\newcount+, 1199, 1229, 1497, 1678, 1961
newcounter=  \subitem *+\newcounter+, 1402, 1404
newdimen=  \subitem *+\newdimen+, 61, 62, 284, 445--450, 485, 487--492,513,

514, 519– 525, 539, 542, 544, 546, 548– 550, 636, 1196–1198, 1980

                          newif=  \subitem *+\newif+, 20, 22, 24, 179, 554, 558, 564, 1234, 1498,1500,

1502, 1504, 1702, 2138

                          newlength=  \subitem *+\newlength+, 2217, 2218
                          newline=  \subitem *+\newline+, 1084, 1193, 1986, 1990, 1994, 2002, 2008,2012,

2018, 2045

                          newpage=  \subitem *+\newpage+, 1262, 1331, 1359, 1660
                          newwrite=  \subitem *+\newwrite+, 178
                          next=  \subitem *+\next+, 578, 583, 585
                          nobackaddressrule=  \subitem *+\nobackaddressrule+, \main{564}, 2199

nobackaddressrule=\nobackaddressrule,

6

                          nobreak=  \subitem *+\nobreak+, 874, 1042, 1052, 1367, 1485, 1488, 1489
                          noenclright=  \subitem *+\noenclright+, 2143
                          noexpand=  \subitem *+\noexpand+, 104, 119, 147, 155, 1425, 1655
                          noindent=  \subitem *+\noindent+, 1163, 1193, 1934, 1938, 1941
                          nolabels=  \subitem *+\nolabels+, \main{1691}
                          noletterform=  \subitem *+\noletterform+, \main{1504}
                          normaladdress=  \subitem *+\normaladdress+, \main{1509}
                          normalfont=  \subitem *+\normalfont+, 274--280
                          normallineskip=  \subitem *+\normallineskip+, 1826
                          normalsize=  \subitem *+\normalsize+, 231, 287, 322, 357, 392, \main{427}, 431,434,

2165

                          nowindowrules=  \subitem *+\nowindowrules+, \main{554}, 2200

nowindowrules=\nowindowrules,

6

                          nowindowtics=  \subitem *+\nowindowtics+, \main{558}

nowindowtics=\nowindowtics,

6

                          ntoday=  \subitem *+\ntoday+, \main{1959}
                          number=  \subitem *+\number+, 1955, 1958, 1960, 1963, 1965, 1966, 1968, 1969
                          oddsidemargin=  \subitem *+\oddsidemargin+, 439, 1343, 1390
                          offlabels=  \subitem *+\offlabels+, \main{1694}
                          oldopening=  \subitem *+\oldopening+, \main{905}
                          line=  \subitem line+, 270
                          onecolumn=  \subitem *+\onecolumn+, 2173
                          oneletter=  \subitem *+\oneletter+, 2583, 2613, 2617, 2625, 2629, 2637, 2641,2647,

2651

                          onlabels=  \subitem *+\onlabels+, 1471, \main{1697}
                          opening=  \subitem *+\opening+, \main{876}, 2360, 2396, 2708
                          openout=  \subitem *+\openout+, 1625, 1629

Optionen der dinbrief-Klasse=Optionen

                                der dinbrief-

Klasse, 4

                          or=  \subitem *+\or+, 321, 356, 391, 1955--1957
                          overfullrule=  \subitem *+\overfullrule+, 208, 209
                          enumii=  \subitem enumii+, \main{1881}

enumiii=  \subitem enumiii+, \main{1881}
enumiv=  \subitem enumiv+, \main{1881}
pagebreak=  \subitem *+\pagebreak+, 1437
pagename=  \subitem *+\pagename+, \main{1150}, 1716, 1721, 1802, 1813
pagenumbering=  \subitem *+\pagenumbering+, 2172
pagestyle=  \subitem *+\pagestyle+, 1386, 2171, 2336, 2609, 2619, 2631, 2643,2684

pagestyle=\pagestyle, 16

paperheight=  \subitem *+\paperheight+, 182, 185, 188, 191, 194, 197, 529
paperwidth=  \subitem *+\paperwidth+, 183, 186, 189, 192, 195, 198
parindent=  \subitem *+\parindent+, 1353, \main{1828}, 1934, 1937
parshape=  \subitem *+\parshape+, 1932
parskip=  \subitem *+\parskip+, 1053, 1064, 1068, 1097, 1354, \main{1828},2168–

2170

partone=  \subitem *+\partone+, 6, 9, 13, 16
partopsep=  \subitem *+\partopsep+, 1831
penalty=  \subitem *+\penalty+, 1493, 1496
perfmarkvpos=  \subitem *+\perfmarkvpos+, \main{519}, 655, 675
phone=  \subitem *+\phone+, \main{1522}, 2206, 2256
phonemsg=  \subitem *+\phonemsg+, \main{1529}, 1993, 2015
place=  \subitem *+\place+, \main{1520}, 2205, 2254

plain=plain, 16

postremark=  \subitem *+\postremark+, \main{1156}, 2060, 2063, 2065
Postvermerk=  \subitem *+\Postvermerk+, \main{2059}, 2697, 2743, 2750, 2756, 2763,2770,

2799, 2822

table=  \subitem table+, 1633
ProcessOptions=  \subitem *+\ProcessOptions+, 249
protect=  \subitem *+\protect+, 64, 73, 85, 94, 98, 104, 119, 147, 155, 1425,1445,

1447

ProvidesClass=  \subitem *+\ProvidesClass+, 57
contheadings=  \subitem contheadings+, 1792, \main{1792}
empty=  \subitem empty+, \main{1725}
headings=  \subitem headings+, \main{1704}
myheadings=  \subitem myheadings+, 1777, \main{1777}
plain=  \subitem plain+, \main{1760}
ps=  \subitem *+\ps+, \main{1193}, 2381, 2532, 2731
psfirstpagehook=  \subitem *+\psfirstpagehook+, 1753, \main{1757}
psname=  \subitem *+\psname+, \main{1147}, 1193
put=  \subitem *+\put+, 2236--2238
quotation=  \subitem *+\quotation+, \main{1901}
quote=  \subitem *+\quote+, \main{1907}
raggedbottom=  \subitem *+\raggedbottom+, 465
raggedleft=  \subitem *+\raggedleft+, 811, 813, 1018, 1020
raggedright=  \subitem *+\raggedright+, 642, 698, 761, 914, 922, 988, 1069, 1098,1105,

1135, 1298, 1558, 1573, 1587

raise=  \subitem *+\raise+, 1972
raisebox=  \subitem *+\raisebox+, 2232
RCSdate=  \subitem *+\RCSdate+, 2, 8

                          RCSrevision=  \subitem *+\RCSrevision+, 3, 15
                          reflinevpos=  \subitem *+\reflinevpos+, 506, 510, \main{513}, 518, 861
                          refstepcounter=  \subitem *+\refstepcounter+, 1418
                          renewcommand=  \subitem *+\renewcommand+, 162--165
                          Retouradresse=  \subitem *+\Retouradresse+, \main{2117}, 2704
                          Retourlabel=  \subitem *+\Retourlabel+, \main{2108}, 2702
                          returnaddress=  \subitem *+\returnaddress+, \main{1519}
                          rightmargin=  \subitem *+\rightmargin+, 1898, 1904, 1908
                          rightmark=  \subitem *+\rightmark+, 1786
                          rm=  \subitem *+\rm+, 228, \main{274}
                          rmfamily=  \subitem *+\rmfamily+, 274
                          roman=  \subitem *+\roman+, 1875, 1879
                          rule=  \subitem *+\rule+, 651, 658, 665, 672, 677, 682, 695, 927, 930, 933,938,

942, 946, 952, 1084, 1120, 1365, 1449, 1998, 2258

                          sc=  \subitem *+\sc+, \main{278}
                          scriptsize=  \subitem *+\scriptsize+, 238, 240, \main\{314\}, \main\{349\},\underline{384},

\underline{419}

                          scshape=  \subitem *+\scshape+, 280
                          selectfont=  \subitem *+\selectfont+, 215, 221, 2228

selectlanguage=\selectlanguage,

18 Serienbriefe, 18

                          series=  \subitem *+\series+, 216
                          setaddressheight=  \subitem *+\setaddressheight+, \main{499}

setaddressheight=\setaddressheight,

7

                          setaddressllcorner=  \subitem *+\setaddressllcorner+, \main{499}, 2197

setaddressllcorner=\setaddressllcorner,

6

                          setaddressllhpos=  \subitem *+\setaddressllhpos+, \main{499}, 2195

setaddressllhpos=\setaddressllhpos,

6

                          setaddressllvpos=  \subitem *+\setaddressllvpos+, \main{499}, 2196

setaddressllvpos=\setaddressllvpos,

6

                          setaddressoffset=  \subitem *+\setaddressoffset+, \main{499}
                          setaddressoffset=\setaddressoffset,

7

                          setaddresswidth=  \subitem *+\setaddresswidth+, \main{499}

setaddresswidth=\setaddresswidth,

7

                          setbackaddressheight=  \subitem *+\setbackaddressheight+, \main{517}

setbackaddressheight=\setbackaddressheight,

7

                          setbottomtexttop=  \subitem *+\setbottomtexttop+, \main{541}, 2208

setbottomtexttop=\setbottomtexttop,

7

                                                   setbox=  \subitem *+\setbox+, 752, 770, 911, 913, 1049, 1236, 1265, 1551,1557,

1572, 1586, 1975

                                                   setcounter=  \subitem *+\setcounter+, 877, 1048, 1403, 1412, 1433
                                                   setlabelheight=  \subitem *+\setlabelheight+, \main{1200}, 1205, 1208, 1209, 1225
                                                   setlabelnumber=  \subitem *+\setlabelnumber+, \main{1200}, 1219, 1222, 1223, 1228
                                                   setlabeltopmargin=  \subitem *+\setlabeltopmargin+, \main{1200}, 1212, 1215, 1216, 1226
                                                   setlabelwidth=  \subitem *+\setlabelwidth+, \main{1200}, 1227
                                                   setlowerfoldmarkvpos=  \subitem *+\setlowerfoldmarkvpos+, \main{537}

setlowerfoldmarkvpos=\setlowerfoldmarkvpos,

7

                                                   setreflinetop=  \subitem *+\setreflinetop+, \main{517}
                                                   setreflinetop=\setreflinetop,

7

                                                   settowidth=  \subitem *+\settowidth+, 2225, 2226
                                                   setupperfoldmarkvpos=  \subitem *+\setupperfoldmarkvpos+, \main{537}

setupperfoldmarkvpos=\setupperfoldmarkvpos,

7

                                                   sf=  \subitem *+\sf+, \main{274}, 2210, 2341, 2601
                                                   sffamily=  \subitem *+\sffamily+, 275
                                                   shape=  \subitem *+\shape+, 217
                                                   sign=  \subitem *+\sign+, \main{1532}
                                                   signature=  \subitem *+\signature+, \main{1510}, 2207, 2253, 2707
                                                   signmsg=  \subitem *+\signmsg+, \main{1534}, 1989, 2011, 2049, 2054
                                                   signmsgnew=  \subitem *+\signmsgnew+, \main{1534}, 2049
                                                   signmsgold=  \subitem *+\signmsgold+, \main{1534}, 2054
                                                   size=  \subitem *+\size+, 218
                                                   skip=  \subitem *+\skip+, 467, 1916
                                                   sl=  \subitem *+\sl+, \main{278}, 1714, 1719, 1786, 1788, 1801, 1812
                                                   slshape=  \subitem *+\slshape+, 279
                                                   small=  \subitem *+\small+, \main{294}, \main{329}, \main{364}, \main{399},2210,

2341, 2601

                                                   smallskipamount=  \subitem *+\smallskipamount+, 2168
                                                   spare=  \subitem *+\spare+, \main{1231}, 2683
                                                   startbreaks=  \subitem *+\startbreaks+, \main{1495}
                                                   startlabels=  \subitem *+\startlabels+, \main{1383}, 1627
                                                   stdaddress=  \subitem *+\stdaddress+, \main{2094}, 2105, 2106
                                                   stop=  \subitem *+\stop+, 7, 9, 14, 16, 573, 574, 577, 587, 590, 594, 596,601,

604, 607, 609, 613, 616, 618, 620, 621, 624

                                                   stopbreaks=  \subitem *+\stopbreaks+, 1054, \main{1484}
                                                   stopletter=  \subitem *+\stopletter+, \main{1195}, 1435
                                                   stripone=  \subitem *+\stripone+, 6, 8, 13, 15
                                                   striptwo=  \subitem *+\striptwo+, 7, 9, 14, 16
                                                   subject=  \subitem *+\subject+, \main{1973}, 2124, 2358, 2394
                                                   tabbingsep=  \subitem *+\tabbingsep+, \main{1915}
                                                   tabcolsep=  \subitem *+\tabcolsep+, \main{1912}

textfloatsep=  \subitem *+\textfloatsep+, 469
textfraction=  \subitem *+\textfraction+, 1950
textheight=  \subitem *+\textheight+, 461, 883, 1345--1347, 1373--1375,1392–

1394, 1601–1603

textwidth=  \subitem *+\textwidth+, 462, 1059, 1095, 1349, 1350, 1376, 1395,1604,

1981, 2005, 2099, 2100, 2210, 2341, 2601

the=  \subitem *+\the+, 765, 779, 1301, 1962, 1970
theenumi=  \subitem *+\theenumi+, \main{1873}, 1881, 1882
theenumii=  \subitem *+\theenumii+, \main{1873}, 1882
theenumiii=  \subitem *+\theenumiii+, \main{1873}, 1883
theenumiv=  \subitem *+\theenumiv+, \main{1873}
theequation=  \subitem *+\theequation+, \main{1920}, 1923
thepage=  \subitem *+\thepage+, 1716, 1721, 1771, 1802, 1808, 1813, 1819
thicklines=  \subitem *+\thicklines+, 2235
thispagestyle=  \subitem *+\thispagestyle+, 878, 905, 1416
tiny=  \subitem *+\tiny+, \main{314}, \main{349}, \main{384}, \main{419}
toaddress=  \subitem *+\toaddress+, 988, 1451, 1478, 1482, 1483
today=  \subitem *+\today+, 1531, \main{1955}
toname=  \subitem *+\toname+, 631, 634, 988, 1450, 1482, 1715, 1720, 1801,1812
topfraction=  \subitem *+\topfraction+, 1946
topmargin=  \subitem *+\topmargin+, 444, 884, 1338, 1339, 1388, 2349
topsep=  \subitem *+\topsep+, 300, 310, 335, 345, 370, 380, 405, 415, 1830,1859,

1860

topskip=  \subitem *+\topskip+, 1342, 1643, 1644
tracingmacros=  \subitem *+\tracingmacros+, 570
tt=  \subitem *+\tt+, \main{274}
ttfamily=  \subitem *+\ttfamily+, 276
=  \subitem +, 1608
twocolumn=  \subitem *+\twocolumn+, 1355, 1380, 1399
ufldmarkvpos=  \subitem *+\ufldmarkvpos+, 507, 511, \main{519}, 537, 648, 670
UKAwd=  \subitem *+\UKAwd+, 2217, 2225, 2242
unhbox=  \subitem *+\unhbox+, 1978
unhcopy=  \subitem *+\unhcopy+, 696, 953
unitlength=  \subitem *+\unitlength+, 2233
unskip=  \subitem *+\unskip+, 1100
up=  \subitem *+\up+, 1972
usepackage=  \subitem *+\usepackage+, 2327, 2328, 2546, 2556, 2566, 2576, 2675,2845
vadjust=  \subitem *+\vadjust+, 1489, 1493
verse=  \subitem *+\verse+, \main{1894}
Verteiler=  \subitem *+\Verteiler+, \main{2155}, 2728
vfill=  \subitem *+\vfill+, 726, 966, 1262, 1330, 1364
viiipt=  \subitem *+\viiipt+, 240, 304, 349, 384, 419
viipt=  \subitem *+\viipt+, 238, 314
vipt=  \subitem *+\vipt+, 350, 385, 420
voffset=  \subitem *+\voffset+, 437
vphantom=  \subitem *+\vphantom+, 1998
vpt=  \subitem *+\vpt+, 315

                          vrule=  \subitem *+\vrule+, 1246, 1250
                          vsize=  \subitem *+\vsize+, 1347, 1375, 1394, 1603
                          wd=  \subitem *+\wd+, 1976
                          windowrules=  \subitem *+\windowrules+, \main{554}

windowrules=\windowrules,

6

                          windowtics=  \subitem *+\windowtics+, \main{558}

windowtics=\windowtics,

6

                          write=  \subitem *+\write+, 1450, 1452, 1454, 1461, 1464, 1626, 1627, 1630
                          writer=  \subitem *+\writer+, \main{1541}, 2621, 2633
                          writermsg=  \subitem *+\writermsg+, \main{1548}, 2016
                          xiipt=  \subitem *+\xiipt+, 231, 316, 351, 357, 421
                          xipt=  \subitem *+\xipt+, 322, 364, 392
                          xivpt=  \subitem *+\xivpt+, 317, 352, 386, 422
                          xpt=  \subitem *+\xpt+, 287, 329, 374, 399
                          xviipt=  \subitem *+\xviipt+, 318, 353, 387, 423
                          xxpt=  \subitem *+\xxpt+, 319, 354, 388, 424
                          xxvpt=  \subitem *+\xxvpt+, 320, 355, 389, 425
                          year=  \subitem *+\year+, 1958, 1959, 1962
                          yearcnt=  \subitem *+\yearcnt+, 1959--1962, 1970
                          yourmail=  \subitem *+\yourmail+, \main{1538}, 2357, 2393
                          yourmailmsg=  \subitem *+\yourmailmsg+, \main{1540}, 1985, 2007