%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% $Id: dtk.dtx,v 0.24 1996/05/10 18:26:58 gerd Exp gerd $ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \def\DTK@RCS$#1: #2 #3${#2} \def\filename{dtk.dtx} \xdef\fileversion{\DTK@RCS$Revision: 0.24 $} \xdef\filedate{\DTK@RCS$Date: 1996/05/10 18:26:58 $} \let\docversion=\fileversion \let\docdate=\filedate %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %\iffalse \typeout{% %% Purpose: A LaTeX Class/Style for ``Die TeXnische Komoedie''. Version \fileversion }% %% %% Documentation: %% The documentation can be generated from the original file %% dtk.dtx with the doc style/package. LaTeX the file dtk.tex to %% get the full documentation in {\sc dvi} format. %% %% %% Author: Gerd Neugebauer %% Mainzer Str. 8 %% 56321 Rhens %% Mail: gerd@informatik.uni-koblenz.de %% %% Copyright (C) 1995-1996 Gerd Neugebauer %% %% dtk.dtx is distributed in the hope that it will be useful, but %% WITHOUT ANY WARRANTY. No author or distributor accepts %% responsibility to anyone for the consequences of using it or for %% whether it serves any particular purpose or works at all, unless %% he says so in writing. %% %% Everyone is granted permission to copy, modify and redistribute %% dtk.dtx, provided this copyright notice is preserved and any %% modifications are indicated. %% %% %% This style is still under development and may be replaced with a %% new version which provides an enhanced functionality. %% %\fi % % \title{A \LaTeX\ Class and Style for\\``Die \TeX{}nische % Kom{\"o}die''\thanks{This file documents \filename\ version % \fileversion\ as of \filedate.}} % \author{Gerd Neugebauer\\ % Mainzer Str.\ 8\\ % 56321 Rhens (Germany)\\ % Net: gerd@informatik.uni-koblenz.de} % % \date{{\footnotesize Documentation date: \docdate}} % % \maketitle % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % \changes{1.0}{not yet}{First public release.} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % \DoNotIndex{\ ,\",\',\.,\[,\\,\],\^,\`,\~,\@,\@dottedtocline} % \DoNotIndex{\@gobble,\@gobbletwo,\@highpenalty,\@ifnextchar,\@ifstar} % \DoNotIndex{\@ifundefined,\@namedef\@pnumwidth,\@startsection,\@starttoc} % \DoNotIndex{\@tempdima,\@thefnmark,\@undefined,\AA,\AE} % \DoNotIndex{\CurrentOption,\DeclareOption,\H,\L,\LARGE,\LaTeX,\Large} % \DoNotIndex{\LoadClass,\O,\OE,\OptionNotUsed,\PassOptionsToClass} % \DoNotIndex{\ProcessOptions,\ProvidesClass,\RequirePackage,\TeX} % \DoNotIndex{\aa,\addcontentsline,\addpenalty,\advance,\addvspace,\ae,\arabic} % \DoNotIndex{\b,\baselineskip,\begin,\begingroup,\bf,\bgroup,\egroup} % \DoNotIndex{\bigskip,\c,\cal,\catcode,\chardef,\circ,\clearpage,\closein,\closeout} % \DoNotIndex{\clubpenalty,\csname,\d,\def,\dimen,\diamond,\divide,\documentclass,\dp} % \DoNotIndex{\else,\em,\empty,\end,\endcsname,\endgroup,\endinput,\endlist} % \DoNotIndex{\expandafter,\fbox,\fi,\footskip,\framebox,\frenchspacing} % \DoNotIndex{\futurelet,\gdef,\global,\hangafter,\hangindent,\hbox,\headheight,\headsep,\hfil} % \DoNotIndex{\hfill,\hrule,\hskip,\hspace,\hss,\ht,\huge,\ifcat,\ifeof,\ifdim} % \DoNotIndex{\ifx,\ignorespaces,\immediate,\index,\input,\it} % \DoNotIndex{\itemindent,\itemsep,\jobname,\kern,\l,\labelsep,\labelwidth} % \DoNotIndex{\large,\leavevmode,\leftmark,\leftskip,\let,\list} % \DoNotIndex{\long,\lower,\m@th,\magstep,\makeindex,\markboth,\medskip,\newblock} % \DoNotIndex{\newcommand,\newcount,\newenvironment,\newfont,\newif,\newpage,\newread} % \DoNotIndex{\newwrite,\nobreak,\noindent,\normalsize,\null,\o,\oe} % \DoNotIndex{\openin,\openout,\pagestyle,\par,\paragraph,\parbox} % \DoNotIndex{\parfillskip,\parindent,\parsep,\parskip,\partopsep} % \DoNotIndex{\penalty,\quad,\raggedbottom,\raise,\relax,\renewcommand,\renewenvironment} % \DoNotIndex{\rightskip,\rm,\rule,\sbox,\sc,\setcounter,\settowidth,\sf,\sfcode} % \DoNotIndex{\sl,\sloppy,\small,\space,\ss,\string,\t,\tableofcontents} % \DoNotIndex{\textstyle,\the,\thepage,\thispagestyle,\topmargin,\topsep} % \DoNotIndex{\tt,\typeout,\u,\unitlength,\usecounter,\v,\varepsilon,\vbox} % \DoNotIndex{\vfill,\vsize,\vskip,\vspace,\vss,\wd,\widowpenalty,\write,\xdef,\z@} % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % \CheckSum{947} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % \begin{abstract} % % dtk.dtx provides a class and style file for typesetting ``Die % \TeX\-nische Ko\-m\"o\-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 \LaTeX\,2.09 and \LaTeXe. Thus it can be used by all % persons which are familiar with any flavor of \LaTeX. % % The features of \LaTeXe\ are provided in the \LaTeX\,2.09 mode only % to a certain extend. Thus it might not be possible to typeset an % article prepared for \LaTeXe\ with \LaTeX\,2.09. % % On the other side it is possible to process an article prepared % for \LaTeX\,2.09 with \LaTeXe{} (in native mode). This is justified % since \LaTeXe{} is the standard nowadays and \LaTeX\,2.09 should % cease to exists in the next decade. % \end{abstract} % % \newpage % \tableofcontents % \newpage % % \section{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. % % % \subsection{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: % % \DescribeMacro{\address} % This macro is used to put the address of an author into the list of % authors. It should be given before the \verb|\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 \verb|\\|. Missing arguments should % be filled with \verb|\null|. % % Several invocations of \verb|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. % % \DescribeEnv{abstract} % Each article should have be started with a short paragraph describing % what this article is about. This paragraph is called abstract. The % environment \verb|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 \verb|\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. % % \begin{tabular}{ll} % {\tt\char'134LaTeX} &\LaTeX \\ % {\tt\char'134LaTeXe} &\LaTeXe \\ % {\tt\char'134LaTeXTeX} % &(\kern-.15emL\kern-.36em\raise.3ex\hbox{\sc % a}\kern-.3em)\kern-.15em\TeX \\ % {\tt\char'134BibTeX} &\BibTeX \\ % {\tt\char'134MF} &\MF \\ % {\tt\char'134METAFONT} &\MF \\ % {\tt\char'134AmS} &\AmS \\ % {\tt\char'134AmSTeX} &\AmSTeX \\ % {\tt\char'134LAmSTeX} &\LAmSTeX \\ % {\tt\char'134PicTeX} & % P\kern-.12em\lower.5ex\hbox{I}\kern-.075emC\kern-.11em\TeX\\ % {\tt\char'134eV} &e.\kern-.18emV\kern-.18em. \\ % {\tt\char'134dante} &DANTE e.\kern-.18emV\kern-.18em. \\ % {\tt\char'134Dante} &DANTE, Deutschsprachige Anwendervereinigung % \TeX~e.\kern-.18emV\kern-.18em. \\ % {\tt\char'134DTK} &Die \TeX{}nische Ko\-m{\"o}\-die \\ % {\tt\char'134TUG} &\TeX{} Users Group \\ % {\tt\char'134NFSS} &{\sf NFSS} \\ % {\tt\char'134PS} &{\rm PostScript} % \end{tabular} % % % \DescribeMacro{\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). % % % \subsection{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. % % \DescribeMacro{\DieTeXnischeKomoedie} % The macro \verb|\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. % % \DescribeMacro{\CoverArt} % The macro \verb|\DieTeXnischeKomoedie| calls the macro \verb|\CoverArt| % to typeset the cover page. \verb|\CoverArt| gets the same three arguments % as the calling macro \verb|\DieTeXnischeKomoedie|. This macro is % responsible to fill the first page adequately. This maro might be % redefined to alter the layout of the journal. % % \DescribeMacro{\Label} % The macro \verb|\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 \verb|\Label| sets such a global label. % % \DescribeMacro{\Ref} % The macro \verb|\ref| has been redefined to be local for each % article. The macro \verb|\Ref| references a global label set with % \verb|Label|. % % \DescribeMacro{\Pageref} % The macro \verb|\pageref| has been redefined to be local for each % article. The macro \verb|\Pageref| references a global label set with % \verb|Label|. % % % % \vfill\noindent\hrulefill % % {\em To be completed} % % \noindent\hrulefill\vfill\null % % \StopEventually{} % \newpage % \if@undefined\environment % \newenvironment{environment}[1]{}{} % \fi % % % \section{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 \TeX % nische Kom\"odie''. % % % % % \subsection{Basic Definitions} % % First we have to determine which kind of \LaTeX{} is running. We use % the existence of the macro \verb|\documentclass| to see if we have a % \LaTeXe. This macro should not be defined in \LaTeX\,2.09. % % \begin{macrocode} \newif\ifOldLaTeX \@ifundefined{documentclass}{\OldLaTeXtrue}{\OldLaTeXfalse} % \end{macrocode} % % 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 % \verb|full| to the documentclass/style command. % % \begin{macrocode} \newif\ifDTK@Author@ \DTK@Author@true % \end{macrocode} % % The boolean \verb|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. % % \begin{macrocode} \newif\ifDTK@german@ \DTK@german@true % \end{macrocode} % % The boolean \verb|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. % % \begin{macrocode} \newif\ifDTK@ancient@layout@ \DTK@ancient@layout@false % \end{macrocode} % % % % \subsection{Compatibility Definitions} % % Since we want to use this style with \LaTeX\,2.09 and \LaTeXe{} we have % to define a common interface. For this purpose we use a subset of % the style writers interface already defined for \LaTeXe{} style % writers. Since some macros are not defined in \LaTeX\,2.09 we % implement them --- at least to the degree needed here. % % \begin{macrocode} \ifOldLaTeX % \end{macrocode} % % \begin{macro}{\RequirePackage} % The macro \verb|RequirePackage| simply tries to load the appropriate % style file. The category code of \verb|@| is changed temporarily. % The old value is is saved in \verb|\DTK@cat| and restored at the end. % % Optional arguments are not supported, yet. % % \begin{macrocode} \newcommand\RequirePackage[1]{ \chardef\DTK@cat=\the\catcode`\@ \catcode`\@=11 \input{#1.sty}% \catcode`\@=\DTK@cat} % \end{macrocode} % \end{macro} % % \begin{macro}{\LoadClass} % The concept of class and package files has not been so different in % \LaTeX\,2.09. Thus the same that has been said for \verb|\RequirePackage| % holds also for the macro \verb|\LoadClass|. Thus we just make it a % synonym. % % \begin{macrocode} \let\LoadClass=\RequirePackage % \end{macrocode} % \end{macro} % % \begin{macro}{\InputIfFileExists} % Now things get a little bit more complicated. To implement the % macro \verb|\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. % % \begin{macrocode} \newcommand\InputIfFileExists[3]{% \openin\DTK@file #1 \ifeof\DTK@file\closein\DTK@file #3% \else\closein\DTK@file #2\input{#1}% \fi} % \end{macrocode} % \end{macro} % % \begin{macro}{\DeclareOption} % The options in \LaTeX\,2.09 are defined as special named % macros. This is emulated here. The star variant is simply mapped % to do nothing. % \begin{macrocode} \newcommand\DeclareOption{\@ifstar{\@gobble}{\DTK@DeclareOption}} \newcommand\DTK@DeclareOption[2]{\@namedef{ds@#1}{#2}} % \end{macrocode} % \end{macro} % % \begin{macro}{\ProcessOptions} % In \LaTeX\,2.09 the options are processed automatically. Thus % this macro is simply a noop. % \begin{macrocode} \let\ProcessOptions=\relax % \end{macrocode} % \end{macro} % % \begin{macro}{\OptionNotUsed} % This feature is not present in \LaTeX\,2.09. Thus the argument is % silently absorbed and the macro is simply a noop. % \begin{macrocode} \let\OptionNotUsed=\gobble % \end{macrocode} % \end{macro} % % \begin{macro}{\ProvidesClass} % This declaration is used to type out the version information. % \begin{macrocode} \def\ProvidesClass#1[#2]{\typeout{Document Style #1 #2}} % \end{macrocode} % \end{macro} % % Just for fun we define some font switching commands. In fact the % behaviour in \LaTeXe{} is more complex. But I think these % definitions are enough to avoid errors. % \begin{macrocode} \newcommand\emph[1]{{\em #1}} \newcommand\textbf[1]{{\bf #1}} \newcommand\textrm[1]{{\rm #1}} \newcommand\textsc[1]{{\sc #1}} \newcommand\textsf[1]{{\sf #1}} \newcommand\textsl[1]{{\sl #1}} \newcommand\texttt[1]{{\tt #1}} \@ifundefined{fontshape}{\let\fontshape=\@gobble}{} \@ifundefined{selectfont}{\let\selectfont=\relax}{} \newcommand\providescommand[2]{\ifx#1\@undefined\newcommand#1{#2}\fi} % \end{macrocode} % % \begin{macrocode} \fi % \end{macrocode} % % We need a new handle to read files. This handle will be used to % implement \verb|\InputIfFileExists|. Since \verb|\newread| is % declared \verb|\outer| we have to allocate the new handle here. It is % just used in the \LaTeX\,2.09 mode. % % \begin{macrocode} \newread\DTK@file % \end{macrocode} % % Now we can continue without considering the \LaTeX{} 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. % % % % \subsection{Initializations} % % % Now we can start to define the class. The version date is taken % from the macro \verb|\filedate|. This macro is defined at the % beginning of this file. The value is changed by the version % control system rcs. % \begin{macrocode} \ProvidesClass{dtk}[\filedate\space gene] % \end{macrocode} % % The options to switch to other point sizes are disabled. Nobody % is supposed to use this class with another than the single design % size. % \begin{macrocode} \DeclareOption{10pt}{\OptionNotUsed} \DeclareOption{11pt}{\OptionNotUsed} \DeclareOption{12pt}{\OptionNotUsed} % \end{macrocode} % % 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. % \begin{macrocode} \DeclareOption{twoside}{\OptionNotUsed} \DeclareOption{oneside}{\OptionNotUsed} % \end{macrocode} % % 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. % \begin{macrocode} \DeclareOption{full}{\DTK@Author@false} % \end{macrocode} % % The package option \verb|omitgerman| can be used to omit the % loading of \verb|german.sty|. This migth be necessary if packages % are required which have to be loaded before \verb|german|. % \begin{macrocode} \DeclareOption{omitgerman}{\DTK@german@false} % \end{macrocode} % % In 1996 the layout of ``Die TeXnische Komoedie'' has been % changed. The option \verb|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. % \begin{macrocode} \DeclareOption{ancient}{\DTK@ancient@layout@true} % \end{macrocode} % % The remaining options are handed down to the base class \verb|book|. % This works for \LaTeXe{} and is a noop for \LaTeX\,2.09. % \begin{macrocode} \DeclareOption*{\PassOptionsToClass{\CurrentOption}{book}} % \end{macrocode} % % Now we can process all options. Again this works for \LaTeXe{} % and is a noop for \LaTeX\,2.09 since the options are % automatically processed there. % \begin{macrocode} \ProcessOptions % \end{macrocode} % % \subsection{Loading the Used Packages/Styles} % % This class is a variation of the \verb|book| class. Thus % we load the base class. This loading is done with the macro from % the interface definition or the built-in \LaTeXe{} primitive. % \begin{macrocode} \LoadClass{book} % \end{macrocode} % % The package ``{\tt 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 \verb|\DTKgerman| after the style german % has been loaded. % \begin{macrocode} \ifDTK@german@ \RequirePackage{german} \else \typeout{*** Warning: Loading of german has been omitted. You have to load it manually.} \typeout{*** Don't forget to use the macro \string\DTKgerman\space afterwards.} \fi % \end{macrocode} % % The package ``{\tt multicol}'' is used in the full version. Thus % we only load it if the option \verb|full| has been given. % \begin{macrocode} \ifDTK@Author@\else \RequirePackage{multicol} \fi % \end{macrocode} % % \subsection{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. % \begin{macrocode} \textheight = 484pt \textwidth = 342pt % \end{macrocode} % % 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. % \begin{macrocode} \oddsidemargin = 0pt \evensidemargin = \oddsidemargin \topmargin = 0pt % \end{macrocode} % % 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. % \begin{macrocode} \ifDTK@ancient@layout@ \headheight = 14pt \headsep = 12pt \else \headheight = 17pt \headsep = 17pt \fi % \end{macrocode} % % The foot line needs some space. The same remarks given above % apply here too. % \begin{macrocode} \ifDTK@ancient@layout@ \footskip = 21pt \else \footskip = 24pt \fi % \end{macrocode} % % 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) % \begin{macrocode} \parskip = 0.5\baselineskip \advance\parskip by 0pt plus 2pt \parindent = 0pt % \end{macrocode} % % 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. % \begin{macrocode} \renewcommand\topfraction{.9} \renewcommand\bottomfraction{.9} \renewcommand\textfraction{.1} % \end{macrocode} % % 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. % \begin{macrocode} \raggedbottom % \end{macrocode} % % To avoid a bad layout we adjust some parameters. Thus we try to % avoid widows and clubs. % \begin{macrocode} \clubpenalty = 10000 \widowpenalty = 10000 % \end{macrocode} % % \begin{macro}{\DTKgerman} % We will change some of the captions names used within \LaTeX{}. To avoid % that the package ``{\tt german}'' undoes our efforts we anchor the % changes in the \verb|\captionsgerman| macro. To do so we have to save the % old meaning in an internal name. % \begin{macrocode} \newcommand\DTKgerman{ \let\DTK@captionsgerman=\captionsgerman \let\captionsgerman=\DTK@captionsgerman } % \end{macrocode} % \end{macro} % % \begin{macro}{\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. % \begin{macrocode} \newcommand\DTK@captionsgerman{ \DTK@captionsgerman % \end{macrocode} % % \begin{macro}{\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 \LaTeX{} used is not too % ancient. Otherwise this will not work properly. % \begin{macrocode} \gdef\refname{Literatur}% % \end{macrocode} % \end{macro} % % \begin{macro}{\bibname} % Ok. And now the same trick for the title of the bibliography. % \begin{macrocode} \gdef\bibname{Literatur}% % \end{macrocode} % \end{macro} % % \begin{macro}{\contentsname} % The headline for the table of contents is defined appropriately. % \verb|\volume| contains the number of the current volume. This % number is set by the macro producing the front page. % \begin{macrocode} \gdef\contentsname{Inhalt Heft \volume}% % \end{macrocode} % \end{macro} % % Now we are done. We just have to make sure that the new values % are activated by calling the new captions macros. % % \begin{macrocode} } % \end{macrocode} % \end{macro} % % If the option german has been loaded automatically then we have % to modify the captions at once. Otherwise the user is responsible % to call \verb|\DTKgerman| after the package german has been loaded. % \begin{macrocode} \ifDTK@german@ \DTKgerman \fi % \end{macrocode} % % \begin{macro}{\addressname} % The heading for the list of authors is defined in this macro. % \begin{macrocode} \newcommand\addressname{Autoren/Organisatoren} % \end{macrocode} % \end{macro} % % \begin{macro}{\volume} % The number of the current volume is stored in this macro. The % value is automatically set with the macro % \verb|\DieTeXnischeKomoedie|. Since this macro is usually only % used in the full version we provide a reasonable default. % \begin{macrocode} \newcommand\volume{?/?? --- Entwurf} % \end{macrocode} % \end{macro} % % \begin{macro}{\footmark} % This macro contains the text of the running foot. % \begin{macrocode} \newcommand\footmark{Die \TeX nische Kom{\"o}die \volume} % \end{macrocode} % \end{macro} % % \begin{macro}{\ChapterFont} % This macro contains the font changing command issued before % typesetting a chapter title. % \begin{macrocode} \ifDTK@ancient@layout@ \newcommand\ChapterFont{\Large\bf} \else \newcommand\ChapterFont{\Large\sf} \fi % \end{macrocode} % \end{macro} % % \begin{macro}{\SectionFont} % This macro contains the font changing command issued before % typesetting the section heading. % \begin{macrocode} \ifDTK@ancient@layout@ \newcommand\SectionFont{\normalsize\bf} \else \newcommand\SectionFont{\large\sf} \fi % \end{macrocode} % \end{macro} % % \begin{macro}{\SubsectionFont} % This macro contains the font changing command issued before % typesetting the subsection heading. % \begin{macrocode} \ifDTK@ancient@layout@ \newcommand\SubsectionFont{\normalsize\it} \else \newcommand\SubsectionFont{\normalsize\sf} \fi % \end{macrocode} % \end{macro} % % \begin{macro}{\SubsubsectionFont} % This macro contains the font changing command issued before % typesetting the subsubsection heading and below. % \begin{macrocode} \ifDTK@ancient@layout@ \newcommand\SubsubsectionFont{\normalsize\it} \else \newcommand\SubsubsectionFont{\normalsize\sf} \fi % \end{macrocode} % \end{macro} % % \begin{macro}{\AuthorFont} % This macro contains the font changing command issued before % typeseting the author of an article. % \begin{macrocode} \ifDTK@ancient@layout@ \newcommand\AuthorFont{\normalsize\rm} \else \newcommand\AuthorFont{\large\sf} \fi % \end{macrocode} % \end{macro} % % \begin{macro}{\TitleFont} % This macro contains the font changing command issued before % typeseting the title of an article. % \begin{macrocode} \ifDTK@ancient@layout@ \newcommand\TitleFont{\large\bf} \else \newcommand\TitleFont{\Large\sf} \fi % \end{macrocode} % \end{macro} % % \begin{macro}{\HeadFont} % This macro contains the font changing command issued before % typeseting the running head line. % \begin{macrocode} \ifDTK@ancient@layout@ \newcommand\HeadFont{\sl} \else \newcommand\HeadFont{\sf\fontshape{sl}\selectfont} \fi % \end{macrocode} % \end{macro} % % \begin{macro}{\FootFont} % This macro contains the font changing command issued before % typeseting the running foot line. % \begin{macrocode} \ifDTK@ancient@layout@ \newcommand\FootFont{\footnotesize\sl} \else \newcommand\FootFont{\footnotesize\sf\fontshape{sl}\selectfont} \fi % \end{macrocode} % \end{macro} % % \begin{macro}{\PagenoFont} % This macro contains the font changing command issued before % typeseting the page number. % \begin{macrocode} \ifDTK@ancient@layout@ \newcommand\PagenoFont{\rm} \else \newcommand\PagenoFont{\sf} \fi % \end{macrocode} % \end{macro} % % \begin{macro}{\NewpageThreshold} % The macro \verb|\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. % \begin{macrocode} \newcommand\NewpageThreshold{100pt} % \end{macrocode} % \end{macro} % % \begin{macro}{\HeadRuleDepth} % This macro contains the depth of the line between the running % head and the main body of text. % \begin{macrocode} \ifDTK@ancient@layout@ \newcommand\HeadRuleDepth{0.1pt} \else \newcommand\HeadRuleDepth{0pt} \fi % \end{macrocode} % \end{macro} % % \begin{macro}{\FootRuleDepth} % This macro contains the depth of the line between the running % foot and the main body of text. % \begin{macrocode} \ifDTK@ancient@layout@ \newcommand\FootRuleDepth{0.1pt} \else \newcommand\FootRuleDepth{0pt} \fi % \end{macrocode} % \end{macro} % % \begin{macro}{\ContentsParSkip} % This macro contains the parskip used for the table of contents. % \begin{macrocode} \newcommand\ContentsParSkip{1pt} % \end{macrocode} % \end{macro} % % % \subsection{Useful Macros} % % This section contains some useful abbreviations. They are mainly % some kind of logos. % % % \subsubsection{Macros from texnames.sty} % % The following macros are taken from the file {\tt texnames.sty} % version \verb|1.09| from \verb|<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. % % \begin{macro}{\TeX} % Only change from plain.tex is the \verb|\spacefactor| assignment % (suggested by Phil Taylor), so that \TeX\ at the end of a % sentence isn't treated as an abbreviation. % % \begin{macrocode} \renewcommand\TeX{T\kern-.1667em\lower.5ex\hbox{E}\kern-.125emX% \spacefactor1000 } % \end{macrocode} % \end{macro} % % \begin{macro}{\AmS} % From the AMS tex/ams/amslatex/fontsel/nfssinst.tex file: % \begin{macrocode} \@ifundefined{AmS}{% \def\AmS{\(\cal A\)\kern-.1667em\lower.5ex\hbox {\(\cal M\)}\kern-.125em{\(\cal S\)}}}{} \@ifundefined{AMS}{\let\AMS=\AmS}{} % \end{macrocode} % \end{macro} % % \begin{macro}{\AmSLaTeX} % \begin{macrocode} \@ifundefined{AmSLaTeX}{\def\AmSLaTeX{\AmS-\LaTeX}}{} \@ifundefined{AMSLaTeX}{\let\AMSLaTeX=\AmSLaTeX}{} % \end{macrocode} % \end{macro} % % \begin{macro}{\AmSTeX} % Mike Spivak's amstex/amstex.tex 1.1d [26-Aug-1988] has\\ % \verb|\def\AmSTeX{{\textfontii A}\kern-.1667em\lower.5ex\hbox|\\ % \verb| {\textfontii M}\kern-.125em{\textfontii S}-\TeX}|\\ % and 2.1 [05-Apr-1991] has an equivalent definition. % AmSTeX's \verb|\textfontii| is exactly the same as \verb|\cal|, which % all \TeX variants understand. % % \begin{macrocode} \@ifundefined{AmSTeX}{% \def\AmSTeX{$\cal A$\kern-.1667em\lower.5ex\hbox{$\cal M$}% \kern-.125em$\cal S$-\TeX}}{} % \end{macrocode} % \end{macro} % % \begin{macro}{\AMSTEX} % Leslie Lamport's latex/tmanual.tex [10-Jul-1984] (an early % draft of the book) defines it in uppercase with the standard % definition. % \begin{macrocode} \@ifundefined{AMSTEX}{\let\AMSTEX=\AmSTeX}{} % \end{macrocode} % \end{macro} % % \begin{macro}{\AMSTEX} % Barbara Beeton's latex/deproc.sty [24-Apr-1986] and inputs/tugbot.sty % [11-Jan-1988] uses this spelling, but the definition\\ % \verb|\leavevmode\hbox{$\cal A\kern-.2em\lower.376ex \hbox{$\cal|\\ % \verb|M$}\kern-.2em\cal S$-\TeX}| % \begin{macrocode} \@ifundefined{AMSTeX}{\let\AMSTeX=\AmSTeX}{} % \end{macrocode} % \end{macro} % % \begin{macro}{\BibTeX} % The definitions of \verb|\BibTeX| and \verb|\SLiTeX| in Leslie Lamport's % latex/local.tex lower the E by 0.7ex, while \TeX in 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 \TeX here is ok. (Curiously, % \LaTeX itself does not define macros for any \TeX ware except \LaTeX and % \TeX!) % % \begin{macrocode} \@ifundefined{BibTeX}{% \newcommand\BibTeX{B{\sc i\kern-.025em b}\kern-.08em\TeX}}{} % \end{macrocode} % \end{macro} % % \begin{macro}{\BIBTeX} % Leslie Lamport uses this spelling in latex.tex, but not as a % macro. We include it for consistency with AMSTeX. % % \begin{macrocode} \@ifundefined{BIBTeX}{\let\BIBTeX=\BibTeX}{} % \end{macrocode} % \end{macro} % % \begin{macro}{\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 \verb|BIB\kern-.1em\TeX|. % % \begin{macrocode} \@ifundefined{BIBTEX}{\let\BIBTEX=\BibTeX}{} % \end{macrocode} % \end{macro} % % \begin{macro}{\LAMSTeX} % From tugboat.com 1.08 [24-Oct-1990]. % % \begin{macrocode} \@ifundefined{LAMSTeX}{% \newcommand\LAMSTeX{L\raise.42ex\hbox{\kern-.3em\the\scriptfont2 A}% \kern-.2em\lower.376ex\hbox{\the\textfont2 M}% \kern-.125em {\the\textfont2 S}-\TeX}}{} % \end{macrocode} % \end{macro} % % \begin{macro}{\LamSTeX} % \begin{macrocode} \@ifundefined{LamSTeX}{\let\LamSTeX=\LAMSTeX}{} % \end{macrocode} % \end{macro} % % \begin{macro}{\LAmSTeX} % This variant seems likely to appear: % % \begin{macrocode} \@ifundefined{LAmSTeX}{\let\LAmSTeX=\LAMSTeX}{} % \end{macrocode} % \end{macro} % % \begin{macro}{\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]. % % \begin{macrocode} \@ifundefined{LaTeX}{% \def\LaTeX{L\kern-.36em\raise.3ex\hbox{\sc a}\kern-.15em\TeX}}{} % \end{macrocode} % \end{macro} % % \begin{macro}{\LATEX} % latex/slides.tex [05-Jun-1984] and latex/lerrata.tex [23-Jul-1985] % have this spelling, but different definitions % % \begin{macrocode} \@ifundefined{LATEX}{\let\LATEX=\LaTeX}{} % \end{macrocode} % \end{macro} % % \begin{macro}{\LATEX} % latex/slides.tex [05-Jun-1984] and latex/lerrata.tex [23-Jul-1985] % have this spelling, but different definitions % % \begin{macrocode} \ifOldLaTeX \newcommand\LaTeXTeX{(\kern-.15emL\kern-.36em\raise.3ex\hbox{\sc a}\kern-.3em)\kern-.15em\TeX}% \else \DeclareRobustCommand{\LaTeXTeX}{(\kern-.15emL\kern-.36em% {\sbox\z@ T% \vbox to\ht0{\hbox{$\m@th$% \csname S@\f@size\endcsname \fontsize\sf@size\z@ \math@fontsfalse\selectfont A}% \vss}% }\kern-.2em)% \kern-.15em% \TeX} \fi % \end{macrocode} % \end{macro} % % \begin{macro}{\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 \verb|\logo|, \verb|\manfnt|, and % \verb|\mf|. plain.tex % preloads \verb|\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 \verb|\logo| in amsppt.sty and % imappt.sty, so we should avoid it, and tugboat.com uses % \verb|\mf| for \verb|{\smc Metafont}|. We therefore use % \verb|\manfnt| here, defining it if necessary. QUESTION: should % we use manfnt, or logo10? % % \begin{macrocode} \ifx\MF\@undefined \ifx\manfnt\@undefined \font\manfnt=logo10 \fi \ifx\manfntsl\@undefined \font\manfntsl=logosl10 \fi \def\MF{{\ifdim\fontdimen1\font>0pt \let\manfnt = \manfntsl \fi {\manfnt META}\-{\manfnt FONT}}\spacefactor1000 }% \fi % \end{macrocode} % \end{macro} % % \begin{macro}{\METAFONT} % I cannot find any ``official'' uses of this alternate, but it % seems likely that people will use it. % % \begin{macrocode} \@ifundefined{METAFONT}{\let\METAFONT=\MF}{} % \end{macrocode} % \end{macro} % % \begin{macro}{\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 % SLI\TeX! The \LaTeX\ 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. % % \begin{macrocode} \@ifundefined{SLITEX}{ \newcommand\SLITEX{% S\kern-.065em L\kern-.18em\raise.32ex\hbox{i}% \kern-.03em\TeX}}{} % \end{macrocode} % \end{macro} % % \begin{macro}{\SLiTeX} % latex/local.tex (sample Local Guide) [27-Oct-1988] uses % this name, but defines it as\\ % \verb|{\rm S\kern-.06em{\sc l\kern-.035emi}\kern-.06em T\kern|\\ % \verb| -.1667em\lower.7ex\hbox{E}\kern-.125emX}|\\ % with an extra-low E, and kerned Sli in small caps. Is this % what the \LaTeX\ User's Guide and Reference Manual (1986) used? % % \begin{macrocode} \@ifundefined{SLiTeX}{\let\SLiTeX=\SLITEX}{} % \end{macrocode} % \end{macro} % % \begin{macro}{\SliTeX} % latex/slitex.tex [08-Jun-1988] uses SliTeX in typeouts, % but not as a macro -- what a way to confuse the user. % % \begin{macrocode} \@ifundefined{SliTeX}{\let\SliTeX=\SLITEX}{} % \end{macrocode} % \end{macro} % % \begin{macro}{\SLITeX} % I cannot find a use of this one, but it seems a likely % candidate anyway, and is consistent with AMSTeX and BIBTeX. % % \begin{macrocode} \@ifundefined{SLITeX}{\let\SLITeX=\SLITEX}{} % \end{macrocode} % \end{macro} % % % \begin{macro}{\NTS} % This one comes from a communication with Bernd Raichle. % % \begin{macrocode} \newcommand\NTS{\mbox{\mathsurround=0pt \(\cal N\mkern -4mu\lower .5ex\hbox{$\cal T$}\mkern -2mu S\)}} % \end{macrocode} % \end{macro} % % % \subsubsection{Additional Macros for Logos} % % The following macros are maily form the predecessor style % file. Some new ones have been added. % % \begin{macro}{\eV} % The abbreviation for e.\kern-.18emV\kern-.18em.\ 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. % \begin{macrocode} \ifDTK@ancient@layout@ \newcommand\eV{e.\kern-.18emV\kern-.18em\@ifnextchar.{}{.}} \else \newcommand\eV{e.V\kern-.18em\@ifnextchar.{}{.}} \fi % \end{macrocode} % \end{macro} % % \begin{macro}{\dante} % The ``official logo'' for DANTE e.\kern-.18emV\kern-.18em.\ is % defined. % \begin{macrocode} \newcommand\dante{DANTE \eV} % \end{macrocode} % \end{macro} % % \begin{macro}{\Dante} % The long name of DANTE. % \begin{macrocode} \newcommand\Dante{DANTE, Deutschsprachige Anwendervereinigung \TeX~\eV} % \end{macrocode} % \end{macro} % % \begin{macro}{\DTK} % The long name of this booklet, eh journal. % \begin{macrocode} \newcommand\DTK{Die \TeX\-ni\-sche Ko\-m{\"o}\-die} % \end{macrocode} % \end{macro} % % \begin{macro}{\LaTeXe} % If \verb|\LaTeXe| is not defined then define it. Since this macro % is so essential we just want to be sure that it exists. % \begin{macrocode} \ifx\LaTeXe\@undefined \def\LaTeXe{\LaTeX{}\kern.05em2$_{\textstyle\varepsilon}$} \fi % \end{macrocode} % \end{macro} % % % \begin{macro}{\PS} % We define the logo for Post\-Script. % \begin{macrocode} \newcommand\PS{Post\-Script} % \end{macrocode} % \end{macro} % % \begin{macro}{\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. % \begin{macrocode} \newcommand\PiC{P\kern-.12em\lower.5ex\hbox{I}\kern-.075emC} % \end{macrocode} % \end{macro} % % \begin{macro}{\PiCTeX} % Now the previous macro is combined with \TeX. % \begin{macrocode} \newcommand\PiCTeX{\PiC\kern-.11em\TeX} % \end{macrocode} % \end{macro} % % \begin{macro}{\TUG} % The \TeX{} Users Group. % \begin{macrocode} \newcommand\TUG{\TeX{} Users Group} % \end{macrocode} % \end{macro} % % \begin{macro}{\TUGboat} % The communications of the \TeX{} Users Group % \begin{macrocode} \newcommand\TUGboat{\textsl{TUGboat}} % \end{macrocode} % \end{macro} % % \begin{macro}{\TTN} % The communications of the \TeX{} Users Group % \begin{macrocode} \newcommand\TTN{\textsl{\TeX{} and TUG NEWS}} % \end{macrocode} % \end{macro} % % % \begin{macro}{\NFSS} % The New Font Selection Scheme. % \begin{macrocode} \newcommand\NFSS{\textsf{NFSS}} % \end{macrocode} % \end{macro} % % % % \subsection{Size Changing Commands and Mathematics} % % The size changing commands \verb|\small| and \verb|\footnotesize| % redefine also \verb|\@listi|. This effect has to be undone. % % % \begin{macro}{\DTK@math} % This macro modifies the relavant parameters for typesetting % mathematics. % \begin{macrocode} \newcommand\DTK@math{% \abovedisplayskip = 4pt plus 2pt minus 1pt \belowdisplayskip = \abovedisplayskip \abovedisplayshortskip = 2pt plus 2pt \belowdisplayshortskip = \abovedisplayshortskip } % \end{macrocode} % \end{macro} % % \begin{macro}{\@normalsize} % This is an internal size changing command. We save the old % definition in \verb|\DTK@@normalsize| and redefine it. After the % old definition is used some sizes are changed to a smaller value. % \begin{macrocode} \let\DTK@@normalsize=\@normalsize \def\@normalsize{% \DTK@@normalsize \DTK@math \let\@listi=\@listI} % \end{macrocode} % \end{macro} % % \begin{macro}{\normalsize} % This is a size changing command. We save the old % definition in the macro \verb|\DTK@normalsize| and redefine % it. After the old definition is used some sizes are changed to a % smaller value. % \begin{macrocode} \let\DTK@normalsize=\normalsize \renewcommand\normalsize{% \DTK@normalsize \DTK@math \let\@listi=\@listI} \normalsize % \end{macrocode} % \end{macro} % % \begin{macro}{\small} % This is a size changing command. We save the old % definition in \verb|\DTK@small| and redefine it. After the % old definition is used some sizes are changed to a smaller value. % \begin{macrocode} \let\DTK@small=\small \renewcommand\small{% \DTK@small \DTK@math \let\@listi=\@listI} % \end{macrocode} % \end{macro} % % \begin{macro}{\footnotesize} % This is a size changing command. We save the old % definition in the macro \verb|\DTK@footnotesize| and redefine % it. After the old definition is used some sizes are changed to a % smaller value. % \begin{macrocode} \let\DTK@footnotesize=\footnotesize \renewcommand\footnotesize{% \DTK@footnotesize \DTK@math \let\@listi=\@listI} % \end{macrocode} % \end{macro} % % % \subsection{List Making Environments} % % The list making environments \verb|description|, \verb|itemize|, % and \verb|enumerate| are adapted to use less vertical space. This % is mainly done by resetting \verb|\parsep|, \verb|\itemsep|, and % \verb|\topsep|. % % The environments \verb|itemize| and \verb|enumerate| use the % macros \verb|@listi|, \verb|@listii|, etc. Thus it is sufficient % to redefine those macros. % % \begin{macrocode} \def\@listI{% \leftmargin = \leftmargini \parsep = \parskip \topsep = 0pt plus 2pt \itemsep = 0pt plus 2pt} % \end{macrocode} % % \begin{macrocode} \let\@listi=\@listI % \end{macrocode} % % \begin{macrocode} \def\@listii{% \leftmargin = \leftmarginii \labelwidth = \leftmarginii \advance \labelwidth by-\labelsep \parsep = \parskip \topsep = 0pt plus 2pt \itemsep = 0pt plus 2pt} % \end{macrocode} % % \begin{macrocode} \def\@listiii{% \leftmargin = \leftmarginiii \labelwidth = \leftmarginiii \advance \labelwidth by-\labelsep \partopsep = 1pt plus 0pt minus 1pt \parsep = \parskip \topsep = 0pt plus 2pt \itemsep = 0pt plus 2pt} % \end{macrocode} % We activate the defaults. % \begin{macrocode} \@listi % \end{macrocode} % % For some reason \verb|@listi| is redefined in \verb|small| and % \verb|\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 \verb|\@listi| after calling % the old macro. % % % \begin{macrocode} \ifDTK@ancient@layout@\else \renewcommand\labelitemi{$\m@th\circ$} \renewcommand\labelitemii{$\m@th\triangleright$} \renewcommand\labelitemiii{$\m@th\diamond$} \setlength\leftmargini{1.5em} \setlength\leftmarginii{1.4em} \setlength\leftmarginiii{1.3em} \setlength\leftmarginiv{1.2em} \fi % \end{macrocode} % % \begin{environment}{description} % To get things smaller we completely redefine the description % environment. Nevertheless we make use of the old label formatting % macro. % \begin{macrocode} \renewenvironment{description}{% \begin{list}{}{% \labelwidth = 0pt \itemindent = -\leftmargin \parsep = \parskip \topsep = 0pt plus 2pt \itemsep = 0pt plus 2pt \let\makelabel=\descriptionlabel}% }{\end{list}} \ifDTK@ancient@layout@\else \renewcommand\descriptionlabel[1]{\hspace\labelsep {\normalsize\it #1}} \fi % \end{macrocode} % \end{environment} % % \begin{macrocode} \ifDTK@ancient@layout@\else \renewenvironment{quotation}{ \list{}{\rightmargin\leftmargin}% \item\relax }{\endlist} \fi % \end{macrocode} % % \begin{environment}{roll} % We add a new type of list making environment. The \verb|roll| % does not indent per default but just typesets the argument of the % \verb|\item| macro in boldface. It has one optional argument % which can be used to specify the amount of indentation desired. % % \begin{macrocode} \newenvironment{roll}% {\@ifnextchar[{\r@ll}{\r@ll[0pt]}}% {\end{list}} % \end{macrocode} % % \begin{macrocode} \def\r@ll[#1]{\begin{list}{}{% \labelwidth = #1 \leftmargin = \labelwidth \itemsep = .3ex \let\makelabel=\rolllabel}% } % \end{macrocode} % \end{environment} % % Typeset the label of a \verb|roll| environment. % \begin{macrocode} \newcommand\rolllabel[1]{\hspace\labelsep \textbf{#1}\hfill} % \end{macrocode} % % % % % % \begin{macrocode} \long\def\@caption#1[#2]#3{\par\addcontentsline{\csname ext@#1\endcsname}{#1}{\protect\numberline{\csname the#1\endcsname}{\ignorespaces #2}}\begingroup \@parboxrestore \small \@makecaption{\csname fnum@#1\endcsname}{\ignorespaces #3}\par \endgroup} % \end{macrocode} % % % \subsection{Sectioning Commands} % % % The counter \verb|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. % \begin{macrocode} \setcounter{secnumdepth}{0} % \end{macrocode} % % 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. % \begin{macrocode} \newif\ifFirstArticle \FirstArticletrue % \end{macrocode} % % \begin{macro}{\part} % This definition is used in the author version, where \verb|\part| % should not be used. An error message is issued instead. % \begin{macrocode} \ifDTK@Author@ \renewcommand\part{% \typeout{*** Parts can not be used in single articles.}} \else % \end{macrocode} % % A part is aligned to the next full page. A special page style is % used on a first page of a part. The macro \verb|\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 \LaTeX. % % \begin{macrocode} \renewcommand\part{% \clearpage \thispagestyle{part}% \FirstArticletrue \Advance@Label@Prefix \part@star*} \fi % \end{macrocode} % \end{macro} % % \begin{macro}{\part@star} % This macro strips any additional stars (*). If the next character % is a \verb|[| then the part macro has an optional argument. % \begin{macrocode} \def\part@star*{% \@ifnextchar*{\part@star}{% \@ifnextchar[{\part@optional}{\part@normal}}} % \end{macrocode} % \end{macro} % % \begin{macro}{\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. % \begin{macrocode} \def\part@optional[#1]#2{% \markboth{#1}{#1}% \addcontentsline{toc}{part}{#1}% \@ifnextchar[{\part@subtitle{#2}}{\part@nosubtitle{#2}}} % \end{macrocode} % \end{macro} % % \begin{macro}{\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. % \begin{macrocode} \def\part@normal#1{% \markboth{#1}{#1}% \addcontentsline{toc}{part}{#1}% \@ifnextchar[{\part@subtitle{#1}}{\part@nosubtitle{#1}}} % \end{macrocode} % \end{macro} % % \begin{macro}{\part@subtitle} % This macro treats the case that the part has an optional % argument for a subtitle. % \begin{macrocode} \def\part@subtitle#1[#2]{\TopArt{#1}{\\#2}\bigskip\par} % \end{macrocode} % \end{macro} % % \begin{macro}{\part@nosubtitle} % This macro treats the case that the part has no optional % argument for a subtitle. % \begin{macrocode} \def\part@nosubtitle#1{\TopArt{#1}{}\bigskip\par} % \end{macrocode} % \end{macro} % % \begin{macro}{\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 \verb|\\|. % \begin{macrocode} \ifDTK@ancient@layout@ \newcommand\TopArt[2]{% \begingroup \unitlength = 1pt \@tempcnta = \textwidth \divide\@tempcnta by \unitlength \framebox(\@tempcnta,38){\parbox{.95\textwidth}{% \begin{center}{\large\bf #1}#2 \end{center}}} \endgroup} \else \newcommand\TopArtRule{2pt} \newcommand\TopArt[2]{% \begin{minipage}{\textwidth}\parskip=0pt\parindent=0pt \null\vspace{3ex}\par\raggedright\large\sf {\huge\sf #1}\\[-.5ex]\rule{\textwidth}{\TopArtRule}% \vspace{2pt} #2 \end{minipage}} \fi % \end{macrocode} % \end{macro} % % \begin{macro}{\chapter} % In the author version of this class no chapters are allowed. They % are activated when the option \verb|full| is given to the % class/style. Otherwise an error message is printed. % \begin{macrocode} \ifDTK@Author@ \renewcommand\chapter{% \typeout{*** Chapters can not be used in single articles.}} \else % \end{macrocode} % % 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. % \begin{macrocode} \renewcommand\chapter{% \@ifnextchar*{\chapter@star}{% \@ifnextchar[{\chapter@optional}{\chapter@normal}}} \fi % \end{macrocode} % Ignore any number of stars. Well this may be to harsh but I think % this is enough. % \begin{macrocode} \def\chapter@star*{\chapter} % \end{macrocode} % Provide a default for the optional argument. % \begin{macrocode} \def\chapter@normal#1{\chapter@optional[#1]{#1}} % \end{macrocode} % Now do the whole job. % \begin{macrocode} \def\chapter@optional[#1]{% \typeout{#1}% \Advance@Label@Prefix \addcontentsline{toc}{chapter}{#1}% \markboth{#1}{#1}% \FirstArticletrue \@startsection{chapter}{0}{\z@}{-1ex plus-1ex minus -.2ex}{.5ex plus.2ex}{\ChapterFont}*% } % \end{macrocode} % \end{macro} % % \begin{macro}{\section} % The section is redefined to use less vertical space than the % original definition. % % \begin{macrocode} \ifDTK@ancient@layout@ \renewcommand\section{\@startsection{section}{1}{\z@}{% -1ex plus-1ex minus-.2ex}{.5ex plus.2ex}{\SectionFont}} \else \renewcommand\section{\@startsection{section}{1}{\z@}{% -2ex plus-1ex minus-.2ex}{.5ex plus.2ex}{\SectionFont}} \fi % \end{macrocode} % \end{macro} % % \begin{macro}{\subsection} % The subsection is redefined to use less vertical space than the % original definition. % % \begin{macrocode} \ifDTK@ancient@layout@ \renewcommand\subsection{\@startsection{subsection}{2}{\z@}{% -1ex plus-1ex minus-.2ex}{0.75ex plus.2ex}{\SubsectionFont}} \else \renewcommand\subsection{\@startsection{subsection}{2}{\z@}{% -2ex plus-1ex minus-.2ex}{0.75ex plus.2ex}{\SubsectionFont}} \fi % \end{macrocode} % \end{macro} % % \begin{macro}{\subsubsection} % The subsubsection is redefined to use less vertical space than % the original definition. % % \begin{macrocode} \ifDTK@ancient@layout@ \renewcommand\subsubsection{\@startsection{subsubsection}{3}{\z@}{% -1ex plus-1ex minus-.2ex}{0.75ex plus.2ex}{\SubsubsectionFont}} \else \renewcommand\subsubsection{\@startsection{subsubsection}{3}{\z@}{% -2ex plus-1ex minus-.2ex}{0.75ex plus.2ex}{\SubsubsectionFont}} \fi % \end{macrocode} % \end{macro} % % \begin{macro}{\paragraph} % The paragraph is redefined to use less vertical space than the % original definition. % % \begin{macrocode} \ifDTK@ancient@layout@ \renewcommand\paragraph{\@startsection{paragraph}{4}{\z@}{% 1ex plus1ex minus.2ex}{-.5ex}{\SubsubsectionFont}} \else \renewcommand\paragraph{\@startsection{paragraph}{4}{\z@}{% 0ex plus1ex minus.2ex}{-.5ex}{\SubsubsectionFont}} \fi % \end{macrocode} % \end{macro} % % \begin{macro}{\subparagraph} % The subparagraph is redefined to use less vertical space than the % original definition. % % \begin{macrocode} \ifDTK@ancient@layout@ \renewcommand\subparagraph{\@startsection{subparagraph}{4}% {\parindent}{1ex plus1ex minus.2ex}{-.5ex}{\SubsubsectionFont}} \else \renewcommand\subparagraph{\@startsection{subparagraph}{4}% {\parindent}{0ex plus1ex minus.2ex}{-.5ex}{\SubsubsectionFont}} \fi % \end{macrocode} % \end{macro} % % % \subsection{The Article Layout} % % % \begin{macro}{\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 \verb|\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. % % \begin{macrocode} \renewcommand\maketitle{% % \end{macrocode} % % 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. % \begin{macrocode} \ifDTK@Author@ \thispagestyle{part}\fi % \end{macrocode} % % 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. % \begin{macrocode} \begingroup \dimen0=\vsize \advance\dimen0 by -\pagetotal \ifdim\dimen0<\NewpageThreshold \newpage \global\FirstArticletrue \fi \endgroup % \end{macrocode} % % The namespace for labels has to be switched. This is done by % calling the macro \verb|\Advance@Label@Prefix|. % \begin{macrocode} \Advance@Label@Prefix % \end{macrocode} % % 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 \verb|FirstArticle| is true. This variable is set % afterwards. % \begin{macrocode} \begingroup \begin{minipage}{\textwidth} \ifFirstArticle \global\FirstArticlefalse \vskip 3pt \else \ifDTK@ancient@layout@ \rule{\textwidth}{.4pt}% \vskip 14pt plus 8pt minus 12pt% \else \vspace{32pt plus 8pt minus 16pt}% \fi \fi % \end{macrocode} % % % \begin{macrocode} \setcounter{footnote}0 % \end{macrocode} % % Now we insert the title and the author. The title is also put into the % table of contents. The running head is adjusted. % \begin{macrocode} \TitleFont\@title \ifx\@author\@empty\else \bigskip\par \AuthorFont\@author \fi \end{minipage}% \@thanks \let\thanks\@gobble \addcontentsline{toc}{chapter}{\@title}% \markboth{\@title}{\@title}% \endgroup % \end{macrocode} % % Finally we rest certain values and insert some space to the beginning of % the article. % \begin{macrocode} \let\@title=\@empty \let\@author=\@empty \let\@thanks=\@empty \setcounter{figure}0 \setcounter{table}0 \setcounter{equation}0 % \setcounter{footnote}0 \medskip\par} % \end{macrocode} % \end{macro} % % Several authors are separated by \verb|\and|. Here is a first % approximation to deal with this case. % % \begin{macrocode} \renewcommand\and{, } % \end{macrocode} % % We provide default values for the author, the title and the % footnote of the title. All of them are empty. % \begin{macrocode} \let\@title=\@empty \let\@author=\@empty \let\@thanks=\@empty % \end{macrocode} % % \begin{environment}{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. % % \begin{macrocode} \newenvironment{abstract}{% \begin{quote}\small }{% \end{quote}\medskip\par} % \end{macrocode} % \end{environment} % % % \subsection{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. % % \begin{macrocode} \renewcommand\thefigure{\arabic{figure}} \renewcommand\thetable{\arabic{table}} \renewcommand\theequation{\arabic{equation}} % \end{macrocode} % % % \subsection{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). % \begin{macrocode} \newcount\DTL@label \DTL@label=0 % \end{macrocode} % % \begin{macro}{\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 \verb|\Label@Prefix|. % \begin{macrocode} \newcommand\Advance@Label@Prefix{% \advance\DTL@label 1 \xdef\Label@Prefix{module \the\DTL@label:}} % \end{macrocode} % \end{macro} % % The label prefix has to be initalized. The easiest way to perform % this task is touse the macro defined above. % \begin{macrocode} \Advance@Label@Prefix % \end{macrocode} % % 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 \verb|\ref|, \verb|\label|, and % \verb|\pageref| under the new names \verb|\Ref|, \verb|\Label|, and % \verb|\Pageref| respectivly. % \begin{macrocode} \let\Ref=\ref \let\Label=\label \let\Pageref=\pageref % \end{macrocode} % % \begin{macro}{\ref} % The module prefix is prepended before the original \verb|\ref| % macros is used. % \begin{macrocode} \renewcommand\ref[1]{\Ref{\Label@Prefix:#1}} % \end{macrocode} % \end{macro} % % \begin{macro}{\label} % The module prefix is prepended before the original \verb|\label| % macros is used. % \begin{macrocode} \renewcommand\label[1]{\Label{\Label@Prefix:#1}} % \end{macrocode} % \end{macro} % % \begin{macro}{\pageref} % The module prefix is prepended before the original \verb|\pageref| % macros is used. % \begin{macrocode} \renewcommand\pageref[1]{\Pageref{\Label@Prefix:#1}} % \end{macrocode} % \end{macro} % % % \subsection{Bibliography} % % \begin{macro}{\thebibliography} % Instead of using a \verb|\chapter*| to start a bibliography we % use a \verb|\section*|. Thus the bibliography should not appear % in the table of contents. % \begin{macrocode} \renewcommand\thebibliography[1]{% \section*{\refname}% \list{[\arabic{enumi}]}{% \settowidth\labelwidth{[#1]}% \leftmargin\labelwidth \advance\leftmargin\labelsep \usecounter{enumi}} \def\newblock{\hskip .11em plus .33em minus .07em} \sloppy\clubpenalty4000\widowpenalty4000 \sfcode`\.=1000\relax} % \end{macrocode} % \end{macro} % % \begin{macro}{\DTK@bibliography} % This macro is used to overwrite the macro \verb|\bibliography| % when the complete journal is typeset. % \begin{macrocode} \newcommand\DTK@bibliography[1]{ \InputIfFileExists{#1.bbl}{}{\typeout{--- File #1.bbl not found.}}} % \end{macrocode} % \end{macro} % % \subsection{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: % \begin{macrocode} \newcommand\DTK@fnrightmargin{0em} \newcommand\DTK@fnleftmargin{1em} % \end{macrocode} % % And now we make the footnote to behave as desired. % \begin{macrocode} \ifDTK@ancient@layout@\else \long\def\@makefntext#1{% \begin{list}{}{% \rightmargin=0pt% \parsep=0.5\baselineskip plus 2pt \leftmargin=\DTK@fnleftmargin} \item\mbox{}\llap{$^{\@thefnmark}$\kern1pt}#1 \end{list}} \renewcommand\footnoterule{% \kern-3\p@ \hrule\@width.33\columnwidth \kern2.6\p@} \fi % \end{macrocode} % % % \subsection{Defining Page Styles} % % \subsubsection{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. % % \begin{macrocode} \renewcommand\ps@plain{% \let\@mkboth=\@gobbletwo \let\chaptermark=\@gobble \let\sectionmark=\@gobble \let\subsectionmark=\@gobble \def\@oddhead{\vbox{\hbox to \textwidth{% \HeadFont \rightmark \hfil\PagenoFont\thepage}\kern 3pt \ifdim\HeadRuleDepth>0pt \hrule depth\HeadRuleDepth\fi}}% \def\@evenhead{\vbox{\hbox to \textwidth{% \PagenoFont \thepage\hfil\HeadFont \leftmark}\kern 3pt \ifdim\HeadRuleDepth>0pt \hrule depth\HeadRuleDepth\fi}}% \def\@oddfoot{\vbox{% \ifdim\FootRuleDepth>0pt \hrule depth\FootRuleDepth \fi \kern 5pt \hbox to \textwidth{\FootFont \footmark\hfil\null}}}% \def\@evenfoot{\vbox{% \ifdim\FootRuleDepth>0pt \hrule depth\FootRuleDepth \fi \kern 5pt \hbox to \textwidth{\null\hfil\FootFont \footmark}}}} % \end{macrocode} % % \subsubsection{The Page Style part} % % The page style \verb|part| contains the same foot as the page style % \verb|plain|. The head line is empty. % % This style is used when a new part is started. It can be % configured by redefining the macros \verb|FootRuleDepth|, % \verb|\FootFont|, and \verb|\PagenoFont|. % % \begin{macrocode} \newcommand\ps@part{% \let\@mkboth=\@gobbletwo \let\chaptermark=\@gobble \let\sectionmark=\@gobble \let\subsectionmark=\@gobble \let\@oddhead=\@empty \let\@evenhead=\@empty \def\@oddfoot{\vbox{% \ifdim\FootRuleDepth>0pt \hrule depth\FootRuleDepth \fi \kern 5pt \hbox to \textwidth{\FootFont \footmark\hfil\null}}}% \def\@evenfoot{\vbox{% \ifdim\FootRuleDepth>0pt \hrule depth\FootRuleDepth \fi \kern 5pt \hbox to \textwidth{\null\hfil\FootFont \footmark}}}} % \end{macrocode} % % 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. % % \begin{macrocode} \pagestyle{plain} % \end{macrocode} % % % % \subsection{The Layout of the Titlepage} % % \begin{macro}{\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 \verb|\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 % \verb|\CoverArt|. This can be redefined to get a different cover % page. % \begin{macrocode} \ifDTK@Author@\else \newcommand\DieTeXnischeKomoedie[3]{% \thispagestyle{empty}% \gdef\volume{#1}% \gdef\DTKedition{#2}% \gdef\DTKdate{#3}% \global\let\bibliography=\DTK@bibliography \global\let\bibliographystyle=\@gobble \CoverArt{#1}{#2}{#3}% \newpage} \fi % \end{macrocode} % \end{macro} % % \begin{macro}{\CoverArt} % % This macro implements the layout of the cover page of % DTK. It can be redefined to get a different layout. % % \begin{macrocode} \ifDTK@ancient@layout@ \newcommand\CoverArt[3]{ \ifx\CoverTitleFont\@undefined \newfont\CoverTitleFont{cmr17 scaled \magstep 5}% \fi \begin{center} {\LARGE DANTE\\[14pt] \Large Deutschsprachige Anwendervereinigung \TeX\ \eV}% \\\rule{\textwidth}{2pt}\par\vfill \CoverTitleFont Die \\[22pt] \TeX nische \\[22pt] Kom{\"o}die \par\vfill\rule{\textwidth}{2pt}\\[4pt]\large Heft #1\hfill #2.\ Jahrgang\hfill #3 \normalsize \end{center}\vspace*{28.5pt}} % \end{macrocode} % % % \begin{macrocode} \else % \end{macrocode} % % This macro determines the thickness of the horizontal rule % separating the publisher from the edition information. % \begin{macrocode} \newcommand\CoverArt@linewidth{0pt}%{1.2pt} % \end{macrocode} % % \begin{macrocode} \newcommand\CoverArt@barwidth{2.41pt} % \end{macrocode} % % \begin{macrocode} \newcommand\CoverArt@font{\Large\raggedleft} % \end{macrocode} % % \begin{macrocode} \newcommand\CoverArt@small{\footnotesize} % \end{macrocode} % % \begin{macrocode} \newcommand\CoverArt@gap{2em} % \end{macrocode} % % \begin{macrocode} \newcommand\CoverArt[3]{% \ifx\CoverTitleFont\@undefined \newfont\CoverTitleFont{cmr17 scaled \magstep 5} \fi \ifx\CoverNumberFont\@undefined \newfont\CoverNumberFont{cmr17 scaled 3583} \fi \null\hfill \setbox\@tempboxa=\hbox to .95\textheight{\null\hfill\CoverTitleFont Die \TeX nische Kom\"odie\hfill\null}% \@tempdimb=\ht\@tempboxa \advance\@tempdimb by\dp\@tempboxa \hbox to\@tempdimb{% \vbox to\wd\@tempboxa{% \vskip\wd\@tempboxa \special{ps:gsave currentpoint currentpoint translate 270 rotate neg exch neg exch translate}% \box\@tempboxa\vss}\hss}% \special{ps:currentpoint grestore moveto} \ \rule{\CoverArt@barwidth}{.95\textheight} \begin{minipage}[b]{.7\textwidth}\raggedright \rule{1em}{0pt}% \dimen2=\textwidth\advance\dimen2-1em \parbox{\dimen2}{\CoverArt@font DANTE\\ Deutschsprachige\\ Anwendervereinigung \TeX\ \eV}\\[1ex] \dimen3=\textwidth\advance\dimen3-\CoverArt@gap \hfill\rule{\dimen3}{\CoverArt@linewidth}% \\[-\baselineskip]\null\hspace{1em}% {\CoverArt@small #2. Jahrgang\quad Heft #1\quad #3}% \\\rule{0pt}{.57\textheight}% \CoverNumberFont \null\hfill \makebox(0,0)[br]{% \special{ps:gsave \CoverArt@gray}% \CoverArt@strip@no #1;\hspace{1pt}% \special{ps:grestore}}% % \makebox(0,0)[br]{\CoverTitleFontII% % \CoverArt@strip@no #1;\hspace{1pt}}% \end{minipage}% } \newcommand\CoverArt@gray{.95 setgray} \def\CoverArt@strip@no#1/#2#3#4#5;{#1\raisebox{0.35ex}{\CoverTitleFont/}#4#5} \fi % \end{macrocode} % \end{macro} % % % \subsection{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 % \LaTeX. I (safely) assume that nobody has the desire to make an % index for a journal. % % \begin{macro}{\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 \verb|\\|. % % The macro can be e.g. as follows:\\ % \verb|\address{Gerd}{Neugebauer}%|\\ % \verb| {"Odenburger Str. 16\\64295 Darmstadt}| % % % The address is given to \verb|\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:-) % \begin{macrocode} \newcommand\address[3]{% \begingroup \def\"##1{\@ifundefined{detex@@##1}{##1}% {\csname detex@@##1\endcsname}}% \let"=\"% \def\ss{ss}% \let\'=\relax \let\`=\relax \let\^=\relax \let\.=\relax \let\==\relax \let\d=\relax \let\b=\relax \let\c=\relax \let\v=\relax \let\H=\relax \let\t=\relax \let\u=\relax \let\~=\relax \def\o{o}% \def\O{O}% \def\aa{aa}% \def\AA{Aa}% \def\l{l}% \def\L{L}% \def\ae{ae}% \def\AE{Ae}% \def\oe{oe}% \def\OE{Oe}% \def\TeX{TeX}% \def\LaTeX{LaTeX}% \def\LaTeXe{LaTeX2e}% \let\null=\relax \xdef\@ddress{#2, #1}% \endgroup \begingroup \def\\{\string\\}% \def\"{\string"}% \def"{\string"}% \def\null{}% \expandafter\@strip\@ddress$%$ \index{\STRIP@*#1 #2!#3}% \endgroup } % \end{macrocode} % \end{macro} % For the removing of \TeX\ macros in addresses we need some % definitions to perform the mapping. % \begin{macrocode} \let\strip@grp={ \let\strip@end=$%$ \def\@strip{\def\STRIP@{}\strip@I} \def\strip@I{\let\strip@next=\strip@I \futurelet\strip@CHAR\strip@II} \def\strip@II#1{% \ifx\strip@CHAR\strip@end \let\strip@next=\relax \else\ifx\strip@CHAR\strip@grp \strip@I #1$%$ \let\strip@next=\strip@I \else\ifcat\strip@CHAR A \xdef\STRIP@{\STRIP@#1}% \else\ifcat\strip@CHAR. \xdef\STRIP@{\STRIP@#1}% \else\ifcat\strip@CHAR\space \xdef\STRIP@{\STRIP@ #1}% \fi\fi\fi\fi\fi \strip@next} % \end{macrocode} % % \begin{macrocode} \def\detex@@a{ae} \def\detex@@o{oe} \def\detex@@u{ue} \def\detex@@A{Ae} \def\detex@@O{Oe} \def\detex@@U{Ue} \def\detex@@s{ss} % \end{macrocode} % % \begin{environment}{theaddresses} % The addresses are collected in an environment Addresses. This % environment is used to customize the layout of this list. % \begin{macrocode} \ifDTK@Author@\else \newenvironment{theaddresses}{% \chapter{\addressname}\Label{addresses} \begingroup \def\addressitem##1##2##3{\par{\bf ##1}\hfill[\ignorespaces ##3]% \\ ##2} \begin{multicols}{2}% }{% \end{multicols}% \endgroup } \fi % \end{macrocode} % \end{environment} % % \begin{macro}{\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. % % \begin{macrocode} \ifDTK@Author@ \newcommand\listofaddresses{% \typeout{*** listofaddresses not supported in articles.}} \else \newcommand\listofaddresses{% \InputIfFileExists{\jobname.ind}{}{% \typeout{No file \jobname.ind.}% \typeout{Use the following command to create it:\space\space makeindex -s dtk.ist \jobname}% \typeout{\space}}% } \fi % \end{macrocode} % \end{macro} % % % \subsection{The Table of Contents} % % \begin{macro}{\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. % % \begin{macrocode} \ifDTK@Author@ \renewcommand\tableofcontents{% \typeout{*** tabelofcontents not supported in articles.}} \else \renewcommand\tableofcontents{% \clearpage \thispagestyle{empty}% \markboth{\contentsname}{\contentsname}% \ContentsArt \begingroup\parskip=\ContentsParSkip\@starttoc{toc}\endgroup } \ifDTK@ancient@layout@ \newcommand\ContentsArt{\part@nosubtitle{\contentsname}} \else \newcommand\ContentsArt{% \vspace*{-\headheight}\vspace*{-\headsep}\par \begin{minipage}{\textwidth} \begin{center} \Huge Die \TeX nische Kom\"odie\\[-1.6ex] \rule{.79\textwidth}{2pt}\\[2pt] \CoverArt@small \DTKedition. Jahrgang\quad Heft \volume\quad\DTKdate \end{center} \end{minipage}\vspace{16pt minus 8pt}\par } \fi \fi % \end{macrocode} % \end{macro} % % The lines contained in the table of contents are determined by % the counter \verb|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 \verb|tocdepth| to 0. % \begin{macrocode} \setcounter{tocdepth}{0} % \end{macrocode} % The layout of the lines in the table of contents is determined by % the macros \verb|\l@|{\em type}. Some of them are redefined next. % % \begin{macro}{\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. % % \begin{macrocode} \renewcommand\l@part[2]{% \addpenalty{-\@highpenalty}% \addvspace{0.5em plus 0pt}% space above part line \@tempdima 1.5em \begingroup \parindent \z@ \rightskip \@pnumwidth \parfillskip -\@pnumwidth \bf \leavevmode \advance\leftskip\@tempdima \hskip -\leftskip #1\nobreak\hfil \nobreak\hbox to\@pnumwidth{\hss #2}\par \penalty\@highpenalty \endgroup} % \end{macrocode} % \end{macro} % % \begin{macro}{\l@chapter} % This macro determines the layout of the line in the table of % contents for chapters. It simply imitates the layout of % sections. % % \begin{macrocode} \renewcommand\l@chapter{\@dottedtocline{0}{1.5em}{2.3em}} % \end{macrocode} % \end{macro} % % % That's all. % % \PrintChanges % % \PrintIndex % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z %% Digits \0\1\2\3\4\5\6\7\8\9 %% Exclamation \! Double quote \" Hash (number) \# %% Dollar \$ Percent \% Ampersand \& %% Acute accent \' Left paren \( Right paren \) %% Asterisk \* Plus \+ Comma \, %% Minus \- Point \. Solidus \/ %% Colon \: Semicolon \; Less than \< %% Equals \= Greater than \> Question mark \? %% Commercial at \@ Left bracket \[ Backslash \\ %% Right bracket \] Circumflex \^ Underscore \_ %% Grave accent \` Left brace \{ Vertical bar \| %% Right brace \} Tilde \~} %% \endinput % % Local Variables: % mode: latex % TeX-master: t % End: