A L^{A}TEX Class and Style for “Die TEXnische Komödie”^{∗}

Gerd Neugebauer Mainzer Str. 8 56321 Rhens (Germany)

       Net: gerd@informatik.uni-koblenz.de

Documentation date: 1996/09/13

Abstract

dtk.dtx provides a class and style file for typesetting “Die TEXnische Komödie”—the communications of the German TEX Users Group DANTE e.V. This means that this class can be used by article writers to typeset a single article as well as to produce the complete journal.

The class and style file is written in a way that it can be used both with L^{A}TEX 2.09 and L^{A}TEX 2ε. Thus it can be used by all persons which are familiar with any flavor of L^{A}TEX.

The features of L^{A}TEX 2ε are provided in the L^{A}TEX 2.09 mode only to a certain extend. Thus it might not be possible to typeset an article prepared for L^{A}TEX 2ε with L^{A}TEX 2.09.

On the other side it is possible to process an article prepared for L^{A}TEX 2.09 with L^{A}TEX 2ε (in native mode). This is justified since L^{A}TEX 2ε is the standard nowadays and L^{A}TEX 2.09 should cease to exists in the next decade.

∗This file documents dtk.dtx version 1.1 as of 1996/09/13.

Contents

1 The User Interface 3 1.1 The User Interface for Article Writers . . . . . . . . . . . . . . . 3 1.2 The Interface for the Production of the Whole Journal . . . . . . 4

2 The Implementation 5 2.1 Basic Definitions . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 2.2 Compatibility Definitions . . . . . . . . . . . . . . . . . . . . . . 5 2.3 Initializations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 2.4 Loading the Used Packages/Styles . . . . . . . . . . . . . . . . . 7 2.5 Layout Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . 8 2.6 Useful Macros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

2.6.1 Macros from texnames.sty . . . . . . . . . . . . . . . . . . 13 2.6.2 Additional Macros for Logos . . . . . . . . . . . . . . . . 17

2.7 Size Changing Commands and Mathematics . . . . . . . . . . . . 18 2.8 List Making Environments . . . . . . . . . . . . . . . . . . . . . . 19 2.9 Sectioning Commands . . . . . . . . . . . . . . . . . . . . . . . . 21 2.10 The Article Layout . . . . . . . . . . . . . . . . . . . . . . . . . . 24 2.11 Numbering . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 2.12 Labels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 2.13 Bibliography . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 2.14 Footnotes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 2.15 Defining Page Styles . . . . . . . . . . . . . . . . . . . . . . . . . 28

2.15.1 The Page Style plain . . . . . . . . . . . . . . . . . . . . . 28 2.15.2 The Page Style part . . . . . . . . . . . . . . . . . . . . . 29

2.16 The Layout of the Titlepage . . . . . . . . . . . . . . . . . . . . . 29 2.17 List of Addresses . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 2.18 The Table of Contents . . . . . . . . . . . . . . . . . . . . . . . . 33

1 The User Interface

The user interface can be divided into two parts. The first part concerns the normal user who is writing a single article. The second part concerns the user who composes a complete journal.

1.1 The User Interface for Article Writers

The user interface for ordinary users is mainly the interface as it is provided by the documentclass article. In addition to the normal commands the following macros and environments are defined:

\address This macro is used to put the address of an author into the list of authors. It should be given before the \maketitle command. The first argument is the first name of an author. The second argument is the last name of the author. The third argument is it’s address. Several lines in the address are separated by \\. Missing arguments should be filled with \null.

Several invocations of address are possible. E.g. if the article has been written by several authors. The address and the author can be omitted completely — e.g. for anonoymous letters to the editor. But this should not be the normal case.

abstract Each article should have be started with a short paragraph describing what this article is about. This paragraph is called abstract. The environment abstract is meant for marking a paragraph as abstract.

The following restrictions should be taken into account: The sectioning commands are mapped to their star variants. This means

that the commands like \section are not numbered. It should not be tried to to put references to those commands.

The following logos are provided by this package if not defined somewhere else. The user is stronly encouraged to use those macros to typeset the logos instead of making their own.

\LaTeX  L^{A}TEX
\LaTeXe  L^{A}TEX 2ε
\LaTeXTeX (La)TEX
\BibTeX  BibTEX
\MF
\METAFONT
\MP
\METAPOST
\MakeIndex MakeIndex
\AmS  AMS
\AmSTeX  AMS-TEX
\LAmSTeX  L^{A}MS-TEX
\PicTeX  PICTEX

\eV  e.V.
\dante  DANTE e.V.
\Dante  DANTE, Deutschsprachige Anwendervereinigung TEX e.V.
\DTK  Die TEXnische Komödie
\TUG  TEX Users Group

\NFSS  NFSS

\PS  PostScript

\footnote Footnotes are typeset in a special way. As a consequence of the inplementation TEX is not allowed to split footnotes across several pages. Thus you have to keep your footnotes short. It is bad style to pack the main body of text into footnotes (except for critical editions).

1.2 The Interface for the Production of the Whole Journal

The first thing one needs to know is that a complete journal starts with a title page. This title page contains the volume, the number and the date of publication. Since part of this information is used later it is stored in macros.

\DieTeXnischeKomoedie  The macro \DieTeXnischeKomoedie is provided for this purpose. It takes

three arguments. The first argument is the number. The second argument is the annual set and the third argument is the publication date.

\CoverArt  The macro \DieTeXnischeKomoedie calls the macro \CoverArt to type-

set the cover page. \CoverArt gets the same three arguments as the calling macro \DieTeXnischeKomoedie. This macro is responsible to fill the first page adequately. This maro might be redefined to alter the layout of the journal.

\Label The macro \label has been redefined to be local for each article. Thus it turned out to be necessary to allow assigning of labels which are not restricted by this “module system”. The macro \Label sets such a global label.

\Ref The macro \ref has been redefined to be local for each article. The macro

\Ref references a global label set with Label.

\Pageref The macro \pageref has been redefined to be local for each article. The macro \Pageref references a global label set with Label.

To be completed

2 The Implementation

The implementation is mainly based on existing styles/classes. This file contains only adaptions required to provide the logical markup and the definitions to get the special layout of “Die TEXnische Komödie”.

2.1 Basic Definitions

First we have to determine which kind of L^{A}TEX is running. We use the existence of the macro \documentclass to see if we have a L^{A}TEX 2ε. This macro should not be defined in L^{A}TEX 2.09.

 1 \newif\ifOldLaTeX
 2 \@ifundefined{documentclass}{\OldLaTeXtrue}{\OldLaTeXfalse}

Now we need a boolean to see if we are in the author version or in the full version. The author version has several commands disabled. The full version is turned on by giving the option full to the documentclass/style command.

 3 \newif\ifDTK@Author@
 4 \DTK@Author@true

The boolean DTK@german@ is used to determine if the german package should be loaded automatically. Usually it is turned on. Under certain circumstances it might be necessary to load other packages before the german package. Thus this variable can be set via a package option.

 5 \newif\ifDTK@german@
 6 \DTK@german@true

The boolean DTK@ancient@layout@ is used to turn on the backward compatibility mode. If it is on then the old layout is emulated. In a future version this will be extracted into a separate file.

 7 \newif\ifDTK@ancient@layout@
 8 \DTK@ancient@layout@false

2.2 Compatibility Definitions

Since we want to use this style with L^{A}TEX 2.09 and L^{A}TEX 2ε we have to define a common interface. For this purpose we use a subset of the style writers interface already defined for L^{A}TEX 2ε style writers. Since some macros are not defined in L^{A}TEX 2.09 we implement them — at least to the degree needed here.

 9 \ifOldLaTeX

\RequirePackage The macro RequirePackage simply tries to load the appropriate style file. The category code of @ is changed temporarily. The old value is is saved in \DTK@cat and restored at the end.

Optional arguments are not supported, yet.

