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 by Klaus Dieter Braune, Richard Gussmann

October 21, 1997

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 Befehle in der dinbrief-Klasse 4 2.1 Aus der letter-Klasse übernommene Befehle . . . . . . . . . . . . 4 2.2 Zusätzliche Befehle im DIN-Brief . . . . . . . . . . . . . . . . . . . 4 2.3 Befehlsreferenz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 2.4 Bezugszeichenzeile . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 2.5 Briefkopf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 2.6 Kopfzeilen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 2.7 Briefe in englischer oder französischer Sprache . . . . . . . . . . . . 13 2.8 Serienbriefe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 2.9 Einige Regeln für das Briefeschreiben . . . . . . . . . . . . . . . . . 14 2.10 Adreß–Etiketten . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 2.11 Kompatibilität zu Rainer Sengerlings ‘dinbrief’ . . . . . . . . . . . 17

3 Documentation 21 3.1 The class/style file ‘dinbrief’ . . . . . . . . . . . . . . . . . . . . . . 21 3.2 Get system information . . . . . . . . . . . . . . . . . . . . . . . . 21 3.3 Print informations about this style . . . . . . . . . . . . . . . . . . 22

3.3.1 Print the banner . . . . . . . . . . . . . . . . . . . . . . . . 22 3.3.2 Print system information . . . . . . . . . . . . . . . . . . . 22

3.4 L^{A}TEX 2ε version control . . . . . . . . . . . . . . . . . . . . . . . . 22 3.5 Initial code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

3.5.1 temporary variables . . . . . . . . . . . . . . . . . . . . . . 23 3.5.2 dinbrief programming environment . . . . . . . . . . . . . 23 3.5.3 Choosing the type size . . . . . . . . . . . . . . . . . . . . . 26

3.6 Defining the jobname . . . . . . . . . . . . . . . . . . . . . . . . . . 27 3.7 Stuff from original classes . . . . . . . . . . . . . . . . . . . . . . . 27 3.8 Setting paper sizes . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 3.9 Two-side or one-side printing . . . . . . . . . . . . . . . . . . . . . 28 3.10 Draft option . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 3.11 Twocolumn printing . . . . . . . . . . . . . . . . . . . . . . . . . . 28 3.12 Defining internal font selection commands . . . . . . . . . . . . . . 28 3.13 Executing options . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 3.14 Loading Packages . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 3.15 Error messages in this class/style . . . . . . . . . . . . . . . . . . . 30

3.15.1 General error message . . . . . . . . . . . . . . . . . . . . . 30 3.15.2 Warning within L^{A}TEX 2ε for forbidden commands . . . . . 30 3.15.3 Modelling \ClassWarning in L^{A}TEX 2.09 . . . . . . . . . . . 30

3.16 Font changing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30

3.16.1 Defining old font changing commands for L^{A}TEX 2ε . . . . . 30 3.17 A special distance . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 3.18 Fontsizes und other parameters . . . . . . . . . . . . . . . . . . . . 31 3.19 Document layout . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35

3.19.1 Rules above and below the receiver’s window . . . . . . . . 37 3.19.2 Lines for splitting letters . . . . . . . . . . . . . . . . . . . . 37 3.19.3 \backaddress API function . . . . . . . . . . . . . . . . . . 37 3.19.4 Macros for splitting the receiver’s address . . . . . . . . . . 38 3.19.5 The \opening-Procedure . . . . . . . . . . . . . . . . . . . 40

3.20 Initialization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50

3.20.1 Words . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 3.21 More letter macros . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 3.22 Styles for the labels . . . . . . . . . . . . . . . . . . . . . . . . . . . 51

3.22.1 Labels with different sizes . . . . . . . . . . . . . . . . . . . 51 3.22.2 Defining the standard dinbrief labels . . . . . . . . . . . . . 52

3.23 Empty labels within labelstyle plain . . . . . . . . . . . . . . . . . 52

3.23.1 different labelstyles . . . . . . . . . . . . . . . . . . . . . . . 53 3.24 Processing of a single letter . . . . . . . . . . . . . . . . . . . . . . 57

3.24.1 Controlling the generation of labels . . . . . . . . . . . . . . 65 3.25 Fonts — paragraphing . . . . . . . . . . . . . . . . . . . . . . . . . 69 3.26 Lists . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70

3.26.1 General list parameters . . . . . . . . . . . . . . . . . . . . 70 3.26.2 Enumerate . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 3.26.3 Itemize . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 3.26.4 Description . . . . . . . . . . . . . . . . . . . . . . . . . . . 72 3.26.5 Verse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72 3.26.6 Quotation . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72 3.26.7 Quote . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72

3.27 Setting parameters for existing environments . . . . . . . . . . . . 73 3.27.1 Array and tabular . . . . . . . . . . . . . . . . . . . . . . . 73 3.27.2 Tabbing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73 3.27.3 Minipage . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73 3.27.4 Framed boxes . . . . . . . . . . . . . . . . . . . . . . . . . . 73 3.27.5 Equation and eqnarray . . . . . . . . . . . . . . . . . . . . . 74

3.28 Footnotes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74 3.29 The current date . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 3.30 Old dinbrief commands . . . . . . . . . . . . . . . . . . . . . . . . 78

3.30.1 dinquote . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80 3.31 More initializations . . . . . . . . . . . . . . . . . . . . . . . . . . . 81 3.32 The short class file/the short style file . . . . . . . . . . . . . . . . 81

4 An example letter 82 4.1 The letter head . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82 4.2 The letter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83

5 Testing the class/style 84

6 Example for using the old dinbrief API 90

7 The documentation driver file 93

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 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).

2.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.

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.

2.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.

\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.

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.

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

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.

2.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{⟨Grußformel⟩ } Der Befehl \closing setzt die Grußformel und nach drei Leerzeilen die maschinenschrifliche Wiederholung der Unterschrift.

\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.

\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.

\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.

2.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.

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

2.5 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.

Tabelle 1: Zusammenfassung der Dinbrief-Befehle:

\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{⟨Grußformel⟩}

\centeraddress
\normaladdress

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

\makelabels

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

\nowindowrules
\windowrules
\nowindowtics
\windowtics
\disabledraftstandard
\enabledraftstandard

\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⟩}

\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 Tabelle 2: Ü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}

2.6 Kopfzeilen

Es stehen verschiedene Kopfzeilen zur Verfügung die über die Option \pagestyle{...} ausgewählt werden können. Bei plain wird eine Seitennumerierung 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.

2.7 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.

2.8 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.

2.9 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.

2.10 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.

2.11 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.

3 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: 1996/10/29 20:50:05 $}
 3 \def\RCSrevision{$Revision: 1.66 $}
 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 % ^^A \def\fileversion{0.94.1}
20 % ^^A \def\filedate{1994/08/15}
21 \def\filename{dinbrief.dtx}
22 % ^^A \def\docdate {1994/08/15}

3.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)

3.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.

23 \newif\ifka@db@ltxtwoe
24 \ka@db@ltxtwoefalse
25 \newif\ifka@db@nfss
26 \ka@db@nfssfalse

27 \newif\ifka@db@nfsstwo
28 \ka@db@nfsstwofalse

Then we check what is present on the system.

29 \expandafter\ifx\csname documentclass\endcsname\relax\else
30  \ka@db@ltxtwoetrue
31 \fi
32 \expandafter\ifx\csname size\endcsname\relax\else
33  \ka@db@nfsstrue
34 \fi
35 \expandafter\ifx\csname fontsize\endcsname\relax\else
36  \ka@db@nfsstwotrue
37 \fi

3.3 Print informations about this style

3.3.1 Print the banner

38 \typeout{}
39 \typeout{Document Class/Style 'dinbrief' - %
40  (Preliminary) Version \fileversion}
41 \typeout{University of Karlsruhe - \filedate}
42 \typeout{}

3.3.2 Print system information

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

3.4 L^{A}TEX 2ε version control

58 \ifka@db@ltxtwoe
59 \NeedsTeXFormat{LaTeX2e}[1994/12/01]
60 \ProvidesClass{dinbrief}[1995/07/01 LaTeX2e class]
61 \fi

3.5 Initial code

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

3.5.1 temporary variables

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

62 \newdimen\ka@db@tmpdima

3.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 \kd@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{}

3.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

3.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

3.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

3.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  {\setlength\paperheight {297mm}%
183  \setlength\paperwidth  {210mm}}
184 \DeclareOption{a5paper}
185  {\setlength\paperheight {210mm}%
186  \setlength\paperwidth  {148mm}}
187 \DeclareOption{b5paper}
188  {\setlength\paperheight {250mm}%
189  \setlength\paperwidth  {176mm}}
190 \DeclareOption{letterpaper}
191  {\setlength\paperheight {11in}%
192  \setlength\paperwidth  {8.5in}}
193 \DeclareOption{legalpaper}
194  {\setlength\paperheight {14in}%
195  \setlength\paperwidth  {8.5in}}
196 \DeclareOption{executivepaper}
197  {\setlength\paperheight {10.5in}%
198  \setlength\paperwidth  {7.25in}}
199 \fi

3.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

3.10 Draft option

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

204 \def\ds@draft{\overfullrule 5pt}
205 \def\ds@final{\overfullrule 0pt}

3.11 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.

206 \ifka@db@ltxtwoe
207 \DeclareOption{onecolumn}{\@twocolumnfalse}
208 \DeclareOption{twocolumn}{\@twocolumntrue}
209 \fi

3.12 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.

210 \ifka@db@nfss
211  \let\ka@db@selectfont\selectfont
212  \let\ka@db@fontseries\series
213  \let\ka@db@fontshape\shape
214  \let\ka@db@fontsize\size
215 \else
216  \ifka@db@nfsstwo
217  \let\ka@db@selectfont\selectfont
218  \let\ka@db@fontseries\fontseries

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

3.13 Executing options

Here we execute the default options to initialize certain variables.

241 \ifka@db@ltxtwoe
242 \ExecuteOptions{a4paper,10pt,onecolumn,final}
243 \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.

244 \ifka@db@ltxtwoe
245  \ProcessOptions
246 \else
247  \@options
248 \fi

3.14 Loading Packages

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

3.15 Error messages in this class/style

3.15.1 General error message

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

256 }% 257 }

3.15.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
258 \ifka@db@ltxtwoe
259 \def\ka@db@warning#1{%
260  \@@warning{The control sequence \string#1\space should %
261  not be used in LaTeX 2e}%

262 }

263 \fi

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

264 \ifka@db@ltxtwoe\else
265 \def\ClassWarning#1#2{%
266  \typeout{Style #1 Warning: #2\on@line.}%

267 }

268 \fi

3.16 Font changing

3.16.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).

269 \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:

270 \DeclareOldFontCommand{\rm}{\normalfont\rmfamily}{\mathrm}
271 \DeclareOldFontCommand{\sf}{\normalfont\sffamily}{\mathsf}
272 \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.

273 \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.

274 \DeclareOldFontCommand{\it}{\normalfont\itshape}{\mathit}
275 \DeclareOldFontCommand{\sl}{\normalfont\slshape}{\@nomath\sl}
276 \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.

277 \DeclareRobustCommand*{\cal}{\@fontswitch{\relax}{\mathcal}}
278 \DeclareRobustCommand*{\mit}{\@fontswitch{\relax}{\mathnormal}}

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

279 \fi

3.17 A special distance

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

280 \newdimen\GZA
281 \GZA=1in \divide\GZA by 6

3.18 Fontsizes und other parameters

282 \ifcase \@ptsize\relax
\@normalsize
283 \def\@normalsize{\@setsize\normalsize{12pt}\xpt\@xpt

284 \abovedisplayskip 10\p@ plus2\p@ minus5\p@
285 \belowdisplayskip \abovedisplayskip
286 \abovedisplayshortskip \z@ plus3\p@
287 \belowdisplayshortskip 6\p@ plus3\p@ minus3\p@
288 \let\@listi\@listI

289 }%

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

299 }%

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

309 }%

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

310 \def\scriptsize{\@setsize\scriptsize{8pt}\viipt\@viipt}
311 \def\tiny{\@setsize\tiny{6pt}\vpt\@vpt}
312 \def\large{\@setsize\large{14pt}\xiipt\@xiipt}
313 \def\Large{\@setsize\Large{18pt}\xivpt\@xivpt}
314 \def\LARGE{\@setsize\LARGE{22pt}\xviipt\@xviipt}
315 \def\huge{\@setsize\huge{25pt}\xxpt\@xxpt}
316 \def\Huge{\@setsize\Huge{30pt}\xxvpt\@xxvpt}
317 \or % 11 pt option
\@normalsize
318 \def\@normalsize{\@setsize\normalsize{13.6pt}\xipt\@xipt
319 \abovedisplayskip 11\p@ plus3\p@ minus6\p@
320 \belowdisplayskip \abovedisplayskip
321 \abovedisplayshortskip \z@ plus3\p@
322 \belowdisplayshortskip 6.5\p@ plus3.5\p@ minus3\p@
323 \let\@listi\@listI

324 }%

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

334 }%

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

344 }%

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

345 \def\scriptsize{\@setsize\scriptsize{9.5pt}\viiipt\@viiipt}
346 \def\tiny{\@setsize\tiny{7pt}\vipt\@vipt}
347 \def\large{\@setsize\large{14pt}\xiipt\@xiipt}
348 \def\Large{\@setsize\Large{18pt}\xivpt\@xivpt}
349 \def\LARGE{\@setsize\LARGE{22pt}\xviipt\@xviipt}
350 \def\huge{\@setsize\huge{25pt}\xxpt\@xxpt}
351 \def\Huge{\@setsize\Huge{30pt}\xxvpt\@xxvpt}
352 \or % 12pt option
\@normalsize
353 \def\@normalsize{\@setsize\normalsize{15pt}\xiipt\@xiipt
354 \abovedisplayskip 12\p@ plus3\p@ minus7\p@
355 \belowdisplayskip \abovedisplayskip
356 \abovedisplayshortskip \z@ plus3\p@
357 \belowdisplayshortskip 6.5\p@ plus3.5\p@ minus3\p@
358 \let\listi\listI

359 }%

\small
360 \def\small{\@setsize\small{13.6pt}\xipt\@xipt
361 \abovedisplayskip 11\p@ plus3\p@ minus6\p@
362 \belowdisplayskip \abovedisplayskip
363 \abovedisplayshortskip \z@ plus3\p@

364 \belowdisplayshortskip 6.5\p@ plus3.5\p@ minus3\p@
365 \def\@listi{\leftmargin\leftmargini
366  \topsep 9\p@ \@plus3\p@ \@minus5\p@
367  \parsep 4.5\p@ \@plus2\p@ \@minus\p@
368  \itemsep \parsep}%

369 }%

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

379 }%

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

380 \def\scriptsize{\@setsize\scriptsize{9.5pt}\viiipt\@viiipt}
381 \def\tiny{\@setsize\tiny{7pt}\vipt\@vipt}
382 \def\large{\@setsize\large{18pt}\xivpt\@xivpt}
383 \def\Large{\@setsize\Large{22pt}\xviipt\@xviipt}
384 \def\LARGE{\@setsize\LARGE{25pt}\xxpt\@xxpt}
385 \def\huge{\@setsize\huge{30pt}\xxvpt\@xxvpt}
386 \let\Huge=\huge
387 \or  % Norm-Option (DIN 2107, 2142)
\@normalsize
388 \def\@normalsize{\@setsize\normalsize{\GZA}\xipt\@xipt
389 \abovedisplayskip 11\p@ plus3\p@ minus6\p@
390 \belowdisplayskip \abovedisplayskip
391 \abovedisplayshortskip \z@ plus3\p@
392 \belowdisplayshortskip 6.5\p@ plus3.5\p@ minus3\p@
393 \let\@listi\@listI
394 }% Setting of \@listi added 22 Dec 87
\small
395 \def\small{\@setsize\small{11pt}\xpt\@xpt
396 \abovedisplayskip 10\p@ plus2\p@ minus5\p@
397 \belowdisplayskip \abovedisplayskip
398 \abovedisplayshortskip  \z@ plus3\p@
399 \belowdisplayshortskip  6\p@ plus3\p@ minus3\p@
400 \def\@listi{\leftmargin\leftmargini %% Def of \@listi added 22 Dec 87
401  \topsep 6\p@ plus2\p@ minus2\p@
402  \parsep 3\p@ plus2\p@ minus\p@
403  \itemsep \parsep}%

404 }%

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

414 }%

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

415 \def\scriptsize{\@setsize\scriptsize{9.5pt}\viiipt\@viiipt}
416 \def\tiny{\@setsize\tiny{7pt}\vipt\@vipt}
417 \def\large{\@setsize\large{14pt}\xiipt\@xiipt}
418 \def\Large{\@setsize\Large{18pt}\xivpt\@xivpt}
419 \def\LARGE{\@setsize\LARGE{22pt}\xviipt\@xviipt}
420 \def\huge{\@setsize\huge{25pt}\xxpt\@xxpt}
421 \def\Huge{\@setsize\Huge{30pt}\xxvpt\@xxvpt}
422 \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.

423 \ifka@db@ltxtwoe
424 \let\normalsize\@normalsize
425 \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.)

426 \ifka@db@nfss
427  \normalsize
428 \else
429  \ifka@db@nfsstwo
430  \normalsize
431  \fi
432 \fi

3.19 Document layout

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

433 % \addtolength\voffset{0.8truemm}
434 % \addtolength\hoffset{-1.4truemm}

435 \oddsidemargin 0in
436 \evensidemargin 0in
437 \marginparwidth .08in
438 \marginparsep .01in
439 \marginparpush 5pt
440 % \topmargin -15pt
441 \topmargin0pt
442 \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.

443 \newdimen\ltf@headheight
444 \newdimen\lts@headheight
445 \newdimen\ltf@headsep
446 \newdimen\lts@headsep
447 \newdimen\ltf@textheight
448 \newdimen\lts@textheight
449 \ltf@headheight 4.2truemm %
450 \lts@headheight 0truemm %
451 \ltf@headsep 8.8truemm %
452 \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.

453 \ifka@db@ltxtwoe
454  \relax
455 \else
456  \footheight 4.2truemm
457 \fi
458 \footskip 8.8truemm
459 \textheight 260truemm
460 \textheight 254truemm
461 \textwidth 165truemm
462 \columnsep 10pt
463 \columnseprule 0pt
464 \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.

465 \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.

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

3.19.1 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.

484 \newif\ifka@db@windowrules
485 \def\windowrules{\global\ka@db@windowrulestrue}
486 \def\nowindowrules{\global\ka@db@windowrulesfalse}
487 \windowrules

3.19.2 Lines for splitting letters

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

488 \newif\ifka@db@windowtics
489 \def\windowtics{\global\ka@db@windowticstrue}
490 \def\nowindowtics{\global\ka@db@windowticsfalse}
491 \windowtics

3.19.3 \backaddress API function

\backaddress
\@backaddress
492 \def\backaddress#1{\gdef\@backaddress{#1}}
493 \backaddress{}

3.19.4 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.

494 \long\def\@splitoncr#1#2{%
495 \begingroup
496  % \tracingmacros=1
497  \let\\=a% because characters are not expanded
498  \long\def\@rgjob##1{#2{##1}}%
499  % \expandafter\@splitoncrlist#1\\\stop \\
500  \@splitoncrlist#1\\\stop \\
501 \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.

502 \long\def\@splitoncrlist#1\\{%
503 \ifx\stop#1\relax
504  \let\next=\relax
505 %     \message{Stop encountered}%
506 \else
507  \@rgjob{#1}%
508 %    % \typeout{The sequence: #1}%
509  \let\next=\@splitoncrlist
510 \fi
511 \next

512 }

\@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.

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

515 }

\@withmarkcr
516 \long\def\@withmarkcr!#1\stop{%
517 \xdef\@addresslist{%
518  \@addresslist\ifx\@addresslist\empty\else\leavevmode\\\fi{#1}}%
519 \@ifnextchar[%]
520  {\@ignorebrackets}{\@ignorebrackets[]}#1\stop{\@addressname}

521 }

\@withoutmarkcr
522 \long\def\@withoutmarkcr#1\stop{%
523 \xdef\@addresslist{%
524  \@addresslist\ifx\@addresslist\empty\else\leavevmode\\\fi{#1}}
525 \ifx\@addressname\relax
526  \@ifnextchar[%]
527  {\@ignorebrackets}{\@ignorebrackets[]}#1\stop{\@addressname}
528 \fi

529 }

\@withmark
530 \long\def\@withmark!#1\stop{%
531 \xdef\@addresslist{\@addresslist {#1}}
532 \@ifnextchar[%]
533  {\@ignorebrackets}{\@ignorebrackets[]}#1\stop{\@addressname}%

534 }

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

535 \long\def\@withoutmark#1\stop{%
536 \xdef\@addresslist{\@addresslist {#1}}
537 \ifx\@addressname\relax
538  \@ifnextchar[%]
539  {\@ignorebrackets}{\@ignorebrackets[]}#1\stop{\@addressname}
540 \fi

541 }

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

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

545 }

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

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

548 }

\@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.

549 \long\def\@checkformark#1{%
550 %\@ifnextchar!{\@withmark}{\@withoutmark}#1\stop
551 \@ifnextchar[{\@withlbracket}{\@withoutlbracket}#1\stop

552 }

\@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!

553 \long\def\@splitaddress#1{%
554 \def\@addressbase{#1}
555 \let\@addressname=\relax
556 \def\@addresslist{}
557 \expandafter\@splitoncr\expandafter{\@addressbase}{\@checkformark}%
558 \gdef\toname{\@addressname}
559 % \typeout{Addresslist: \@addresslist}%
560 % \typeout{Addressname: \@addressname}%
561 % \typeout{\string\toname: \toname}%

562 }

3.19.5 The \opening-Procedure

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

\ka@db@indadr
563 \newdimen\ka@db@indadr
564 \ka@db@indadr=0pt
\ka@db@tsfromaddress
565 \def\ka@db@tsfromaddress{%
566 \ifx\@empty\@fromaddress
567  \vbox to 0pt{\vss}\nointerlineskip
568 \else
569  \vbox to 0pt{\vskip -19.4truemm\raggedright\@fromaddress\vss}%
570  \nointerlineskip
571 \fi

572 }

\ka@db@tswindowtics
573 \def\ka@db@tswindowtics{%
574 \ifka@db@windowtics
575  \vbox to 0pt{%
576  \rule{0pt}{81.1truemm}% 62.5truemm > 80.0truemm
577  \hbox to 0pt{\hspace*{-24truemm}\vbox{\hrule width 7truemm}\hss}%
578  \vss}\nointerlineskip
579  \vbox to 0pt{%
580  \rule{0pt}{124.6truemm}% 106.0truemm > 123.5truemm
581  \hbox to 0pt{\hspace*{-18truemm}\vbox{\hrule width 6truemm}\hss}%
582  \vss}\nointerlineskip
583  \vbox to 0pt{%
584  \rule{0pt}{186.1truemm}% 167.5truemm > 185.0truemm
585  \hbox to 0pt{\hspace*{-24truemm}\vbox{\hrule width 7truemm}\hss}%
586  \vss}\nointerlineskip
587 \else

588  \vbox to 0pt{\rule{0pt}{81.1truemm}%
589  \hbox to 0pt{\vbox{\hrule width 0pt}\hss}%
590  \vss}\nointerlineskip
591  \vbox to 0pt{\rule{0pt}{124.6truemm}%
592  \hbox to 0pt{\vbox{\hrule width 0pt}\hss}%
593  \vss}\nointerlineskip
594  \vbox to 0pt{\rule{0pt}{186.1truemm}%
595  \hbox to 0pt{\vbox{\hrule width 0pt}\hss}%
596  \vss}\nointerlineskip
597 \fi

598 }

\dbottomtext
599 \newdimen\dbottomtext
600 \dbottomtext=261.0truemm
\ka@db@tsbottomtext
601 \def\ka@db@tsbottomtext{%
602 \ifdim\ht\@@bottomtext>0pt
603  \vbox to 0pt{%
604 %      \rule{0pt}{261.0truemm}% 243.5truemm
605  \rule{0pt}{\dbottomtext}% 243.5truemm
606  \unhcopy\@@bottomtext
607  \vss
608  }\nointerlineskip%
609 \fi

610 }

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

611 \def\ka@db@bafntsel{%
612 \ka@db@fontsize{8}{9pt}%
613 \ka@db@selectfont

614 }

\ka@db@tstoaddress
615 \def\ka@db@tstoaddress{%
616 \vbox to 0pt{\vss%
617  \ifka@db@windowrules
618  \hbox to 0pt{\hspace*{-4truemm}\vbox{\hrule width 85truemm}\hss}%
619  \else
620  \hbox to 0pt{\hss}%
621  \fi
622  \vss

623 }%

624 \nointerlineskip

625 \ifx\@empty\@backaddress
626  \vbox to 7.5truemm{%
627  \vfill

628 }%

629  \nointerlineskip
630 \else
631  \vbox to 7.5truemm{%
632  \vskip 2.5truemm
633  \vss
634  \hbox to 0pt{\hspace*{-4truemm}%
635  \vbox{%
636  \hbox to 85truemm{\hfill
637  {\ka@db@bafntsel\@backaddress}\hfill}%
638  \hrule width 85truemm}\hss}%
639  % \vss % <- removed to get exact layout

640 }%

641  \nointerlineskip
642 \fi
643 \vbox to 40truemm{%
644  \vss
645  \hbox to 0pt{\hskip0pt minus 4truemm%
646  \setbox\@tempboxa=\vbox{%
647  \if@letterform
648  \relax
649  \else
650  % \typeout{Start dumping \string\@addresslist}%
651  \leavevmode
652  \ka@db@ifemptyvarlocal{postremark}{}{%
653  \ka@db@usevarlocal{postremark}\\[\medskipamount]

654 }%

655  \raggedright \@addresslist %\toname \\ \toaddress%
656  % \typeout{End dumping \string\@addresslist}%
657  \fi

658 }%

659  \ifdim\ht\@tempboxa>40mm
660  %\@warning{Receivers address is larger than letter window}%
661  \ClassWarning{dinbrief}{%
662  Receivers address is larger than letter window}%
663  \else
664  \setbox\@tempboxa=\vbox{%
665  \hbox{%
666  \ifdim\ka@db@indadr>0pt
667  \else
668  \hbox to 0pt{\hskip4in\ka@db@usevarlocal{handling}\hss}%
669  \fi
670  %\unvbox\@tempboxa
671  \box\@tempboxa

672 }%

673  \if@toadrcenter\relax

674  \else\vskip 2.5truemm minus 2.5truemm
675  \fi

676 }%

677  \fi
678  \box\@tempboxa
679  \hss

680 }%

681  \if@toadrcenter
682  \vss
683  \fi
684 }\nointerlineskip
685 \vskip 2.5truemm
686 \vbox to 0pt{\vss%
687  \ifka@db@windowrules
688  \hbox to 0pt{\hspace*{-4truemm}\vbox{\hrule width 85truemm}\hss}%
689  \else
690  \hbox to 0pt{\hss}%
691  \fi
692  \vss
693 }\nointerlineskip

694 % 695 }

\ka@db@tsrefline
696 \def\ka@db@tsrefline{%
697 \if@norefline\else
698 %   \vbox{\vskip 6truemm
699  \vbox{%
700  \if@refline
701  \@answerto
702  \else
703  \if@letterform\relax\else
704  \ifx\@empty\@place
705  \raggedleft \@date
706  \else
707  \raggedleft \@place,\space\@date
708  \fi
709  \fi
710  \fi

711 }%

712 %   }%
713  \nointerlineskip
714  \par
715  \bigskip
716 \fi %\if@norefline

717 }

\ka@db@tsconcern
718 \def\ka@db@tsconcern{%

719 \ifx\@empty\@concern \else
720  \if@letterform\relax\else
721  \@concern \par
722  \bigskip
723  \fi
724 \fi
725 \vspace{0pt plus 10truemm}%

726 }

\ka@db@tsopening
727 \def\ka@db@tsopening#1{%
728 \if@letterform\relax\else
729 #1\par
730 \fi

731 }

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

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

734 }%

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

737 }%

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

740 }%

741 \def\ka@db@placetoaddress{%
742 \vskip 18.6truemm % old value 13.1truemm
743 %   \vbox to 50truemm{\vss\ka@db@tstoaddress\vss}\nointerlineskip
744 %   \vbox to 50truemm{\ka@db@tstoaddress}\nointerlineskip
745 % \vbox to 50truemm{\ka@db@tstoaddress\vss}\nointerlineskip
746 % ^- org. value
747 \moveright\ka@db@indadr\vbox to 50truemm{\ka@db@tstoaddress\vss}%
748 \nointerlineskip
749 \vskip 6truemm

750 }%

751 \def\ka@db@placerefline{%
752 \vbox{\ka@db@tsrefline}\nointerlineskip

753 }%

754 \def\ka@db@placeconcern{
755 \vbox{\ka@db@tsconcern}\nointerlineskip

756 }%

757 \def\ka@db@placeopening#1{%
758 \ka@db@tsopening{#1}%
759 \nobreak

760 }%

\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.

761 \def\opening#1{%
762 \setcounter{lt@state}{2}
763 \thispagestyle{first@page}

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

764 \ifka@db@ltxtwoe
765  \enlargethispage{-\ht\@@bottomtext}
766 \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.

767 \ka@db@placefromaddress
768 \ka@db@placewindowtics
769 \ka@db@placebottomtext
770 \ka@db@placetoaddress
771 \ka@db@placerefline
772 \ka@db@placeconcern
773 \ka@db@placeopening{#1}%

774 }

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

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

776 \ifka@db@ltxtwoe
777  \enlargethispage{-\ht\@@bottomtext}
778 \fi
779 \ifx\@empty\@fromaddress
780  \vbox to 0pt{\vss}\nointerlineskip
781 \else
782  \vbox to 0pt{\vskip -19.4truemm\raggedright\@fromaddress\vss}%
783 \fi
784 \vskip 13.1truemm

785 %

786 \ifx\@empty\@@windowtics
787  \vbox to 0pt{\rule{0pt}{62.5truemm}%

788  \hbox to 0pt{\vbox{\hrule width 0pt}\hss}%
789  \vss}\nointerlineskip
790  \vbox to 0pt{\rule{0pt}{106.0truemm}%
791  \hbox to 0pt{\vbox{\hrule width 0pt}\hss}%
792  \vss}\nointerlineskip
793  \vbox to 0pt{\rule{0pt}{167.5truemm}%
794  \hbox to 0pt{\vbox{\hrule width 0pt}\hss}%
795  \vss}\nointerlineskip
796 \else
797  \vbox to 0pt{%
798  \rule{0pt}{62.5truemm}%
799  \hbox to 0pt{\hspace*{-24truemm}\vbox{\hrule width 7truemm}\hss}%
800  \vss}\nointerlineskip
801  \vbox to 0pt{%
802  \rule{0pt}{106.0truemm}%
803  \hbox to 0pt{\hspace*{-18truemm}\vbox{\hrule width 6truemm}\hss}%
804  \vss}\nointerlineskip
805  \vbox to 0pt{%
806  \rule{0pt}{167.5truemm}%
807  \hbox to 0pt{\hspace*{-24truemm}\vbox{\hrule width 7truemm}\hss}%
808  \vss}\nointerlineskip
809 \fi
810 \ifdim\ht\@@bottomtext>0pt
811  \vbox to 0pt{%
812  \rule{0pt}{243.5truemm}%
813  \unhcopy\@@bottomtext
814  \vss}\nointerlineskip%
815 \fi
816 \vbox to 0pt{\vss%
817 \ifx\@empty\@@windowrules
818  \hbox to 0pt{\hss}%
819 \else
820  \hbox to 0pt{\hspace*{-4truemm}\vbox{\hrule width 85truemm}\hss}%
821 \fi
822 \vss}\nointerlineskip

823 %

824 \ifx\@empty\@backaddress
825  \vbox to 7.5truemm{
826  \vfill
827  }\nointerlineskip
828 \else
829  \vbox to 7.5truemm{
830  \vskip 2.5truemm
831  \vss
832  \hbox to 0pt{\hspace*{-4truemm}\vbox{%
833  \hbox to 85truemm{\hfill
834  {\ka@db@fontsize{8}{9pt}

835  \ka@db@selectfont \@backaddress}\hfill}%
836  \hrule width 85truemm}\hss}%
837  \vss}\nointerlineskip
838 \fi

839 %

840 \vbox to 40truemm{%
841 \vss
842 \hbox to 0pt{\hskip0pt minus 4truemm%
843 \vbox{%
844  \if@letterform
845  \relax
846  \else
847  % \typeout{Start dumping \string\@addresslist}%
848  \raggedright \@addresslist %\toname \\ \toaddress%
849  % \typeout{End dumping \string\@addresslist}%
850  \if@toadrcenter\relax
851  \else\vskip 2.5truemm minus 2.5truemm
852  \fi
853  \fi

854 }%

855 \hss}
856 \if@toadrcenter
857  \vss
858 \fi
859 }\nointerlineskip
860 \vskip 2.5truemm

861 %

862 \vbox to 0pt{\vss%
863 \ifx\@empty\@@windowrules
864  \hbox to 0pt{\hss}%
865 \else
866  \hbox to 0pt{\hspace*{-4truemm}\vbox{\hrule width 85truemm}\hss}%
867 \fi
868 \vss}\nointerlineskip

869 %

870 \if@norefline\else
871  \vbox{\vskip 6truemm
872  \vbox{%
873  \if@refline
874  \@answerto
875  \else
876  \if@letterform\relax\else
877  \ifx\@empty\@place
878  \raggedleft \@date
879  \else
880  \raggedleft \@place,\space\@date
881  \fi
882  \fi
883  \fi

884 }% 885 }%

886  \nointerlineskip
887  \par
888  \bigskip
889 \fi %\if@norefline
890 \ifx\@empty\@concern \else
891 \if@letterform\relax\else
892  \@concern \par
893  \bigskip
894  \fi
895 \fi
896 \ifx\@empty\@footer \else
897 \fi
898 \vspace{0pt plus 10truemm}
899 \if@letterform\relax\else
900 #1\par
901 \fi
902 \nobreak}
\closing
\ka@db@closinghook
903 \long\def\closing{%
904 \@ifnextchar[%]
905  {\ka@db@closing}{\ka@db@closing[]}%

906 }

