% \iffalse meta-comment
%%  File 'diagram.dtx'
%%
%% This file may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version
%% 1.2 of this license or (at your option) any later version.
%% The latest version of this license is in:
%%
%%    http://www.latex-project.org/lppl.txt
%%
%% and version 1.2 or later is part of all distributions of LaTeX
%% version 1999/12/01 or later.
%%
%%
% \fi
% \def\fileversion{1.5}
% \def\docdate{2013/01/11}
% \CheckSum{1906}
% \changes{v1.1}{03 June 2011}{Reflecting change in command
% @writename inside diagram.sty}
% \changes{v1.2}{01 July 2011}{Added parameter for Band to Heft
% command.}
% \changes{v1.3}{30 April 2012}{Applied changes due to new
% commands in diagram.sty 1.6 to suppress display of cities and
% academic titles.}
% \changes{v1.4}{04 December 2012}{Split code into a class and a style file.}
% \changes{v1.5}{11 January 2013}{Added Environment WebSites for reports on chess problem websites.}
%
% \DoNotIndex{\@arabic,\def,\@idxitem,\@ifnextchar,\@ifstar,
% \@ne,\@ptsize,\ ,\advance,\AtEndOfPackage,\begin,\begingroup,
% \bfseries,\bgroup,\boolean,\box,\char,\chardef,\closeout,
% \count,\csname,\DeclareOption,\DocInput,\documentclass,
% \egroup,\else,\end,\endcsname,\endgroup,\endinput,\errmessage,
% \exhyphenpenalty,\expandafter,\fi,\font,\fonddimen,\gdef,\global,
% \hangafter,\hangindent,\hbox,\hfill,\hrule,\hsize,\hskip,\hss,\if,
% \ifcase,\ifdim,\iffalse,\ifmmode,\ifnum,\ifodd,\ifthenelse,
% \ifvmode,\ifx,\immediate,\index,\input,\itshape,\kern,\label,\let,
% \llap,\long,\loop,\lower,\mbox,\medskip,\multiply,\newboolean,\newbox,
% \newcount,\newcounter,\newdimen,\newif,\newindex,\newline,\newtoks,
% \newwrite,\noexpand,\noindent,\openout,\OptionNotUsed,\or,\p@,\par,
% \parindent,\parskip,\penalty,\printindex,\ProcessOptions,\ProvidesFile,
% \ProvidesPackage,\raise,\RecordChanges,\ref,\refstepcounter,\relax,
% \repeat,\RequirePackage,\rmfamily,\setboolean,\setbox,\setlength,
% \the,\textwidth,\unhbox,\usepackage,\vbox,\vfil,\vrule,\vskip,
% \vss,\vtop,\wd,\write,\xdef,\z@,\",\&,\/}
% 
% \title{Der \LaTeX-Style f"ur die Problemschach-Zeitschrift
% \hbox{\bfseries\itshape Die Schwalbe}\\{\large Version~\fileversion}}
% \author{Stefan H\"oning\\Neuss}
% \date{\docdate}
%
% \maketitle
%
% \begin{abstract}
% Diese Dokumentation beschreibt die \LaTeX-Class und \LaTeX-Style, die zum
% Setzen der Zeitschrift {\bfseries\itshape Die Schwalbe} benutzt wird --- die
% Mitglieder Zeitschrift der deutschen Vereinigung f"ur Problemschach.
%
% Die Schwalbe-Class hat die Aufgabe, die Seiteneinstellungen und Umgebungen
% f"ur die Schwalbe zu definieren.  Der Schwalbe-Style hat die Aufgaben,
% Layoutanpassungen bzgl.\ des \verb+diagram.sty+ vorzunhmen, mit dem die
% Problemschach-Diagramme erzeugt werden.
% \end{abstract}
%
%
% \section{Kommandos und Umgebungen zur Gliederung eines Hefts}
%
% \DescribeMacro{\Heft}
% Jedes Heft wird durch den Befehl
% \verb+\Heft+ eingeleitet. Der Befehl hat die folgenden vier
% Parameter in der angegebenen Reihenfolge:
%
% \begin{enumerate}
% \item der Band, zu dem das Heft geh"ort
% \item die Nummer des Heftes
% \item der Monat des Erscheinens
% \item das Jahr des Erscheinens
% \item die Seitennummer der ersten Seite des Heftes
% \end{enumerate}
%
% Das August Heft 2011, das die fortlaufende Nummer 250 hat und mit
% der Seitenummmer 177 beginnt wird demzufolge folgendermassen
% eingeleitet:
%
% \verb+\Heft{XXX}{250}{August}{2011}{177}+
%
% \DescribeEnv{Editorial}
% Die \verb+Editorial+ Umgebung ben"otigt einen Parameter, der
% die "Uberschrift definiert. Als optionaler Parameter kann noch
% der Eintrag im Inhaltsverzeichnis festgelegt werden. L"asst man
% diesen weg, erscheint dort der Begriff {\bfseries Editorial}.
%
% \DescribeEnv{aktuell}
% Die \verb+aktuell+ Umgebung f"ur die {\bfseries Aktuellen Meldungen} kommt
% ohne parameter aus. Neben der "Uberschrift wird ein Eintrag im
% Inhaltsverzeichnis erzeugt.
%
% \DescribeEnv{InformalEntscheid}
% Die Preisberichte zu Informalturnieren der {\bfseries\itshape
% Schwalbe} werden in die Umgebung \verb+InformalEntscheid+
% eingebettet. Das einleitende \verb+\begin{InformalEntscheid}+
% hat dabei 3 Parameter:
% \begin{enumerate}
% \item die Abteilung
% \item das Jahr, auf das sich der Entscheid bezieht
% \item der Name des Preisrichters
% \end{enumerate}
% Die Umgebung setzt automatisch die "Uberschrift und erzeugt
% einen Eintrag im Inhaltsverzeichnis.
%
% \DescribeEnv{Aufsatz}
% \DescribeEnv{Titel}
% Im Gegensatz zu den meisten anderen Umgebungen erzeugt die
% \verb+Aufsatz+ Umgebung nur den Eintrag im Inhaltsverzeichnis.
% Hierzu hat das einleitende \verb+\begin{Aufsatz}+ 2~Parameter:
% \begin{enumerate}
% \item den Titel des Aufsatzes
% \item den Namen des Autors mit Wohnort\newline
%    dieser wird in der Form \verb+<Name>, <Vorname>/<Wohnort>+
%    angegeben.
% \end{enumerate}
% Um die "Uberschrift des Aufsatzes zu setzen, gibt es die
% Umgebung \verb+Titel+. Die wesentliche Aufgabe dieser Umgebung
% ist es, passende Abst"ande zum vorherigen sowie zum
% nachfolgenden Text zu erzeugen.
%
% \DescribeEnv{Urdrucke}
% Die Umgebung \verb+Urdrucke+ ben"otigt als Parameter die Nummer
% des ersten Urdrucks.
%
% \DescribeEnv{maerchenlexikon}
% \DescribeMacro{\maerchenart}
% Im Vorspann der M"archenschachabteilung der Urdrucke werden die
% benutzten M"archenschachregeln erl"autert. Dies geschieht
% innerhalb der Umgebung \verb+maechenlexion+. Innerhalb dieser
% Umgebung werden alle M"archenarten mittels \verb+\maerchenart+
% eingef"uhrt, die einen Parameter hat, mit dem die M"archenart
% angegeben wird.
%
% \DescribeEnv{Loesungen}
% Die Umgebung \verb+Loesungen+, innerhalb der die
% L"osungsbesprechungen beschrieben werden, ben"otigt 2
% Parameter:
% \begin{enumerate}
% \item die Nummer des Hefts mit den Urdrucken
% \item Monat und Jahr dieses Hefts
% \end{enumerate}
%
% \DescribeEnv{BuB}
% Die \verb+BuB+ Umgebung setzt die {\bfseries Bemerkungen und
% Berichtigungen}
%
% \DescribeEnv{turnierberichte}
% Innerhalb der Umgebung \verb+turnierberichte+ wird "uber
% Turniere z.\,B.\ aus anderen Zeitschriften berichtet.
%
% \DescribeEnv{Buecher}
% \DescribeMacro{\Buch}
% Buchbesprechungen werden innerhalb der Umgebung \verb+Buecher+
% wiedergegeben. Dabei wird jedes Buch durch den Befehl
% \verb+\Buch+ begonnen, bei dem zwei Parameter anzugeben sind:
% \begin{enumerate}
% \item die Autoren des Buches; mehrere Autoren sind durch
% \verb+;+ voneinander zu trennen. 
% \item der Titel des Buches
% \end{enumerate}
%
% \DescribeEnv{WebSites}
% \DescribeMacro{\WebSite}
% Besprechungen von Web-Sites werden innerhalb der Umgebung \verb+WebSites+
% gesetzt. Dabei wird jede einzelne Web-Site durch den Befehl \verb+WebSite+
% begonnen, bei dem als Parameter die {\bfseries URL} der Web-Site anzugeben
% ist.
%
% \DescribeEnv{Briefkasten}
% Die Umgebung \verb+Briefkasten+ wird gelegentlich genutzt um
% Autoren auf Fehler in Ihren eingesandten Aufgaben hinzuweisen.
%
% \DescribeEnv{Turnierbericht}
% Turnierberichte (und -entscheide) zu allgemeinen Turnieren
% werden in der \verb+Turnierbericht+ Umgebung gesetzt. Das
% Einleitende \verb+\begin{Turnierbericht}+ besitzt als Parameter
% den Namen des Turniers und den Namen des Autors in der Form:
% \verb+<Nachname>, <Vorname>+. Diese beiden Angaben werden
% automatisch ins Inhaltsverzeichnis "ubernommen.
% Der Titel des Turnierberichts ist wie bei Aufs"atzen in die
% Umgebung \verb+Titel+ einzubauen.
%
% \DescribeEnv{Entscheid}
% Die \verb+Entscheid+ Umgebung wird genutzt, um
% Turnierentscheide zu allgemeinen Turnieren der Schwalbe, oder
% aber auch Nachtr"age oder entg"ultige Entscheide zu setzen.
% Als Parameter wird an das einleitende \verb+\begin{Entscheid}+
% der Titel des Entscheids angegeben, der ins Inhaltsverzeichnis
% "ubernommen werden soll. Der eigentliche Titel muss --- wie bei
% verschiedenen anderen Umgebungen auch --- mittels der
% \verb+Titel+ Umgebung gesetzt werden.
% 
%
% \DescribeEnv{Loeserliste}
% Nach dem einleitenden \verb+\begin{Loeserliste}+ ist als
% Parameter das Jahr anzugeben, auf dass sich die L"oeserliste
% bezieht.
%
% \DescribeEnv{Turnierausschreibung}
%
% \DescribeEnv{Nachruf}
%
% \DescribeEnv{dauerkonto}
%
% \DescribeEnv{loesungswettbewerb}
%
% \section{Kleine Helferlein}
%
% \subsection{Diagrammgr"ossen}
% \DescribeMacro{\smalldia}
% \DescribeMacro{\normaldia}
% In der Schwalbe werden normalerweise zwei verschiedene
% Diagrammgr"ossen verwendet. Mittels \verb+\normaldia+ wird die
% Normalgr"osse eingestellt. Mittels \verb+\smalldia+ kann auf
% kleinere Diagramme umgeschaltet werden --- von denen dann 4
% St"uck in eine Zeile passen. Da die kleineren Diagramme
% normalerweise zu mehreren benutzt werden, kann dieser
% Befehl nat"urlich auch als Umgebung benutzt werden.
%
% \subsection{H"aufige Abk"urzungen}
% \DescribeMacro{\dh}
% \DescribeMacro{\ua}
% \DescribeMacro{\zB}
% \DescribeMacro{\su}
% \DescribeMacro{\ep}
% \DescribeMacro{\seedia}
% \LaTeX\ intepretiert einen Punkt nach einem Kleinbuchstaben
% normalerweise als Satzende. Als Folge davon ist der Abstand
% hinter diesem Punkt gr"osser als der normale Wortabstand.
% Insbesondere bei Abk"urzungen ist dies aber nicht
% gew"unscht. Besonders bei mehrgliedrigen Abk"urzungen sollte
% man sogar einen kleineren Abstand als den normalen Wortabstand
% zwischen den Gliedern der Abk"urzung w"ahlen. Daher definiert
% der Style Befehle f"ur einige H"aufig vorkommende Abk"urzungen:
%
% \begin{tabular}{|l|l|l|}
% \hline
% {\bfseries Befehl}&{\bfseries f"ur}&{\bfseries Bemerkungen}\\
% \hline
% \verb+\dh+&d.\,h.&enth"alt ein Leerzeichen am Ende\\
% \verb+\ua+&u.\,a.&enth"alt ein Leerzeichen am Ende\\
% \verb+\zB+&z.\,B.&\\
% \verb+\su+&s.\,u.&\\
% \verb+\ep+&e.\,p.&\\
% \verb+\seedia+&s.\,Diagr.&\\
% \hline
% \end{tabular}
%
% \subsection{Verschiedenes}
% \DescribeMacro{\figline}
% Mittels \verb+\figline+ kann eine Zeile mit K"onigen ausgegeben
% werden, die als Trenner zwischen 2 Abschnitten dient.
% \DescribeMacro{\foto}
% Um Freiraum f"ur ein Foto zu lassen kann der Befehl
% \verb+\foto{<Breite>}{<Hoehe>}{<Bildunterschrift>}+ benutzt werden.
%
% \StopEventually{\PrintIndex\PrintChanges}
%
% \section{Die Treiberdatei f"ur die Dokumentation}
% Der folgende Code erzeugt die Dokumentation. Da dies der erste
% nicht auskommentierte Code in der Datei ist, kann die
% Dokumentation einfach erzeugt werden, indem man diese Datei mit
% \LaTeXe\ "ubersetzt.
%    \begin{macrocode}
%<*driver>
\documentclass[a4paper]{article}
\usepackage{doc}
\usepackage{schwalbe}
\setlength{\hoffset}{-1in}
\setlength{\voffset}{-1in}
\setlength{\textwidth}{10cm}
\setlength{\oddsidemargin}{65mm}
\EnableCrossrefs
\CodelineIndex
\RecordChanges
\begin{document}
\DocInput{schwalbe.dtx}
\end{document}
%</driver>
%    \end{macrocode}
%
% \section{Die Implementierung der {\bfseries\itshape Schwalbe}-Class}
%
% Die \verb+schwalbe+-Class beruht auf der \verb+article+-Class und verwendet logischerweise die Einstellungen des
% \verb+schwalbe.sty+.
%    \begin{macrocode}
%<*class>
\NeedsTeXFormat{LaTeX2e}
\ProvidesClass{schwalbe}[2013/01/11]
\LoadClass[11pt]{article}
\RequirePackage{schwalbe}
\RequirePackage{ifthen}
%    \end{macrocode}
%
% Innerhalb der Schwalbe haben wir ein spezielles Seitenlayout.
%    \begin{macrocode}
\hoffset-25mm
\voffset-25mm
\textheight26cm
\textwidth157mm
\oddsidemargin22.5mm
\topmargin19mm
\headheight0cm
\headsep0cm
% \footheight14pt
\footskip10mm
\parindent0mm
\parskip1ex plus 1ex minus .5ex
\def\@oddhead{}
\def\@oddfoot{%
   \ifodd\c@page%
      \hbox to \textwidth{\hfill\thepage}%
   \else%
      \hbox to \textwidth{\thepage\hfill}%
   \fi%
}
%    \end{macrocode}
%
% Wir wollen Fussnoten noch lesbar haben. Daher uebernehmen wir
% die \verb+\footnotesize+ definition wie bei 12pt.
%    \begin{macrocode}
\renewcommand\footnotesize{%
   \@setfontsize\footnotesize\@xpt\@xiipt
   \abovedisplayskip 10\p@ \@plus2\p@ \@minus5\p@
   \abovedisplayshortskip \z@ \@plus3\p@
   \belowdisplayshortskip 6\p@ \@plus3\p@ \@minus3\p@
   \def\@listi{\leftmargin\leftmargini
               \topsep 6\p@ \@plus2\p@ \@minus2\p@
               \parsep 3\p@ \@plus2\p@ \@minus\p@
               \itemsep \parsep}%
   \belowdisplayskip \abovedisplayskip
}
%    \end{macrocode}
%
% Der Befehl \verb+\Heft+ leitet jedes Heft ein. Damit werden
% Band, Heftnummer, Monat, Jahr und erste Seitennummer des Heftes 
% spezifiziert.
%    \begin{macrocode}
\newcommand{\Heft}[5]{%
   \def\heft@band{#1}%
   \def\heft@nr{#2}%    
   \def\heft@monat{#3}%
   \def\heft@year{#4}%
   \setcounter{page}{#5}%
   \hbox to \textwidth{\vbox to 60mm{\vfill}\hfill}%
   \hbox to \textwidth{%
      {\large\bfseries HEFT~#2}%
      \hfill%
      {\large\bfseries BAND #1}%
      \hfill%
      {\large\bfseries #3~#4}%
   }%
   \vskip2mm%
   \hrule width \textwidth height 1\p@%
   %\input{intro}%
   \vskip5mm%
}
%    \end{macrocode}
%
% Eine Umgebung f"ur ein Editorial. Als optionaler Parameter kann die
% "Uberschrift im Text angegeben werden. Der andere Parameter wird f"ur den
% Eintrag im Inhaltsverzeichnis benutzt.
%    \begin{macrocode}
\newenvironment{Editorial}[2][Editorial]{%
   \ttitel@skip%
   \centerline{\Large\bfseries #1}%
   \titel@skip%
   \stepcounter{@inhalt}%
   \inhalt@label\relax%
   \begingroup%
      \def\@tempa{#2}%
      \def\@tempb{\editorial}%
      \edef\@tempc{%
         \write\sw@contents{%
            \@nearverbatim\@tempb{%
               {\@nearverbatim\@tempa}%
               {\@nearverbatim\pageref{inhalt\@nameuse{the@inhalt}}}%
            }%
         }%
      }%
   \expandafter\endgroup\@tempc%
}{}
%    \end{macrocode}
%
% Eine Umgebung f"ur {\itshape AKTUELLE MELDUNGEN}, die die "Uberschrift und
% den Eintrags ins Inhaltsverzeichnis erzeugt.
%    \begin{macrocode}
\newenvironment{aktuell}{%
   \ttitel@skip%
   \centerline{\Large\itshape AKTUELLE MELDUNGEN}
   \titel@skip%
   \stepcounter{@inhalt}%
   \inhalt@label\relax%
   % Eintrag im Inhaltsverzeichnis
    \bgroup%
      \def\@tempb{\aktuell}%
        \edef\@tempa{
            \write\sw@contents{%
            \@nearverbatim\@tempb{%
            {\@nearverbatim\pageref{inhalt\@nameuse{the@inhalt}}}%
                }%
            }%
        }%
    \expandafter\egroup\@tempa%
}{}
%    \end{macrocode}
%
% F"ur Informalturniere der Schwalbe gibt es eine besondere Umgebung, die die 3
% Parameter {\itshape Abteilung}, {\itshape Jahr} und {\itshape Preisrichter}
% ben"otigt.  Die normale Form der Umgebung erzeugt auch die "Uberschrift.
% Falls dies unterdr"uckt werden mu"s -- um z.\,B. die "Uberschrift speziell zu
% formatieren, kann die {\bfseries Stern-Form} der Umgebung genutzt werden.
% Daher findet die Auswertung der Parameter in den Kommandos
% \verb+\x@InformalEntscheid+ und \verb+\y@InformalEntscheid+ statt.
%    \begin{macrocode}
\newenvironment{InformalEntscheid}{%
    \@ifstar{\x@InformalEntscheid}{\y@InformalEntscheid}%
}{}
\newcommand{\x@InformalEntscheid}[3]{%
   \stepcounter{@inhalt}%
   \inhalt@label\relax%
   % Weitere Einstellungen
   \def\@dia@numberx{%
      \if@special%
         \thediag\ %
      \else\ifdi@no%
         \if@sourcenr\the\sourcenr@tk\fi\ %
      \fi\fi%
   }%
   % Erzeuge den Eintrag f\"ur das Inhaltsverzeichnis
   \bgroup%
      \def\@tempb{\InformalEntscheid}%
      \def\@tempc{#1}%
      \def\@tempd{#2}%
      \def\@tempe{#3}%
      \edef\@tempa{%
            \write\sw@contents{%
            \@nearverbatim\@tempb{%
                    {\@nearverbatim\@tempc}%
                    {\@nearverbatim\@tempd}%
                    {\@nearverbatim\@tempe}%
          {\@nearverbatim\pageref{inhalt\@nameuse{the@inhalt}}}%
                }%
            }%
      }%
   \expandafter\egroup\@tempa%
}
\newcommand{\y@InformalEntscheid}[3]{%
   \ttitel@skip%
   \vbox{%
      \centerline{\Large\bfseries Entscheid im Informalturnier #2 der Schwalbe}%
      \centerline{\bfseries Abteilung: #1\hskip1cm Preisrichter: #3}%
   }%
   \titel@skip%
   \x@InformalEntscheid{#1}{#2}{#3}%
}
%    \end{macrocode}
%
% Die Umgebung f"ur Aufs"atze. Die Parameter ({\itshape Titel} und {\itshape
% Autoren (mit Wohnorten)}) werden f"ur das Inhaltsverzeichnis verwendet.
%    \begin{macrocode}
\newenvironment{Aufsatz}[2]{%
   \stepcounter{@inhalt}%
   \let\titel@ext\inhalt@label\relax%
   \begingroup%
      \setcounter{footnote}{0}%
      \def\@tempa{#1}%
      \def\@tempc{\aufsatz}%
      \def\@tempb{#2}%
      \edef\@tempd{%
         \write\sw@contents{%
            \@nearverbatim\@tempc{%
               {\@nearverbatim\pageref{inhalt\@nameuse{the@inhalt}}}%
               {\@nearverbatim\@tempa}%
               {\@nearverbatim\@tempb}%
            }%
         }%
      }%
   \expandafter\endgroup\@tempd%
}{}
%    \end{macrocode}
%
% Innerhalb der Umgebung \verb+Urdrucke+ werden
% die Diagramme immer zu dritt nebeneinander gesetzt -
% sofern dies pa"st. Au"serdem werden von jedem Diagramm
% die Autoren sowie Diagramm und Seitennummern in die 
% Datei \jobname.inhalt geschrieben.
%    \begin{macrocode}
\newenvironment{Urdrucke}[1]{%
    \setboolean{showcity}{true}%
    \nocomputer%
    \diagnumbering{arabic}%
    \diagnum{#1}%
    \@urdrucktrue%
    \def\do@dia@job{%    
        % Gebe das Diagramm aus
        \unhbox\dia@box%
        % Erzeuge die Eintr"age f"ur das Inhaltsverzeichnis
        \sw@problem%
    }%
    \ttitel@skip%
    \centerline{\Large\bfseries Urdrucke}%
    \titel@skip%
    \stepcounter{@inhalt}%
    \inhalt@label\relax%
    % Eintrag im Inhaltsverzeichnis
    \bgroup%
       \def\@tempb{\Urdrucke}%
     \edef\@tempa{
       \write\sw@contents{%
             \@nearverbatim\@tempb{%
                {\@nearverbatim\pageref{inhalt\@nameuse{the@inhalt}}}%
         }%
       }%
     }%
    \expandafter\egroup\@tempa%
}{}
%    \end{macrocode}
%
% Die Umgebung f"ur L"osungen ben"otigt 2 Parameter:
% \begin{enumerate}
% \item die Nummer des Heftes mit den Urdrucken
% \item Monat und Jahr
% \end{enumerate}
%    \begin{macrocode}
\newenvironment{Loesungen}[2]{%
    \begingroup%
   \ttitel@skip%
   \centerline{\Large\bfseries L\"osungen der Urdrucke aus Heft #1, #2}%
   \titel@skip%
   \stepcounter{@inhalt}%
   \inhalt@label\relax%
   % Eintrag im Inhaltsverzeichnis
    \bgroup%
      \def\@tempb{\Loesungen}%
      \def\@tempc{#1}%
      \def\@tempd{#2}%
        \edef\@tempa{
            \write\sw@contents{%
            \@nearverbatim\@tempb{%
                    {\@nearverbatim\@tempc}%
                    {\@nearverbatim\@tempd}%
                {\@nearverbatim\pageref{inhalt\@nameuse{the@inhalt}}}%
                }%
            }%
        }%
    \expandafter\egroup\@tempa%
   \parskip.5ex plus 2ex%
   \catcode`/=\active%
}{%
   \catcode`/=12%
    \endgroup%
}
%    \end{macrocode}
%
% Eine Umbegung f"ur die L"oserliste.
%    \begin{macrocode}
\newenvironment{Loeserliste}[1]{%
   \ttitel@skip%
   \centerline{\Large\bfseries L\"oserliste #1}%
   \titel@skip%
   \stepcounter{@inhalt}%
   \inhalt@label\relax%
   % Eintrag im Inhaltsverzeichnis
   \bgroup%
       \def\@tempb{\Loeserliste}%
     \edef\@tempa{
       \write\sw@contents{%
             \@nearverbatim\@tempb{%
                {\@nearverbatim\pageref{inhalt\@nameuse{the@inhalt}}}%
         }%
       }%
     }%
   \expandafter\egroup\@tempa%
}{}
%    \end{macrocode}
%
% Eine Zwischen"uberschrift f"ur {\itshape Sonderpunkte \& Dauerkonto}.
%    \begin{macrocode}
\newcommand{\dauerkonto}[1]{%
   \ttitel@skip%
   \centerline{\large\bfseries L\"oserliste: Sonderpunkte \& Dauerkonto #1}%
   \titel@skip%
}
%    \end{macrocode}
%
% Eine Zwischen"uberschrift f"ur den Preisbericht zum L\"osungswettbewerb.
%    \begin{macrocode}
\newcommand{\loesungswettbewerb}[1]{
   \ttitel@skip%
   \centerline{\Large\bfseries Preisbericht zum L\"osungswettbewerb #1}%
   \titel@skip%
}
%    \end{macrocode}
%
% Die Umgebung f"ur {\bfseries Bemerkungen und Berichtigungen} erzeugt die
% "Uberschrift und den Eintrag ins Inhaltsverzeichnis.
%    \begin{macrocode}
\newenvironment{BuB}{%
   \ttitel@skip%
   \centerline{\Large\bfseries Bemerkungen und Berichtigungen}%
   \titel@skip%
   \stepcounter{@inhalt}%
   \inhalt@label\relax%
   \bsol%
   % Eintrag im Inhaltsverzeichnis
    \bgroup%
      \def\@tempb{\bub}%
        \edef\@tempa{
            \write\sw@contents{%
            \@nearverbatim\@tempb{%
                {\@nearverbatim\pageref{inhalt\@nameuse{the@inhalt}}}%
                }%
            }%
        }%
    \expandafter\egroup\@tempa%
}{\esol}
%
\newcommand{\Briefkasten}{%
   \titel@skip%
   {\large\bfseries Briefkasten}%
   \hskip1em%
}
%    \end{macrocode}
%
% Die folgenden werden benutzt im Titel zu setzen und ggfs\@. entsprechende
% \verb+\label+ zu registrieren.
%    \begin{macrocode}
\let\titel@ext\relax
\newcounter{@inhalt}
\setcounter{@inhalt}{0}
\def\the@inhalt{\@arabic\c@@inhalt}
\def\inhalt@label{\label{inhalt\@nameuse{the@inhalt}}}
\def\Titel{\ttitel@skip\centering\addtolength{\baselineskip}{4pt}}
\def\endTitel{\titel@skip\titel@ext}
\def\Untertitel{\subtitel@skip\centering}
\def\endUntertitel{\subtitel@subskip}
%    \end{macrocode}
%
% Eine Umgebung f"ur Berichte ohne automatisch erstellte "Uberschrift.
% Der "ubergebene Wert wird in das Inhaltsverzeichnis "ubernommen.
%    \begin{macrocode}
\newenvironment{Bericht}[1]{%
   % Erzeuge den Eintrag f\"ur das Inhaltsverzeichnis
   \stepcounter{@inhalt}%
   \let\titel@ext\inhalt@label\relax%
   \bgroup%
      \def\@tempb{\Bericht}%
      \def\@tempc{#1}%
      \edef\@tempa{%
            \write\sw@contents{%
            \@nearverbatim\@tempb{%
                    {\@nearverbatim\@tempc}%
                    {\@nearverbatim\pageref{inhalt\@nameuse{the@inhalt}}}%
                }%
            }%
      }%
   \expandafter\egroup\@tempa%
}{}
%    \end{macrocode}
%
% Eine Umgebung f"ur Gr"usse ohne automatisch erstellte "Uberschrift.
% Der "ubergebene Wert wird in das Inhaltsverzeichnis "ubernommen.
%    \begin{macrocode}
\newenvironment{Gruss}[1]{%
   % Eintrag im Inhaltsverzeichnis
   \stepcounter{@inhalt}%
   \let\titel@ext\inhalt@label\relax%
    \bgroup%
      \def\@tempb{\Bericht}%
      \def\@tempc{#1}%
        \edef\@tempa{
            \write\sw@contents{%
            \@nearverbatim\@tempb{%
                    {\@nearverbatim\@tempc}%
                    {\@nearverbatim\pageref{inhalt\@nameuse{the@inhalt}}}%
                }%
            }%
        }%
    \expandafter\egroup\@tempa%
}{}
%    \end{macrocode}
%
% Eine Umgebung f"ur Tagungsberichte ohne automatisch erstellte "Uberschrift.
% Der "ubergebene Wert wird in das Inhaltsverzeichnis "ubernommen.
%    \begin{macrocode}
\newenvironment{Tagung}[1]{%
   % Eintrag im Inhaltsverzeichnis
   \stepcounter{@inhalt}%
   \let\titel@ext\inhalt@label\relax%
    \bgroup%
      \def\@tempb{\Bericht}%
      \def\@tempc{#1}%
        \edef\@tempa{
            \write\sw@contents{%
            \@nearverbatim\@tempb{%
                    {\@nearverbatim\@tempc}%
          {\@nearverbatim\pageref{inhalt\@nameuse{the@inhalt}}}%
                }%
            }%
        }%
    \expandafter\egroup\@tempa%
}{}
%    \end{macrocode}
%
% Bei Turnierberichten wird nur ein Eintrag ins Inhaltsverzeichnis erzeugt.
% Die "Uberschrift muss in der Umgebung \verb+Titel+ gesetzt werden.
%    \begin{macrocode}
\newenvironment{Turnierbericht}[2]{%
   \stepcounter{@inhalt}%
   \let\titel@ext\inhalt@label\relax%
   % Erzeuge den Eintrag f\"ur das Inhaltsverzeichnis
   \bgroup%
      \def\@tempb{\Turnierbericht}%
      \def\@tempc{#1}%
      \def\@tempd{#2}%
      \edef\@tempa{%
            \write\sw@contents{%
            \@nearverbatim\@tempb{%
                    {\@nearverbatim\@tempc}%
                    {\@nearverbatim\@tempd}%
                {\@nearverbatim\pageref{inhalt\@nameuse{the@inhalt}}}%
                }%
            }%
      }%
   \expandafter\egroup\@tempa%
}{}
%    \end{macrocode}
%
% Die Umbegung f"ur Berichte von Turnieren aus anderen Zeitschriften.
%    \begin{macrocode}
% Turnierberichte aus anderen Zeitschriften
\newenvironment{turnierberichte}{%
   \ttitel@skip%
   \vbox{\centering\Large\bfseries Turnierberichte}%
   \titel@skip%
   \stepcounter{@inhalt}%
   \inhalt@label\relax%
   \nodiagnumbering%
   % Eintrag im Inhaltsverzeichnis
    \bgroup%
      \def\@tempb{\Turnierberichte}%
        \edef\@tempa{
            \write\sw@contents{%
            \@nearverbatim\@tempb{%
                {\@nearverbatim\pageref{inhalt\@nameuse{the@inhalt}}}%
                }%
            }%
        }%
    \expandafter\egroup\@tempa%
}{}
%
\newcommand{\turnier}[1]{%
   \vskip\tw@\p@%
   {\large\bfseries#1}%
   \par%
}
%   \end{macrocode}
%
% Das {\itshape kleine M"archenschach-Lexikon} im Urdruckteil kann in mehrere
% Abschnitte zerlegt werden, damit es besser auf die Seiten passt. Bei der
% ersten \verb+maerchenlexikon+ Umgebung steht die Einleitung.  Zwei
% M"archenarten werden mittels \verb+---+ voneinander getrennt.
%   \begin{macrocode}
\newcounter{@maerchenlexikon}
\setcounter{@maerchenlexikon}{0}
\newboolean{@first@lexikon@entry}
\newcommand{\maerchenart}[1]{%
  \ifthenelse{\boolean{@first@lexikon@entry}}{%
    \setboolean{@first@lexikon@entry}{false}%
  }{%
    --- %
  }%
  {\itshape #1:} \ignorespaces%
}
\newenvironment{maerchenlexikon}%
{%
  \ifthenelse{\value{@maerchenlexikon}=0}{%
    {\itshape Kleines M\"archenschach-Lexikon:} %
  }{}%
  \setboolean{@first@lexikon@entry}{true}%
  \stepcounter{@maerchenlexikon}%
}{}
%    \end{macrocode}
%
% Die Umbegung \verb+Entscheid+ erzeugt einen Eintrag ins Inhaltsverzeichnis.
% Als Parameter ist der Name des Turnier anzugeben.
% Die "Uberschrift muss mittels der Umbebung \verb+Titel+ gesetzt werden.
%    \begin{macrocode}
\newenvironment{Entscheid}[1]{%
   % Erzeuge den Eintrag f\"ur das Inhaltsverzeichnis
   \stepcounter{@inhalt}%
   \let\titel@ext\inhalt@label\relax%
   \bgroup%
      \def\@tempb{\Entscheid}%
      \def\@tempc{#1}%
      \edef\@tempa{%
            \write\sw@contents{%
            \@nearverbatim\@tempb{%
                    {\@nearverbatim\@tempc}%
                {\@nearverbatim\pageref{inhalt\@nameuse{the@inhalt}}}%
                }%
            }%
      }%
   \expandafter\egroup\@tempa%
}{}
%    \end{macrocode}
%
% Buchbesprechungen werden in die entsprechende Umgebung gesetzt.
%    \begin{macrocode}
\newboolean{@firstbook}
\setboolean{@firstbook}{true}
\newcounter{@buecher}
\setcounter{@buecher}{0}
\newenvironment{Buecher}{%
    \ttitel@skip%
    \centerline{\Large\bfseries \ifthenelse{\value{@buecher}=1}{Buchbesprechung}{Buchbesprechungen}}%
    \titel@skip%
    \setboolean{@firstbook}{true}%
    \stepcounter{@inhalt}%
    \inhalt@label\relax%
    % Eintrag im Inhaltsverzeichnis
    \bgroup%
        \ifthenelse{\value{@buecher}=1}{\def\@tempb{\Buch}}{\def\@tempb{\Buecher}}%
        \edef\@tempa{
            \write\sw@contents{%
            \@nearverbatim\@tempb{%
                {\@nearverbatim\pageref{inhalt\@nameuse{the@inhalt}}}%
                }%
            }%
        }%
    \expandafter\egroup\@tempa%
    \setcounter{@buecher}{0}%
}{%
   \immediate\write\@auxout{\string\setcounter{@buecher}{\arabic{@buecher}}}%
}
%    \end{macrocode}
%
% Mit dem Befehl \verb+\Buch+ soll jedes Buch beginnen. Als Parameter
% sind:
%     1. Autor(en) und
%     2. Titel des Buches
% anzugeben. Beide Angaben erscheinen Fettgedruckt am Beginn der
% Buchbesprechung und werden f"ur das Register "ubernommen.
%
% Schreiben der Autoren
%
%    \begin{macrocode}
\def\@book@authors#1; {%
   \if@notfirst%
      , %
   \else%
      \noindent%
      \@notfirsttrue%
   \fi%
   \@fullname#1; %
   \l@@klist%
}
%
\newcommand{\Buch}[2]{%
    \ifthenelse{\boolean{@firstbook}}{%
        \titel@skip%
        \setboolean{@firstbook}{false}%
    }{%
        \par%
    }%
   \stepcounter{@buecher}%
   \bgroup%
      \bfseries%
      \ifx\relax#1\else%
         \@notfirstfalse
         \let\@action\@book@authors%
         \l@@klist#1; \e@list%
         : %
      \fi%
      \itshape #2\ \ignorespaces%
   \egroup%
}
%    \end{macrocode}
%
% Besprechungen von Web-Sites.
%    \begin{macrocode}
\newboolean{@firstwebsite}
\setboolean{@firstwebsite}{true}
\newcounter{@websites}
\setcounter{@websites}{0}
\newenvironment{WebSites}{%
    \ttitel@skip%
    \centerline{\Large\bfseries \ifthenelse{\value{@websites}=1}{Web-Site Besprechung}{Web-Site Besprechungen}}%
    \titel@skip%
    \setboolean{@firstwebsite}{true}%
    \stepcounter{@inhalt}%
    \inhalt@label\relax%
    % Eintrag im Inhaltsverzeichnis
    \bgroup%
        \ifthenelse{\value{@websites}=1}{\def\@tempb{\WebSite}}{\def\@tempb{\WebSites}}%
        \edef\@tempa{
            \write\sw@contents{%
            \@nearverbatim\@tempb{%
                {\@nearverbatim\pageref{inhalt\@nameuse{the@inhalt}}}%
                }%
            }%
        }%
    \expandafter\egroup\@tempa%
    \setcounter{@websites}{0}%
}{%
   \immediate\write\@auxout{\string\setcounter{@websites}{\arabic{@websites}}}%
}
\newcommand{\WebSite}[1]{%
    \ifthenelse{\boolean{@firstwebsite}}{%
        \titel@skip%
        \setboolean{@firstwebsite}{false}%
    }{%
        \par%
    }%
   \stepcounter{@websites}%
   {\bfseries#1}%
}
%    \end{macrocode}
%    \begin{macrocode}
%-----------------------------------------------------------
% 5) Ausschreibungen von Turnieren
%    Parameter:
%        1. Titel des Turniers
%  oder (mit *)
%     1. Titel des Turniers
%     2. Untertitel (z. B. Ort und Datum)
%
\def\aTurnier{%
   \@ifstar{\x@Turnier}{\y@Turnier}%
}
\def\TurnierAusschreibung#1{%
   \stepcounter{@inhalt}%
   \inhalt@label\relax%
   % Eintrag im Inhaltsverzeichnis
   \bgroup%
       \def\@tempb{\TurnierAusschreibung}%
       \def\@tempc{#1}%
     \edef\@tempa{
       \write\sw@contents{%
             \@nearverbatim\@tempb{%
                {\@nearverbatim\@tempc}%
                {\@nearverbatim\pageref{inhalt\@nameuse{the@inhalt}}}%
         }%
       }%
     }%
   \expandafter\egroup\@tempa%
}
%
\def\x@Turnier#1#2{%
   \ttitel@skip%
   \vbox{%
      \centering%
      {\large\bfseries\uppercase{#1}}\\[3mm]
      {\bfseries#2}%
   }%
   \titel@skip%
}
%
\def\y@Turnier#1{%
   \ttitel@skip%
   \vbox{%
      \centering%
      \large\bfseries\uppercase{#1}%
   }%
   \titel@skip%
}
%
\def\bTurnier{%
   \@ifstar{\by@turnier}{\bx@turnier}%
}
%
\def\sw@turnier{%
}
%
\def\bx@turnier#1#2{%
   \ttitel@skip%
   \vbox{%
      \centering%
      {\Large\bfseries#1}\\
      \bgroup%
      \bfseries%
      \@firsttrue%
      \let\@action=\sw@author%
      \l@@klist#2; \e@list%
      \egroup%
   }%
   \titel@skip%
   \diagnum{1}%
}
%
\def\by@turnier#1{%
   \ttitel@skip%
   \vbox{%
      \centering
      {\Large\bf#1}
   }%
   \titel@skip%
   \diagnum{1}%
}
%
\def\eEntscheid{%
   \@ifstar{\i@eEntscheid}{\ii@eEntscheid}%
}
%
\def\i@eEntscheid#1{%
   \ttitel@skip%
   \vbox{%
      \centering
      \Large\bfseries#1%
   }%
   \titel@skip%
}
%
\def\ii@eEntscheid#1#2{%
   \ttitel@skip%
   \vbox{%
      \centering%
      \Large\bfseries#1\\
      \large\bfseries#2%
   }%
   \stepcounter{@inhalt}%
   \inhalt@label\relax%
   \bgroup%
      \def\@tempb{\Bericht}%
      \def\@tempc{#1}%
      \edef\@tempa{%
            \write\sw@contents{%
            \@nearverbatim\@tempb{%
                    {\@nearverbatim\@tempc}%
                {\@nearverbatim\pageref{inhalt\@nameuse{the@inhalt}}}%
                }%
            }%
      }%
   \expandafter\egroup\@tempa%
   \titel@skip%
}
%-----------------------------------------------------------
% 7) Personalia: Geburtstage und Sterbef"alle
%    Parameter: (Geburt)
%        1. Name
%        2. Alter
%    Parameter: (Verstorben)
%        1. Name
%     2. Daten
%
\newif\if@title\@titletrue
\def\Geburtstag{%
    \@ifnextchar *{\@@Geburtstag}{\@Geburtstag}%
}
\def\@@Geburtstag#1{\@titlefalse\@Geburtstag}%
\def\@Geburtstag{%
  \@ifnextchar [{\y@Geburtstag}{\x@Geburtstag}%
}
\def\x@Geburtstag#1#2{%
   \if@title%
   \ttitel@skip%
   \centerline{\Large\bfseries#1\ \ #2}
   \titel@skip%
   \fi%
   % Erzeuge den Eintrag f\"ur das Inhaltsverzeichnis
   \stepcounter{@inhalt}%
   \inhalt@label\relax%
   \bgroup%
      \def\@tempb{\Geburtstag}%
      \def\@tempc{#1}%
      \def\@tempd{#2}%
      \edef\@tempa{%
            \write\sw@contents{%
            \@nearverbatim\@tempb{%
                    {\@nearverbatim\@tempc}%
                    {\@nearverbatim\@tempd}%
          {\@nearverbatim\pageref{inhalt\@nameuse{the@inhalt}}}%
                }%
            }%
      }%
   \expandafter\egroup\@tempa%
}
\def\y@Geburtstag[#1]#2#3{%
   \if@title%
   \ttitel@skip%
   \centerline{#1}
   \titel@skip%
   \fi%
   % Erzeuge den Eintrag f\"ur das Inhaltsverzeichnis
   \stepcounter{@inhalt}%
   \inhalt@label\relax%
   \bgroup%
      \def\@tempb{\Geburtstag}%
      \def\@tempc{#2}%
      \def\@tempd{#3}%
      \edef\@tempa{%
            \write\sw@contents{%
            \@nearverbatim\@tempb{%
                    {\@nearverbatim\@tempc}%
                    {\@nearverbatim\@tempd}%
                {\@nearverbatim\pageref{inhalt\@nameuse{the@inhalt}}}%
                }%
            }%
      }%
   \expandafter\egroup\@tempa%
}
%
\def\Verstorben{\@ifstar{\y@Verstorben}{\x@Verstorben}}
\def\x@Verstorben#1#2{%
   \ttitel@skip%
   \hbox to \textwidth{\large\bf\uppercase{#1}\hfill#2}%
   \titel@skip%
   % Erzeuge den Eintrag f\"ur das Inhaltsverzeichnis
   \stepcounter{@inhalt}%
   \inhalt@label\relax%
   \bgroup%
      \def\@tempb{\Verstorben}%
      \def\@tempc{#1}%
      \def\@tempd{#2}%
      \edef\@tempa{%
            \write\sw@contents{%
            \@nearverbatim\@tempb{%
                    {\@nearverbatim\@tempc}%
                    {\@nearverbatim\@tempd}%
                {\@nearverbatim\pageref{inhalt\@nameuse{the@inhalt}}}%
                }%
            }%
      }%
   \expandafter\egroup\@tempa%
}
%
\def\y@Verstorben#1{%
   % Erzeuge den Eintrag f\"ur das Inhaltsverzeichnis
   \stepcounter{@inhalt}%
   \inhalt@label\relax%
   \bgroup%
      \def\@tempb{\Verstorben}%
      \def\@tempc{#1}%
      \edef\@tempa{%
            \write\sw@contents{%
            \@nearverbatim\@tempb{%
                    {\@nearverbatim\@tempc}%
                {\@nearverbatim\pageref{inhalt\@nameuse{the@inhalt}}}%
                }%
            }%
      }%
   \expandafter\egroup\@tempa%
}
%
\def\Nachruf#1{%
   % Erzeuge den Eintrag f\"ur das Inhaltsverzeichnis
   \stepcounter{@inhalt}%
   \bgroup%
      \def\@tempb{\Verstorben}%
      \def\@tempc{#1}%
      \edef\@tempa{%
            \write\sw@contents{%
            \@nearverbatim\@tempb{%
                    {\@nearverbatim\@tempc}%
                {\@nearverbatim\pageref{inhalt\@nameuse{the@inhalt}}}%
                }%
            }%
      }%
   \expandafter\egroup\@tempa%
}
%
%-----------------------------------------------------------
% 9) Einladungen zu Tagungen u. Turnieren
\def\Einladung{%
   \@ifnextchar[{\@@Einladung}{\@Einladung}%
}
\def\@Einladung#1{%
   \ttitel@skip%
   \vbox{%
      \centering%
      \large\bf\uppercase{#1}%
   }%
   \titel@skip%
}
\def\@@Einladung[#1]#2{%
   \ttitel@skip%
   \vbox{%
      \centering%
      \large\bf\uppercase{#2}%
   }%
   \titel@skip%
   \bgroup%
      \def\@tempb{\Einladung}%
      \def\@tempc{#1}%
      \edef\@tempa{%
            \write\sw@contents{%
            \@nearverbatim\@tempb{%
                    {\@nearverbatim\@tempc}%
               {\@nameuse{thepage}}%
                }%
            }%
      }%
   \expandafter\egroup\@tempa%
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Es folgen ein paar Hilfskommandos und Initialsierungen
%-----------------------------------------------------------
% 1. "Offnen der datei, die alle Eintr"age f"ur das 
%    Inhaltsverzeichnis enth"alt.
%
\newwrite\sw@contents
\immediate\openout\sw@contents=\jobname.inhalt\relax
\newwrite\sw@problems
\immediate\openout\sw@problems=\jobname.problems\relax
%-----------------------------------------------------------
% 2. Abstand zu einer "Uberschrift und 
%    von einer "Uberschrift zum folgenden Text
%
% \def\ttitel@skip{\vskip30\p@ plus \f@ur\p@\penalty-100}
\def\ttitel@skip{\vskip24\p@ plus \f@ur\p@\goodbreak}
\def\titel@skip{\nopagebreak\vskip\tw@\p@}
\def\subtitel@skip{\vskip10\p@ plus \f@ur\p@ minus \f@ur\p@ \penalty-100}
\def\subtitel@subskip{\nopagebreak\vskip\@ne\p@}
%----------------------------------------------------------- 
% 3. Setzen von Autoren eines Aufsatzes
%
\def\sw@author#1; {%
    \sw@writeauthor#1;%
    \l@@klist%
}
%
\def\sw@writeauthor#1, #2/#3;{%
   \if@first%
      von~%
      \@firstfalse%
   \else%
      \ \&\ %
   \fi%
    #2~#1, #3%
}
%-----------------------------------------------------------
% 4. Schreiben der Autoren von Urdrucken in das 
%    Inhaltsverzeichnis
%
\newif\if@gemeinschaft
\def\sw@problem{%
    % Z"ahle die Autoren
    \sw@count\z@%
    \let\@action=\sw@authorCount%
    \expandafter\l@@klist\the\aut@tk; \e@list%
    \ifnum\sw@count>\@ne%
        \@gemeinschafttrue%
    \else%
        \@gemeinschaftfalse%
    \fi%
    \bgroup%
        \let\@action=\sw@problemAuthor%
        \expandafter\l@@klist\the\aut@tk; \e@list%
    \egroup%
}
% Schreiben eines einzelnen Autors in das Inhaltsverzeichnis
%
\def\sw@problemAuthor#1; {%
    \bgroup%
    \def\@tempc{\problem}%
    \def\@tempb{#1}%
    \edef\@tempa{%
        \write\sw@problems{%
            \@nearverbatim\@tempc{%
                {\@nameuse{thepage}}%
                \if@special%
                    {\@nearverbatim\thediag}%
                \else%
                    {\thediag}%
                \fi%
                {\@nearverbatim\@tempb}%
                {\if@urdruck\else n\fi\if@gemeinschaft g\fi}%
            }%
        }%
    }%
    \expandafter\egroup\@tempa%
    \l@@klist%
}
%-----------------------------------------------------------
% 5. Z"ahlen von Autoren
%
\newcount\sw@count
\def\sw@authorCount#1; {%
    \advance\sw@count\@ne%
    \l@@klist%
}
%-----------------------------------------------------------
% 6. F"ur das Schreiben in die inhaltsdatei ohne 
%    Kommandos zu expandieren.
\def\@meaning#1>{}
\def\@nearverbatim{\expandafter\@meaning\meaning}
%-----------------------------------------------------------
\def\i@line#1#2{#1 \hrulefill\ #2\newline}
%-----------------------------------------------------------
% Setzen von Autoren im Inhaltsverzeichnis
%
\def\iw@author#1; {%
    \iw@writeauthor#1;%
    \l@@klist%
}
%
\def\iw@writeauthor#1, #2/#3;{%
   \if@first%
      \@firstfalse%
   \else%
      , \ %
   \fi%
    #2~#1%
}
%-----------------------------------------------------------
\def\ix@Geburtstag#1#2#3{\i@line{#1\ \ #2}{#3}}
\def\ix@aufsatz#1#2#3{%
  \i@line{{\itshape %
  \@firsttrue%
  \let\@action\iw@author\relax%
  \aut@tk={#3}%
  \@parseTokenlist\aut@tk;%
  :\/} #2}{#1}%
}
\def\ix@InformalEntscheid#1#2#3#4{\i@line{Entscheid im Informalturnier #2, Abteilung #1}{#4}}
\def\ix@Loesungen#1#2#3{\i@line{L\"osungen der Urdrucke aus Heft #1, #2}{#3}}
\def\ix@turnierbericht#1#2#3{%
  \i@line{Entscheid im #1}{#3}%
}
\def\ix@bericht#1#2{\i@line{#1}{#2}}
\def\ix@einladung#1#2{\i@line{#1}{#2}}
\def\ix@verstorben#1#2{\i@line{#1}{#2}}
\def\ix@entscheid#1#2{\i@line{#1}{#2}}
\def\ix@editorial#1#2{\i@line{#1}{#2}}
\def\ix@ausschreibung#1#2{\i@line{#1}{#2}}
%----------------------------------------------------------- 
\def\i@Geburtstag#1{\ix@Geburtstag#1}
\def\i@aufsatz#1{\ix@aufsatz#1}
\def\i@aktuell#1{\i@line{Aktuelle Meldungen}{#1}}
\def\i@InformalEntscheid#1{\ix@InformalEntscheid#1}
\def\i@urdrucke#1{\i@line{Urdrucke}{#1}}
\def\i@Loesungen#1{\ix@Loesungen#1}
\def\i@Loeserliste#1{\i@line{L\"oserliste}{#1}}
\def\i@bub#1{\i@line{Bemerkungen und Berichtigungen}{#1}}
\def\i@turniere#1{\i@line{Turnierberichte}{#1}}
\def\i@buecher#1{\i@line{Buchbesprechungen}{#1}}
\def\i@buch#1{\i@line{Buchbesprechung}{#1}}
\def\i@websites#1{\i@line{Web-Site Besprechungen}{#1}}
\def\i@website#1{\i@line{Web-Site Besprechung}{#1}}
\def\i@turnierbericht#1{\ix@turnierbericht#1}
\def\i@bericht#1{\ix@bericht#1}
\def\i@einladung#1{\ix@einladung#1}
\def\i@verstorben#1{\ix@verstorben#1}
\def\i@entscheid#1{\ix@entscheid#1}
\def\i@editorial#1{\ix@editorial#1}
\def\i@TurnierAusschreibung#1{\ix@ausschreibung#1}
%-----------------------------------------------------------
\def\Inhalt{%
   \centerline{\bfseries INHALT}%
   \vspace{-.5mm}
   \begingroup%
   \let\Geburtstag=\i@Geburtstag%
   \let\aufsatz=\i@aufsatz%
   \let\aktuell=\i@aktuell%
   \let\InformalEntscheid=\i@InformalEntscheid%
   \let\Urdrucke=\i@urdrucke%
   \let\Loesungen=\i@Loesungen%
   \let\Loeserliste=\i@Loeserliste%
   \let\bub=\i@bub%
   \let\Turnierberichte=\i@turniere%
   \let\Turnierbericht=\i@turnierbericht%
   \let\Bericht=\i@bericht%
   \let\Einladung=\i@einladung%
   \let\Buecher=\i@buecher%
   \let\Buch=\i@buch%
   \let\WebSites=\i@websites%
   \let\WebSite=\i@website%
   \let\Verstorben=\i@verstorben%
   \let\Entscheid=\i@entscheid%
   \let\editorial=\i@editorial%
   \let\TurnierAusschreibung=\i@TurnierAusschreibung%
   \immediate\closeout\sw@contents\relax%
   \input\jobname.inhalt%
   \noindent\hbox{}\endgroup%
}
%-----------------------------------------------------------
\def\i@author#1, #2; {\if@first\@firstfalse\else, \fi#2~#1\l@@klist}

\def\aufsatz#1#2#3{%
   \bgroup
      \itshape 
      \@firsttrue
      \let\@action=\i@author
      \l@@klist#3; \e@list%
      : %
   \egroup
   #2%
   \hrulefill\ #1\newline
}
\def\sol@slash{\nobreak\hskip\z@ plus 2\p@\char`/\hskip\z@ plus 2\p@\discretionary{}{}{}}
%
\catcode`/=\active\relax\let/\sol@slash\relax\catcode`/=12%
%
\def\bsol{\catcode`/=\active\relax}
\def\esol{\catcode`/=12\relax}
\bsol

\renewcommand{\section}{\@startsection{section}{1}{\z@}{2ex}{.5ex}{\normalfont\large\bfseries}}
\renewcommand{\subsection}{\@startsection{subsection}{2}{\z@}{1ex}{.3ex}{\normalfont\bfseries}}
\renewcommand{\subsubsection}{\@startsection{subsubsection}{3}{\z@}{.4ex}{.1ex}{\normalfont}}
%
%</class>
%    \end{macrocode}
%
% \section{Die Implementierung des {\bfseries\itshape Schwalbe}-Style}
%    \begin{macrocode}
%<*style>
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{schwalbe}[2013/01/11]
% \AtBeginDocument{\normaldia}
%
\RequirePackage[german]{babel}
\RequirePackage{ifthen}
\RequirePackage{diagram}
\usepackage{times}
\usepackage{picinpar}
\usepackage{multicol}
%-----------------------------------------------------------
% Einige Trennhilfen
\hyphenation{Patt-idee Da-men-op-fer nicht-ortho-doxe Grim-shaw}
%
%
\advance\exhyphenpenalty by -10
\tolerance2000\relax
\emergencystretch15\p@
%
%-----------------------------------------------------------
% Ein paar Abk"urzungen:
%
\def\dh{d.\,h.\ \ignorespaces}
\def\ua{u.\,a.\ \ignorespaces}
\def\zB{z.\,B.\ignorespaces}
\def\su{s.\,u.\ignorespaces}
\def\ep{e.\,p.\ignorespaces}
\def\seedia{s.\,Diagr.}
%
%-----------------------------------------------------------
%
% Schmuckzeilen
%
\def\figline{%
\centerline{%
\wK \wK \wK \wK \wK \wK \wK \wK \wK \wK \wK \wK \wK %
\wK \wK \wK \wK \wK \wK \wK \wK \wK \wK \wK \wK \wK %
\wK \wK \wK \wK \wK \wK \wK \wK \wK \wK \wK \wK \wK %
}}
%
%-----------------------------------------------------------
% Freiraum f"ur Fotos
\def\foto#1#2#3{%
  \begin{minipage}[t]{#1}
  \hbox to #1{\hsize#1%
    \vtop to #2{%
      \noindent\hbox{}\vfill\hbox{}%
    }%
  }%
  \par%
  #3%
  \end{minipage}
}%
% Wir definieren das Diagrammlayout ein wenig um
%
\newcommand{\rb}[1]{\raisebox{0.4ex}{#1}}
\nocomputer
\setboolean{piececounter}{true}
\diagcenter
\setmonthstyle{Roman}
\def\normaldia{%
   \font\chessfont=fselch16%
   \def\authorfont{\bfseries}
   \def\cityfont{\itshape}
   \def\sourcefont{\slshape}
   \def\awardfont{}
   \def\dedicfont{\itshape}
   \def\stipfont{}
   \def\remfont{}
   \def\labelfont{\footnotesize}
   \def\boardfont{\footnotesize}
   \setboardwidth%
}
\def\smalldia{%
   \font\chessfont=fselch12%
   \def\authorfont{\small\bfseries}%
   \def\cityfont{\small\itshape}%
   \def\sourcefont{\small\slshape}%
   \def\awardfont{\small}%
   \def\dedicfont{\small\itshape}%
   \def\stipfont{\small}%
   \def\remfont{\small}%
   \def\labelfont{\small\footnotesize}%
   \def\boardfont{\small\footnotesize}%
   \setboardwidth%
}
% Die Schwalbe wird in 11pt gesetzt, daher definieren wir die
% entsprechene Option um:
\renewcommand*{\diagramxi}{\normaldia}
\def\do@dia@job{%
   \@write@sol\ifvmode\noindent\fi\unhbox\dia@box%
   \sw@problem%
}
%    \end{macrocode}
%
% In der Schwalbe setzen wir keine akademischen Titel.
%    \begin{macrocode}
\setboolean{showacademictitle}{false}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\inner@frame\z@%
\v@frame@dist\z@%
\h@frame@dist\z@%
\setboardwidth
\newif\if@first%
\newif\if@urdruck\@urdruckfalse
\def\urdruck{\@urdrucktrue}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Absaetze in window Umgebungen
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\newcommand{\windowpar}{%
  \newline\hbox{\vbox to \parskip{\vss}}\newline%
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Einige deutsche Schreibweisen
\let\bel=\any
\let\ferner=\further
\newcommand\reprint{%
   \hbox to \textwidth{\bfseries%
      PLEASE~REPRINT\hfill BITTE~NACHDRUCKEN\hfill PRIERE~DE~REIMPRIMER%
   }%
}
% Definiere ein anderes Layout f"ur den Kopf eines Diagramms
%
%
\def\@dia@number{}% Die Diagrammnummer wird bei den Autoren gesetzt!
%
\def\@dia@numberx{%
   \if@special%
      \thediag%
   \else\ifdi@no%
      \thediag%
   \fi\fi%
}
%
\def\@dia@authors{%
   \ifauth@r%
      \bgroup%
      \authorfont%
      \ifnormal@names%
         \def\@dianame{\@normalname}%
      \fi%
      \@firsttrue%
      \let\@action=\@dia@writename% Parse the list of authors
      \@parseTokenlist\aut@tk;%
      \par%
      \egroup%
   \else%
      {\authorfont\@dia@numberx}%
      \if@special%
         \par%
      \else\ifdi@no%
         \par%
      \fi\fi%
   \fi%
}
%
\def\@dia@writename#1; {%
   \if@first%
      \@firstfalse%
      \setbox\@test@box=\hbox{%
         \@dia@numberx\ %
         \@dianame#1; %
      }%
      \@test@dimen=\wd\@test@box%
      \ifdim\@test@dimen>\board@width\relax%
         \noindent\hbox to\board@width{\@dia@numberx\hfill}\par%
         \setbox\@test@box=\hbox{%
            \@dianame#1; %
         }%
         \@test@dimen=\wd\@test@box%
         \ifdim\@test@dimen>\board@width\relax%
            \hbox to\board@width{\@dianame#1; \hss}%
         \else%
            \hfill\@dianame#1; %
         \fi%
      \else%
         \@dia@numberx\hfill\@dianame#1; %
      \fi%
   \else%
      % Changed to get the resulting names centered.
      \par\noindent\hbox to\board@width{\hss\@dianame#1; \hss}%
   \fi%
   \l@@klist%
}
%
\def\@figurine@number{{\authorfont\thediag\ }}
%-----------------------------------------------------------
%
% \def\newsl{\char`/\hskip\slskip\discretionary{}{}{}}
% \catcode`/=\active\let/\newsl\catcode`/=12
%
\newlength{\helplength}%
\newlength{\boardskip}%
\newlength{\double@boardwidth}%

\def\doublediagram#1{%
    \def\dia@above{\if@special\else%
    \setlength{\helplength}{\textwidth}%
    \addtolength{\helplength}{-3\board@width}%
    \setlength{\boardskip}{.5\helplength}%
    \setlength{\double@boardwidth}{2\board@width}%
    \addtolength{\double@boardwidth}{\boardskip}%
    \begin{minipage}[b]{\double@boardwidth}%
    #1%
    \end{minipage}%
    \fi}%
}


%</style>
%    \end{macrocode}
%
% \Finale