10 \newcommand\RequirePackage[1]{
11  \chardef\DTK@cat=\the\catcode`\@
12  \catcode`\@=11
13  \input{#1.sty}%
14  \catcode`\@=\DTK@cat}

\LoadClass The concept of class and package files has not been so different in L^{A}TEX 2.09. Thus the same that has been said for \RequirePackage holds also for the macro \LoadClass. Thus we just make it a synonym.

15 \let\LoadClass=\RequirePackage

\InputIfFileExists Now things get a little bit more complicated. To implement the macro \InputIfFileExists we try to open the file. If this fails we assume that the file does not exist. The appropriate action is performed in both cases.

16 \newcommand\InputIfFileExists[3]{%
17  \openin\DTK@file #1
18  \ifeof\DTK@file\closein\DTK@file #3%
19  \else\closein\DTK@file #2\input{#1}%
20  \fi}

\DeclareOption The options in L^{A}TEX 2.09 are defined as special named macros. This is emulated here. The star variant is simply mapped to do nothing.

21 \newcommand\DeclareOption{\@ifstar{\@gobble}{\DTK@DeclareOption}}
22 \newcommand\DTK@DeclareOption[2]{\@namedef{ds@#1}{#2}}

\ProcessOptions In L^{A}TEX 2.09 the options are processed automatically. Thus this macro is simply a noop.

23 \let\ProcessOptions=\relax

\OptionNotUsed This feature is not present in L^{A}TEX 2.09. Thus the argument is silently absorbed and the macro is simply a noop.

24 \let\OptionNotUsed=\gobble

\ProvidesClass This declaration is used to type out the version information.

25 \def\ProvidesClass#1[#2]{\typeout{Document Style #1 #2}}

Just for fun we define some font switching commands. In fact the behaviour in L^{A}TEX 2ε is more complex. But I think these definitions are enough to avoid errors.

26 \newcommand\emph[1]{{\em #1}\/}
27 \newcommand\textbf[1]{{\bf #1}}
28 \newcommand\textrm[1]{{\rm #1}}
29 \newcommand\textsc[1]{{\sc #1}}
30 \newcommand\textsf[1]{{\sf #1}}
31 \newcommand\textsl[1]{{\sl #1\/}}
32 \newcommand\textit[1]{{\it #1\/}}
33 \newcommand\texttt[1]{{\tt #1}}

34

35 \@ifundefined{fontshape}{\let\fontshape=\@gobble}{}
36 \@ifundefined{selectfont}{\let\selectfont=\relax}{}

37

38 \newcommand\providescommand[2]{\ifx#1\@undefined\newcommand#1{#2}\fi}
39 \fi

We need a new handle to read files. This handle will be used to implement

\InputIfFileExists. Since \newread is declared \outer we have to allocate

the new handle here. It is just used in the L^{A}TEX 2.09 mode.

40 \newread\DTK@file

Now we can continue without considering the L^{A}TEX dialect any more. Any changes we make from now on are exclusivly based on the interface defined above.

This is all we had to do to implement the compatibility mode. It might turn out that more features are desirable. Those extensions are left to future versions of this class, eh sorry, style.

2.3 Initializations

Now we can start to define the class. The version date is taken from the macro \filedate. This macro is defined at the beginning of this file. The value is changed by the version control system rcs.

41 \ProvidesClass{dtk}[\filedate\space  gene]

The options to switch to other point sizes are disabled. Nobody is supposed to use this class with another than the single design size.

42 \DeclareOption{10pt}{\OptionNotUsed}
43 \DeclareOption{11pt}{\OptionNotUsed}
44 \DeclareOption{12pt}{\OptionNotUsed}

The options to switch the oneside and twoside settings are disabled. Nobody is supposed to use this class with another than the single design size.

45 \DeclareOption{twoside}{\OptionNotUsed}
46 \DeclareOption{oneside}{\OptionNotUsed}

We define an internal style option “full”. This loads the multicolumn package from the Mainz distribution. It is only needed to produce the full journal. Additionally several macros are only defined in the full version. This makes sure that authors can not play with too much internal macros.

47 \DeclareOption{full}{\DTK@Author@false}

The package option omitgerman can be used to omit the loading of german.sty. This migth be necessary if packages are required which have to be loaded before german.

48 \DeclareOption{omitgerman}{\DTK@german@false}

In 1996 the layout of “Die TeXnische Komoedie” has been changed. The option ancient can be used to switch back to the old layout. Currently both layout definitions are contained in this class. In a future version the old layout will be extracted into a separate file.

49 \DeclareOption{ancient}{\DTK@ancient@layout@true}

The remaining options are handed down to the base class book. This works for L^{A}TEX 2ε and is a noop for L^{A}TEX 2.09.

50 \DeclareOption*{\PassOptionsToClass{\CurrentOption}{book}}

Now we can process all options. Again this works for L^{A}TEX 2ε and is a noop for L^{A}TEX 2.09 since the options are automatically processed there.

51 \ProcessOptions

2.4 Loading the Used Packages/Styles

This class is a variation of the book class. Thus we load the base class. This loading is done with the macro from the interface definition or the built-in L^{A}TEX 2ε primitive.

52 \LoadClass{book}

The package “german” is used since this class is intended to be used by german users mainly. As one result the language is set to german as default. On the other side some parameters are modified to get a layout according to german habits. E.g. fench spacing is activated.

There are some known problems when german.sty is used. Therefore it might turn out necessary to load german.sty after other packages have been loaded. For this purpose the option —omitgerman— can be used. To ensure proper operation of dtk it is necesary to call the macro \DTKgerman after the style german has been loaded.

53 \ifDTK@german@
54 \RequirePackage{german}
55 \else
56 \typeout{*** Warning: Loading of german has been omitted. You have to
57 load it manually.}
58 \typeout{*** Don't forget to use the macro \string\DTKgerman\space
59 afterwards.}
60 \fi

The package “multicol” is used in the full version. Thus we only load it if the option full has been given.

61 \ifDTK@Author@\else
62 \RequirePackage{multicol}
63 \fi

2.5 Layout Parameters

The layout can be influenced by a large number of parameters. Thus the design decisions have been made transparent (to a certain degree at least). These options are not meant to be changed except when a new layout is beeing designed and implemented.

The size of the paper is A5. Thus the printable area is defined appropriately. The height is set to 484pt = 170.10654mm; the width is 342pt = 120.19925mm. This is slightly larger than in the predecessor style.

64 \textheight = 484pt
65 \textwidth  = 342pt

The page is flushed left. A left margin of one inch is the default on any properly installed printer. Any adjustment of the printable area on the page is left to the output driver.

66 \oddsidemargin  = 0pt
67 \evensidemargin = \oddsidemargin
68 \topmargin      = 0pt

The head line needs some space. In fact this depends on some configurable macros. Nevertheless we take the old values and leave it to a user to change those values if required.

69 \ifDTK@ancient@layout@
70 \headheight = 14pt
71 \headsep    = 12pt
72 \else
73 \headheight = 17pt

74 \headsep    = 17pt
75 \fi

The foot line needs some space. The same remarks given above apply here too.

76 \ifDTK@ancient@layout@
77 \footskip = 21pt
78 \else
79 \footskip = 24pt
80 \fi

Paragraphs are not indented but separated by additional lead only. This lead may expand a little bit but it may not shrink. (Since the whole journal is typeset with raggedbottom it is not clear to me if this makes sense at all)

81 \parskip   = 0.5\baselineskip \advance\parskip by 0pt plus 2pt
82 \parindent = 0pt

To reduce the probability that a float requires a complete page we increase the allowed fraction which can be occupied by floats at the top and the bottom of the page. Additionally we reduce the fraction required for text.

83 \renewcommand\topfraction{.9}
84 \renewcommand\bottomfraction{.9}
85 \renewcommand\textfraction{.1}

As promised before we disable vertical adjustment of pages. This seems to be a good strategy to avoid ragged apearance by too much space between paragraphs.

86 \raggedbottom

To avoid a bad layout we adjust some parameters. Thus we try to avoid widows and clubs.

87 \clubpenalty  = 10000
88 \widowpenalty = 10000

\DTKgerman We will change some of the captions names used within L^{A}TEX. To avoid that the package “german” undoes our efforts we anchor the changes in the \captionsgerman macro. To do so we have to save the old meaning in an internal name.

89 \newcommand\DTKgerman{
90 \let\DTK@captionsgerman=\captionsgerman
91 \let\captionsgerman=\DTK@captionsgerman

92 }

\DTK@captionsgerman Now we can redefine the captions command. First of all we use the old definition. Thus we avoid duplicating the whole definition and maybe getting in trouble with some future version.

93 \newcommand\DTK@captionsgerman{
94 \DTK@captionsgerman

\refname Just in case that an article contains a list of references we define the title for this section. Well, in fact we assume that the L^{A}TEX used is not too ancient. Otherwise this will not work properly.

95 \gdef\refname{Literatur}%

\bibname Ok. And now the same trick for the title of the bibliography.

96 \gdef\bibname{Literatur}%

\contentsname The headline for the table of contents is defined appropriately. \volume contains the number of the current volume. This number is set by the macro producing the front page.

97 \gdef\contentsname{Inhalt Heft \volume}%

Now we are done. We just have to make sure that the new values are activated by calling the new captions macros.

98 }

If the option german has been loaded automatically then we have to modify the captions at once. Otherwise the user is responsible to call \DTKgerman after the package german has been loaded.

99 \ifDTK@german@
100 \DTKgerman
101 \fi

\addressname The heading for the list of authors is defined in this macro.

102 \newcommand\addressname{Autoren/Organisatoren}

\volume The number of the current volume is stored in this macro. The value is automatically set with the macro \DieTeXnischeKomoedie. Since this macro is usually only used in the full version we provide a reasonable default.

103 \newcommand\volume{?/?? --- Entwurf}

\footmark This macro contains the text of the running foot.

104 \newcommand\footmark{Die \TeX nische Kom{\"o}die \volume}

\ChapterFont This macro contains the font changing command issued before typesetting a chapter title.

105 \ifDTK@ancient@layout@
106 \newcommand\ChapterFont{\Large\bf}
107 \else
108 \newcommand\ChapterFont{\Large\sf}
109 \fi

\SectionFont This macro contains the font changing command issued before typesetting the section heading.

110 \ifDTK@ancient@layout@
111 \newcommand\SectionFont{\normalsize\bf}
112 \else
113 \newcommand\SectionFont{\large\sf}
114 \fi

\SubsectionFont This macro contains the font changing command issued before typesetting the subsection heading.

115 \ifDTK@ancient@layout@
116 \newcommand\SubsectionFont{\normalsize\it}
117 \else
118 \newcommand\SubsectionFont{\normalsize\sf}
119 \fi

\SubsubsectionFont This macro contains the font changing command issued before typesetting the subsubsection heading and below.

120 \ifDTK@ancient@layout@
121 \newcommand\SubsubsectionFont{\normalsize\it}
122 \else
123 \newcommand\SubsubsectionFont{\normalsize\sf}
124 \fi

\AuthorFont This macro contains the font changing command issued before typeseting the author of an article.

125 \ifDTK@ancient@layout@
126 \newcommand\AuthorFont{\normalsize\rm}
127 \else
128 \newcommand\AuthorFont{\large\sf}
129 \fi

\TitleFont This macro contains the font changing command issued before typeseting the title of an article.

130 \ifDTK@ancient@layout@
131 \newcommand\TitleFont{\large\bf}
132 \else
133 \newcommand\TitleFont{\Large\sf}
134 \fi

\HeadFont This macro contains the font changing command issued before typeseting the running head line.

135 \ifDTK@ancient@layout@
136 \newcommand\HeadFont{\sl}
137 \else
138 \newcommand\HeadFont{\sf\fontshape{sl}\selectfont}
139 \fi

\FootFont This macro contains the font changing command issued before typeseting the running foot line.

140 \ifDTK@ancient@layout@
141 \newcommand\FootFont{\footnotesize\sl}
142 \else
143 \newcommand\FootFont{\footnotesize\sf\fontshape{sl}\selectfont}
144 \fi

\PagenoFont This macro contains the font changing command issued before typeseting the page number.

145 \ifDTK@ancient@layout@
146 \newcommand\PagenoFont{\rm}
147 \else
148 \newcommand\PagenoFont{\sf}
149 \fi

\NewpageThreshold The macro \NewpageThreshold is used to determine how much space is needed on a page to start a new article. If less space is left then the next article is started on the next page.

150 \newcommand\NewpageThreshold{100pt}

\HeadRuleDepth This macro contains the depth of the line between the running head and the main body of text.

151 \ifDTK@ancient@layout@
152 \newcommand\HeadRuleDepth{0.1pt}
153 \else
154 \newcommand\HeadRuleDepth{0pt}
155 \fi

\FootRuleDepth This macro contains the depth of the line between the running foot and the main body of text.

156 \ifDTK@ancient@layout@
157 \newcommand\FootRuleDepth{0.1pt}
158 \else
159 \newcommand\FootRuleDepth{0pt}
160 \fi

\ContentsParSkip This macro contains the parskip used for the table of contents.

161 \newcommand\ContentsParSkip{1pt}

2.6 Useful Macros

This section contains some useful abbreviations. They are mainly some kind of logos.

The following hack is from Bernd Raichle.

Fuer LaTeX 2.09 (mit oder ohne NFSS) benoetigen wir noch so etwas wie \smaller aus dem veralteteten ‘smaller.sty’, um SmallCaps fuer (fast) alle Schriftarten nachzubilden. Fuer SmallCaps muss jedoch um mehr Schriftgrade als bei \smaller verkleinert werden, so dass hier eine neue Definition namens \logo@smaller folgt, deren Verkleinerung sich an den ‘math sizes’ (hier: \scriptfont<fam>) orientiert, die standardmaessig mit L^{A}TEX2e definiert werden.

162 \ifOldLaTeX
163 \expandafter\ifx\csname selectfont\endcsname\relax
164 % Fuer OFSS benoetigen wir noch einen Hack, damit
165 % wir wieder auf die Schriftfamilie/Series/Shape
166 % zurueckwechseln. Dazu ``missbrauchen'' wir die
167 % `math group/fam', die in den Makros in der Datei
168 % "lfonts.tex" entsprechend mit veraendert wird.
169 \newcommand{\logo@sm@ller}{\relax
170  \expandafter\logo@sm@ll@r\expandafter{\the\fam}}
171 \newcommand{\logo@sm@ll@r}[1]{%
172  % \ifx\@currsize\tiny \tiny\fi
173  \ifx\@currsize\scriptsize \tiny\fi
174  \ifx\@currsize\footnotesize \tiny\fi
175  \ifx\@currsize\small \scriptsize\fi
176  \ifx\@currsize\normalsize \scriptsize\fi
177  \ifx\@currsize\large \footnotesize\fi
178  \ifx\@currsize\Large \normalsize\fi
179  \ifx\@currsize\LARGE \large\fi
180  \ifx\@currsize\huge \Large\fi

181

182  \ifx\@currsize\Huge \huge\fi

183  \ifcase#1\relax\rm\or\mit\or\cal\or\tenex  % not sure about the tenex
184  \or\it\or\sl\or\bf\or\tt\or\sf\or\sc\or\ly\fi}
185 \else
186 % Mit NFSS (fuer LaTeX 2.09) koennen wir die Groesse
187 % unabhaengig von den anderen Font-Eigenschaften aendern,
188 % so dass dies etwas einfacher geht.
189 \newcommand{\logo@sm@ller}{%
190  \relax\@nomath\logo@smaller
191  \ifx\f@size\@vpt \else
192  \ifx\f@size\@vipt  \fontsize\@vpt{6pt}\fi
193  \ifx\f@size\@viipt \fontsize\@vpt{6pt}\fi
194  \ifx\f@size\@viiipt \fontsize\@vipt{7pt}\fi
195  \ifx\f@size\@ixpt \fontsize\@vipt{7pt}\fi
196  \ifx\f@size\@xpt \fontsize\@viipt{8pt}\fi
197  \ifx\f@size\@xipt \fontsize\@viiipt{9.5pt}\fi
198  \ifx\f@size\@xiipt \fontsize\@viiipt{9.5pt}\fi
199  \ifx\f@size\@xivpt \fontsize\@xpt{12pt}\fi
200  \ifx\f@size\@xviipt \fontsize\@xiipt{14pt}\fi
201  \ifx\f@size\@xxpt \fontsize\@xivpt{18pt}\fi
202  \ifx\f@size\@xxvpt \fontsize\@xxpt{25pt}\fi
203  \selectfont
204  \fi}
205 % die ersten NFSS-Versionen benutzten noch den Makroname
206 % \size statt \fontsize
207 \@ifundefined{fontsize}{\let\fontsize=\size}{}
208 \fi
209 \newcommand{\logo@smaller}{\protect\logo@sm@ller}
210 \fi

2.6.1 Macros from texnames.sty

The following macros are taken from the file texnames.sty version 1.09 from <16 March 1993> by Nelson H. F. Beebe. I have simply included the definitions here to avoid additional files to be distributed with dtk.dtx. The original documentation has been wrapped into the doc format. And here it goes:

In the following, we first give the “official” definition, then follow it with spelling variants. Alternate definitions are discarded in favor of the official one. Each family is separated by a line like the following one.

\TeX Only change from plain.tex is the \spacefactor assignment (suggested by Phil Taylor), so that TEX at the end of a sentence isn’t treated as an abbreviation.

211 \renewcommand\TeX{T\kern-.1667em\lower.5ex\hbox{E}\kern-.125emX%
212 \spacefactor1000 }

\AmS From the AMS tex/ams/amslatex/fontsel/nfssinst.tex file:

213 \@ifundefined{AmS}{%
214 \def\AmS{\(\cal A\)\kern-.1667em\lower.5ex\hbox
215  {\(\cal M\)}\kern-.125em{\(\cal S\)}}}{}
216 \@ifundefined{AMS}{\let\AMS=\AmS}{}
\AmSLaTeX
217 \@ifundefined{AmSLaTeX}{\def\AmSLaTeX{\AmS-\LaTeX}}{}
218 \@ifundefined{AMSLaTeX}{\let\AMSLaTeX=\AmSLaTeX}{}

\AmSTeX Mike Spivak’s amstex/amstex.tex 1.1d [26-Aug-1988] has

\def\AmSTeX{{\textfontii A}\kern-.1667em\lower.5ex\hbox
            {\textfontii M}\kern-.125em{\textfontii S}-\TeX}

and 2.1 [05-Apr-1991] has an equivalent definition. AmSTeX’s \textfontii is exactly the same as \cal, which all TEXvariants understand.

219 \@ifundefined{AmSTeX}{%
220 \def\AmSTeX{$\cal A$\kern-.1667em\lower.5ex\hbox{$\cal M$}%
221  \kern-.125em$\cal S$-\TeX}}{}

\AMSTEX Leslie Lamport’s latex/tmanual.tex [10-Jul-1984] (an early draft of the book) defines it in uppercase with the standard definition.

222 \@ifundefined{AMSTEX}{\let\AMSTEX=\AmSTeX}{}

\AMSTEX Barbara Beeton’s latex/deproc.sty [24-Apr-1986] and inputs/tugbot.sty [11-Jan-1988] uses this spelling, but the definition

\leavevmode\hbox{$\cal A\kern-.2em\lower.376ex \hbox{$\cal
M$}\kern-.2em\cal S$-\TeX}
223 \@ifundefined{AMSTeX}{\let\AMSTeX=\AmSTeX}{}

\BibTeX The definitions of \BibTeX and \SLiTeX in Leslie Lamport’s latex/local.tex lower the E by 0.7ex, while TEXin plain.tex lowers it by 0.5ex. Oren Patashnik’s bibtex/btxdoc.tex and bibtex/btxhak.tex [08-Feb-1988] and bibtex/bibtex.web 0.99c [xx-Feb-1988] use this same name and definition, but Oren said using TEXhere is ok. (Curiously, L^{A}TEXitself does not define macros for any TEXware except L^{A}TEXand TEX!)

224 \ifOldLaTeX
225 \newcommand{\BibTeX}{\protect\pBibTeX}
226 \newcommand{\pBibTeX}{B\kern-.05em%
227  \hbox{\logo@smaller I\kern-.025emB}\kern-.08em%
228  \-\TeX}
229 \else
230 \DeclareRobustCommand{\BibTeX}{B\kern-.05em%
231  % Der folgende Hack stammt aus der Definition des
232  % Makros \LaTeX, siehe Datei `ltlogos.dtx' der
233  % LaTeX2e-Verteilung.
234  \hbox{$\m@th$% %% force math size calculations
235  \csname S@\f@size\endcsname
236  \fontsize\sf@size\z@
237  \math@fontsfalse\selectfont
238  I\kern-.025emB}%
239  \kern-.08em%
240  \-\TeX}
241 \fi

\BIBTeX Leslie Lamport uses this spelling in latex.tex, but not as a macro. We include it for consistency with AMSTeX.

242 \@ifundefined{BIBTeX}{\let\BIBTeX=\BibTeX}{}

\BIBTEX Leslie Lamport’s latex/slides.tex [05-Jun-1984], latex/tmanual.tex [10-Jul-1984] (an early draft of the book), and latex/lerrata.tex [23-Jul-1985] have this spelling, but the definition BIB\kern-.1em\TeX.

243 \@ifundefined{BIBTEX}{\let\BIBTEX=\BibTeX}{}

\LAMSTeX From tugboat.com 1.08 [24-Oct-1990].

244 \@ifundefined{LAMSTeX}{%
245 \newcommand\LAMSTeX{L\raise.42ex\hbox{\kern-.3em\the\scriptfont2 A}%
246  \kern-.2em\lower.376ex\hbox{\the\textfont2 M}%
247  \kern-.125em {\the\textfont2 S}-\TeX}}{}
\LamSTeX
248 \@ifundefined{LamSTeX}{\let\LamSTeX=\LAMSTeX}{}

\LAmSTeX This variant seems likely to appear:

249 \@ifundefined{LAmSTeX}{\let\LAmSTeX=\LAMSTeX}{}

\LaTeX The definition from latex.tex (LATEX VERSION 2.09 ¡14 January 1991¿) and bibtex.web 0.99c [xx-Feb-1988] lowers the E slightly more than TEX, but consistency seems more desirable. See comments at BibTEX. Different definitions are given by latex/deproc.sty [24-Apr-1986], amstex/man.sty [15-Dec-1986] inputs/tugbot.sty [11-Jan-1988], and latex/tugboat.com 1.08 [24-Oct-1990].

250 \@ifundefined{LaTeX}{%
251 \def\LaTeX{L\kern-.36em\raise.3ex\hbox{\sc a}\kern-.15em\TeX}}{}

\LATEX latex/slides.tex [05-Jun-1984] and latex/lerrata.tex [23-Jul-1985] have this spelling, but different definitions

252 \@ifundefined{LATEX}{\let\LATEX=\LaTeX}{}

\LATEX latex/slides.tex [05-Jun-1984] and latex/lerrata.tex [23-Jul-1985] have this spelling, but different definitions

253 \ifOldLaTeX
254 \newcommand\LaTeXTeX{(\kern-.15emL\kern-.36em\raise.3ex\hbox{\sc
255  a}\kern-.3em)\kern-.15em\TeX}%
256 \else
257 \DeclareRobustCommand{\LaTeXTeX}{(\kern-.15emL\kern-.36em%
258  {\sbox\z@ T%
259  \vbox to\ht0{\hbox{$\m@th$%
260  \csname S@\f@size\endcsname
261  \fontsize\sf@size\z@
262  \math@fontsfalse\selectfont
263  A}%
264  \vss}%
265  }\kern-.2em)%
266  \kern-.15em%
267  \TeX}
268 \fi

\MF Don Knuth’s mf.web 2.7 [xx-Sep-1990] and Barbara Beeton’s latex/deproc.sty [24-Apr-1986] use an equivalent of this definition. The font is variously named \logo, \manfnt, and \mf. plain.tex preloads \manfnt. manfnt has the letters A, E, F, M, N, O, T in various sizes plus extra symbols for Don Knuth’s books Computers and Typesetting, and Concrete Mathematics, while logo10 has only those letters in one size. AmSTeX uses \logo in amsppt.sty and imappt.sty, so we should avoid it, and tugboat.com uses \mf for {\smc Metafont}. We therefore use \manfnt here, defining it if necessary. QUESTION: should we use manfnt, or logo10?

269 \ifOldLaTeX
270 \ifx\manfnt\@undefined
271  \font\manfnt=logo10
272 \fi
273 \ifx\manfntsl\@undefined
274  \font\manfntsl=logosl10
275 \fi
276 \def\MF{{\ifdim\fontdimen1\font>0pt \let\manfnt = \manfntsl \fi
277  {\manfnt META}\-{\manfnt FONT}}\spacefactor1000 }%
278 \def\MP{{\ifdim\fontdimen1\font>0pt \let\manfnt = \manfntsl \fi
279  {\manfnt META}\-{\manfnt POST}}\spacefactor1000 }%
280 \else

The following improved definitions are taken from mflogo by Ulrik Vieth.

281 \DeclareFontFamily{U}{logo}{}
282 \DeclareFontShape{U}{logo}{m}{n}{
283 <8> <9> gen * logo
284 <10> <10.95> <12> <14.4> <17.28> <20.74> <24.88> logo10
285 }{}
286 \DeclareFontShape{U}{logo}{m}{it}{
287 <8> <9> gen * logosl
288 <10> <10.95> <12> <14.4> <17.28> <20.74> <24.88> logosl10
289 }{}
290 \DeclareFontShape{U}{logo}{m}{sl}{
291 <-> ssub * logo/m/it
292 }{}
293 \DeclareFontShape{U}{logo}{sbc}{n}{
294 <8> <9> sub * logo/m/n
295 <10> <10.95> <12> <14.4> <17.28> <20.74> <24.88> logobf10
296 }{}
297 \DeclareFontShape{U}{logo}{b}{n}{
298 <8> <9> sub * logo/m/n
299 <10> <10.95> <12> <14.4> <17.28> <20.74> <24.88> logod10
300 }{}
301 \DeclareFontShape{U}{logo}{bx}{n}{
302 <-> ssub * logo/b/n
303 }{}
304 \DeclareRobustCommand\logofamily{%
305 \not@math@alphabet\logofamily\relax
306 \fontencoding{U}\fontfamily{logo}\selectfont}
307 \DeclareTextFontCommand{\textlogo}{\logofamily}
308 \def\MF{\textlogo{META}\-\textlogo{FONT}\@}
309 \def\MP{\textlogo{META}\-\textlogo{POST}\@}
310 \fi

\METAFONT I cannot find any “official” uses of this alternate, but it seems likely that people will use it.

311 \@ifundefined{METAFONT}{\let\METAFONT=\MF}{}
\METAPOST In analogy to METAFONT.
312 \@ifundefined{METAPOST}{\let\METAPOST=\MP}{}

\SLITEX Leslie Lamport’s latex/slides.tex [05-Jun-1984]. His latex/lerrata.tex [23-Jul-1985] and latex/tmanual.tex [10-Jul-1984] (an early draft of the book) define it as SLITEX! The L^{A}TEX User’s Guide and Reference Manual (1986) appears to use small caps, and possibly kerning, for Sli. I need to ask Leslie to suggest a preferred definition.

313 \@ifundefined{SLITEX}{
314 \newcommand\SLITEX{%
315  S\kern-.065em L\kern-.18em\raise.32ex\hbox{i}%
316  \kern-.03em\TeX}}{}

\SLiTeX latex/local.tex (sample Local Guide) [27-Oct-1988] uses this name, but defines it as

{\rm S\kern-.06em{\sc l\kern-.035emi}\kern-.06em T\kern
  -.1667em\lower.7ex\hbox{E}\kern-.125emX}

with an extra-low E, and kerned Sli in small caps. Is this what the L^{A}TEX User’s Guide and Reference Manual (1986) used?

317 \@ifundefined{SLiTeX}{\let\SLiTeX=\SLITEX}{}

\SliTeX latex/slitex.tex [08-Jun-1988] uses SliTeX in typeouts, but not as a macro – what a way to confuse the user.

318 \@ifundefined{SliTeX}{\let\SliTeX=\SLITEX}{}

\SLITeX I cannot find a use of this one, but it seems a likely candidate anyway, and is consistent with AMSTeX and BIBTeX.

319 \@ifundefined{SLITeX}{\let\SLITeX=\SLITEX}{}

\NTS This one comes from a communication with Bernd Raichle.

320 \newcommand\NTS{\mbox{\mathsurround=0pt
321  \(\cal N\mkern -4mu\lower .5ex\hbox{$\cal T$}\mkern -2mu S\)}}

\MakeIndex This one comes from a communication with Bernd Raichle based on makeindex.tex – released 17 February 1987 by Leslie Lamport.

322 \newcommand\MakeIndex{\textit{Make\-Index}}

2.6.2 Additional Macros for Logos

The following macros are maily form the predecessor style file. Some new ones have been added.

\eV The abbreviation for e.V. is defined in this macro. The kerning of the letters is

corrected manually.

Disclaimer: I have not invented this macro. It has been defined this way in the predecessor style.

323 \ifDTK@ancient@layout@
324 \newcommand\eV{e.\kern-.18emV\kern-.18em\@ifnextchar.{}{.}}
325 \else
326 \newcommand\eV{e.V\kern-.18em\@ifnextchar.{}{.}}
327 \fi

\dante The “official logo” for DANTE e.V. is defined.

328 \newcommand\dante{DANTE \eV}

\Dante The long name of DANTE.

329 \newcommand\Dante{DANTE, Deutschsprachige Anwendervereinigung \TeX~\eV}

\DTK The long name of this booklet, eh journal.

330 \newcommand\DTK{Die \TeX\-ni\-sche Ko\-m{\"o}\-die}

\LaTeXe If \LaTeXe is not defined then define it. Since this macro is so essential we just want to be sure that it exists.

331 \ifx\LaTeXe\@undefined
332 \def\LaTeXe{\LaTeX{}\kern.05em2$_{\textstyle\varepsilon}$}
333 \fi

\PS We define the logo for PostScript.

334 \newcommand\PS{Post\-Script}

\PiC For some reason this is not defined in texnames.sty. Since it has been in the predecessor of this style it is also defined here.

335 \newcommand\PiC{P\kern-.12em\lower.5ex\hbox{I}\kern-.075emC}

\PiCTeX Now the previous macro is combined with TEX.

336 \newcommand\PiCTeX{\PiC\kern-.11em\TeX}

\TUG The TEX Users Group.

337 \newcommand\TUG{\TeX{} Users Group}

\TUGboat The communications of the TEX Users Group

338 \newcommand\TUGboat{\textsl{TUGboat}}

\TTN The communications of the TEX Users Group

339 \newcommand\TTN{\textsl{\TeX{} and TUG NEWS}}

\NFSS The New Font Selection Scheme.

340 \newcommand\NFSS{\textsf{NFSS}}

2.7 Size Changing Commands and Mathematics

The size changing commands \small and \footnotesize redefine also \@listi. This effect has to be undone.

\DTK@math This macro modifies the relavant parameters for typesetting mathematics.

341 \newcommand\DTK@math{%
342 \abovedisplayskip      = 4pt plus 2pt minus 1pt
343 \belowdisplayskip      = \abovedisplayskip
344 \abovedisplayshortskip = 2pt plus 2pt
345 \belowdisplayshortskip = \abovedisplayshortskip

346 }

\@normalsize This is an internal size changing command. We save the old definition in \DTK@@normalsize and redefine it. After the old definition is used some sizes are changed to a smaller value.

347 \let\DTK@@normalsize=\@normalsize
348 \def\@normalsize{%

349 \DTK@@normalsize
350 \DTK@math
351 \let\@listi=\@listI}

\normalsize This is a size changing command. We save the old definition in the macro \DTK@normalsize and redefine it. After the old definition is used some sizes are changed to a smaller value.

352 \let\DTK@normalsize=\normalsize
353 \renewcommand\normalsize{%
354 \DTK@normalsize
355 \DTK@math
356 \let\@listi=\@listI}
357 \normalsize

\small This is a size changing command. We save the old definition in \DTK@small and redefine it. After the old definition is used some sizes are changed to a smaller value.

358 \let\DTK@small=\small
359 \renewcommand\small{%
360 \DTK@small
361 \DTK@math
362 \let\@listi=\@listI}

\footnotesize This is a size changing command. We save the old definition in the macro \DTK@footnotesize and redefine it. After the old definition is used some sizes are changed to a smaller value.

363 \let\DTK@footnotesize=\footnotesize
364 \renewcommand\footnotesize{%
365 \DTK@footnotesize
366 \DTK@math
367 \let\@listi=\@listI}

2.8 List Making Environments

The list making environments description, itemize, and enumerate are adapted to use less vertical space. This is mainly done by resetting \parsep,

\itemsep, and \topsep.

The environments itemize and enumerate use the macros @listi, @listii, etc. Thus it is sufficient to redefine those macros.

368 \def\@listI{%
369 \leftmargin = \leftmargini
370 \parsep     = \parskip
371 \topsep     = 0pt plus 2pt
372 \itemsep    = 0pt plus 2pt}
373 \let\@listi=\@listI
374 \def\@listii{%
375 \leftmargin = \leftmarginii
376 \labelwidth = \leftmarginii
377 \advance   \labelwidth by-\labelsep
378 \parsep     = \parskip
379 \topsep     = 0pt plus 2pt
380 \itemsep    = 0pt plus 2pt}

381 \def\@listiii{%
382 \leftmargin = \leftmarginiii
383 \labelwidth = \leftmarginiii
384 \advance   \labelwidth by-\labelsep
385 \partopsep  = 1pt plus 0pt minus 1pt
386 \parsep     = \parskip
387 \topsep     = 0pt plus 2pt
388 \itemsep    = 0pt plus 2pt}

We activate the defaults.

389 \@listi

For some reason @listi is redefined in small and \footnotesize. Thus we have to take care to undo the changes made there. For this purpose we save the old definitions and restore the intended meaning of \@listi after calling the old macro.

390 \ifDTK@ancient@layout@\else
391 \renewcommand\labelitemi{$\m@th\circ$}
392 \renewcommand\labelitemii{$\m@th\triangleright$}
393 \renewcommand\labelitemiii{$\m@th\diamond$}
394 \setlength\leftmargini{1.5em}
395 \setlength\leftmarginii{1.4em}
396 \setlength\leftmarginiii{1.3em}
397 \setlength\leftmarginiv{1.2em}
398 \fi

description To get things smaller we completely redefine the description environment. Nevertheless we make use of the old label formatting macro.

399 \renewenvironment{description}{%
400 \begin{list}{}{%
401  \labelwidth = 0pt
402  \itemindent = -\leftmargin
403  \parsep     = \parskip
404  \topsep     = 0pt plus 2pt
405  \itemsep    = 0pt plus 2pt
406  \let\makelabel=\descriptionlabel}%
407 }{\end{list}}

408

409 \ifDTK@ancient@layout@\else
410 \renewcommand\descriptionlabel[1]{\hspace\labelsep
411  {\normalsize\it #1}}
412 \fi

quotation Since the whole journal does not use parindent we make the quotation environment the same as the quote environment.

413 \ifDTK@ancient@layout@\else
414 \renewenvironment{quotation}{
415 \list{}{\rightmargin\leftmargin}%
416 \item\relax
417 }{\endlist}
418 \fi

roll We add a new type of list making environment. The roll does not indent per default but just typesets the argument of the \item macro in boldface. It has one optional argument which can be used to specify the amount of indentation desired.

419 \newenvironment{roll}%
420 {\@ifnextchar[{\r@ll}{\r@ll[0pt]}}%
421 {\end{list}}
422 \def\r@ll[#1]{\begin{list}{}{%
423  \labelwidth = #1
424  \leftmargin = \labelwidth
425  \itemsep    = .3ex
426  \let\makelabel=\rolllabel}%

427 }

Typeset the label of a roll environment.

428 \newcommand\rolllabel[1]{\hspace\labelsep \textbf{#1}\hfill}

example We provide an environment for typesetting example code. It is typeset in a smaller font with an indentation left and right.

429 \newenvironment{example}{\begin{quote}\small}{\end{quote}}
430 \long\def\@caption#1[#2]#3{\par\addcontentsline{\csname
431 ext@#1\endcsname}{#1}{\protect\numberline{\csname
432 the#1\endcsname}{\ignorespaces #2}}\begingroup
433  \@parboxrestore
434  \small
435  \@makecaption{\csname fnum@#1\endcsname}{\ignorespaces #3}\par
436 \endgroup}

2.9 Sectioning Commands

The counter secnumdepth determines which sectional units are decorated with a number. Since we don’t want sections and everything below to be numbered we set this counter to 0.

437 \setcounter{secnumdepth}{0}

All but the first article are separated by additional vertical space from the preceding text. Thus we define a new boolean variable to determine which article is the first one in a chapter.

438 \newif\ifFirstArticle
439 \FirstArticletrue

\part This definition is used in the author version, where \part should not be used. An error message is issued instead.

440 \ifDTK@Author@
441 \renewcommand\part{%
442  \typeout{*** Parts can not be used in single articles.}}
443 \else

A part is aligned to the next full page. A special page style is used on a first page of a part. The macro \part has one ordinary argument which constitutes the main title of the part. This argument can be preceeded by an optional argument—enclosed in brackets. This first optional argument is used as the running head. If it is missing the main title is used instead.

The main argument can be followed by another optional argument. This second optional argument is the subtitle of the part. If none is given then the empty default is used instead. The second optional argument is an enhancement compared to the original definition of parts in L^{A}TEX.

444 \renewcommand\part{%
445  \clearpage
446  \thispagestyle{part}%
447  \FirstArticletrue
448  \Advance@Label@Prefix
449  \part@star*}
450 \fi

\part@star This macro strips any additional stars (*). If the next character is a [ then the part macro has an optional argument.

451 \def\part@star*{%
452 \@ifnextchar*{\part@star}{%
453  \@ifnextchar[{\part@optional}{\part@normal}}}

\part@optional This macro treats the case that the part macro has an optional argument. This optional argument is used in the running head and the table of contents.

454 \def\part@optional[#1]#2{%
455 \markboth{#1}{#1}%
456 \addcontentsline{toc}{part}{#1}%
457 \@ifnextchar[{\part@subtitle{#2}}{\part@nosubtitle{#2}}}

\part@normal This macro treats the case that the part has no optional argument. In this case the title itself is used in the head and in the table of contents.

458 \def\part@normal#1{%
459 \markboth{#1}{#1}%
460 \addcontentsline{toc}{part}{#1}%
461 \@ifnextchar[{\part@subtitle{#1}}{\part@nosubtitle{#1}}}

\part@subtitle This macro treats the case that the part has an optional argument for a subtitle.

462 \def\part@subtitle#1[#2]{\TopArt{#1}{\\#2}\bigskip\par}

\part@nosubtitle This macro treats the case that the part has no optional argument for a subtitle.

463 \def\part@nosubtitle#1{\TopArt{#1}{}\bigskip\par}

\TopArt This macro is used to generate the layout of the beginning of a part. It takes two arguments. The first argument is the title of the part and the second argument is its subtitle. If the subtitle is not empty then it is started by \\.

464 \ifDTK@ancient@layout@
465 \newcommand\TopArt[2]{%
466 \begingroup
467  \unitlength = 1pt
468  \@tempcnta  = \textwidth
469  \divide\@tempcnta by \unitlength
470  \framebox(\@tempcnta,38){\parbox{.95\textwidth}{%
471  \begin{center}{\large\bf #1}#2 \end{center}}}
472 \endgroup}
473 \else
474 \newcommand\TopArtRule{2pt}

475 \newcommand\TopArt[2]{%
476 \begin{minipage}{\textwidth}\parskip=0pt\parindent=0pt
477  \null\vspace{18pt}\par\raggedright\large\sf
478  {\huge\sf #1}\\[-.5ex]\rule{\textwidth}{\TopArtRule}%
479  \vspace{2pt} #2
480 \end{minipage}}
481 \fi

\chapter In the author version of this class no chapters are allowed. They are activated when the option full is given to the class/style. Otherwise an error message is printed.

482 \ifDTK@Author@
483 \renewcommand\chapter{%
484  \typeout{*** Chapters can not be used in single articles.}}
485 \else

The appearance of a chapter is the same as the appearance of a section. Additionally a line is added to the table of contents and the headline is set appropriately.

Since we want to deal with optional arguments and star variants things are becoming a little bit more complicated. I don’t know if it is worth the effort. Maybe nobody will ever use this feature anyhow.

486 \renewcommand\chapter{%
487  \@ifnextchar*{\chapter@star}{%
488  \@ifnextchar[{\chapter@optional}{\chapter@normal}}}
489 \fi

Ignore any number of stars. Well this may be to harsh but I think this is enough.

490 \def\chapter@star*{\chapter}

Provide a default for the optional argument.

491 \def\chapter@normal#1{\chapter@optional[#1]{#1}}

Now do the whole job.

492 \def\chapter@optional[#1]{%
493 \typeout{#1}%
494 \Advance@Label@Prefix
495 \addcontentsline{toc}{chapter}{#1}%
496 \markboth{#1}{#1}%
497 \FirstArticletrue
498 \@startsection{chapter}{0}{\z@}{-1ex plus-1ex minus
499  -.2ex}{.5ex plus.2ex}{\ChapterFont}*%

500 }

\section The section is redefined to use less vertical space than the original definition.

501 \ifDTK@ancient@layout@
502 \renewcommand\section{\@startsection{section}{1}{\z@}{%
503  -1ex plus-1ex minus-.2ex}{.5ex plus.2ex}{\SectionFont}}
504 \else
505 \renewcommand\section{\@startsection{section}{1}{\z@}{%
506  -2ex plus-1ex minus-.2ex}{.5ex plus.2ex}{\SectionFont}}
507 \fi

\subsection The subsection is redefined to use less vertical space than the original definition.

508 \ifDTK@ancient@layout@
509 \renewcommand\subsection{\@startsection{subsection}{2}{\z@}{%
510  -1ex plus-1ex minus-.2ex}{0.75ex plus.2ex}{\SubsectionFont}}
511 \else
512 \renewcommand\subsection{\@startsection{subsection}{2}{\z@}{%
513  -2ex plus-1ex minus-.2ex}{0.75ex plus.2ex}{\SubsectionFont}}
514 \fi

\subsubsection The subsubsection is redefined to use less vertical space than the original definition.

515 \ifDTK@ancient@layout@
516 \renewcommand\subsubsection{\@startsection{subsubsection}{3}{\z@}{%
517  -1ex plus-1ex minus-.2ex}{0.75ex plus.2ex}{\SubsubsectionFont}}
518 \else
519 \renewcommand\subsubsection{\@startsection{subsubsection}{3}{\z@}{%
520  -2ex plus-1ex minus-.2ex}{0.75ex plus.2ex}{\SubsubsectionFont}}
521 \fi

\paragraph The paragraph is redefined to use less vertical space than the original definition.

522 \ifDTK@ancient@layout@
523 \renewcommand\paragraph{\@startsection{paragraph}{4}{\z@}{%
524  1ex plus1ex minus.2ex}{-.5ex}{\SubsubsectionFont}}
525 \else
526 \renewcommand\paragraph{\@startsection{paragraph}{4}{\z@}{%
527  0ex plus1ex minus.2ex}{-.5ex}{\SubsubsectionFont}}
528 \fi

\subparagraph The subparagraph is redefined to use less vertical space than the original definition.

529 \ifDTK@ancient@layout@
530 \renewcommand\subparagraph{\@startsection{subparagraph}{4}%
531 {\parindent}{1ex plus1ex minus.2ex}{-.5ex}{\SubsubsectionFont}}
532 \else
533 \renewcommand\subparagraph{\@startsection{subparagraph}{4}%
534 {\parindent}{0ex plus1ex minus.2ex}{-.5ex}{\SubsubsectionFont}}
535 \fi

2.10 The Article Layout

\maketitle The title of an article is typeset together with the author information. If it is

the first article in this chapter then additional vertical space is added.

The title is added to the table of contents and the headline is adjusted appropriately.

The macro \NewpageThreshold is used to determine how much space is needed aon a page to start a new article. If less space is left then the next article is started on the next page.

Now we can start to typeset the head of an article and perform all tasks required in this situation.

536 \renewcommand\maketitle{%

If we are not in a complete journal then we use a different page style for the first page. Thus it is possible to use this class to typeset preprints and get a better layout of the first page.

537 \ifDTK@Author@ \thispagestyle{part}\fi

Now we have to ensure that there is enough space left on this page to start a new article. If there isn’t enough space we start the article on the next page.

538 \ifDTK@ancient@layout@\else\vspace{12pt}\fi
539 \begingroup
540  \dimen0=\vsize
541  \advance\dimen0 by -\pagetotal
542  \ifdim\dimen0<\NewpageThreshold
543  \newpage
544  \global\FirstArticletrue
545  \fi
546 \endgroup

The namespace for labels has to be switched. This is done by calling the

 macro \Advance@Label@Prefix.
547 \Advance@Label@Prefix

We encapsulate the title and author information in a minipage to avoid a pagebreak in beween (maybe not necessary). Then we draw a line to separate the article from the previous one. The line is required if the boolean variable FirstArticle is true. This variable is set afterwards.

548 \begingroup
549  \begin{minipage}{\textwidth}
550  \ifFirstArticle
551  \global\FirstArticlefalse
552  \vskip 3pt
553  \else
554  \ifDTK@ancient@layout@
555  \rule{\textwidth}{.4pt}%
556  \vskip 14pt plus 8pt minus 12pt%
557  \else
558  \vspace{32pt plus 8pt minus 16pt}%
559  \fi
560  \fi
561  \setcounter{footnote}0

Now we insert the title and the author. The title is also put into the table of contents. The running head is adjusted.

562  \@flushglue=0pt plus .3\textwidth\relax
563  \raggedright
564  \TitleFont
565  \spaceskip=\fontdimen2\font\relax
566  \xspaceskip=\fontdimen7\font\relax
567  \@title
568  \ifx\@author\@empty\else
569  \bigskip\par
570  \AuthorFont\@author
571  \fi
572  \end{minipage}%
573  \@thanks

574  \let\thanks\@gobble
575  \addcontentsline{toc}{chapter}{\@title}%
576  \markboth{\@title}{\@title}%
577 \endgroup

Finally we rest certain values and insert some space to the beginning of the article.

578 \let\@title=\@empty
579 \let\@author=\@empty
580 \let\@thanks=\@empty
581 \setcounter{figure}0
582 \setcounter{table}0
583 \setcounter{equation}0
584 %  \setcounter{footnote}0
585 \medskip\par}

Several authors are separated by \and. Here is a first approximation to deal with this case.

586 \renewcommand\and{, }

We provide default values for the author, the title and the footnote of the title. All of them are empty.

587 \let\@title=\@empty
588 \let\@author=\@empty
589 \let\@thanks=\@empty

abstract The abstract is typeset in a smaller font indented left and right. The use of the quote environment ensures that the abstract can be broken at the end of the line.

590 \newenvironment{abstract}{%
591 \begin{quote}\small
592  }{%
593 \end{quote}\medskip\par}

2.11 Numbering

The numbering is done on a global basis. No chapter numbers are prepended. Especially since none are used at all. This is just like in the article class.

594 \renewcommand\thefigure{\arabic{figure}}
595 \renewcommand\thetable{\arabic{table}}
596 \renewcommand\theequation{\arabic{equation}}

2.12 Labels

Labels have to be used on an per article basis for this purpose we use a macro to hold the prefix for the labels. This prefix is prepended whenever something is done with the labels.

The prefix is constructed from a numeric counter. This counter is allocated and initialized. Maybe I could live without this counter but this way the labels look nicer (if you ever see them).

597 \newcount\DTL@label
598 \DTL@label=0

\Advance@Label@Prefix This macro is expanded whenever a new module is entered. It has to take care that a new and unique prefix string for the labels is generated and stored in the

macro \Label@Prefix.
599 \newcommand\Advance@Label@Prefix{%
600 \advance\DTL@label 1
601 \xdef\Label@Prefix{module \the\DTL@label:}}

The label prefix has to be initalized. The easiest way to perform this task is touse the macro defined above.

602 \Advance@Label@Prefix

Sometimes it is desirable to use labels in the old sense. I.e. without the module system. For this purpose we keep the old definitions of the macros

\ref, \label, and \pageref under the new names \Ref, \Label, and \Pageref

respectivly.

603 \let\Ref=\ref
604 \let\Label=\label
605 \let\Pageref=\pageref

\ref The module prefix is prepended before the original \ref macros is used.

606 \renewcommand\ref[1]{\Ref{\Label@Prefix:#1}}

\label The module prefix is prepended before the original \label macros is used.

607 \renewcommand\label[1]{\Label{\Label@Prefix:#1}}

\pageref The module prefix is prepended before the original \pageref macros is used.

608 \renewcommand\pageref[1]{\Pageref{\Label@Prefix:#1}}

2.13 Bibliography

\thebibliography Instead of using a \chapter* to start a bibliography we use a \section*. Thus the bibliography should not appear in the table of contents.

609 \renewcommand\thebibliography[1]{%
610 \section*{\refname}%
611 \list{[\arabic{enumi}]}{%
612  \settowidth\labelwidth{[#1]}%
613  \leftmargin\labelwidth
614  \advance\leftmargin\labelsep
615  \usecounter{enumi}}
616 \def\newblock{\hskip .11em plus .33em minus .07em}
617 \sloppy\clubpenalty4000\widowpenalty4000
618 \sfcode`\.=1000\relax}

\DTK@bibliography This macro is used to overwrite the macro \bibliography when the complete journal is typeset.

619 \newcommand\DTK@bibliography[1]{
620 \InputIfFileExists{#1.bbl}{}{\typeout{--- File #1.bbl not found.}}}

2.14 Footnotes

This is just my personal taste. I have incorporated my fnblock.sty. This style option arranges things in a way that footnotes do not go beneath the footnotemarks. In addition they can be indented at the right side.

Both indentation at both sides can be configured with the following two macros:

621 \newcommand\DTK@fnrightmargin{0em}
622 \newcommand\DTK@fnleftmargin{1em}

And now we make the footnote to behave as desired.

623 \ifDTK@ancient@layout@\else
624 \long\def\@makefntext#1{%
625 \begin{list}{}{%
626  \rightmargin=0pt%
627  \parsep=0.333\baselineskip plus 2pt
628  \leftmargin=\DTK@fnleftmargin}
629 \item\mbox{}\llap{$^{\@thefnmark}$\kern1pt}#1
630 \end{list}}

631

632 \renewcommand\footnoterule{%
633 \kern-3\p@
634 \hrule\@width0.333\columnwidth
635 \kern2.6\p@}
636 \fi

2.15 Defining Page Styles

2.15.1 The Page Style plain

The page style plain provides a head line and a foot line. The page number is printed in the outer corner of the head line. The inner part of the head line contains the title of the current article.

The foot line contains the name and number of the current journal flushed towards the inner border of the page.

The head line and the footline are separated by a bar from the main body of text.

637 \renewcommand\ps@plain{%
638 \let\@mkboth=\@gobbletwo
639 \let\chaptermark=\@gobble
640 \let\sectionmark=\@gobble
641 \let\subsectionmark=\@gobble
642 \def\@oddhead{\vbox{\hbox to \textwidth{%
643  \let\\=\relax
644  \HeadFont \rightmark \hfil\PagenoFont\thepage}\kern 3pt
645  \ifdim\HeadRuleDepth>0pt \hrule depth\HeadRuleDepth\fi}}%
646 \def\@evenhead{\vbox{\hbox to \textwidth{%
647  \let\\=\relax
648  \PagenoFont \thepage\hfil\HeadFont \leftmark}\kern 3pt
649  \ifdim\HeadRuleDepth>0pt \hrule depth\HeadRuleDepth\fi}}%
650 \def\@oddfoot{\vbox{%
651  \ifdim\FootRuleDepth>0pt \hrule depth\FootRuleDepth \fi
652  \kern 5pt \hbox to \textwidth{\FootFont \footmark\hfil\null}}}%

653 \def\@evenfoot{\vbox{%
654  \ifdim\FootRuleDepth>0pt \hrule depth\FootRuleDepth \fi
655  \kern 5pt \hbox to \textwidth{\null\hfil\FootFont \footmark}}}}

2.15.2 The Page Style part

The page style part contains the same foot as the page style plain. The head line is empty.

This style is used when a new part is started. It can be configured by

 redefining the macros FootRuleDepth, \FootFont, and \PagenoFont.
656 \newcommand\ps@part{%
657 \let\@mkboth=\@gobbletwo
658 \let\chaptermark=\@gobble
659 \let\sectionmark=\@gobble
660 \let\subsectionmark=\@gobble
661 \let\@oddhead=\@empty
662 \let\@evenhead=\@empty
663 \def\@oddfoot{\vbox{%
664  \ifdim\FootRuleDepth>0pt \hrule depth\FootRuleDepth \fi
665  \kern 5pt \hbox to \textwidth{\FootFont \footmark\hfil\null}}}%
666 \def\@evenfoot{\vbox{%
667  \ifdim\FootRuleDepth>0pt \hrule depth\FootRuleDepth \fi
668  \kern 5pt \hbox to \textwidth{\null\hfil\FootFont \footmark}}}}

The default page style is plain. This has been set by the book style before. If we want our changes to take effect we have to reinitialize the page style.

669 \pagestyle{plain}

2.16 The Layout of the Titlepage

\DieTeXnischeKomoedie This macro produces the title page. It has three arguments. The first argument is the number of the volume. This value is also stored in the macro \volume for later use. The second argument is the number of the year and the third argument is the date when this volume is released. The date is given as month and year.

The appearance of the cover page is determined by the macro \CoverArt. This can be redefined to get a different cover page.

670 \ifDTK@Author@\else
671 \newcommand\DieTeXnischeKomoedie[3]{%
672  \thispagestyle{empty}%
673  \gdef\volume{#1}%
674  \gdef\DTKedition{#2}%
675  \gdef\DTKdate{#3}%
676  \global\let\bibliography=\DTK@bibliography
677  \global\let\bibliographystyle=\@gobble
678  \CoverArt{#1}{#2}{#3}%
679  \newpage}
680 \fi

\CoverArt This macro implements the layout of the cover page of DTK. It can be redefined to get a different layout.

681 \ifDTK@ancient@layout@

682 \newcommand\CoverArt[3]{
683 \ifx\CoverTitleFont\@undefined
684  \newfont\CoverTitleFont{cmr17 scaled \magstep 5}%
685 \fi
686 \begin{center}
687  {\LARGE DANTE\\[14pt]
688  \Large Deutschsprachige Anwendervereinigung \TeX\ \eV}%
689  \\\rule{\textwidth}{2pt}\par\vfill
690  \CoverTitleFont    Die
691  \\[22pt]       \TeX nische
692  \\[22pt]       Kom{\"o}die
693  \par\vfill\rule{\textwidth}{2pt}\\[4pt]\large
694  Heft #1\hfill #2.\ Jahrgang\hfill #3
695  \normalsize
696 \end{center}\vspace*{28.5pt}}
697 \else

This macro determines the thickness of the horizontal rule separating the publisher from the edition information.

698 \newcommand\CoverArt@linewidth{0pt}%{1.2pt}
699 \newcommand\CoverArt@barwidth{2.41pt}
700 \newcommand\CoverArt@font{\Large\raggedleft}
701 \newcommand\CoverArt@small{\footnotesize}
702 \newcommand\CoverArt@gap{2em}
703 \newcommand\CoverArt[3]{%
704 \ifx\CoverTitleFont\@undefined
705 \newfont\CoverTitleFont{cmr17 scaled \magstep 5}
706 \fi
707 \ifx\CoverNumberFont\@undefined
708 \newfont\CoverNumberFont{cmr17 scaled 3583}
709 \fi
710 \vspace*{-34pt}\hfill
711 \setbox\@tempboxa=\hbox to \textheight{\null\hfill\CoverTitleFont
712  Die \TeX nische Kom\"odie\hfill\null}%
713 \@tempdimb=\ht\@tempboxa
714 \advance\@tempdimb by\dp\@tempboxa
715 \hbox to\@tempdimb{%
716  \vbox to\wd\@tempboxa{%
717  \vskip\wd\@tempboxa
718  \special{ps:gsave currentpoint currentpoint translate
719  270 rotate neg exch neg exch translate}%
720  \box\@tempboxa\vss}\hss}%
721 \special{ps:currentpoint grestore moveto} \
722 \rule{\CoverArt@barwidth}{\textheight}
723 \begin{minipage}[b]{.7\textwidth}\raggedright
724  \rule{1em}{0pt}%
725  \dimen2=\textwidth\advance\dimen2-1em
726  \parbox{\dimen2}{\CoverArt@font
727  DANTE\\
728  Deutschsprachige\\
729  Anwendervereinigung
730  \TeX\ \eV}\\[1ex]

731  \dimen3=\textwidth\advance\dimen3-\CoverArt@gap
732  \hfill\rule{\dimen3}{\CoverArt@linewidth}%
733  \\[-\baselineskip]\null\hspace{1em}%
734  {\CoverArt@small #2. Jahrgang\quad Heft #1\quad #3}%
735  \\[-\baselineskip]\rule{0pt}{.617647\textheight}%
736  \CoverNumberFont
737  \null\hfill
738  \makebox(0,0)[br]{%
739  \special{ps:gsave \CoverArt@gray}%
740  \CoverArt@strip@no #1;\hspace{1pt}%
741  \special{ps:grestore}}%
742 %    \makebox(0,0)[br]{\CoverTitleFontII%
743 %      \CoverArt@strip@no #1;\hspace{1pt}}%
744 \end{minipage}%

745 }

746

747 \newcommand\CoverArt@gray{.95 setgray}

748

749 \def\CoverArt@strip@no#1/#2#3#4#5;{#1\raisebox{0.35ex}{\CoverTitleFont/}#4#5}
750 \fi

2.17 List of Addresses

Addresses can be given anywhere throughout the whole document. The address together with the page where it has been given is stored in the index.

The list of addresses is handled by the index mechanism of L^{A}TEX. I (safely) assume that nobody has the desire to make an index for a journal.

\address The address macro takes three arguments. The first argument is the first name the second is the last name and the third is the address where several lines can be included which are separated by \\.

The macro can be e.g. as follows:

\address{Gerd}{Neugebauer}%
        {"Odenburger Str. 16\\64295 Darmstadt}

The address is given to \index to be stored in the .idx file. This file is sorted and reformatted to produce the sorted list of addresses.

The problem was to get the correct (German) ordering. For this purpose the TEX macros which are (normally) part of a name have to be expanded properly. Unfortunately plain expansion may leave braces which confuse makeindex. To get rid of these braces we have to scan the tokens and transfer those tokens that are not braces.

We use one big assumption. We assume that a name does not contain a dollar sign. Well, it is rather unusual that mathematics is part of a name.

The better solution would be a future version of makeindex which is able to cope with those problems (wait and pray:-)

751 \newcommand\address[3]{%
752 \begingroup
753  \def\"##1{\@ifundefined{detex@@##1}{##1}%
754  {\csname detex@@##1\endcsname}}%
755  \let"=\"%
756  \def\ss{ss}%
757  \let\'=\relax

758  \let\`=\relax
759  \let\^=\relax
760  \let\.=\relax
761  \let\==\relax
762  \let\d=\relax
763  \let\b=\relax
764  \let\c=\relax
765  \let\v=\relax
766  \let\H=\relax
767  \let\t=\relax
768  \let\u=\relax
769  \let\~=\relax
770  \def\o{o}%
771  \def\O{O}%
772  \def\aa{aa}%
773  \def\AA{Aa}%
774  \def\l{l}%
775  \def\L{L}%
776  \def\ae{ae}%
777  \def\AE{Ae}%
778  \def\oe{oe}%
779  \def\OE{Oe}%
780  \def\TeX{TeX}%
781  \def\LaTeX{LaTeX}%
782  \def\LaTeXe{LaTeX2e}%
783  \let\null=\relax
784  \xdef\@ddress{#2, #1}%
785 \endgroup
786 \begingroup
787  \def\\{\string\\}%
788  \def\"{\string"}%
789  \def"{\string"}%
790  \def\null{}%
791  \expandafter\@strip\@ddress$%$
792  \index{\STRIP@*#1 #2!#3}%
793 \endgroup

794 }

For the removing of TEX macros in addresses we need some definitions to perform the mapping.

795 \let\strip@grp={
796 \let\strip@end=$%$
797 \def\@strip{\def\STRIP@{}\strip@I}
798 \def\strip@I{\let\strip@next=\strip@I
799 \futurelet\strip@CHAR\strip@II}
800 \def\strip@II#1{%
801 \ifx\strip@CHAR\strip@end
802  \let\strip@next=\relax
803 \else\ifx\strip@CHAR\strip@grp
804  \strip@I #1$%$
805  \let\strip@next=\strip@I
806 \else\ifcat\strip@CHAR A
807  \xdef\STRIP@{\STRIP@#1}%
808 \else\ifcat\strip@CHAR.

809  \xdef\STRIP@{\STRIP@#1}%
810 \else\ifcat\strip@CHAR\space
811  \xdef\STRIP@{\STRIP@ #1}%
812 \fi\fi\fi\fi\fi
813 \strip@next}
814 \def\detex@@a{ae}
815 \def\detex@@o{oe}
816 \def\detex@@u{ue}
817 \def\detex@@A{Ae}
818 \def\detex@@O{Oe}
819 \def\detex@@U{Ue}
820 \def\detex@@s{ss}

theaddresses The addresses are collected in an environment Addresses. This environment is used to customize the layout of this list.

821 \ifDTK@Author@\else
822 \newenvironment{theaddresses}{%
823 \chapter{\addressname}\Label{addresses}
824 \begingroup
825 \def\addressitem##1##2##3{\par{\bf ##1}\hfill[\ignorespaces ##3]%
826  \\ ##2}
827 \begin{multicols}{2}%
828  }{%
829 \end{multicols}%
830 \endgroup

831 }

832 \fi

\listofaddresses This macro reads the index file which is assumed to contain the properly formatted list of authors. If this file does not exist then a warning is printed.

833 \ifDTK@Author@
834 \newcommand\listofaddresses{%
835  \typeout{*** listofaddresses not supported in articles.}}
836 \else
837 \newcommand\listofaddresses{%
838  \InputIfFileExists{\jobname.ind}{}{%
839  \typeout{No file \jobname.ind.}%
840  \typeout{Use the following command to create it:\space\space
841  makeindex -s dtk.ist \jobname}%
842  \typeout{\space}}%

843 }

844 \fi

2.18 The Table of Contents

\tableofcontents The table of contents should appear as a page of it’s own. It should have an appropriate headline if it is long enough. Otherwise the first page has no headline and no page number.

845 \ifDTK@Author@
846 \renewcommand\tableofcontents{%
847  \typeout{*** tabelofcontents not supported in articles.}}
848 \else

849 \renewcommand\tableofcontents{%
850  \clearpage
851  \thispagestyle{empty}%
852  \markboth{\contentsname}{\contentsname}%
853  \ContentsArt
854  \begingroup
855  \parskip=\ContentsParSkip
856  \let\\=\relax
857  \@starttoc{toc}
858  \endgroup

859 }

860 \ifDTK@ancient@layout@
861 \newcommand\ContentsArt{\part@nosubtitle{\contentsname}}
862 \else
863 \newcommand\ContentsArt{%
864  \vspace*{-\headheight}\vspace*{-\headsep}\vspace*{-2pt}
865  \begin{minipage}{\textwidth}
866  \Huge Die \TeX nische Kom\"odie\\[2pt]%
867  \rule{\textwidth}{2pt}\\[2pt]%
868  \null\hfill
869  \CoverArt@small \DTKedition. Jahrgang\quad Heft \volume\quad\DTKdate
870  \end{minipage}\vspace{16pt minus 8pt}\par

871 }

872 \fi
873 \fi

The lines contained in the table of contents are determined by the counter tocdepth. The counter defines a level above which the lines are suppressed in the table of contents.

We are only interested in chapters and parts. Chapters have level 0 and parts have level -1. Thus we set tocdepth to 0.

874 \setcounter{tocdepth}{0}

The layout of the lines in the table of contents is determined by the macros \l@type. Some of them are redefined next.

\l@part This macro determines the layout of the line in the table of contents for parts. It simply imitates the layout of chapters without additional space.

875 \renewcommand\l@part[2]{%
876 \addpenalty{-\@highpenalty}%
877 \addvspace{0.5em plus 0pt}% space above part line
878 \@tempdima 1.5em
879 \begingroup
880  \parindent \z@ \rightskip \@pnumwidth
881  \parfillskip -\@pnumwidth
882  \bf
883  \leavevmode
884  \advance\leftskip\@tempdima
885  \hskip -\leftskip
886  #1\nobreak\hfil \nobreak\hbox to\@pnumwidth{\hss #2}\par
887  \penalty\@highpenalty
888 \endgroup}

\l@chapter This macro determines the layout of the line in the table of contents for chapters. It simply imitates the layout of sections.

889 \renewcommand\l@chapter{\@dottedtocline{0}{1.5em}{2.3em}}

That’s all.

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.

abovedisplayshortskip=  \subitem *+\abovedisplayshortskip+, 344, 345
abovedisplayskip=  \subitem *+\abovedisplayskip+, 342, 343

abstract=abstract (environment), 3, \underline{590}

address=  \subitem *+\address+, \usage{3}, \main{751}
addressitem=  \subitem *+\addressitem+, 825
addressname=  \subitem *+\addressname+, \main{102}, 823
AMS=  \subitem *+\AMS+, 216
AmS=  \subitem *+\AmS+, \main{213}, 217
AMSLaTeX=  \subitem *+\AMSLaTeX+, 218
AmSLaTeX=  \subitem *+\AmSLaTeX+, \main{217}
AMSTEX=  \subitem *+\AMSTEX+, \main{222, 223}
AMSTeX=  \subitem *+\AMSTeX+, 223
AmSTeX=  \subitem *+\AmSTeX+, \main{219}, 222, 223
and=  \subitem *+\and+, 586
AuthorFont=  \subitem *+\AuthorFont+, \main{125}, 570
belowdisplayshortskip=  \subitem *+\belowdisplayshortskip+, 345
belowdisplayskip=  \subitem *+\belowdisplayskip+, 343
bibliography=  \subitem *+\bibliography+, 676
bibliographystyle=  \subitem *+\bibliographystyle+, 677
bibname=  \subitem *+\bibname+, \main{96}
BIBTEX=  \subitem *+\BIBTEX+, \main{243}
BIBTeX=  \subitem *+\BIBTeX+, \main{242}
BibTeX=  \subitem *+\BibTeX+, \main{224}, 242, 243
bottomfraction=  \subitem *+\bottomfraction+, 84
box=  \subitem *+\box+, 720
captionsgerman=  \subitem *+\captionsgerman+, 90, 91
normal=  \subitem normal+, 488, 491
optional=  \subitem optional+, 488, 491, 492
star=  \subitem star+, 487, 490
chapter=  \subitem *+\chapter+, \main{482}, 823
ChapterFont=  \subitem *+\ChapterFont+, \main{105}, 499
chaptermark=  \subitem *+\chaptermark+, 639, 658
columnwidth=  \subitem *+\columnwidth+, 634
ContentsArt=  \subitem *+\ContentsArt+, 853, 861, 863
contentsname=  \subitem *+\contentsname+, \main{97}, 852, 861
ContentsParSkip=  \subitem *+\ContentsParSkip+, \main{161}, 855
barwidth=  \subitem barwidth+, 699, 722
font=  \subitem font+, 700, 726

                                      gap=  \subitem gap+, 702, 731
                                      gray=  \subitem gray+, 739, 747
                                      linewidth=  \subitem linewidth+, 698, 732
                                      small=  \subitem small+, 701, 734, 869
                                      CoverArt=  \subitem *+\CoverArt+, \usage{4}, 678, \main{681}
                                      CoverNumberFont=  \subitem *+\CoverNumberFont+, 707, 708, 736
                                      CoverTitleFont=  \subitem *+\CoverTitleFont+, 683, 684, 690, 704, 705, 711, 749
                                      CoverTitleFontII=  \subitem *+\CoverTitleFontII+, 742
                                      Dante=  \subitem *+\Dante+, \main{329}
                                      dante=  \subitem *+\dante+, \main{328}
                                      DeclareFontFamily=  \subitem *+\DeclareFontFamily+, 281
                                      DeclareFontShape=  \subitem *+\DeclareFontShape+, 282, 286, 290, 293, 297, 301
                                      DeclareOption=  \subitem *+\DeclareOption+, \main{21}
                                      DeclareRobustCommand=  \subitem *+\DeclareRobustCommand+, 230, 257, 304
                                      DeclareTextFontCommand=  \subitem *+\DeclareTextFontCommand+, 307

description=description (environ-

ment), \underline{399}

                                      descriptionlabel=  \subitem *+\descriptionlabel+, 406, 410
                                      DieTeXnischeKomoedie=  \subitem *+\DieTeXnischeKomoedie+, \usage{4}, \main{670}
                                      bibliography=  \subitem bibliography+, \main{619}, 676
                                      captionsgerman=  \subitem captionsgerman+, 90, 91, \main{93}
                                      cat=  \subitem cat+, 11, 14
                                      DeclareOption=  \subitem DeclareOption+, 21, 22
                                      file=  \subitem file+, 17--19, 40
                                      fnleftmargin=  \subitem fnleftmargin+, 622, 628
                                      fnrightmargin=  \subitem fnrightmargin+, 621
                                      footnotesize=  \subitem footnotesize+, 363, 365
                                      math=  \subitem math+, \main{341}, 350, 355, 361, 366
                                      normalsize=  \subitem normalsize+, 352, 354
                                      small=  \subitem small+, 358, 360
                                      DTK=  \subitem *+\DTK+, \main{330}
                                      DTKdate=  \subitem *+\DTKdate+, 675, 869
                                      DTKedition=  \subitem *+\DTKedition+, 674, 869
                                      DTKgerman=  \subitem *+\DTKgerman+, 58, \main{89}, 100
                                      label=  \subitem label+, 597, 598, 600, 601
                                      emph=  \subitem *+\emph+, 26

environments:¿abstract,  3,  \underline{26}

environments:¿description, \underline{20} environments:¿example, \underline{21} environments:¿quotation, \underline{20} environments:¿roll, \underline{20} environments:¿theaddresses, \underline{33}

eV=  \subitem *+\eV+, \main{323}, 328, 329, 688, 730
evensidemargin=  \subitem *+\evensidemargin+, 67

example=example (environment), \underline{429}

size=  \subitem size+, 191--202, 235, 260
fam=  \subitem *+\fam+, 170
filedate=  \subitem *+\filedate+, 41
FirstArticlefalse=  \subitem *+\FirstArticlefalse+, 551
FirstArticletrue=  \subitem *+\FirstArticletrue+, 439, 447, 497, 544
font=  \subitem *+\font+, 271, 274, 276, 278, 565, 566
fontdimen=  \subitem *+\fontdimen+, 276, 278, 565, 566
fontencoding=  \subitem *+\fontencoding+, 306
fontfamily=  \subitem *+\fontfamily+, 306
fontshape=  \subitem *+\fontshape+, 35, 138, 143
fontsize=  \subitem *+\fontsize+, 192--202, 206, 207, 236, 261
FootFont=  \subitem *+\FootFont+, \main{140}, 652, 655, 665, 668
footmark=  \subitem *+\footmark+, \main{104}, 652, 655, 665, 668
footnote=  \subitem *+\footnote+, \usage{4}
footnoterule=  \subitem *+\footnoterule+, 632
footnotesize=  \subitem *+\footnotesize+, 141, 143, 174, 177, \main{363}, 701
FootRuleDepth=  \subitem *+\FootRuleDepth+, \main{156}, 651, 654, 664, 667
gobble=  \subitem *+\gobble+, 24
HeadFont=  \subitem *+\HeadFont+, \main{135}, 644, 648
HeadRuleDepth=  \subitem *+\HeadRuleDepth+, \main{151}, 645, 649
Huge=  \subitem *+\Huge+, 182, 866
ifcase=  \subitem *+\ifcase+, 183
ifFirstArticle=  \subitem *+\ifFirstArticle+, 438, 550
ifOldLaTeX=  \subitem *+\ifOldLaTeX+, 1, 9, 162, 224, 253, 269
InputIfFileExists=  \subitem *+\InputIfFileExists+, \main{16}, 620, 838
item=  \subitem *+\item+, 416, 629
chapter=  \subitem chapter+, \main{889}
part=  \subitem part+, \main{875}
Prefix=  \subitem Prefix+, 601, 606--608
Label=  \subitem *+\Label+, \usage{4}, 604, 607, 823
label=  \subitem *+\label+, 604, \main{607}
labelitemi=  \subitem *+\labelitemi+, 391
labelitemii=  \subitem *+\labelitemii+, 392
labelitemiii=  \subitem *+\labelitemiii+, 393
LAMSTeX=  \subitem *+\LAMSTeX+, \main{244}, 248, 249
LAmSTeX=  \subitem *+\LAmSTeX+, \main{249}
LamSTeX=  \subitem *+\LamSTeX+, \main{248}
LATEX=  \subitem *+\LATEX+, \main{252, 253}
LaTeX=  \subitem *+\LaTeX+, \main{250}
LaTeXe=  \subitem *+\LaTeXe+, \main{331}, 782
LaTeXTeX=  \subitem *+\LaTeXTeX+, 254, 257
leftmargin=  \subitem *+\leftmargin+, 369, 375, 382, 402, 415, 424, 613, 614,628
leftmargini=  \subitem *+\leftmargini+, 369, 394
leftmarginii=  \subitem *+\leftmarginii+, 375, 376, 395

leftmarginiii=  \subitem *+\leftmarginiii+, 382, 383, 396
leftmarginiv=  \subitem *+\leftmarginiv+, 397
listofaddresses=  \subitem *+\listofaddresses+, \main{833}
llap=  \subitem *+\llap+, 629
LoadClass=  \subitem *+\LoadClass+, \main{15}
smaller=  \subitem smaller+, 190, 209, 227
logofamily=  \subitem *+\logofamily+, 304, 305, 307
ly=  \subitem *+\ly+, 184
makebox=  \subitem *+\makebox+, 738, 742
MakeIndex=  \subitem *+\MakeIndex+, \main{322}
makelabel=  \subitem *+\makelabel+, 406, 426
maketitle=  \subitem *+\maketitle+, \main{536}
manfnt=  \subitem *+\manfnt+, 270, 271, 276--279
manfntsl=  \subitem *+\manfntsl+, 273, 274, 276, 278
fontsfalse=  \subitem fontsfalse+, 237, 262
mathsurround=  \subitem *+\mathsurround+, 320
mbox=  \subitem *+\mbox+, 320, 629
METAFONT=  \subitem *+\METAFONT+, \main{311}
METAPOST=  \subitem *+\METAPOST+, \main{312}
MF=  \subitem *+\MF+, \main{269}, 311
mit=  \subitem *+\mit+, 183
mkern=  \subitem *+\mkern+, 321
MP=  \subitem *+\MP+, 278, 309, 312
NewpageThreshold=  \subitem *+\NewpageThreshold+, \main{150}, 542
NFSS=  \subitem *+\NFSS+, \main{340}
normalsize=  \subitem *+\normalsize+, \main{352}
NTS=  \subitem *+\NTS+, \main{320}
numberline=  \subitem *+\numberline+, 431
oddsidemargin=  \subitem *+\oddsidemargin+, 66, 67
OldLaTeXfalse=  \subitem *+\OldLaTeXfalse+, 2
OldLaTeXtrue=  \subitem *+\OldLaTeXtrue+, 2
OptionNotUsed=  \subitem *+\OptionNotUsed+, \main{24}
or=  \subitem *+\or+, 183, 184
=  \subitem +, 633, 635
PagenoFont=  \subitem *+\PagenoFont+, \main{145}, 644, 648
Pageref=  \subitem *+\Pageref+, \usage{4}, 605, 608
pageref=  \subitem *+\pageref+, 605, \main{608}
pagetotal=  \subitem *+\pagetotal+, 541
paragraph=  \subitem *+\paragraph+, \main{522}
normal=  \subitem normal+, 453, \main{458}
nosubtitle=  \subitem nosubtitle+, 457, 461, \main{463}, 861
optional=  \subitem optional+, 453, \main{454}
star=  \subitem star+, 449, \main{451}
subtitle=  \subitem subtitle+, 457, 461, \main{462}
part=  \subitem *+\part+, \main{440}
pBibTeX=  \subitem *+\pBibTeX+, 225, 226
PiC=  \subitem *+\PiC+, \main{335}, 336
PiCTeX=  \subitem *+\PiCTeX+, \main{336}
ProcessOptions=  \subitem *+\ProcessOptions+, \main{23}
protect=  \subitem *+\protect+, 209, 225, 431
ProvidesClass=  \subitem *+\ProvidesClass+, \main{25}

providescommand=  \subitem *+\providescommand+, 38
part=  \subitem part+, 656
plain=  \subitem plain+, 637
PS=  \subitem *+\PS+, \main{334}

quotation=quotation (environment), \underline{413}

ll=  \subitem ll+, 420, 422
raggedleft=  \subitem *+\raggedleft+, 700
raggedright=  \subitem *+\raggedright+, 477, 563, 723
raisebox=  \subitem *+\raisebox+, 749
Ref=  \subitem *+\Ref+, \usage{4}, 603, 606
ref=  \subitem *+\ref+, 603, \main{606}
refname=  \subitem *+\refname+, \main{95}, 610
RequirePackage=  \subitem *+\RequirePackage+, \main{10}
rightmargin=  \subitem *+\rightmargin+, 415, 626
rightmark=  \subitem *+\rightmark+, 644

roll=roll  (environment),  \underline{419}

rolllabel=  \subitem *+\rolllabel+, 426, 428
scriptfont=  \subitem *+\scriptfont+, 245
scriptsize=  \subitem *+\scriptsize+, 173, 175, 176
section=  \subitem *+\section+, \main{501}, 610
SectionFont=  \subitem *+\SectionFont+, \main{110}, 503, 506
sectionmark=  \subitem *+\sectionmark+, 640, 659
selectfont=  \subitem *+\selectfont+, 36, 138, 143, 203, 237, 262, 306
setbox=  \subitem *+\setbox+, 711
setlength=  \subitem *+\setlength+, 394--397
size=  \subitem size+, 236, 261
size=  \subitem *+\size+, 206, 207
SLITEX=  \subitem *+\SLITEX+, \main{313}, 317--319
SLITeX=  \subitem *+\SLITeX+, \main{319}
SLiTeX=  \subitem *+\SLiTeX+, \main{317}
SliTeX=  \subitem *+\SliTeX+, \main{318}
small=  \subitem *+\small+, \main{358}
spacefactor=  \subitem *+\spacefactor+, 212, 277, 279
spaceskip=  \subitem *+\spaceskip+, 565
special=  \subitem *+\special+, 718, 721, 739, 741
=  \subitem +, 792, 797, 807, 809, 811
CHAR=  \subitem CHAR+, 799, 801, 803, 806, 808, 810
end=  \subitem end+, 796, 801
grp=  \subitem grp+, 795, 803
I=  \subitem I+, 797, 798, 804, 805
II=  \subitem II+, 799, 800
next=  \subitem next+, 798, 802, 805, 813

                                      subparagraph=  \subitem *+\subparagraph+, \main{529}
                                      subsection=  \subitem *+\subsection+, \main{508}
                                      SubsectionFont=  \subitem *+\SubsectionFont+, \main{115}, 510, 513
                                      subsectionmark=  \subitem *+\subsectionmark+, 641, 660
                                      subsubsection=  \subitem *+\subsubsection+, \main{515}
                                      SubsubsectionFont=  \subitem *+\SubsubsectionFont+, \main{120}, 517, 520, 524, 527, 531,534
                                      tableofcontents=  \subitem *+\tableofcontents+, \main{845}
                                      tenex=  \subitem *+\tenex+, 183
                                      TeX=  \subitem *+\TeX+, \main{211}
                                      textbf=  \subitem *+\textbf+, 27, 428
                                      textfont=  \subitem *+\textfont+, 246, 247
                                      textfraction=  \subitem *+\textfraction+, 85
                                      textheight=  \subitem *+\textheight+, 64, 711, 722, 735
                                      textit=  \subitem *+\textit+, 32, 322
                                      textlogo=  \subitem *+\textlogo+, 307--309
                                      textrm=  \subitem *+\textrm+, 28
                                      textsc=  \subitem *+\textsc+, 29
                                      textsf=  \subitem *+\textsf+, 30, 340
                                      textsl=  \subitem *+\textsl+, 31, 338, 339
                                      texttt=  \subitem *+\texttt+, 33
                                      textwidth=  \subitem *+\textwidth+, 65, 468, 470, 476, 478, 549, 555, 562, 642,646,

652, 655, 665, 668, 689, 693, 723, 725, 731, 865, 867

                                      thanks=  \subitem *+\thanks+, 574

theaddresses=theaddresses (envi-

ronment), \underline{821}

                                      thebibliography=  \subitem *+\thebibliography+, \main{609}
                                      theequation=  \subitem *+\theequation+, 596
                                      thefigure=  \subitem *+\thefigure+, 594
                                      thetable=  \subitem *+\thetable+, 595
                                      tiny=  \subitem *+\tiny+, 172--174
                                      TitleFont=  \subitem *+\TitleFont+, \main{130}, 564
                                      TopArt=  \subitem *+\TopArt+, 462, 463, \main{464}
                                      TopArtRule=  \subitem *+\TopArtRule+, 474, 478
                                      topfraction=  \subitem *+\topfraction+, 83
                                      triangleright=  \subitem *+\triangleright+, 392
                                      TTN=  \subitem *+\TTN+, \main{339}
                                      TUG=  \subitem *+\TUG+, \main{337}
                                      TUGboat=  \subitem *+\TUGboat+, \main{338}
                                      volume=  \subitem *+\volume+, 97, \main{103}, 104, 673, 869
                                      xspaceskip=  \subitem *+\xspaceskip+, 566