907 \long\def\ka@db@closing[#1]#2{%
908 \setcounter{lt@state}{3}
909 \par\nobreak
910 \vspace{\parskip}
911 \stopbreaks

912 {%

913  \leavevmode
914  \ifka@db@enclright
915  \bgroup
916 %        \@tempdima=\textwidth
917  \ka@db@tmpdima=4in
918 %        \advance\@tempdima by -\ka@db@tmpdima
919 %        \hbox to 0pt{%
920 %          \hskip\@tempdimb\relax
921 %          \parbox[t]{\@tempdima}{%\parskip .7em
922 %                                 \ka@db@tsenclcc}%
923 %          \hss
924 %        }%
925  \parbox[t]{\ka@db@tmpdima}{%\parskip .7em%
926  \raggedright
927  \ignorespaces #2\\[3\baselineskip]
928  \vbox to 0pt{%
929  \vskip -4\baselineskip\relax
930  \hbox to 0pt{\strut#1\hss}%
931  \vss}%

932 %          \ifx\@empty\@fromsig
933 %          \else \@fromsig
934 %          \fi\strut
935  \ka@db@ifemptyvar{signature}{}{%
936  \ka@db@usevar{signature}%

937 }%

938  \strut

939 }%

940  \@tempdima=\textwidth
941  \advance\@tempdima by -\ka@db@tmpdima
942  \parbox[t]{\@tempdima}{%\parskip .7em%
943  \raggedright
944  \ka@db@tsenclcc
945  \unskip % <- removing unneccessary skip from
946  %    \cmd\ka@db@tsenclcc

947 }%

948  \egroup
949  \else
950  \raggedright
951  \ignorespaces #2\\[3\baselineskip]
952  \leavevmode
953  % here the signature <- not correct
954  \vbox to 0pt{%
955  \vskip -4\baselineskip\relax
956  \hbox to 0pt{\strut#1\hss}%
957  \vss}%
958 %      \ifx\@empty\@fromsig
959 %      \else \@fromsig
960 %      \fi\strut
961  \ka@db@ifemptyvar{signature}{}{%
962  \ka@db@usevar{signature}%

963 }%

964  \strut
965  \fi

966 }%

967 \par\medskip
968 \ifka@db@enclright
969 \else
970  \raggedright
971  \ka@db@tsenclcc
972 \fi
973 \ka@db@closinghook

974 }

975 \def\ka@db@closinghook{}
\ka@db@tsenclcc
976 \def\ka@db@tsenclcc{%
977 \ka@db@ifemptyvarlocal{encl}%
978  {}{\ka@db@usevarlocal{encl}\\[\baselineskip]}%
979 \ka@db@ifemptyvarlocal{cc}%

980  {}{\ka@db@usevarlocal{cc}\\[\baselineskip]}%

981 }

3.20 Initialization

3.20.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!)

982 \def\ccname{Verteiler}
983 \def\enclname{Anlage(n)}
984 \def\psname{PS}
\headtoname \pagename These two words are used in the pagestyles headings and contheadings.
985 \def\headtoname{An}
986 \def\pagename{Seite}

3.21 More letter macros

\handling
987 \def\handling#1{%
988 \ka@db@assignvarlocal{handling}{#1}%

989 }

990 \ka@db@execatletter{\ka@db@assignvarlocal{handling}{}}%
\postremark
991 \def\postremark#1{%
992 \ka@db@assignvarlocal{postremark}{#1}%

993 }

994 \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.

995 \def\ka@db@genencl#1[#2]#3{%
996 \ifnum\c@lt@state=3\relax
997  \par
998  \noindent{%
999  \bgroup
1000  \def\tmpa{#2}%
1001  \expandafter\egroup
1002  \ifx\tmpa\@empty\else
1003  #2\hfil\break

1004 \fi

1005  \ignorespaces #3\strut}%
1006  \par
1007 \else
1008  \bgroup
1009  \def\tmpa{#2}%
1010  \expandafter\egroup
1011  \ifx\tmpa\@empty
1012  \ka@db@assignvarlocal{#1}{#3}%
1013  \else
1014  \ka@db@assignvarlocal{#1}{#2\hfil\break #3}%

1015 \fi 1016 \fi 1017 }

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

1018 \def\cc{%
1019 \@ifnextchar[%]
1020  {\ka@db@genencl{cc}}{\ka@db@genencl{cc}[\ccname]}%

1021 }

1022 \ka@db@execatletter{\ka@db@assignvarlocal{cc}{}}%
1023 \def\encl{%
1024 \@ifnextchar[%]
1025  {\ka@db@genencl{encl}}{\ka@db@genencl{encl}[\enclname]}%

1026 }

1027 \ka@db@execatletter{\ka@db@assignvarlocal{encl}{}}%
\ps
1028 \def\ps#1{\par\noindent{\psname \\
1029  \ignorespaces #1\strut}\par}

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

1030 \def\stopletter{}

3.22 Styles for the labels

3.22.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.

1031 \newdimen\dlabelheight
1032 \newdimen\dlabeltopmargin
1033 \newdimen\dlabelwidth
1034 \newcount\clabelnumber
\setlabelheight \setlabelwidth \setlabeltopmargin \setlabelnumber These three macros assigns values to the counters defined above.
1035 \def\setlabelheight#1{\global\dlabelheight=#1\relax}

1036 \def\setlabelwidth#1{\global\dlabelwidth=#1\relax}
1037 \def\setlabeltopmargin#1{\global\dlabeltopmargin=#1\relax}
1038 \def\setlabelnumber#1{\global\clabelnumber=#1\relax}

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

1039 \def\Etihoehe#1{%
1040 %\@warning{Use \string\setlabelheight\space instead %
1041 %          of \string\Etihoehe}%
1042 \ClassWarning{dinbrief}{%
1043  Use \string\setlabelheight\space instead of \string\Etihoehe}%
1044 \setlabelheight{#1}%

1045 }

1046 \def\Etirand#1{
1047 %\@warning{Use \string\setlabeltopmargin\space instead %
1048 %          of \string\Etirand}%
1049 \ClassWarning{dinbrief}{%
1050  Use \string\setlabeltopmargin\space instead of \string\Etirand}%
1051 \setlabeltopmargin{#1}%

1052 }

1053 \def\Etizahl#1{
1054 %\@warning{Use \string\setlabelnumber\space instead %
1055 %          of \string\Etizahl}%
1056 \ClassWarning{dinbrief}{%
1057  Use \string\setlabelnumber\space instead of \string\Etizahl}%
1058 \setlabelnumber{#1}%

1059 }

3.22.2 Defining the standard dinbrief labels

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

1060 \setlabelheight{41.15truemm}%
1061 \setlabeltopmargin{8.85truemm}%
1062 \setlabelwidth{80truemm}%
1063 \setlabelnumber{7}%

3.23 Empty labels within labelstyle plain

\cspare
1064 \newcount\cspare
1065 \cspare=0
\spare
1066 \def\spare#1{\cspare=#1\relax}

3.23.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.

1067 \def\labelstyle#1{\def\@labelstyle{#1}}
1068 \labelstyle{plain}
\if@kadb@tracelabels
1069 \newif\if@kadb@tracelabels
1070 \@kadb@tracelabelsfalse
\label@plain
1071 \long\def\label@plain#1#2{\setbox0\vbox{\hsize\dlabelwidth
1072 \strut\ignorespaces #2}%{}%
1073 %\vbox to 50.8truemm{\vss \box0 \vss}%
1074 \vbox to\dlabelheight{%
1075 \if@kadb@tracelabels
1076  \hrule

1077 \fi

1078 \vss
1079 \hbox to \dlabelwidth{%
1080  \hss
1081  \if@kadb@tracelabels
1082  \vrule

1083 \fi

1084  \vbox to\dlabelheight{\vss \box0 \vss}%
1085  \if@kadb@tracelabels
1086  \vrule

1087 \fi

1088  \hss

1089 }%

1090 \vss
1091 \if@kadb@tracelabels
1092  \hrule

1093 \fi 1094 }%

1095 \advance\labelcount by 1\nointerlineskip
1096 \ifnum\labelcount<\clabelnumber
1097 \else
1098 \vfill\newpage
1099 \labelcount=0
1100 \fi}
\label@C6
\label@DL
\label@C6/C5
\label@deskjet

1101 \long\def\label@deskjet#1#2{\setbox0\vbox{\parbox[b]{3.6in}{
1102  \vbox to 0pt{\vss%
1103  \ifx\@empty\@@windowrules
1104  \hbox to 0pt{\hss}%
1105  \else
1106  \hbox to 0pt{\hspace*{-4truemm}%
1107  \vbox{\hrule width 85truemm}\hss}%

1108 \fi

1109  \vss}\nointerlineskip

1110 %

1111  \vbox to 7.5truemm{
1112  \vskip 2.5truemm
1113  \vss
1114  \hbox to 0pt{\hspace*{-4truemm}\vbox{%
1115  \hbox to 85truemm{\hfill{\ka@db@fontsize{8}{9pt}
1116  \ka@db@selectfont #1}\hfill}
1117  \hrule width 85truemm}\hss}%
1118  \vss}\nointerlineskip

1119 %

1120  \vbox to 40truemm{%
1121  \vss
1122  \hbox to 0pt{\hskip0pt minus 4truemm%
1123  \vbox{\raggedright #2%
1124  \if@toadrcenter
1125  \relax\else\vskip 2.5truemm minus 2.5truemm
1126  \fi}%
1127  \hss}
1128  \if@toadrcenter
1129  \vss

1130 \fi

1131  }\nointerlineskip
1132  \vskip 2.5truemm

1133 %

1134  \vbox to 0pt{\vss%
1135  \ifx\@empty\@@windowrules
1136  \hbox to 0pt{\hss}%
1137  \else
1138  \hbox to 0pt{\hspace*{-4truemm}%
1139  \vbox{\hrule width 85truemm}\hss}%

1140 \fi

1141  \vss}\nointerlineskip

1142 }}%

1143 \vbox to 0pt{\vss}%
1144 \vskip 18.0truemm
1145 \vbox to 50.8truemm{\vss \box0 \vss}%
1146 \ifnum\labelcount=4 \labelcount=0
1147  \else \advance\labelcount by 1\nointerlineskip

1148 \fi

1149 \vfill
1150 \newpage

1151 }

1152 \expandafter\let\csname label@C6\endcsname    =\label@deskjet
1153 \expandafter\let\csname label@DL\endcsname    =\label@deskjet
1154 \expandafter\let\csname label@C6/C5\endcsname =\label@deskjet

\mlabel \mlabel typesets a single label.

1155 \long\def\mlabel#1#2{\@nameuse{label@\@labelstyle}{#1}{#2}}
\lstyle@plain
1156 \def\lstyle@plain{
1157 \topmargin-25.4truemm%
1158 \advance\topmargin\dlabeltopmargin
1159 \headsep\z@
1160 \headheight\z@
1161 \topskip\z@
1162 \oddsidemargin -12.9truemm
1163 \evensidemargin -12.9truemm
1164 \textheight=\clabelnumber\dlabelheight
1165 \advance\textheight by .0001truemm
1166 \@colht\textheight \@colroom\textheight \vsize\textheight
1167 \columnsep 25mm
1168 \textwidth2\dlabelwidth
1169 \advance\textwidth by\columnsep
1170 \ka@db@fontsize{12}{14.4pt}\ka@db@selectfont
1171 \boxmaxdepth\z@
1172 \parindent\z@
1173 \parskip\z@skip
1174 \twocolumn\relax
1175 \ifnum\cspare>\z@
1176  \ifnum\cspare<\clabelnumber\else

1177  \mbox{}%
1178  \newpage
1179  \advance\cspare -\clabelnumber

1180 \fi

1181  \advance\labelcount by\cspare
1182  \nointerlineskip
1183  \vbox to \cspare\dlabelheight{\vfill}%
1184 %    \vbox{\rule{4pt}{\cspare\dlabelheight}}%
1185  \nointerlineskip
1186  \nobreak
1187 \else
1188  \nointerlineskip

1189 \fi 1190 }

\lstyle@deskjet
1191 \def\lstyle@deskjet{
1192 \textheight 25.4truecm
1193 \advance\textheight by .0001truemm
1194 %  \@colht\textheight \@colroom\textheight \vsize\textheight
1195 \textwidth 193.3truemm
1196 \columnsep 25pt
1197 %  \ka@db@fontsize{12}{14.4pt}\ka@db@selectfont
1198 %  \boxmaxdepth=0pt
1199 %  \twocolumn
1200 \relax

1201 }

\startlabels
1202 \def\startlabels{%
1203 \nointerlineskip
1204 \labelcount=0
1205 \pagestyle{empty}
1206 \let\@texttop=\relax
1207 % \topmargin -17.6truemm
1208 % \headsep 0pt
1209 % \oddsidemargin -12.3truemm
1210 % \evensidemargin -12.3truemm
1211 % \textheight 25.4truecm
1212 % \advance\textheight by .0001truemm
1213 % \@colht\textheight \@colroom\textheight \vsize\textheight
1214 % \textwidth 193.3truemm
1215 % \columnsep 25pt
1216 % \ka@db@fontsize{12}{14.4pt}\ka@db@selectfont
1217 % \boxmaxdepth=0pt
1218 % \twocolumn\relax
1219 \@nameuse{lstyle@\@labelstyle}

1220 }

3.24 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.

1221 \newcounter{lt@state}%
1222 \setcounter{lt@state}{0}%

letter The counter letter counts the number of letters.

1223 \newcounter{letter}
\letter
1224 \long\def\letter#1{%
1225 \ifnum\c@lt@state>0
1226  \ka@db@error{%
1227  Command \string\begin{letter} inside the
1228  \string\begin{letter}-environment found.

1229 } 1230 \fi

1231 \setcounter{lt@state}{1}%
1232 % \typeout{\string\ka@db@atletter\space\ka@db@atletter}%
1233 \ka@db@atletter
1234 \clearpage
1235 \thispagestyle{empty}
1236 \cleardoublepage
1237 \refstepcounter{letter}%
1238 \c@page\@ne
1239 \global\ka@db@lastpagefalse
1240 \interlinepenalty=200
1241 % \@processto{#1}%
1242 % \message{Starting \string\@splitaddress}%
1243 \bgroup
1244  \def\protect{\noexpand\protect\noexpand}%
1245  \let\\=\relax
1246  \let\vspace=\relax
1247  \@splitaddress{#1}
1248 \egroup
1249 % \message{Ending \string\@splitaddress}%

1250 }

\endletter
1251 \def\endletter{%
1252 \setcounter{lt@state}{0}%
1253 \ka@db@lastpagetrue

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

1254 \stopletter
1255 \@@par
1256 \pagebreak
1257 \@@par
1258 \gdef\@yourmail{}
1259 \gdef\@mymail{}
1260 \global\@reflinefalse
1261 \if@filesw
1262  \ifnum\c@labelgen>1
1263  \begingroup
1264  \def\protect{\string}
1265  \let\\=\relax
1266  \def\protect##1{\string##1\space}
1267  \let\vspace=\relax
1268  \let\rule=\relax
1269  %\immediate\write\@auxout{\string\mlabel{\@backaddress}{\toname
1270  %\\\toaddress}}
1271  %\immediate\write\@auxout{%
1272  %  \string\mlabel{\@backaddress}{\@addresslist}}%
1273  %\immediate\write\@auxout{\string\mlabel{\@backaddress}{%
1274  %  \ka@db@ifemptyvarlocal{postremark}{}{%
1275  %    \ka@db@usevarlocal{postremark}\\[\string\medskipamount]%

1276 % }%

1277  %  \@addresslist
1278  %}}%
1279  \ka@db@ifemptyvarlocal{postremark}{% then
1280  \immediate\write\@mainlbl{\string\mlabel{\@backaddress}{%
1281  \@addresslist}}%
1282  }{% else
1283  \immediate\write\@mainlbl{\string\mlabel{\@backaddress}{%
1284  \pka@db@usevarlocal{postremark}\\[\string\medskipamount]%
1285  \@addresslist}}%
1286  }% endif
1287  \endgroup

1288 \fi

1289  %\ifnum\c@labelgen=1
1290  %  \onlabels
1291  %\fi

1292 \fi

1293 \ka@db@atendletter

1294 }

\@processto
1295 \long\def\@processto#1{%
1296 \@xproc #1\\@@@%
1297 \ifx\toaddress\@empty
1298 \else
1299  \@yproc #1@@@%
1300 \fi}
\@xproc
1301 \long\def\@xproc #1\\#2@@@{\def\toname{#1}\def\toaddress{#2}}
\@yproc
1302 \long\def\@yproc #1\\#2@@@{\def\toaddress{#2}}
\stopbreaks
1303 \def\stopbreaks{\interlinepenalty \@M
1304 \def\par{\@@par\nobreak}\let\\=\@nobreakcr
1305 \let\vspace\@nobreakvspace}
\@nobreakvspace
1306 \def\@nobreakvspace{\@ifstar{\@nobreakvspacex}{\@nobreakvspacex}}
\@nobreakvspacex
1307 \def\@nobreakvspacex#1{\ifvmode\nobreak\vskip #1\relax\else
1308 \@bsphack\vadjust{\nobreak\vskip #1}\@esphack\fi}
\@nobreakcr
1309 \def\@nobreakcr{\vadjust{\penalty\@M}\@ifstar{\@xnewline}{\@xnewline}}
\startbreaks
1310 \def\startbreaks{\let\\=\@normalcr
1311 \interlinepenalty 200\def\par{\@@par\penalty 200}}
\labelcount
1312 \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.

1313 \newif\if@refline
1314 \@reflinefalse
1315 \newif\if@norefline
1316 \@noreflinefalse
\if@toadrcenter
1317 \newif\if@toadrcenter
1318 \@toadrcenterfalse

\if@letterform
\letterform
\noletterform

1319 \newif\if@letterform
1320 \@letterformfalse
1321 \def\letterform{\@letterformtrue}
1322 \def\noletterform{\@letterformfalse}
\centeraddress
1323 \def\centeraddress{\@toadrcentertrue}
\normaladdress
1324 \def\normaladdress{\@toadrcenterfalse}
\signature
1325 %\def\signature#1{\def\@fromsig{#1}}
1326 \def\signature#1{%
1327 \ka@db@assignvar{signature}{#1}%

1328 }

1329 \ka@db@execatletter{\ka@db@assignvarlocal{signature}{}}%
\@fromsig
1330 \def\@fromsig{}
\address
1331 \long\def\address#1{\def\@fromaddress{#1}}
\@fromaddress
1332 \def\@fromaddress{}
\footer
1333 \long\def\footer#1{\def\@footer{#1}}
\@footer
1334 \def\@footer{}
\returnaddress
1335 \def\returnaddress{}
\place
1336 \def\place#1{\gdef\@place{#1}}
\@place
1337 \def\@place{}
\phone
\@prephone
\@phone
\@telephonenum

1338 \def\phone#1#2{%
1339 \gdef\@prephone{#1}%
1340 \gdef\@phone{#2}%
1341 \gdef\@telephonenum{#1#2}}
1342 \def\@prephone{}
1343 \def\@phone{}
1344 \def\@telephonenum{}

\phonemsg
1345 \def\phonemsg{Telefon}
\date
1346 \def\date#1{\gdef\@date{#1}\gdef\@ntoday{#1}}
\@date
1347 \def\@date{\today}
\sign
1348 \def\sign#1{\gdef\@mymail{#1}\@reflinetrue}
\@mymail
1349 \def\@mymail{}
\signmsg \signmsgold \signmsgnew
1350 \def\signmsgold{Unsere Zeichen}
1351 \def\signmsgnew{Unsere Zeichen, unsere Nachricht vom}
1352 \let\signmsg\signmsgold
\datemsg
1353 \def\datemsg{Datum}
\yourmail
1354 \def\yourmail#1{\gdef\@yourmail{#1}\global\@reflinetrue}
\@yourmail
1355 \def\@yourmail{}
\yourmailmsg
1356 \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.

1357 \def\writer#1{%
1358 \ka@db@assignvar{writer}{#1}%
1359 \@reflinetrue
1360 \enabledraftstandard

1361 }

1362 \ka@db@execatletter{\ka@db@assignvarlocal{writer}{}}%
1363 \ka@db@assignvarglobal{writer}{}%
\writermsg
1364 \def\writermsg{,\ Bearbeiter}
\@concern
1365 \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.

1366 \newbox\@@bottomtext
1367 \setbox\@@bottomtext=\vbox to 0pt{}
1368 \def\ka@db@bottomtextmsg{}
1369 \long\def\ka@db@praebottomtext#1{%
1370 \gdef\ka@db@bottomtextmsg{#1}%

1371 }

1372 \long\def\ka@db@mainbottomtext#1{%
1373 \setbox\@@bottomtext=\hbox to 0pt{\hskip0pt minus 4truemm%
1374  \vbox{\raggedright #1}%
1375  \hss}%

1376 }

1377 \long\def\bottomtext#1{%
1378 \ifka@db@ltxtwoe \relax \else
1379  \@@warning{\string\bottomtext \space is reserving space for
1380  typesetting its argument only in case of LaTeX 2e.
1381  With other LaTeX formats you will have to place a
1382  \string\clearpage-command at the appropriate position}%

1383 \fi

1384 \ka@db@dobottomtext{#1}%
1385 % \gdef\ka@db@bottomtextmsg{#1}%
1386 % \setbox\@@bottomtext=\hbox to 0pt{\hskip0pt minus 4truemm%
1387 %      \vbox{\raggedright #1}%
1388 %      \hss}%

1389 }

1390 \long\def\ka@db@dobottomtext#1{\ka@db@praebottomtext{#1}}

1391 1392

1393 % \long\def\bottomtext#1{%
1394 %   \ifka@db@ltxtwoe \relax \else
1395 %      \@@warning{\string\bottomtext \space is reserving space for
1396 %                 typesetting its argument only in case of LaTeX 2e.
1397 %                 With other LaTeX formats you will have to place a
1398 %                 \string\clearpage-command at the appropriate position}%
1399 %  \fi
1400 %  \setbox\@@bottomtext=\hbox to 0pt{\hskip0pt minus 4truemm%
1401 %       \vbox{\raggedright #1}%
1402 %       \hss}%
1403 % %  \@@bottomht \ht\@@bottomtext}

1404 % }

1405 % \long\def\bottomtext#1{\def\@@bottomtext{#1}}
\@@bottomtext
1406 % \def\@@bottomtext{}
\document

1407 \def\document{%
1408 \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.

1409 \ifka@db@ltxtwoe
1410  \ifx\@unusedoptionlist\@empty\else
1411  \@latex@warning@no@line{Unused global option(s):^^J%
1412  \@spaces[\@unusedoptionlist]}%

1413 \fi 1414 \fi

1415 \@colht\textheight
1416 \@colroom\textheight
1417 \vsize\textheight
1418 \columnwidth\textwidth
1419 \@clubpenalty\clubpenalty
1420 \if@twocolumn
1421  \advance\columnwidth -\columnsep
1422  \divide\columnwidth\tw@
1423  \hsize\columnwidth
1424  \@firstcolumntrue

1425 \fi

1426 \hsize\columnwidth
1427 \linewidth\hsize
1428 \begingroup
1429  \@floatplacement
1430  \@dblfloatplacement
1431  \makeatletter
1432  \ifka@db@ltxtwoe
1433  \let\@writefile\@gobbletwo

1434 \fi

1435  \@input{\jobname@aux}%
1436 \endgroup
1437 \if@filesw
1438  \ifnum\c@labelgen>0
1439  \immediate\openout\@mainlbl=\jobname@lbl
1440  \immediate\write\@mainlbl{\string\relax}%
1441  \immediate\write\@mainlbl{\string\startlabels\string\@startlabels}%

1442 \fi

1443  \immediate\openout\@mainaux=\jobname@aux
1444  \immediate\write\@mainaux{\string\relax}%

1445 \fi

1446 \ifka@db@ltxtwoe
1447  \process@table
1448  \let\glb@currsize\@empty  %% Force math initialisation.

1449 \fi

1450 \@normalsize
1451 \everypar{}%
1452 \ifka@db@ltxtwoe
1453  \@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ε.

1454 \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}.
1455 \ifka@db@ltxtwoe
1456  \@begindocumenthook
1457  \ifdim\topskip<1sp
1458  \topskip 1sp
1459  \relax

1460 \fi

1461  \let\@begindocumenthook\@undefined
1462  \ifx\@listfiles\@undefined
1463  \let\@filelist\relax
1464  \let\@addtofilelist\@gobble

1465 \fi 1466 \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.
1467 \def\do##1{\let ##1\@notprerr}%
1468 \@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.

1469 \global\let\do\noexpand
1470 % \ka@db@assbottomtext{\ka@db@bottomtextmsg}%
1471 \long\def\ka@db@dobottomtext##1{\ka@db@mainbottomtext{##1}}

1472 }

\enddocument
1473 \def\enddocument{%
1474 \@checkend{document}
1475 \newpage
1476 \begingroup
1477  \if@filesw
1478  \ifnum\c@labelgen>0
1479  \immediate\closeout\@mainlbl
1480  \makeatletter
1481  \input \jobname@lbl\relax
1482  \clearpage

1483 \fi

1484  \immediate\closeout\@mainaux

1485 \fi

1486 \endgroup
1487 \deadcycles\z@
1488 \@@end}

3.24.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.

1489 \def\makelabels{%
1490 % \@fileswtrue
1491 \c@labelgen=2

1492 }

\c@labelgen
1493 \newcount\c@labelgen
1494 \c@labelgen=0
\ka@db@asslabelgen
1495 \def\ka@db@asslabelgen#1#2#3{%
1496 \if@filesw
1497  #3\c@labelgen=#1\relax
1498 \else
1499  %\@warning{\string\makelabels\space not given. %
1500  %          \string#2\space has no effect}%
1501  \ClassWarning{dinbrief}{%
1502  \string\makelabels\space not given. %
1503  \string#2\space has no effect}%

1504 \fi 1505 }

\nolabels

1506 \def\nolabels{%
1507 \ka@db@asslabelgen{1}{\nolabels}{\relax}%

1508 }

\offlabels
1509 \def\offlabels{%
1510 \ka@db@asslabelgen{0}{\offlabels}{\global}%

1511 }

\onlabels
1512 \def\onlabels{%
1513 \ka@db@asslabelgen{2}{\onlabels}{\global}%

1514 }

\@startlabels
1515 \def\@startlabels{}
1516 \let\@texttop=\relax

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

1517 \newif\ifka@db@lastpage
1518 \ka@db@lastpagefalse
\ps@headings
1519 \def\ps@headings{
1520 \headheight=\ltf@headheight
1521 \headsep=\ltf@headsep
1522 \ifka@db@ltxtwoe
1523  \relax
1524  \else
1525  \footheight 0truemm

1526 \fi

1527 \footskip 0truemm
1528 \def\@oddhead{%
1529  \sl \headtoname\
1530  \ignorespaces\toname \hfil \@date
1531  \hfil \pagename{} \thepage}
1532 \def\@oddfoot{}
1533 \def\@evenhead{%
1534  \sl \headtoname\
1535  \ignorespaces\toname \hfil \@date
1536  \hfil \pagename{} \thepage}
1537 \def\@evenfoot{}
1538 ⟨debug⟩ \message{executing pagestyle headings}%

1539 }

\ps@empty
1540 \def\ps@empty{%
1541 \headheight=\lts@headheight

1542 \headsep=\lts@headsep
1543 \ifka@db@ltxtwoe
1544  \relax
1545  \else
1546  \footheight 0truemm

1547 \fi

1548 \footskip 0truemm
1549 \def\@oddhead{}
1550 \def\@oddfoot{}
1551 \def\@evenhead{}
1552 \def\@evenfoot{}
1553 ⟨debug⟩ \message{executing pagestyle empty}%

1554 }

\ps@first@page
1555 \def\ps@first@page{%
1556 \headheight=\lts@headheight
1557 \headsep=\lts@headsep
1558 \ifka@db@ltxtwoe
1559  \relax
1560  \else
1561  \footheight 4.2truemm

1562 \fi

1563 \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{}}
1564 \def\@oddhead{}
1565 \def\@evenhead{}
1566 \expandafter\ifx\csname psfirstpagehook\endcsname\relax
1567  \else
1568  \psfirstpagehook

1569 \fi

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

1571 }

\psfirstpagehook
1572 \def\psfirstpagehook{%
1573 \def\@oddfoot{}
1574 \def\@evenfoot{}}
\ps@plain

1575 \def\ps@plain{%
1576 \headheight=\lts@headheight
1577 \headsep=\lts@headsep
1578 \ifka@db@ltxtwoe
1579  \relax
1580  \else
1581  \footheight 4.2truemm

1582 \fi

1583 \footskip 8.8truemm
1584 \def\@oddhead{}
1585 \def\@oddfoot{\hfil{\ka@db@fontshape{n}%
1586  \ka@db@fontseries{m}\ka@db@selectfont\thepage}
1587  \hfil}%
1588 \def\@evenhead{}
1589 \def\@evenfoot{}
1590 ⟨debug⟩ \message{executing pagestyle plain}%

1591 }

ps@myheadings
1592 \def\ps@myheadings{%\let\@mkboth\@gobbletwo
1593 \headheight=\ltf@headheight
1594 \headsep=\ltf@headsep
1595 \ifka@db@ltxtwoe
1596  \relax
1597  \else
1598  \footheight 0truemm

1599 \fi

1600 \footskip 0truemm
1601 \def\@oddhead{{\sl \rightmark}}%
1602 \def\@oddfoot{}
1603 \def\@evenhead{{\sl \leftmark}}%
1604 \def\@evenfoot{}
1605 ⟨debug⟩ \message{executing pagestyle myheadings}%

1606 }

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)

1607 \def\ps@contheadings{%\let\@mkboth\@gobbletwo
1608 \headheight=\ltf@headheight
1609 \headsep=\ltf@headsep
1610 \ifka@db@ltxtwoe
1611  \relax
1612  \else
1613  \footheight 0truemm

1614 \fi

1615 \footskip 8.8truemm
1616 \def\@oddhead{{\sl \headtoname\ \ignorespaces\toname \hfil \@date
1617  \hfil\pagename{} \thepage}}%
1618 \def\@oddfoot{\ifka@db@lastpage
1619  \relax
1620 ⟨debug⟩  \message{ignoring oddfoot in contheadings}%
1621  \else
1622  \addtocounter{page}{1}%
1623  \hfil--- \thepage{} ---\hfil%
1624  \addtocounter{page}{-1}%
1625 ⟨debug⟩  \message{executing oddfoot in contheadings}%
1626  \fi}
1627 \def\@evenhead{{\sl \headtoname\ \ignorespaces\toname \hfil \@date
1628  \hfil\pagename{} \thepage}}%
1629 \def\@evenfoot{\ifka@db@lastpage
1630  \relax
1631 ⟨debug⟩  \message{ignoring evenfoot in contheadings}%
1632  \else
1633  \addtocounter{page}{1}%
1634  ~\hfil--- \thepage{} ---~%
1635  \addtocounter{page}{-1}%
1636 ⟨debug⟩  \message{executing evenfoot in contheadings}%
1637  \fi}
1638 ⟨debug⟩ \message{executing pagestyle contheadings}%

1639 }

3.25 Fonts — paragraphing

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

1640 \lineskip 1pt
1641 \normallineskip 1pt

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

1642 \def\baselinestretch{1}

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

1643 \parskip .7em
1644 \parindent 0pt
1645 \topsep .4em
1646 \partopsep 0pt
1647 \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.

1648 \@lowpenalty 51
1649 \@medpenalty 151
1650 \@highpenalty 301
1651 \@beginparpenalty -\@lowpenalty
1652 \@endparpenalty -\@lowpenalty
1653 \@itempenalty -\@lowpenalty

3.26 Lists

3.26.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.
1654 \leftmargini 2.5em
1655 \leftmarginii 2.2em
1656 \leftmarginiii 1.87em
1657 \leftmarginiv 1.7em
1658 \leftmarginv 1em
1659 \leftmarginvi 1em

Here we set the top level leftmargin.

1660 \leftmargin\leftmargini

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

1661 \labelwidth\leftmargini
1662 \advance\labelwidth-\labelsep
1663 \labelsep 5pt
1664 \parsep 0pt
\@listi
1665 \let\@listi\relax

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

1666 \def\@listii{%
1667 \leftmargin\leftmarginii
1668 \labelwidth\leftmarginii
1669 \advance\labelwidth-\labelsep}
1670 \def\@listiii{%

1671 \leftmargin\leftmarginiii
1672 \labelwidth\leftmarginiii
1673 \advance\labelwidth-\labelsep
1674 \topsep .2em
1675 \itemsep \topsep}
1676 \def\@listiv{%
1677 \leftmargin\leftmarginiv
1678 \labelwidth\leftmarginiv
1679 \advance\labelwidth-\labelsep}
1680 \def\@listv{%
1681 \leftmargin\leftmarginv
1682 \labelwidth\leftmarginv
1683 \advance\labelwidth-\labelsep}
1684 \def\@listvi{%
1685 \leftmargin\leftmarginvi
1686 \labelwidth\leftmarginvi
1687 \advance\labelwidth-\labelsep}

3.26.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.

1688 \def\theenumi{\arabic{enumi}}
1689 \def\theenumii{\alph{enumii}}
1690 \def\theenumiii{\roman{enumiii}}
1691 \def\theenumiv{\Alph{enumiv}}
\labelenumi \labelenumii \labelenumiii \labelenumiv The label for each item is generated by the commands
  \labelenumi ... \labelenumiv.
1692 \def\labelenumi{\arabic{enumi}.}
1693 \def\labelenumii{(\alph{enumii})}
1694 \def\labelenumiii{\roman{enumiii}.}
1695 \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.

1696 \def\p@enumii{\theenumi}
1697 \def\p@enumiii{\theenumi(\theenumii)}
1698 \def\p@enumiv{\p@enumiii\theenumiii}

3.26.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.

1699 \def\labelitemi{$\bullet$}
1700 \def\labelitemii{\bf --}
1701 \def\labelitemiii{$\ast$}
1702 \def\labelitemiv{$\cdot$}

3.26.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.

1703 \def\descriptionlabel#1{%
1704 \hspace\labelsep \bf #1}
1705 \def\description{%
1706 \list{}{\labelwidth\z@ \itemindent-\leftmargin
1707  \let\makelabel\descriptionlabel}}
1708 \let\enddescription\endlist

3.26.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.
1709 \def\verse{\let\\=\@centercr
1710 \list{}{\itemsep\z@
1711  \itemindent -15pt
1712  \listparindent \itemindent
1713  \rightmargin\leftmargin
1714  \advance\leftmargin 15pt}\item[]}
1715 \let\endverse\endlist

3.26.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.

1716 \def\quotation{%
1717 \list{}{\listparindent 1.5em
1718  \itemindent\listparindent
1719  \rightmargin\leftmargin}%
1720 \item[]}
1721 \let\endquotation=\endlist

3.26.7 Quote

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

1722 \def\quote{%

1723 \list{}{\rightmargin\leftmargin}%
1724 \item[]}
1725 \let\endquote=\endlist

3.27 Setting parameters for existing environments

3.27.1 Array and tabular

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

1726 \arraycolsep 5pt

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

1727 \tabcolsep 6pt

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

\arrayrulewidth.
1728 \arrayrulewidth .4pt

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

by \doublerulesep.
1729 \doublerulesep 2pt

3.27.2 Tabbing

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

1730 \tabbingsep \labelsep

3.27.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.

1731 \skip\@mpfootins = \skip\footins

3.27.4 Framed boxes

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

1732 \fboxsep = 3pt

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

1733 \fboxsep = 3pt
1734 \fboxrule = .4pt

3.27.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.

1735 \def\theequation{\arabic{equation}}
1736 \@addtoreset{equation}{letter}

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

1737 % \setlength\jot{3pt}

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

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

3.28 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.

1739 \def\footnoterule{%
1740 \kern-1\p@
1741 \hrule width .4\columnwidth
1742 \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.

1743 %          \long\def\@makefntext#1{%
1744 %             \@setpar{\@@par
1745 %                      \@tempdima = \hsize
1746 %                      \advance\@tempdima-10pt
1747 %                      \parshape \@ne 10pt \@tempdima}%
1748 %             \par
1749 %             \parindent 1em\noindent
1750 %             \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.

1751 % \long\def\@makefntext#1{%
1752 %     \parindent 1em%
1753 %     \noindent
1754 %     \hbox to 1.8em{\hss$\m@th^{\@thefnmark}$}#1}
\@makefntext
1755 \long\def\@makefntext#1{%
1756 \noindent
1757 \hangindent 5pt%
1758 \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.

1759 %\def\@makefnmark{\hbox{$^{\@thefnmark}\m@th$}}
1760 \c@topnumber=2
1761 \def\topfraction{.7}
1762 \c@bottomnumber=1
1763 \def\bottomfraction{.3}
1764 \c@totalnumber=3
1765 \def\textfraction{.2}
1766 \def\floatpagefraction{.5}
1767 \c@dbltopnumber= 2
1768 \def\dbltopfraction{.7}
1769 \def\dblfloatpagefraction{.5}

3.29 The current date

\today
1770 \def\today{\number\day.\space\ifcase\month\or
1771 Januar\or Februar\or M\"arz\or April\or Mai\or Juni\or
1772 Juli\or August\or September\or Oktober\or November\or Dezember\fi
1773 \space\number\year}
\@znumber \ntoday \@ntoday
1774 \newcount\yearcnt
1775 \yearcnt=\year
1776 \advance\yearcnt-\number1900
1777 \def\@znumber#1{\ifnum\number#1<10 0\number#1\else\number#1\fi}

1778 \def\ntoday{\@znumber{\number\day}.%
1779  \@znumber{\number\month}.%
1780  \@znumber{\the\yearcnt}}
1781 \def\@ntoday{\ntoday}
1782 \def\up#1{\leavevmode \raise.16ex\hbox{#1}}
\concern \subject
1783 \newbox\@betr
1784 \long\def\concern#1{%
1785 \setbox\@betr=\hbox{}
1786 \def\@concern{\hangindent=\wd\@betr
1787  \hangafter=1
1788  \unhbox\@betr #1\par}}
1789 \let\subject=\concern

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

1790 \newlength{\@fordate}
1791 \setlength{\@fordate}{\textwidth}
1792 \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?)

1793 \def\@answertoold{%
1794 \setlength{\@fordate}{\textwidth}
1795 \addtolength{\@fordate}{-131truemm}
1796 \parbox[b]{50.8truemm}{{\ka@db@fontsize{9}{11pt}\ka@db@selectfont
1797  \yourmailmsg{}}%
1798  \hfill\\ \@yourmail\hbox{}\hss}%
1799 \parbox[b]{50.8truemm}{{\ka@db@fontsize{9}{11pt}\ka@db@selectfont
1800  \signmsg{}}%
1801  \hfill\\ \@mymail\hbox{}\hss}%
1802 \parbox[b]{25.4truemm}{{\ka@db@fontsize{9}{11pt}\ka@db@selectfont
1803  \phonemsg{} \@prephone{}}%
1804  \hfill\\ \@phone\hbox{}\hss}%
1805 \parbox[b]{\@fordate}{{\ka@db@fontsize{9}{11pt}\ka@db@selectfont
1806  \ifx\@empty\@place
1807  \vphantom{K}\rule{2pt}{0pt}
1808  \else
1809  \@place{}%

1810 \fi

1811  }\hfill\\ \@ntoday}

1812 }

\@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.

1813 \def\@answertonew{%
1814 \hbox to \textwidth{%
1815  \setlength{\@fordate}{\textwidth}%
1816  \addtolength{\@fordate}{-156.4truemm}%
1817  \addtolength{\@fordate}{3cm}% This is a heavens value.
1818  \parbox[b]{50.8truemm}{{\ka@db@fontsize{7}{9pt}\ka@db@selectfont
1819  \yourmailmsg{}}%
1820  \hfill\\ \@yourmail\hbox{}\hss}%
1821  \parbox[b]{50.8truemm}{{\ka@db@fontsize{7}{9pt}\ka@db@selectfont
1822  \signmsg{}}%
1823  \hfill\\ \@mymail\hbox{}\hss}%
1824  \parbox[b]{50.8truemm}{{\ka@db@fontsize{7}{9pt}\ka@db@selectfont
1825  \phonemsg{}%
1826  \writermsg{}%

1827 }%

1828  \hfill\\
1829  \ifx\@empty\@prephone\relax
1830  \else
1831  \@prephone{}

1832 \fi

1833  \@phone
1834  \ka@db@ifemptyvar{writer}%
1835  {}% true
1836  {% false
1837  \ifx\@empty\@phone\relax
1838  \else
1839  ,\ % insert comma and blank only
1840  \fi%   if both are nonempty
1841  \ka@db@usevar{writer}%

1842 }%

1843 %                           \ifx\@empty\@writer\relax
1844 %                           \else
1845 %                             \ifx\@empty\@phone\relax
1846 %                             \else
1847 %                             ,\ % insert comma and blank only if both
1848 %                             \fi% are nonempty
1849 %                             \@writer
1850 %                           \fi
1851  \hbox{}\hss}%
1852  \parbox[b]{\@fordate}{{\ka@db@fontsize{7}{9pt}\ka@db@selectfont
1853  \datemsg
1854  }\hfill\\ \@ntoday}
1855  \hss}%

1856 }

\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.

1857 \def\enabledraftstandard{%
1858 \let\signmsg=\signmsgnew
1859 \let\@answerto=\@answertonew

1860 } 1861 %

1862 \def\disabledraftstandard{%
1863 \let\signmsg=\signmsgold
1864 \let\@answerto=\@answertoold

1865 } 1866 %

1867 \disabledraftstandard

3.30 Old dinbrief commands

\Postvermerk
1868 \def\Postvermerk#1{%
1869 %\@warning{Use \string\postremark\space instead %
1870 %          of \string\Postvermerk}%
1871 \ClassWarning{dinbrief}{%
1872  Use \string\postremark\space instead %
1873  of \string\Postvermerk}%
1874 \postremark{#1}%

1875 }

\Behandlungsvermerk
1876 \def\Behandlungsvermerk#1{%
1877 %\@warning{Use \string\handling\space instead of %
1878 %          \string\Behandlungsvermerk}%
1879 \ClassWarning{dinbrief}{%
1880  Use \string\handling\space instead of %
1881  \string\Behandlungsvermerk}%
1882 \handling{#1}%

1883 }

\Datum
1884 \def\Datum#1{%
1885 \date{#1}%

1886 }

1887 \long\def\ka@db@splitondblpt#1{%
1888 \ka@db@splitdblptx #1::\@st@p@
1889 \ifx\ka@db@fromadrtwo\@empty
1890 \else
1891  \ka@db@splitdblpty #1\@st@p@

1892 \fi 1893 }

1894 \def\ka@db@fromadrone{}%
1895 \def\ka@db@fromadrtwo{}%
1896 \long\def\ka@db@splitdblptx #1::#2\@st@p@{%
1897 \def\ka@db@fromadrone{#1}%
1898 \def\ka@db@fromadrtwo{#2}%

1899 }

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

1902 }

\stdaddress
1903 \long\def\stdaddress#1{%
1904 \ka@db@splitondblpt{#1}
1905 \address{%
1906  \vspace*{7truemm}
1907  \leavevmode
1908  \hbox to 0pt{\hbox to \textwidth{\hfil\@date}\hss}%
1909  \parbox[t]{\textwidth}{\ka@db@fromadrone\ka@db@fromadrtwo}%

1910 }%

1911 \@noreflinetrue

1912 }

\Absender
1913 \long\def\Absender#1{%
1914 %\@warning{Use \string\stdaddress\space instead of \string\Absender}%
1915 \stdaddress{#1}%

1916 }

\Retourlabel
1917 \def\Retourlabel{%
1918 %\@warning{\string\Retourlabel\space not yet implemented.}%
1919 \ClassWarning{dinbrief}{%
1920  \string\Retourlabel\space not yet implemented.}%

1921 }

\Fenster
1922 \def\Fenster{%
1923 \ClassWarning{dinbrief}{%
1924  \string\Fenster\space not yet implemented.}%

1925 }

\Retouradresse
1926 \def\Retouradresse#1{%
1927 \ClassWarning{dinbrief}{%
1928  Use \string\backaddress\space instead of \string\Retouradresse}%
1929 \backaddress{#1}%

1930 }

\Betreff
1931 \def\Betreff#1{%
1932 \ClassWarning{dinbrief}{%
1933  Use \string\subject\space instead of \string\Betreff}%
1934 \concern{#1}%

1935 }

3.30.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.

1936 \def\dinquote{%
1937 \list{}{\leftmargin=1in}%
1938 \item[]}
1939 \let\enddinquote=\endlist
\Einrueckung
1940 \long\def\Einrueckung#1{%
1941 \ClassWarning{dinbrief}{%
1942  Use the environment dinquote in future}%
1943 \begin{dinquote}%

1944 #1

1945 \end{dinquote}%

1946 }

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

1947 \newif\ifka@db@enclright
1948 \ka@db@enclrightfalse
\enclright
1949 \def\enclright{%
1950 \ka@db@enclrighttrue

1951 }

\enclnoenclright
1952 \def\noenclright{%
1953 \ka@db@enclrightfalse

1954 }

\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.

1955 \def\anlagenrechts{%
1956 \ka@db@enclrighttrue

1957 }

\Anlagen
1958 \def\Anlagen#1{%
1959 %\@warning{Use \string\encl\space instead of \string\Anlagen}%
1960 \ClassWarning{dinbrief}{%
1961  Use \string\encl\space instead of \string\Anlagen}%
1962 \encl[]{#1}%

1963 }

\Verteiler
1964 \def\Verteiler#1{%
1965 %\@warning{Use \string\cc\space instead of \string\Verteiler}%
1966 \ClassWarning{dinbrief}{%
1967  Use \string\cc\space instead of \string\Verteiler}%
1968 \cc[]{#1}%

1969 }

3.31 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.

1970 \ifka@db@nfss
1971 \else
1972  \ifka@db@nfsstwo
1973  \else
1974  \normalsize

1975 \fi 1976 \fi

1977 \smallskipamount=.5\parskip
1978 \medskipamount=\parskip
1979 \bigskipamount=2\parskip
1980 \pagestyle{plain}
1981 \pagenumbering{arabic}
1982 \onecolumn
1983 % \@fileswfalse
1984 \errorcontextlines=10

1985 ⟨/class | style⟩

3.32 The short class file/the short style file

This file only inputs the dinbrief.sty file.

1986 ⟨∗shortclass⟩

1987 \input dinbrief.sty

1988 ⟨/shortclass⟩

This file only inputs the dinbrief.cls file.

1989 ⟨∗shortstyle⟩

1990 \input dinbrief.cls

1991 ⟨/shortstyle⟩

4 An example letter

4.1 The letter head

1992 ⟨∗brfkopf⟩

1993 %

1994 \newlength{\UKAwd}
1995 \newlength{\ADDRwd}

1996 %

1997 \font\fa=cmcsc10  scaled 1440
1998 \font\fb=cmss12   scaled 1095
1999 \font\fc=cmss10   scaled 1000

2000 %

2001 \def\briefkopf{
2002 \settowidth{\UKAwd}{\fa Institut f"ur Verpackungen}
2003 \settowidth{\ADDRwd}{\fc EARN/BITNET: yx99 at dkauni2}
2004 \expandafter\ifx\csname fontsize\endcsname\relax\else
2005 \fontsize{12}{14.4pt}\selectfont

2006 \fi 2007 %

2008 \vspace*{7truemm}
2009 \raisebox{-11.3mm}{%
2010 \setlength{\unitlength}{1truemm}
2011 \begin{picture}(15,15)(0,0)
2012  \thicklines
2013  \put(7.5,7.5){\circle{15}}
2014  \put(7.5,7.5){\circle{10}}
2015  \put(7.5,7.5){\circle{ 5}}
2016 \end{picture}%

2017 }

2018 {\fc\hspace{.2em}}
2019 \parbox[t]{\UKAwd}{\centering{\fa Universit\"at Gralsruhe} \\
2020  \centering{\fa Institut f"ur Verpackungen} \\[.5ex]
2021  \centering{\fb Prof.\ Dr.\ Fritz Schreiber} }
2022 \hfill
2023 \parbox[t]{\ADDRwd}{\fc Im Hinterhof 2 $\cdot$ Postfach 8960 \\
2024  \fc D--76821 Gralsruhe \\
2025  \fc Telefon: (0127) 806-0815 \\
2026  \fc Electronic Mail: \\
2027  \fc EARN/BITNET: yx99 at error2 }

2028 } 2029 %

2030 \signature{Prof.\ Dr.\ Fritz Schreiber}
2031 \place{Gralsruhe}
2032 \address{\briefkopf}
2033 \phone{(0127)}{806-0815}

2034 \def\FS{Prof.\,F.\,Schreiber, Uni.\,Gralsruhe,
2035  Postf.\,8960, 76821\,Gralsruhe\rule[-1ex]{0pt}{0pt}}

2036

2037 ⟨/brfkopf⟩

4.2 The letter

2038 ⟨∗example⟩

This will be a letter.

2039

2040 \expandafter\ifx\csname documentclass\endcsname\relax
2041  \documentstyle[german]{dinbrief}
2042 \else
2043  \documentclass[10pt]{dinbrief}
2044  \usepackage{german}

2045 \fi

2046

2047 \input brfkopf

2048

2049 % \makelabels
2050 % \labelstyle{deskjet}

2051

2052 \pagestyle{contheadings}

2053

2054 \begin{document}

2055

2056 \bottomtext{%
2057 \makebox[\textwidth][c]{\small\sf
2058 Bankverbindung $\cdot$ Kreissparkasse Gralsruhe %
2059 (BLZ~999~500~00) 98~765~4

2060 } 2061 }

2062

2063 \date{9.~Juli 1999}

2064

2065 \setlength{\topmargin}{-15pt}
2066 \backaddress{\FS}

2067

2068 \begin{letter}{Prof.\ Dr.\ Hans Forschegut\\
2069  Institut f"ur Abfallbeseitigung\\
2070  Fachhochschule Waldstadt\\
2071  Postfach 3322\\[\medskipamount]
2072  1100 Waldstadt}
2073 \yourmail{\ }
2074 \subject{Bitte um "Uberlassung einer Sammlung von Alka-Seltzer Flaschen}

2075

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

2077

2078 von Kollegen habe ich erfahren, da"s sich bei Ihnen eine gro"se
2079 Anzahl von Alka-Seltzer Flaschen mit nur noch einer Tablette

2080 angesammelt hat, da eine Flasche 25~Tabletten enth"alt, der
2081 Beipackzettel aber angibt, da"s stets 2~Tabletten gleichzeitig
2082 einzunehmen sind.

2083

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

2089

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

2091

2092 \ps{Falls Sie es w"unschen, lasse ich "uberpr"ufen, ob Sie Ihre
2093  Schenkung in Verbindung mit unserer Forschung von der Steuer
2094  absetzen k"onnen.}
2095 \encl{Forschungsbericht Nr.\ 6/99 des IfA}
2096 \cc{Future Pharma\\
2097  Bundesministerium zur Unterst"utzung der Pharmaindustrie}

2098

2099 \end{letter}

2100

2101 \end{document}

2102 ⟨/example⟩

5 Testing the class/style

2103 ⟨∗brfbody⟩

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

2106

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

2108

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

2114

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

2120

2121 {\bf Testing \verb|itemize|}\hfil\break
2122 \begin{itemize}
2123 \item Dies ist ein \verb|\item|.
2124  \begin{itemize}
2125  \item \verb|\item| in Level 2.

2126  \item
2127  \begin{itemize}
2128  \item \verb|\item| in Level 3.
2129  \end{itemize}
2130  \end{itemize}
2131 \item Zweites \verb|\item|.
2132 \end{itemize}

2133

2134 {\bf Testing \verb|enumerate|}\hfil\break
2135 \begin{enumerate}
2136 \item Dies ist ein \verb|\item|.
2137  \begin{enumerate}
2138  \item \verb|\item| in Level 2.
2139  \item
2140  \begin{enumerate}
2141  \item \verb|\item| in Level 3.
2142  \end{enumerate}
2143  \end{enumerate}
2144 \item Zweites \verb|\item|.
2145 \end{enumerate}

2146

2147 {\bf Testing \verb|description|}\hfil\break
2148 \begin{description}
2149 \item[First] Dies ist ein \verb|\item|.
2150  \begin{description}
2151  \item[Second] \verb|\item| in Level 2.
2152  \item[Third]
2153  \begin{description}
2154  \item \verb|\item| in Level 3.
2155  \item Zweites \verb|\item| in Level 3.
2156  \end{description}
2157  \end{description}
2158 \item[Second] Zweites \verb|\item|.
2159 \end{description}

2160

2161 {\bf Testing Lists}\hfil\break
2162 \begin{description}
2163 \item[First] Dies ist ein \verb|\item|.
2164  \begin{itemize}
2165  \item \verb|\item| in Level 2.
2166  \item
2167  \begin{enumerate}
2168  \item \verb|\item| in Level 3.
2169  \item Zweites \verb|\item| in Level 3.
2170  \end{enumerate}
2171  \end{itemize}
2172 \item[Second] Zweites \verb|\item|.
2173 \item[Third]
2174  \begin{enumerate}
2175  \item Genius \LaTeX.

2176  \item Why has been there so large distance between the label
2177  and the first number in elder versions of \LaTeX?
2178  \end{enumerate}
2179 \end{description}

2180

2181 {\bf Testing \verb|verse|}\hfil\break
2182 \begin{verse}
2183 {\bf Die F"u"se im Feuer\/}

2184

2185 Wild zuckt der Blitz,\\
2186 im fahlen Lichte steht ein Turn,\\
2187 der Donner rollt,\\
2188 ein Reiter k"ampft mit seinem Ro"s,\\
2189 springt ab un pocht ans Tor und l"armt.\\
2190 Sein Mantel saust im Wind,\\
2191 und knarrent "offnet jetzt das Tor ein Edelmann.\\
2192 \dots\\
2193 Der Reiter tritt in einen dunklen Ahnensaal.

2194

2195 Von eines weiten Herdes Feuer schwach erhellt,\\
2196 droht hier ein Hugenott im Harnisch,\\
2197 dort ein Weib, ein stolzes Weib in braunen Ebenbild.\\
2198 Der Reiter wirft sich in den Sessel vor dem Herd\\
2199 und starrt in den lebendgen Brand\\
2200 \dots \\
2201 Die Flamme zischt, zwei F"u"se zucken in der Glut.

2202

2203 \dots
2204 \end{verse}

2205

2206 {\bf Testing \verb|quotation|}\hfil\break
2207 \begin{quotation}
2208 ``Ich finde'', sagte einst Winston Churchill im
2209 Unterhaus, ``die Art von Kritik, wie ich sie am
2210 Sonntagmorgen bei meiner Ankunft in den Zeitungen
2211 fand, erinnert mich immer an die Geschichte von
2212 dem Matrosen, der in ein Hafenbecken sprang ---
2213 in Plymouth, glaube ich ---, um einen kleinen
2214 Jungen vom Ertrinken zu retten.

2215

2216 Dort sprach eine Frau den Matrosen an:\\
2217 `Sind Sie der Mann, der meinen Sohn neulich
2218 aus dem Wasser gezogen hat?'\\
2219 Bescheiden erwiderte der Matrose:\\
2220 `Ja, das stimmt.'\\
2221 `Aha', sagte die Frau: `Ich suche Sie schon
2222 die ganze Zeit \dots\ Wo ist seine M"utze?'{}''
2223 \end{quotation}

2224

2225 {\bf Testing \verb|quote|}\hfil\break

2226 \begin{quote}
2227 Ein {\em klassisches\/} Werk ist ein Buch,\\
2228 das die Leute loben,\\
2229 aber nie lesen. \hfill({\em E.\ Hemingway\/})
2230 \end{quote}

2231

2232 {\bf Testing \verb|equation|}\hfil\break
2233 \begin{equation}
2234 x^2 = y^2 + z^2
2235 \end{equation}

2236

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

2238

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

2240

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

2242

2243 \ps{Falls Sie es w"unschen, lasse ich "uberpr"ufen, ob Sie Ihre
2244  Schenkung in Verbindung mit unserer Forschung von der Steuer
2245  absetzen k"onnen.}
2246 \encl{Forschungsbericht Nr.\ 6/99 des IfA}
2247 \cc{Future Pharma\\
2248  Bundesministerium zur Unterst"utzung der Pharmaindustrie}

2249

2250 ⟨/brfbody⟩

2251 ⟨∗10pt⟩

2252 \expandafter\ifx\csname documentclass\endcsname\relax
2253  \documentstyle[german]{dinbrief}
2254  \typeout{Using the command \string\documentstyle.}
2255 \else
2256  \documentclass[10pt]{dinbrief}
2257  \usepackage{german}
2258  \typeout{Using the command \string\documentclass.}

2259 \fi

2260 ⟨/10pt⟩

2261 ⟨∗11pt⟩

2262 \expandafter\ifx\csname documentclass\endcsname\relax
2263  \documentstyle[11pt,german]{dinbrief}
2264  \typeout{Using the command \string\documentstyle.}
2265 \else
2266  \documentclass[11pt]{dinbrief}
2267  \usepackage{german}
2268  \typeout{Using the command \string\documentclass.}

2269 \fi

2270 ⟨/11pt⟩

2271 ⟨∗12pt⟩

2272 \expandafter\ifx\csname documentclass\endcsname\relax
2273  \documentstyle[12pt,german]{dinbrief}
2274  \typeout{Using the command \string\documentstyle.}
2275 \else
2276  \documentclass[12pt]{dinbrief}
2277  \usepackage{german}
2278  \typeout{Using the command \string\documentclass.}

2279 \fi

2280 ⟨/12pt⟩

2281 ⟨∗norm⟩

2282 \expandafter\ifx\csname documentclass\endcsname\relax
2283  \documentstyle[norm,german]{dinbrief}
2284  \typeout{Using the command \string\documentstyle.}
2285 \else
2286  \documentclass[norm]{dinbrief}
2287  \usepackage{german}
2288  \typeout{Using the command \string\documentclass.}

2289 \fi

2290 ⟨/norm⟩

2291 ⟨∗test⟩

2292 \input brfkopf.tex

2293

2294 \newcommand{\oneletter}{%
2295 \begin{letter}{%
2296 Herrn Professor\\
2297 Dr.\ Hans Forschegut\\
2298 Institut f"ur Abfallbeseitigung\\
2299 Fachhochschule Waldstadt\\
2300 Postfach 3322\\[\medskipamount]
2301 {\bf 1100 Waldstadt}}

2302

2303 \input brfbody.tex

2304

2305 \end{letter}

2306

2307 }

2308

2309 \begin{document}

2310

2311 \bottomtext{%
2312 \makebox[\textwidth][c]{\small\sf
2313 Bankverbindung $\cdot$ Kreissparkasse Gralsruhe %
2314 (BLZ~999~500~00) 98~765~4

2315 } 2316 }

2317

2318 \backaddress{\FS}

2320 \pagestyle{empty}

2321

2322 \enabledraftstandard

2323

2324 \oneletter

2325

2326 \disabledraftstandard

2327

2328 \oneletter

2329

2330 \pagestyle{plain}

2331

2332 \writer{Gussmann}

2333

2334 \enabledraftstandard

2335

2336 \oneletter

2337

2338 \disabledraftstandard

2339

2340 \oneletter

2341

2342 \pagestyle{headings}

2343

2344 \writer{Gussmann}

2345

2346 \enabledraftstandard

2347

2348 \oneletter

2349

2350 \disabledraftstandard

2351

2352 \oneletter

2353

2354 \pagestyle{contheadings}

2355

2356 \enabledraftstandard

2357

2358 \oneletter

2359

2360 \disabledraftstandard

2361

2362 \oneletter

2363

2364 ⟨/test⟩

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

2366 \end{document}

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

6 Example for using the old dinbrief API

2368 ⟨∗dinbriefold⟩

2369 %

2370 % example letter, example receiver addresses

2371 %

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

2374 %

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

2380 %

2381 \expandafter\ifx\csname documentclass\endcsname\relax
2382  \documentstyle[german]{dinbrief}
2383  \typeout{Using the command \string\documentstyle.}
2384 \else
2385  \documentclass[10pt]{dinbrief}
2386  \usepackage{german}
2387  \typeout{Using the command \string\documentclass.}

2388 \fi

2389

2390 \Etihoehe{41mm}%
2391 \Etirand{46.3mm}%
2392 \Etizahl{6}%
2393 \makelabels
2394 \spare{1}
2395 %\pagestyle{empty}
2396 \begin{document}

2397 %

2398 % Musterbrief -- Anfang
2399 % In der vorliegenden Version (beachte Auskommentierungen mit %)
2400 % liefert er das Anwendungsbeispiel 4 von DIN 5008

2401 %

2402 \begin{letter}{%
2403 Stadt G"ottingen\\
2404 Stadtbauamt\\
2405 Postfach 28 17\par
2406 3400 G"ottingen

2407 }

2408 \Postvermerk{Einschreiben}
2409 \Behandlungsvermerk{E\ i\ l\ t}
2410 \Datum{G"ottingen, 29.04.86}
2411 \Absender{Klaus Waldmann\\B"urgerstra"se 135\\3400 G"ottingen\\::Tel.\
2412 (05 51) 9 34 56}
2413 \Retourlabel
2414 \Fenster

2415 \Retouradresse{K. Waldmann $\cdot$ B"urgerstr.\ 135 $\cdot$
2416  3400 G"ottingen}
2417 \Betreff{Mein Bauvorhaben Waldrebenweg 9}
2418 \signature{K. Waldmann}
2419 \opening{Sehr geehrte Damen und Herren,}
2420 den Antrag zur Genehmigung f"ur den Neubau eines Einfamilienhauses auf
2421 meinem Grund\-st"uck G"ottingen, Waldrebenweg 9, hat der Architekt,
2422 Herr Dipl.-Ing.\ G. Schwarz, mit allen erforderlichen Unterlagen am
2423 03.01.86 eingereicht. Die Baugenehmigung habe ich bis heute nicht
2424 erhaltern.

2425

2426 \Einrueckung{%Der folgende Text wird eingerueckt
2427 Da ich die Finanzierung des Bauvorhabens ohne die Baugenehmigung nicht
2428 endg"ultig kl"aren kann und der Beginn der Bauarbeiten nicht verz"ogert
2429 werden soll, bitte ich dringend, das Genehmigungsverfahren zu
2430 beschleunigen.
2431 }  % Ende der Einrueckung

2432

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

2436

2437 \anlagenrechts
2438 \Anlagen{2 Anlagen}
2439 \Verteiler{Verteiler:\\Landratsamt}

2440

2441 \closing{Mit freundlichen Gr"u"sen}
2442 \ps{Also bis bald!}
2443 \end{letter}

2444

2445 % normgerecht geschriebene Adressen

2446

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

2448

2449 8580 Bayreuth}
2450 \end{letter}

2451

2452 \begin{letter}{Frau\\ Annemarie Hartmann\\Vogelsangstr.\ 17 II\par
2453 2870 Delmenhorst}
2454 \Postvermerk{Briefdrucksache}
2455 \end{letter}

2456

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

2459

2460 8221 Alm Post Neukirchen}
2461 \Postvermerk{Nicht nachsenden}
2462 \end{letter}

2463

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

2466 4709 Bergkamen}
2467 \Postvermerk{Warensendung}
2468 \end{letter}

2469

2470 \begin{letter}{Herrn Staatsanwalt\\Dr.\ Ernst Meyer und Frau\\
2471 Talblick 2

2472

2473 8200 Rosenheim}
2474 \Postvermerk{Eilzustellung -- auch nachts}
2475 \end{letter}

2476

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

2479

2480 8000 M"unchen 19}
2481 \Postvermerk{Einschreiben -- R"uckschein}
2482 \end{letter}

2483

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

2486

2487 5600 Wuppertal 21}
2488 \end{letter}

2489

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

2491

2492 7030 B"oblingen}
2493 \end{letter}

2494

2495 \begin{letter}{Lack- und Farbwerke\\Dr.\ Hans Sendler \& Co.\\
2496 Abt.\ FDM 412/10\\Postfach 80 19 36\par
2497 6230 Frankfurt 80}
2498 \end{letter}

2499

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

2503

2504 \begin{letter}{W"aschegro"shandel\\Robert Bergmann\\Venloer
2505 Stra"se 80 -- 82\par 5000 K"oln 30}
2506 \end{letter}

2507

2508 \begin{letter}{Firma\\Otto Pfleiderer\\Braunenweiler\\Hauptstr.\ 5\par
2509 7968 Saulgau 1}
2510 \Postvermerk{Drucksache}
2511 \end{letter}

2512

2513 \begin{letter}{Amtsgericht Leer\\Grundbuchamt\\Postfach 11 24\par
2514 2950 Leer}

2515 \end{letter}

2516

2517 \begin{letter}{Regierungspr"asident\\Dezernat 44.II.2\\
2518 Postfach 59 07\par 4400 M"unster}
2519 \end{letter}

2520

2521 \begin{letter}{Nassauische Heimst"atte GmbH\\
2522 Abt.\ Landestreuhandstelle\\Postfach 10 29 17\par 6000 Frankfurt 1}
2523 \end{letter}

2524

2525 \begin{letter}{Volksbank Friedberg\\Hauptzweigstelle Bad Nauheim\\
2526 Aliceplatz 4\par 6350 Bad Nauheim}
2527 \end{letter}

2528

2529 \begin{letter}{VEB Ph"onix-Apparatewerk\\
2530 Absatzabteilung\\Inselstr.\ 14/20

2531

2532 DDR-7021 Leipzig}
2533 \Postvermerk{Einschreiben}
2534 \end{letter}

2535

2536 \begin{letter}{Mevrouv J. de Vries\\ Poste restante A. Cuypstraat\\
2537 Postbus 99730\\1000 NA AMSTERDAM

2538

2539 NIEDERLANDE}
2540 \end{letter}

2541

2542 \begin{letter}{Monsieur P. Dubois\\Expert en assurances\\
2543 Escalier 3, b\^atiment C\\4, rue Jean Jaur\`es

2544

2545 F-58500 CLAMECY}
2546 \end{letter}

2547

2548 \begin{letter}{Mr.\ W. Smith\\514 Kingsbridge Road\\PURLEY, SURREY\\DE
2549 1\\GROSSBRITANNIEN CRZ 4TH}
2550 \end{letter}

2551

2552 \end{document}

2553 ⟨/dinbriefold⟩

7 The documentation driver file

We have our own document class to format the L^{A}TEX 2εdocumentation.

2554 ⟨∗driver⟩

2555 \documentclass{ltxdoc}
2556 \usepackage{german}
2557 \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.

2558 \DoNotIndex{\@empty,\\,\space,\@warning}
2559 \DoNotIndex{\begin,\bfseries,\bgroup,\box,\def,\edef,\egroup}
2560 \DoNotIndex{\else,\end,\endcsname,\expandafter,\fi,\gdef}
2561 \DoNotIndex{\hbox}
2562 \DoNotIndex{\hfil,\hfill,\hss,\ifx,\item,\let,\long,\message}
2563 \DoNotIndex{\nointerlineskip}
2564 \DoNotIndex{\originalTeX,\p@,\par,\parbox,\parsep,\relax}
2565 \DoNotIndex{\setlength}
2566 \DoNotIndex{\space,\string,\strut,\tmpa,\typeout,\verb}
2567 \DoNotIndex{\vbox,\vskip,\vspace,\vss}
2568 \DoNotIndex{\xdef,\z@,\z@skip}
2569 \DoNotIndex{\LaTeX,\LaTeXe}
2570 \DoNotIndex{\OnlyDescription,\PrintChanges,\PrintIndex,\RecordChanges}

We do want an index, using linenumbers

2571 \EnableCrossrefs
2572 \CodelineIndex
2573 %\DisableCrossrefs
2574 \RecordChanges
2575 %\OnlyDescription
2576 \typeout{Expect some under- and overfull boxes}

We also want the full details.

2577 \begin{document}
2578 \DocInput{dinbrief.dtx}
2579 \PrintChanges
2580 \PrintIndex
2581 \end{document}

2582 ⟨/driver⟩

End each file with \endinput.

2583 \endinput

Change History

0.0.0

General: (KB) Changed ”P.S.:” to ”PS\newline” Diminished space before \ps, \ccand \encl. Inserted code to generate labels using a 12pt font and changed references to \scriptsizeto \size911pt . . . . . . . . . . . . . 21

(KB) Changed first page to use pagestyle firstpage . . . . . . . . 21 (KB) Changes of R. Gussmann inserted . . . . . . . . . . . . . . . . 21 (KB) Changes to allow \placenot set . . . . . . . . . . . . 21 (KB) Inserted blank space behind ”P.S.:” . . . . . . . . . . . . . 21 (KB) Page offsets corrected . . 21 (KB) Replaced \rmby code for the new fontselection scheme . 21 (RG) Changes of K. D. Braune inserted . . . . . . . . . . . . . . . . 21 (RG) Labels got some styles. . 51 (RG) Moved \newlengthfrom inside \@answerto outside to allow multiple letters within a single document. Changed command sequences . . . . . . . . . . . . . . . 21 (RG) printer can’t output the last line . . . . . . . . . . . . . . . . 36

\bottomtext: (KDB) Defining macro \bottomtext putting the specified text into box \@@bottomtext to get the height of the footer and store it in \@@bottomht . . . . . . . . 62

\endletter: (KDB) Switch for last

page added . . . . . . . . . . . . . . 58

\ka@db@tsbottomtext:  (KDB)

Changed to check the height of the footer (\@@bottomtext now dimen, no longer command) . 41 (KDB) \hbox ... moved to box \@@bottomtext . . . . . . . . . . . 41 (KDB) \@@bottomtext should be set within a \vboxto 0pt{\vss...} . . . . . . . . . . . . 41 (RG) \unhbox changed to \unhcopy, because we can have more than one letter in one document. So the bottomline is inserted into every first page of letters. . . . . . . . . . . . . . . . . . 41

\oldopening: (KDB) Changed to check the height of the footer (\@@bottomtext now dimen, no longer command) . . . . . . . . . 46 (KDB) \hbox ... moved to box \@@bottomtext . . . . . . . . . . . 46 (KDB) \@@bottomtext should be set within a \vboxto 0pt{\vss...} . . . . . . . . . . . . 46 (RG) \unhbox changed to \unhcopy, because we can have more than one letter in one document. So the bottomline is inserted into every first page of letters. . . . . . . . . . . . . . . . . . 46

0.92.13

General: Commented out and moved to the end of the file . . 35 0.92.14

General: Included as conditional

code . . . . . . . . . . . . . . . . . . . 35 0.92.20

General: (RG) some more Comments added . . . . . . . . . . . . . 21 The font changing has to be redefined in L^{A}TEX 2ε. Code copied from letter class. . . . . . . . . . . 30

0.93.0

General: (RG) some more Comments added styles for labels added . . . . . . 21

0.94.0

General: \@rewnewfontswitch re-

                                       named to \DeclareOldFontCommand

. . . . . . . . . . . . . . . . . . . . . . . 30 0.94.1

                                   \@answerto: \enabledraftstandardand
                                       \disabledraftstandardintroduced.

. . . . . . . . . . . . . . . . . . . . . . . 77 0.95.0

General: Deleted wrong explana-

tion. . . . . . . . . . . . . . . . . . . . 30 1.0.6

General: Use class ltxdoc document

class . . . . . . . . . . . . . . . . . . . 93 1.21.0

General: Macros for splitting the receivers address replaced with a more flexible and more user friendly method . . . . . . . . . . 38

1.22.0

General: (RG) \section programming environment added. … 23 (RG) \cc and \encl extended. 51

\endletter: (RG) State counter

added to \endletter . . . . . . 58

                                   \ka@db@closinghook: (RG) State

counter added to \closing… 48

                                   \ka@db@tsbottomtext: (RG) rule

position changed . . . . . . . . . . 41 \letter: (RG) State counter added to \letter. Check for nested letter envs changed. . . . . . . . 57

\opening: (RG) State counter

added to \opening. . . . . . . . . 45 1.25.0

\letter: (RG) \ka@db@atletterhook added and use of

\if@ka@dbinletter deleted. . 57

1.43.0

\ka@db@tsbottomtext: (RG) rule

position is now defined in a dimen register . . . . . . . . . . . . . 41

1.48

\mit: Now define \cal and \mit us-

ing \DeclareRobustCommand* 31

1.49.0

\letter: (RG) \vspace is set to

\relax while splitting the receivers address. This allows us-

ing \vspace, \medskipand so

on. . . . . . . . . . . . . . . . . . . . . 57 1.52.0

General: (RG) generic command for all enclosures added. . . . . . . . 50 1.63.0

                                   \@ignorebrackets: We made this

macro long . . . . . . . . . . . . . . 38

                                   \@splitaddress: Two \expandaftersinserted

as suggested by B. Raichle … 40

                                   \@splitoncrlist:  call  to

\@splitoncrlist changed as sugested by B. Raichle . . . . . . . . 38 order of \ifx-comparision changed . . . . . . . . . . . . . . . . 38

1.64.0

\closing: (RG) closing has now an

optional argument . . . . . . . . . 48 1.65.0

                                   \@withlbracket: \leavevmode in-

serted . . . . . . . . . . . . . . . . . . 39 General: \leavevmode inserted . . 38 \closing: (RG) removed argument

hash mark # (bug) . . . . . . . . 48

Index

Numbers written in italic refer to the page where the corresponding entry is described, the ones underlined to the code line of the definition, the rest to the code lines where the entry is used.

Symbols

\@@bottomht . . . . . . 1403
\@@bottomtext . 602,

606, 765, 777, 810, 813, 1366, 1367, 1373, 1386, 1400, 1403, 1405, \underline{1406}

\@@end . . . . . . . . . . 1488 \@@par . . 1255, 1257,

1304, 1311, 1744

\@@warning . . . . . . .

. . 260, 1379, 1395

\@@windowrules . . . .

817, 863, 1103, 1135

\@@windowtics . . . . . 786

\@M . . . . . . . 1303, 1309

\@addressbase . 554, 557
\@addresslist . . . . .

. 517, 518, 523, 524, 531, 536, 543, 556, 559, 650, 655, 656, 847–849, 1272, 1277, 1281, 1285

                   \@addressname . . . . .

…. 520, 525, 527, 533, 537, 539, 555, 558, 560

                   \@addtofilelist . . 1464
                   \@addtoreset . . . . . 1736

\@answerto 701, 874, \underline{1857}

                   \@answertonew  \underline{1813}, 1859
                   \@answertoold  \underline{1793}, 1864

\@auxout 1269, 1271, 1273

                   \@backaddress . \underline{492},

625, 637, 824, 835, 1269, 1272, 1273, 1280, 1283

                   \@begindocumenthook

. . . . . . 1456, 1461

                   \@beginparpenalty 1651

\@betr . . . . . . . 1783, 1785, 1786, 1788 \@bsphack . . . . . . . 1308

                                             \@centercr . . . . . . 1709
                                             \@checkend . . . . . . 1474
                                             \@checkformark   \underline{549}, 557
                                             \@clubpenalty . . . . 1419

\@colht . . . . . . 1166,

1194, 1213, 1415

                                             \@colroom . . . . 1166,

1194, 1213, 1416

                                             \@concern . 719, 721,

890, 892, \underline{1365}, 1786 \@date 705, 707, 878,

880, 1346, \underline{1347}, 1530, 1535, 1616, 1627, 1908

                                             \@dblfloatplacement

. . . . . . . . . . 1430

                                             \@dblfpbot . . . . . . . 483
                                             \@dblfpsep . . . . . . . 482
                                             \@dblfptop . . . . . . . 481
                                             \@dblmaxsep . . . . . . . 476
                                             \@endparpenalty . . 1652

\@eqnnum . . . . . . . . \underline{1738} \@esphack . . . . . . . 1308

\@evenfoot . . . 1537,

1552, 1574, 1589, 1604, 1629

\@evenhead . . . 1533,

1551, 1565, 1588, 1603, 1627

\@filelist . . . . . . 1463
\@fileswfalse . . . . 1983
\@fileswtrue . . . . . 1490
\@firstcolumntrue 1424
\@floatplacement . 1429
\@fontswitch . . 277, 278

\@footer 896, 1333, \underline{1334} \@fordate \underline{1790}, 1794,

1795, 1805, 1815–1817, 1852

\@fpbot . . . . . . . . . . 480 \@fpsep . . . . . . . . . . 479 \@fptop . . . . . . . . . . 478

\@fromaddress . . . . .

…. 566, 569, 779, 782, 1331, \underline{1332}

\@fromsig . 932, 933,

958, 959, 1325, \underline{1330} \@gobble . . . . . . . . 1464

\@gobbletwo . . . . . . .

. . 1433, 1592, 1607

\@highpenalty . . . . \underline{1648}
\@ifnextchar . . 519,

526, 532, 538, 544, 547, 550, 551, 904, 1019, 1024

\@ifstar … 1306, 1309

\@ignorebrackets \underline{513},

520, 527, 533, 539 \@input . . . . . . . . . 1435

\@itempenalty . . . . 1653

\@ixpt …. 290, 335, 405

\@kadb@tracelabelsfalse

. . . . . . . . . . 1070

\@labelstyle . . . . . .

. . \underline{1067}, 1155, 1219

\@latex@warning@no@line

. . . . . . . . . . 1411

\@latexerr . . . . . . . 250
\@letterformfalse .

. . . . . . 1320, 1322

\@letterformtrue . 1321

\@listI … 288, 323, 393

\@listfiles . . . . . . 1462

\@listi 288, 295, 305, 323, 330, 340, 365, 375, 393, 394, 400, 410, \underline{1665}

\@listii . . . . . . . . \underline{1666} \@listiii . . . . . . . \underline{1666} \@listiv . . . . . . . . \underline{1666} \@listv . . . . . . . . . \underline{1666} \@listvi . . . . . . . . \underline{1666}

\@lowpenalty . . . . . .

. . \underline{1648}, 1651–1653

\@mainaux . . . . . . . .

. . 1443, 1444, 1484

\@mainlbl . . . . \underline{178},

1280, 1283, 1439–1441, 1479

\@makefnmark . . . . . \underline{1759}
\@makefntext   \underline{1743}, \underline{1755}

\@maxsep . . . . . . . . . 475

\@medpenalty . . . . . \underline{1648}
\@minipagerestore   \underline{1731}

\@minus … 296, 297, 306, 307, 331, 332, 341, 342, 366, 367, 376, 377

\@mkboth … 1592, 1607

\@mpfootins . . . . . . \underline{1731}

\@mymail 1259, 1348,

\underline{1349}, 1801, 1823 \@namedef 70, 79, 168–171

\@nameuse . . . . . . . .

96, 100, 1155, 1219 \@ne . . . . . . . 1238, 1747

\@nobreakcr . 1304, \underline{1309}
\@nobreakvspace . . .

. . . . . . 1305, \underline{1306}

\@nobreakvspacex . .

. . . . . . 1306, \underline{1307} \@nomath . . . . . 275, 276

\@noreflinefalse . 1316
\@noreflinetrue . . 1911
\@normalcr . . . . . . 1310
\@normalsize \underline{283}, \underline{318},

\underline{353}, \underline{388}, 424, 1450

\@noskipsecfalse . 1453
\@notprerr . . . . . . 1467

\@ntoday . . . . . 1346, \underline{1774}, 1811, 1854

                          \@oddfoot . . . . 1532,

1550, 1573, 1585, 1602, 1618

                          \@oddhead . . . . 1528,

1549, 1564, 1584, 1601, 1616

\@options . . . . . . . . 247 \@phone . \underline{1338}, 1804,

1833, 1837, 1845 \@place … 704, 707,

877, 880, 1336, \underline{1337}, 1806, 1809

\@plus …. 296, 297, 306, 307, 331, 332, 341, 342, 366, 367, 376, 377

                          \@preamblecmds . . . 1468
                          \@prephone . . . \underline{1338},

1803, 1829, 1831

                          \@processto . 1241, \underline{1295}

\@ptsize . . . . . \underline{160}, 282

                          \@reflinefalse . . . .

. . . . . . 1260, 1314

                          \@reflinetrue . . . . .

. . 1348, 1354, 1359 \@rgjob . . . . . . 498, 507 \@setpar . . . . . . . . 1744

                          \@setsize . . . . 227,

234, 236, 283, 290, 300, 310– 316, 318, 325, 335, 345–351, 353, 360, 370, 380–385, 388, 395, 405, 415–421

\@spaces . . . . . . . . 1412

                          \@splitaddress   \underline{553},

1242, 1247, 1249

                          \@splitoncr . . . \underline{494}, 557
                          \@splitoncrlist . . . \underline{494}

\@st@p@ . . . . . . 1888,

1891, 1896, 1900

                          \@startlabels 1441, \underline{1515}
                          \@telephonenum . . . \underline{1338}
                          \@tempboxa 646, 659,

664, 670, 671, 678

                          \@tempdima . . . . . . .

. 916, 918, 921, 940–942, 1745–1747

                          \@tempdimb . . . . . . . 920

\@texttop . . 1206, 1516

\@thefnmark . . . 1750,

1754, 1758, 1759

\@toadrcenterfalse .

. . . . . . 1318, 1324

\@toadrcentertrue 1323
\@twocolumnfalse . . 207
\@twocolumntrue . . . 208
\@twosidefalse . . . . 203
\@twosidetrue . . . . . 201
\@undefined . 1461, 1462
\@unusedoptionlist .

. . . . . . 1410, 1412 \@viiipt . . . . . 236,

300, 345, 380, 415 \@viipt . . . . . . 234, 310 \@vipt …. 346, 381, 416 \@vpt . . . . . . . . . . . . 311

\@withlbracket   \underline{542}, 551

\@withmark \underline{530}, 544, 550

\@withmarkcr . . \underline{516}, 547
\@withoutlbracket .

. . . . . . . . \underline{546}, 551

\@withoutmark . . . . .

…. \underline{535}, 544, 550

\@withoutmarkcr  \underline{522}, 547
\@writefile . . . . . . 1433

\@writer … 1843, 1849 \@xiipt . . . . . . 227,

312, 347, 353, 417 \@xipt …. 318, 360, 388 \@xivpt 313, 348, 382, 418

\@xnewline . . . . . . 1309

\@xproc …. 1296, \underline{1301} \@xpt . 283, 325, 370, 395 \@xviipt . . . . . . . . .

. 314, 349, 383, 419 \@xxpt 315, 350, 384, 420 \@xxvpt 316, 351, 385, 421

\@yourmail 1258, 1354,

\underline{1355}, 1798, 1820 \@yproc …. 1299, \underline{1302} \@znumber . . . . . . . \underline{1774}

A

\abovedisplayshortskip

. 230, 286, 293, 303, 321, 328, 338, 356, 363, 373, 391, 398, 408

                          \abovedisplayskip .

. . . . . . . . 228, 229, 284, 285, 291, 292, 301, 302, 319, 320, 326, 327, 336, 337, 354, 355, 361, 362, 371, 372, 389, 390, 396, 397, 406, 407

\Absender . . \underline{1913}, 2411 \address \underline{1331}, 1905, 2032 \ADDRwd 1995, 2003, 2023

                          \addtocounter . 1622,

1624, 1633, 1635

                          \addtolength . . . . . .

433, 434, 1792, 1795, 1816, 1817

\advance . . . . . 918, 941, 1095, 1147, 1158, 1165, 1169, 1179, 1181, 1193, 1212, 1421, 1662, 1669, 1673, 1679, 1683, 1687, 1714, 1746, 1776

\Alph . . . . . . 1691, 1695 \alph . . . . . . 1689, 1693 \Anlagen … \underline{1958}, 2438

                          \anlagenrechts . . . .

. . . . . . \underline{1955}, 2437 \arabic 1688, 1692, 1735

                          \arraycolsep . . . . . \underline{1726}
                          \arrayrulewidth . . \underline{1728}

\ast . . . . . . . . . . . . 1701

B

                          \backaddress . . . . . .

…. \underline{492}, 1928, 1929, 2066, 2318

                          \baselineskip . . . . .

…. 927, 929, 951, 955, 978, 980

                          \baselinestretch . \underline{1642}
                          \begingroup . . . 495,

1263, 1428, 1476

                          \Behandlungsvermerk

. . . . . . \underline{1876}, 2409

                                                   \belowdisplayshortskip

. 231, 287, 294, 304, 322, 329, 339, 357, 364, 374, 392, 399, 409

                                                   \belowdisplayskip .

. 229, 285, 292, 302, 320, 327, 337, 355, 362, 372, 390, 397, 407

\Betreff … \underline{1931}, 2417 Bezugszeichenzeile . . 10 \bf . . . . . \underline{273}, 1700,

1704, 2121, 2134, 2147, 2161, 2181, 2183, 2206, 2225, 2232, 2237, 2239, 2301

\bigskip . . . . . . . . .

. 715, 722, 888, 893

                                                   \bigskipamount . . . 1979
                                                   \bottomfraction . . 1763
                                                   \bottomtext . . . . . . .

. . \underline{1366}, 2056, 2311

                                                   \boxmaxdepth . . . . . .

. . 1171, 1198, 1217 \break . . . . . . . 1003,

1014, 2121, 2134, 2147, 2161, 2181, 2206, 2225, 2232, 2237, 2239

BriefeDIN 676 . . . . . . 4 Briefedinbrief@dinbrief

. . . . . . . . . . . . . 4 Briefkopf . . . . . . . . . 10

                                                   \briefkopf . 2001, 2032

\bullet . . . . . . . . . 1699

C

                                                   \c@bottomnumber . . 1762
                                                   \c@dbltopnumber . . 1767
                                                   \c@footnote . . . . . . \underline{1743}
                                                   \c@labelgen . . . . . . .

… 1262, 1289, 1438, 1478, 1491, \underline{1493}, 1497

                                                   \c@lt@state 88, 996, 1225

\c@page . . . . . . . . . 1238

\c@topnumber . . . . . 1760
\c@totalnumber . . . 1764

\cal . . . . . . . . . . . . . \underline{277} \catcode . . . . . . . . . 174 \cc \underline{1018}, 1965, 1967,

1968, 2096, 2247 \ccname . . . . . \underline{982}, 1020 \cdot … 1702, 2023,

2058, 2313, 2415

\centeraddress . . . \underline{1323}

\centering . . 2019–2021 \circle . . . . . 2013–2015

\clabelnumber . \underline{1031},

1038, 1096, 1164, 1176, 1179

\ClassWarning . 265,

661, 1042, 1049, 1056, 1501, 1871, 1879, 1919, 1923, 1927, 1932, 1941, 1960, 1966

\cleardoublepage . 1236
\clearpage . . . 1234,

1382, 1398, 1482 \closeout . . 1479, 1484 \closing . . . . . \underline{903},

2090, 2241, 2441

\clubpenalty . . . . . 1419

\cmd . . . . . . . . . . . . . 946

\CodelineIndex . . . 2572
\columnsep . . . . . . .

462, 1167, 1169, 1196, 1215, 1421

\columnseprule . . . . 463
\columnwidth . . . . . .

. . 1418, 1421– 1423, 1426, 1741

\concern … \underline{1783}, 1934 \csname . . . . . . . 29,

32, 35, 1152– 1154, 1566, 2004, 2040, 2252, 2262, 2272, 2282, 2381

\cspare . . . . . . \underline{1064}, 1066, 1175, 1176, 1179, 1181, 1183, 1184

D

\date . . \underline{1346}, 1885, 2063 \datemsg … \underline{1353}, 1853 \Datum . . . . . \underline{1884}, 2410 \day . . . . . . . 1770, 1778

\dblfloatpagefraction

. . . . . . . . . . 1769

\dblfloatsep . . . . . . 470
\dbltextfloatsep . . 471
\dbltopfraction . . 1768
\dbottomtext . . \underline{599}, 605
\deadcycles . . . . . . 1487
\DeclareOldFontCommand

. . . . . . . . 270–276

\DeclareOption 162–

165, 181, 184, 187, 190, 193, 196, 201, 207, 208

\DeclareRobustCommand

. . . . . . . . 277, 278

\description . . . . . \underline{1703}
\descriptionlabel   \underline{1703}

DIN-Brief . . . . . . . . . . 4 dinbrief”Uberschriftvariablen

. . . . . . . . . . . . 13 dinbriefBefehle . . . . . 11 \dinquote . . . . . . . \underline{1936}

\DisableCrossrefs 2573
\disabledraftstandard

… \underline{1857}, 2326, 2338, 2350, 2360

\divide . . . . . 281, 1422

\dlabelheight . . . . .

… \underline{1031}, 1035, 1074, 1084, 1164, 1183, 1184

\dlabeltopmargin . .

. . \underline{1031}, 1037, 1158

\dlabelwidth . . . . . .

… \underline{1031}, 1036, 1071, 1079, 1168

\do . . . . . . . 1467, 1469 \docdate . . . . . . . . 7, 22 \DocInput . . . . . . . 2578 \document . . . . . . . \underline{1407}

\documentclass 2043,

2256, 2258, 2266, 2268, 2276, 2278, 2286, 2288, 2385, 2387, 2555

\documentstyle . . . .

… 2041, 2253, 2254, 2263, 2264, 2273, 2274, 2283, 2284, 2382, 2383

\DoNotIndex . . 2558–2570

\dots . . . . . . . . 2192,

2200, 2203, 2222

\doublerulesep . . . \underline{1729}

\ds@10pt . . . . . . . . . \underline{160} \ds@11pt . . . . . . . . . \underline{160} \ds@12pt . . . . . . . . . \underline{160} \ds@draft . . . . . . . . 204 \ds@final . . . . . . . . 205 \ds@norm . . . . . . . . . \underline{160}

E

\Einrueckung   \underline{1940}, 2426

\em . . . . . . . 2227, 2229 \empty …. 518, 524, 543

\EnableCrossrefs . 2571
\enabledraftstandard

. . . . . . . 1360, \underline{1857}, 2322, 2334, 2346, 2356

\encl \underline{1018}, 1959, 1961,

1962, 2095, 2246 \enclname … \underline{982}, 1025

\enclnoenclright . \underline{1952}
\enclright . . . . . . \underline{1949}
\enddescription . . \underline{1703}
\enddinquote . . . . . \underline{1936}
\enddocument . . . . . \underline{1473}
\endgroup 501, 1287,

1408, 1436, 1486 \endinput . . . . . . . 2583

\endletter . . . . . . \underline{1251}

\endlist 1708, 1715,

1721, 1725, 1939

\endquotation . . . . \underline{1716}

\endquote . . . . . . . \underline{1722} \endverse . . . . . . . \underline{1709}

\enlargethispage . .

. . . . . . . . 765, 777

\errorcontextlines 1984

\Etihoehe . . \underline{1039}, 2390 \Etirand … \underline{1039}, 2391 \Etizahl … \underline{1039}, 2392 letter . . . . . . . . . . \underline{1223}

\evensidemargin . . .

. . 436, 1163, 1210 \everypar . . . . . . . 1451

\ExecuteOptions . . . 242

F

\fa 1997, 2002, 2019, 2020 \fb . . . . . . . 1998, 2021 \fboxrule . . . . . . . \underline{1733} \fboxsep … \underline{1732}, 1733 \fc …. 1999, 2003,

2018, 2023–2027 \Fenster … \underline{1922}, 2414 \filedate …. 7, 20, 41 \filename . . . . . . . . 21

\fileversion . 14, 19, 40
\floatpagefraction 1766

\floatsep . . . . . . . . 467 \font . . . . . . . 1997–1999

\fontseries . . . . . . . 218
\fontshape . . . . . . . 219

\fontsize … 220, 2005 \footer . . . . . . . . . \underline{1333}

\footheight \underline{453}, 1525,

1546, 1561, 1581, 1598, 1613

\footins …. \underline{466}, 1731

\footnoterule . . . . \underline{1739}
\footnotesep . . . . . . \underline{465}
\footnotesize . . . . .

. \underline{300}, \underline{335}, \underline{370}, \underline{405}

\footskip 458, 1527,

1548, 1563, 1583, 1600, 1615

\FS … 2034, 2066, 2318

G

\glb@currsize . . . . 1448

\global . . . . . . . 70, 79, 485, 486, 489, 490, 1035– 1038, 1239, 1260, 1354, 1469, 1510, 1513

\GZA . . . . . . . . . \underline{280}, 388

H

\handling . . . . \underline{987},

1877, 1880, 1882

                          \hangafter . . . . . . 1787
                          \hangindent . 1757, 1786
                          \headheight . . . . . . .

… 1160, 1520, 1541, 1556, 1576, 1593, 1608

headings@headings . . 13 \headsep . . . . . 1159,

1208, 1521, 1542, 1557, 1577, 1594, 1609

                          \headtoname \underline{985}, 1529,

1534, 1616, 1627 \hoffset . . . . . . . . . 434 \hrule . . . . . . . 577,

581, 585, 589, 592, 595, 618, 638, 688, 788, 791, 794, 799, 803, 807, 820, 836, 866, 1076, 1092, 1107, 1117, 1139, 1741

\hsize . . 1071, 1423,

1426, 1427, 1745 \hskip …. 645, 668,

842, 920, 1122, 1373, 1386, 1400

\hspace … 577, 581, 585, 618, 634, 688, 799, 803, 807, 820, 832, 866, 1106, 1114, 1138, 1704, 2018

\ht . . . . . . 602, 659,

765, 777, 810, 1403 \Huge . \underline{310}, \underline{345}, \underline{380}, \underline{415} \huge . \underline{310}, \underline{345}, \underline{380}, \underline{415}

I

                          \if@filesw . . . 1261,

1437, 1477, 1496

                          \if@kadb@tracelabels

… \underline{1069}, 1075, 1081, 1085, 1091

                          \if@letterform . . . .

…. 647, 703, 720, 728, 844, 876, 891, 899, \underline{1319}

                                                   \if@norefline . 697,

716, 870, 889, \underline{1313}

                                                   \if@refline . . . . . . .

… 700, 873, \underline{1313}

                                                   \if@restonecol . . . . \underline{179}
                                                   \if@toadrcenter 673,

681, 850, 856, 1124, 1128, \underline{1317}

                                                   \if@twocolumn . . . . 1420

\ifcase . . . . . 282, 1770 \ifdim . . . . . . . 602,

659, 666, 810, 1457

                                                   \ifka@db@enclright .

… 914, 968, \underline{1947}

                                                   \ifka@db@lastpage .

. . \underline{1517}, 1618, 1629

                                                   \ifka@db@ltxtwoe 23,

43, 58, 160, 180, 200, 206, 241, 244, 258, 264, 269, 423, 453, 472, 764, 776, 1378, 1394, 1409, 1432, 1446, 1452, 1455, 1522, 1543, 1558, 1578, 1595, 1610

                                                   \ifka@db@nfss . . 25,

48, 210, 426, 1970

                                                   \ifka@db@nfsstwo 27,

51, 216, 429, 1972

                                                   \ifka@db@windowrules

…. \underline{484}, 617, 687

                                                   \ifka@db@windowtics

. . . . . . . . \underline{488}, 574 \ifnum . . . . . 88, 226,

233, 996, 1096, 1146, 1175, 1176, 1225, 1262, 1289, 1438, 1478, 1777

\ifvmode . . . . . . . . 1307

                                                   \ignorespaces . 927,

951, 1005, 1029, 1072, 1530, 1535, 1616, 1627

                                                   \immediate 1269, 1271,

1273, 1280, 1283, 1439– 1441, 1443, 1444, 1479, 1484

\input . . . . . . . 1481, 1987, 1990, 2047, 2292, 2303

\interlinepenalty .

. . 1240, 1303, 1311

\intextsep . . . . . . . 469

\it . . . . . . . . . . . . . \underline{274}

\itemindent . . . 1706,

1711, 1712, 1718 \itemsep . . 298, 308,

333, 343, 368, 378, 403, 413, 1647, 1675, 1710

\itshape . . . . . . . . . 274 \ixpt . . . . . 290, 335, 405

J

\jobname . . . . . 175, 176

\jobname@aux . . . . . .

. . \underline{173}, 1435, 1443

\jobname@lbl . . . . . .

. . \underline{173}, 1439, 1481 \jot . . . . . . . . . . . . \underline{1737}

K

\ka@db@assbottomtext

. . . . . . . . . . 1470

\ka@db@assignvar . .

… \underline{85}, 1327, 1358

\ka@db@assignvarglobal

. . . . . \underline{63}, 82, 1363

\ka@db@assignvarlocal

\underline{72}, 83, 988, 990, 992, 994, 1012, 1014, 1022, 1027, 1329, 1362

\ka@db@asslabelgen .

. . . . . . . \underline{1495}, 1507, 1510, 1513

\ka@db@atendletter .

… 156, 159, 1293

\ka@db@atletter . . .

. . \underline{144}, 1232, 1233

\ka@db@bafntsel  \underline{611}, 637
\ka@db@bottomtextmsg

. . . . . . . 1368, 1370, 1385, 1470

\ka@db@closing 905, 907
\ka@db@closinghook . \underline{903}
\ka@db@declvar . . . . \underline{81}
\ka@db@dobottomtext

. . 1384, 1390, 1471

\ka@db@enclrightfalse

. . . . . . 1948, 1953

\ka@db@enclrighttrue

. . . . . . 1950, 1956

\ka@db@endletter . . \underline{152}
\ka@db@error . \underline{249}, 1226
\ka@db@execatendletter

. . . . . . . . . . . \underline{152}

\ka@db@execatletter

. . . . . . . . \underline{144}, 990, 994, 1022, 1027, 1329, 1362

\ka@db@fontseries .

212, 218, 223, 1586

\ka@db@fontshape . .

213, 219, 224, 1585

\ka@db@fontsize . . .

. 214, 220, 225, 612, 834, 1115, 1170, 1197, 1216, 1796, 1799, 1802, 1805, 1818, 1821, 1824, 1852

\ka@db@fromadrone .

. . 1894, 1897, 1909

\ka@db@fromadrtwo .

… 1889, 1895, 1898, 1901, 1909

\ka@db@genencl . . . .

. . \underline{995}, 1020, 1025

\ka@db@ifemptydynvar

…. \underline{117}, 134, 137

\ka@db@ifemptyvar .

\underline{139}, 935, 961, 1834

\ka@db@ifemptyvarglobal

. . . . . . . . \underline{136}, 141

\ka@db@ifemptyvarlocal

. \underline{133}, 140, 652, 977, 979, 1274, 1279

\ka@db@indadr . . . . .

…. \underline{563}, 666, 747

\ka@db@lastpagefalse

. . . . . . 1239, 1518

\ka@db@lastpagetrue

. . . . . . . . . . 1253

\ka@db@ltxtwoefalse 24
\ka@db@ltxtwoetrue . 30
\ka@db@mainbottomtext

. . . . . . 1372, 1471

\ka@db@nfssfalse . . 26
\ka@db@nfsstrue . . . 33
\ka@db@nfsstwofalse 28
\ka@db@nfsstwotrue . 36
\ka@db@placebottomtext

. . . . . . . . \underline{732}, 769

\ka@db@placeconcern

. . . . . . . . \underline{732}, 772

\ka@db@placefromaddress

. . . . . . . . \underline{732}, 767

\ka@db@placeopening

. . . . . . . . \underline{732}, 773

\ka@db@placerefline

. . . . . . . . \underline{732}, 771

\ka@db@placetoaddress

. . . . . . . . \underline{732}, 770

\ka@db@placewindowtics

. . . . . . . . \underline{732}, 768

\ka@db@praebottomtext

. . . . . . 1369, 1390

\ka@db@selectfont .

. . . . . . . . 211, 217, 222, 613, 835, 1116, 1170, 1197, 1216, 1586, 1796, 1799, 1802, 1805, 1818, 1821, 1824, 1852

\ka@db@splitdblptx .

. . . . . . 1888, 1896

\ka@db@splitdblpty .

. . . . . . 1891, 1900

\ka@db@splitondblpt

. . . . . . 1887, 1904

\ka@db@tmpdima . \underline{62},

917, 918, 925, 941

\ka@db@tsbottomtext

. . . . . . . . \underline{601}, 739

\ka@db@tsconcern . .

. . . . . . . . \underline{718}, 755

\ka@db@tsenclcc 922,

944, 946, 971, \underline{976}

\ka@db@tsfromaddress

. . . . . . . . \underline{565}, 733

\ka@db@tsopening . .

. . . . . . . . \underline{727}, 758

\ka@db@tsrefline . .

. . . . . . . . \underline{696}, 752

\ka@db@tstoaddress .

. \underline{615}, 743–745, 747

\ka@db@tswindowtics

. . . . . . . . \underline{573}, 736

\ka@db@usevar . . . . .

\underline{102}, 936, 962, 1841

\ka@db@usevarglobal   \underline{94}
\ka@db@usevarlocal .

. . . . . \underline{98}, 653, 668, 978, 980, 1275

\ka@db@warning . . . . \underline{258}
\ka@db@windowrulesfalse

. . . . . . . . . . . 486

\ka@db@windowrulestrue

. . . . . . . . . . . 485

\ka@db@windowticsfalse

. . . . . . . . . . . 490

\ka@db@windowticstrue

. . . . . . . . . . . 489 \kern . . . . . . 1740, 1742 Kopfzeilen . . . . . . . . 13

L

\label@C6 . . . . . . . \underline{1101}

\label@C6/C5 . . . . . \underline{1101}
\label@deskjet . . . \underline{1101}

\label@DL . . . . . . . \underline{1101}

\label@plain . . . . . \underline{1071}
\labelcount . . . 1095,

1096, 1099, 1146, 1147, 1181, 1204, \underline{1312}

\labelenumi . . . . . . \underline{1692}
\labelenumii . . . . . \underline{1692}
\labelenumiii . . . . \underline{1692}
\labelenumiv . . . . . \underline{1692}
\labelitemi . . . . . . \underline{1699}
\labelitemii . . . . . \underline{1699}
\labelitemiii . . . . \underline{1699}
\labelitemiv . . . . . \underline{1699}
\labelsep . . . . \underline{1661},

1669, 1673, 1679, 1683, 1687, 1704, 1730

\labelstyle . \underline{1067}, 2050
\labelwidth . . . \underline{1661},

1668, 1669, 1672, 1673, 1678, 1679, 1682, 1683, 1686, 1687, 1706

\LARGE \underline{310}, \underline{345}, \underline{380}, \underline{415} \Large \underline{310}, \underline{345}, \underline{380}, \underline{415} \large \underline{310}, \underline{345}, \underline{380}, \underline{415}

\leavevmode . . . 518,

524, 543, 651, 913, 952, 1782, 1907

\leftmargin . . . . . . .

. 295, 305, 330, 340, 365, 375, 400, 410, \underline{1654}, 1667, 1671, 1677, 1681, 1685, 1706, 1713, 1714, 1719, 1723, 1937

\leftmargini . . . . . .

. 295, 305, 330, 340, 365, 375, 400, 410, \underline{1654}, 1661

\leftmarginii . . . . .

. . \underline{1654}, 1667, 1668

\leftmarginiii . . . .

. . \underline{1654}, 1671, 1672

\leftmarginiv . . . . .

. . \underline{1654}, 1677, 1678

\leftmarginv . . . . . .

. . \underline{1654}, 1681, 1682

\leftmarginvi . . . . .

. . \underline{1654}, 1685, 1686 \leftmark . . . . . . . 1603 \letter . . . . . . . . . \underline{1224}

\letterform . . . . . . \underline{1319}

\lineskip . . . . . . . 1640

\linewidth . . . . . . 1427

\list … 1706, 1710,

1717, 1723, 1937 \listI . . . . . . . . . . . 358 \listi . . . . . . . . . . . 358

\listparindent . . . .

. . 1712, 1717, 1718

\lstyle@deskjet . . \underline{1191}
\lstyle@plain . . . . \underline{1156}

\ltf@headheight  \underline{443},

1520, 1593, 1608

\ltf@headsep . . \underline{443},

1521, 1594, 1609

\ltf@textheight . . . \underline{443}
\lts@headheight  \underline{443},

1541, 1556, 1576

\lts@headsep . . \underline{443},

1542, 1557, 1577

\lts@textheight . . . \underline{443}

M

\m@th . . 1750, 1754, 1759

\makeatletter 1431, 1480

\makebox … 2057, 2312

\makelabel . . . . . . 1707
\makelabels . . . . . . .

… \underline{1489}, 1499, 1502, 2049, 2393

\marginparpush . . . . 439
\marginparsep . . . . . 438
\marginparwidth . . . 437

\mathbf . . . . . . . . . . 273 \mathcal . . . . . . . . . 277 \mathit . . . . . . . . . . 274

\mathnormal . . . . . . . 278

\mathrm . . . . . . . . . . 270 \mathsf . . . . . . . . . . 271 \mathtt . . . . . . . . . . 272 \mbox . . . . . . . . . . . 1177 \meaning . . 107, 122, 123 \medskip . . . . . . . . . 967

\medskipamount . . . .

653, 1275, 1284, 1978, 2071, 2300

\mit . . . . . . . . . . . . . \underline{277} \mlabel . . . . . . \underline{1155},

1269, 1272, 1273, 1280, 1283

\month . . . . . 1770, 1779

\moveright . . . . . . . 747
myaddress@\myaddress

. . . . . . . . . . . . 10

N

\NeedsTeXFormat . . . 59

\newbox …. 1366, 1783

\newcommand . . 161, 2294

\newcount 1034, 1064, 1312, 1493, 1774

\newcounter . 1221, 1223
\newdimen . . . . . 62,

280, 443–448, 563, 599, 1031–1033

\newif . . . . . . . . 23, 25, 27, 179, 484, 488, 1069, 1313, 1315, 1317, 1319, 1517, 1947

\newlength . . . . . . .

. . 1790, 1994, 1995 \newpage . . . . . 1098,

1150, 1178, 1475 \newwrite . . . . . . . . 178 \next . . . . . 504, 509, 511 \nobreak . . . . . 759,

902, 909, 1186, 1304, 1307, 1308

\noenclright . . . . . 1952
\noexpand . 104, 119,

147, 155, 1244, 1469

\noindent 998, 1028,

1749, 1753, 1756 \nolabels . . . . . . . \underline{1506}

\noletterform . . . . \underline{1319}
\normaladdress . . . \underline{1324}
\normalfont . . . 270–276
\normallineskip . . 1641
\normalsize 227, 283,

318, 353, 388, \underline{423}, 427, 430, 1974

\nowindowrules . . . . \underline{484}
nowindowrules@\nowindowrules

. . . . . . . . . . . . . 6

\nowindowtics . . . . . \underline{488}
nowindowtics@\nowindowtics

. . . . . . . . . . . . . 6 \ntoday . . . . . . . . . \underline{1774} \number . . . . . . 1770,

1773, 1776–1779

O

\oddsidemargin . . . .

. . 435, 1162, 1209

\offlabels . . . . . . \underline{1509}
\oldopening . . . . . . . \underline{775}

\on@line . . . . . . . . . 266

\onecolumn . . . . . . 1982
\oneletter 2294, 2324,

2328, 2336, 2340, 2348, 2352, 2358, 2362

\onlabels . . 1290, \underline{1512} \opening . . . . . \underline{761},

2076, 2107, 2419 \openout … 1439, 1443 \or . . . . . . . . . 317,

352, 387, 1770–1772

\overfullrule . 204, 205

P

\p@enumii . . . . . . . \underline{1696}

\p@enumiii . . . . . . \underline{1696}

\p@enumiv . . . . . . . \underline{1696}

\pagebreak . . . . . . 1256
\pagename   \underline{985}, 1531,

1536, 1617, 1628

\pagenumbering . . . 1981
\pagestyle . . . 1205,

1980, 2052, 2320, 2330, 2342, 2354, 2395

pagestyle@\pagestyle 13

\paperheight 182, 185,

188, 191, 194, 197

\paperwidth 183, 186,

189, 192, 195, 198

\parindent . . . 1172,

\underline{1643}, 1749, 1752 \parshape . . . . . . . 1747 \parskip . . 910, 921,

925, 942, 1173, \underline{1643}, 1977–1979

\partone … 6, 9, 13, 16

\partopsep . . . . . . 1646

\penalty … 1309, 1311 \phone . . . . . \underline{1338}, 2033

\phonemsg . . . . . . . .

. . \underline{1345}, 1803, 1825

\pka@db@assignvar 85, 86
\pka@db@assignvarglobal

. . . . . . . 64, 65, 91

\pka@db@assignvarlocal

. . . . . . . 73, 74, 89

\pka@db@usevarglobal

. . 94, 95, 111, 137

\pka@db@usevarlocal

. . . . . . 98, 99, 106, 114, 134, 1284

\place . . . . . \underline{1336}, 2031 plain@plain . . . . . . . 13

\postremark . . . \underline{991},

1869, 1872, 1874

\Postvermerk . . . . . .

… \underline{1868}, 2408, 2454, 2461, 2467, 2474, 2481, 2510, 2533

\process@table . . . 1447
\ProcessOptions . . . 245

\protect …. 64, 73, 85, 94, 98, 104, 119, 147, 155, 1244, 1264, 1266

\ProvidesClass . . . . 60

\ps \underline{1028}, 2092, 2243, 2442

\ps@contheadings . 1607

\ps@empty . . . . . . . \underline{1540}

\ps@first@page . . . \underline{1555}
\ps@headings . . . . . \underline{1519}
\ps@myheadings . . . 1592

\ps@plain . . . . . . . \underline{1575}

\psfirstpagehook . .

. . . . . . 1568, \underline{1572} \psname . . . . . \underline{982}, 1028 \put . . . . . . . . 2013–2015

Q

\quotation . . . . . . \underline{1716}

\quote . . . . . . . . . . \underline{1722}

R

\raggedbottom . . . . . 464
\raggedleft . . . . . . .

. 705, 707, 878, 880

\raggedright . . . . . .

. 569, 655, 782, 848, 926, 943, 950, 970, 1123, 1374, 1387, 1401

\raise . . . . . . . . . . 1782 \raisebox . . . . . . . 2009 \RCSdate . . . . . . . . 2, 8

\RCSrevision . . . . . 3, 15
\refstepcounter . . 1237
\renewcommand . 162–165
\Retouradresse . . . .

. . . . . . \underline{1926}, 2415

\Retourlabel   \underline{1917}, 2413
\returnaddress . . . \underline{1335}

\rightmargin . . . . . .

. . 1713, 1719, 1723

\rightmark . . . . . . 1601

\rm . . . . . . . . . 224, \underline{270} \rmfamily . . . . . . . . 270 \roman . . . . . 1690, 1694 \rule . . . . . . . . 576,

580, 584, 588, 591, 594, 604, 605, 787, 790, 793, 798, 802, 806, 812, 1184, 1268, 1807, 2035

S

ps@contheadings . . \underline{1607}
ps@myheadings . . . . \underline{1592}

\sc . . . . . . . . . . . . . \underline{274}

\scriptsize 234, 236,

\underline{310}, \underline{345}, \underline{380}, \underline{415} \scshape . . . . . . . . . 276

\selectfont . . . . . . .

… 211, 217, 2005

selectlanguage@\selectlanguage

. . . . . . . . . . . . 13 Serienbriefe . . . . . . . . 13 \series . . . . . . . . . . 212 \setbox . . . . . . 646,

664, 1071, 1101, 1367, 1373, 1386, 1400, 1785

\setcounter 762, 908,

1222, 1231, 1252

\setlabelheight . . .

… \underline{1035}, 1040, 1043, 1044, 1060

\setlabelnumber . . .

… \underline{1035}, 1054, 1057, 1058, 1063

\setlabeltopmargin .

… \underline{1035}, 1047, 1050, 1051, 1061

\setlabelwidth . . . .

. . . . . . \underline{1035}, 1062

\settowidth . 2002, 2003

\sf …. \underline{270}, 2057, 2312 \sffamily . . . . . . . . 271 \shape . . . . . . . . . . . 213 \sign . . . . . . . . . . . \underline{1348}

\signature . . . . . . .

. . \underline{1325}, 2030, 2418 \signmsg \underline{1350}, 1800,

1822, 1858, 1863

\signmsgnew . \underline{1350}, 1858
\signmsgold . \underline{1350}, 1863

\size . . . . . . . . . . . . 214 \skip . . . . . . . 466, 1731 \sl . . . . . \underline{274}, 1529,

1534, 1601, 1603, 1616, 1627

\slshape . . . . . . . . . 275 \small …. \underline{290}, \underline{325},

\underline{360}, \underline{395}, 2057, 2312

\smallskipamount . 1977

\spare . . . . . \underline{1066}, 2394

\startbreaks . . . . . \underline{1310}
\startlabels   \underline{1202}, 1441
\stdaddress . . . . . . .

. . \underline{1903}, 1914, 1915 \stop . . . . . . . . 7, 9,

14, 16, 499, 500, 503, 513, 516, 520, 522, 527, 530, 533, 535, 539, 542, 544, 546, 547, 550, 551

\stopbreaks . . 911, \underline{1303}
\stopletter . \underline{1030}, 1254

\stripone . . 6, 8, 13, 15 \striptwo . . 7, 9, 14, 16 \subject . . . . . \underline{1783},

1933, 2074, 2105

T

lt@state . . . . . . . . \underline{1221}

\tabbingsep . . . . . . \underline{1730}
\tabcolsep . . . . . . \underline{1727}
\textfloatsep . . . . . 468
\textfraction . . . . 1765
\textheight . . . . . . .

459, 460, 1164– 1166, 1192– 1194, 1211– 1213, 1415–1417

\textwidth 461, 916,

940, 1168, 1169, 1195, 1214, 1418, 1791, 1794, 1814, 1815, 1908, 1909, 2057, 2312

\the . . . . . . . . . . . . 1780

\theenumi . . . . . . . .

. . \underline{1688}, 1696, 1697

\theenumii . \underline{1688}, 1697
\theenumiii . \underline{1688}, 1698
\theenumiv . . . . . . \underline{1688}
\theequation   \underline{1735}, 1738

\thepage 1531, 1536, 1586, 1617, 1623, 1628, 1634

\thicklines . . . . . . 2012
\thispagestyle . . . .

… 763, 775, 1235 \tiny . \underline{310}, \underline{345}, \underline{380}, \underline{415}

\toaddress . . . . . . .

655, 848, 1270, 1297, 1301, 1302

\today . . . . . 1347, \underline{1770} \toname … 558, 561,

655, 848, 1269, 1301, 1530, 1535, 1616, 1627

\topfraction . . . . . 1761
\topmargin . . . . . . .

440–442, 1157, 1158, 1207, 2065

\topsep … 296, 306, 331, 341, 366, 376, 401, 411, 1645, 1674, 1675

\topskip 1161, 1457, 1458

\tracingmacros . . . . 496

\tt . . . . . . . . . . . . . \underline{270} \ttfamily . . . . . . . . 272 \tw@ . . . . . . . . . . . . 1422

\twocolumn . . . . . . .

. . 1174, 1199, 1218

U

\UKAwd . 1994, 2002, 2019 \unhbox . . . . . . . . . 1788 \unhcopy . . . . . 606, 813

\unitlength . . . . . . 2010

\unskip . . . . . . . . . . 945 \unvbox . . . . . . . . . . 670 \up . . . . . . . . . . . . 1782

\usepackage . . . . . . .

… 2044, 2257, 2267, 2277, 2287, 2386, 2556

V

\vadjust … 1308, 1309 \verse . . . . . . . . . . \underline{1709}

\Verteiler . \underline{1964}, 2439

\vfill …. 627, 826,

1098, 1149, 1183 \viiipt . . . . . . 236,

300, 345, 380, 415 \viipt . . . . . . . 234, 310 \vipt . . . . . 346, 381, 416 \voffset . . . . . . . . . 433 \vphantom . . . . . . . 1807 \vpt . . . . . . . . . . . . . 311 \vrule . . . . . 1082, 1086 \vsize . . . . . . . 1166,

1194, 1213, 1417

W \wd . . . . . . . . . . . . 1786

                          \windowrules . . . . . . \underline{484}
                          windowrules@\windowrules

. . . . . . . . . . . . . 6

                          \windowtics . . . . . . . \underline{488}
                          windowtics@\windowtics

. . . . . . . . . . . . . 6 \write . . . . . . . 1269,

1271, 1273, 1280, 1283, 1440, 1441, 1444

\writer \underline{1357}, 2332, 2344

                          \writermsg . \underline{1364}, 1826

X \xiipt . . . . . . . 227,

312, 347, 353, 417 \xipt . . . . . 318, 360, 388 \xivpt 313, 348, 382, 418 \xpt . . 283, 325, 370, 395 \xviipt 314, 349, 383, 419 \xxpt . 315, 350, 384, 420 \xxvpt 316, 351, 385, 421

Y \year . . . . . . 1773, 1775 \yearcnt 1774–1776, 1780

                                                   \yourmail . . . . . . . .

. . \underline{1354}, 2073, 2104

                                                   \yourmailmsg . . . . . .

. . \underline{1356}, 1797, 1819