summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/schwalbe-chess/schwalbe.dtx
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
committerNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
commite0c6872cf40896c7be36b11dcc744620f10adf1d (patch)
tree60335e10d2f4354b0674ec22d7b53f0f8abee672 /macros/latex/contrib/schwalbe-chess/schwalbe.dtx
Initial commit
Diffstat (limited to 'macros/latex/contrib/schwalbe-chess/schwalbe.dtx')
-rw-r--r--macros/latex/contrib/schwalbe-chess/schwalbe.dtx1936
1 files changed, 1936 insertions, 0 deletions
diff --git a/macros/latex/contrib/schwalbe-chess/schwalbe.dtx b/macros/latex/contrib/schwalbe-chess/schwalbe.dtx
new file mode 100644
index 0000000000..eda9fc3fc9
--- /dev/null
+++ b/macros/latex/contrib/schwalbe-chess/schwalbe.dtx
@@ -0,0 +1,1936 @@
+% \iffalse meta-comment
+%% File 'schwalbe.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{v2.3}
+% \def\docdate{2018/12/20}
+% \CheckSum{2056}
+% \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.}
+% \changes{v1.5.1}{13 March 2013}{Fixed issue with catcode=active for / in Inhalt.}
+% \changes{v1.5.2}{23 July 2013}{Fixed issue with use of url-package.}
+% \changes{v1.6}{10 January 2015}{Applied changes following diagram style changes for issue '03f/932'.}
+% \changes{v1.6.1}{10 January 2015}{Added RequirePackage for fontenc and inputenc as requested by Thomas Brand.}
+% \changes{v1.6.2}{11 January 2015}{Fixed order of languages to activate german by default.}
+% \changes{v1.6.3}{26 January 2015}{Schwalbe style now forwards pt-size options to diagram.sty. Schwalbe.cls loads schwalbe.sty with 12pt.}
+% \changes{v2.0}{17 February 2015}{issue 03f/61c:om: schwalbe: change usepackage to RequirePackage in class and style definition.\\
+% 03f/072:om: schwalbe: move RequirePackage to class for packages: fontenc, inputenc, babel, picinpar, multicol\\
+% 03f/407:om: schwalbe: Move hyphenation configuration to class\\
+% 03f/5f0:om: schwalbe.cls: add special dia@above handling within InformalEntscheid.\\
+% 03f/4dd:om: Behandlung von / dokumentieren\\
+% 03f/665:om: optionale schwalbe.ext Datei}
+% \changes{v2.1}{22 December 2015}{issue 03f/79e:om: Added redefinition for command x in schwalbe.cls\\
+% Added paralist and afterpage to required packages.}
+% \changes{v2.2}{30 July 2018}{03f/9a9:om: schwalbe.cls: add new command mal for mathmode times.\\
+% 03f/6c8:om: Add *-version of Buch-command.\\
+% Added environment retrolexikon.\\
+% Optional 'schwalbe.ext' file is included directly before picinpar.sty to
+% avoid problems when including further packages inside 'schwalbe.tex'.\\
+% Added Abteilung commands in Urdrucke- und Loesungen-environments.}
+% \changes{v2.3}{18 December 2018}{Added commands Loeser and LoeserListe to collect abbreviations of solvernames in different sections of Loesungen}
+%
+% \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@,\",\&,\/}
+%
+% \newcommand*{\Schwalbe}{\textbf{\textit{Schwalbe}}}
+% \newcommand*{\DieSchwalbe}{\hbox{\textbf{\textit{Die Schwalbe}}}}
+%
+% \title{Der \LaTeX-Style f"ur die Problemschach-Zeitschrift
+% \DieSchwalbe{}\\{\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 \DieSchwalbe{} benutzt wird --- die
+% Mitgliederzeitschrift 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
+% \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.
+%
+% Außerdem wird der Kopf bei Diagrammen anders ausgegeben: In der 1.~Zeile
+% steht die Auszeichnung (linksbündig) und die Aufgabennummer (rechtsbündig) --
+% wenn die Aufgabe aus einem Urdruckteil stammt. Sonst steht rechtsbündig die
+% Heft-Nr (\verb+\issue+) und die Seitennr. (\verb+\pages+).
+%
+% Angaben wie Quelle, Monat und Jahr werden nicht ausgegeben.
+%
+% \DescribeMacro{normaldiaabove}
+% Bei Vergleichsaufgaben ist dieses geänderte Anzeigeverhalten nicht gewünscht.
+% Auf das normale Verhalten kann mittels \verb+\setboolean{normaldiaabove}{true}+
+% umgeschaltet werden.
+%
+% \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.
+%
+% \DescribeMacro{\Abteilung}
+% Innerhalb der Urdrucke gibt es den Befehl \verb+\Abteilung+, mit dem die
+% einzelnen Abteilungen innerhalb der Urdrucke eingeleitet werden.
+% Der Befehl benötigt im Normalfall 5 Parameter:
+% \begin{enumerate}
+% \item Name der Abteilung
+% \item Name der Referenz der ersten Problem der Abteilung
+% \item Name der Referenz der letzten Problem der Abteilung
+% \item Name und Adresse des Sachbearbeiters --- inklusive notwendiger Zeilenumbrüche
+% \item Emailadresse des Sachbearbeiters
+% \end{enumerate}
+%
+%
+% \DescribeMacro{\Abteilung*}
+% Sollte in der Abteilung nur ein Urdruck erscheinen, muss man
+% \verb+\Abteilung*+ benutzen und die Referenz auf das letzte Problem
+% weglassen.
+%
+% \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{retrolexikon}
+% \DescribeMacro{\retroart}
+% Analog zum Märchenlexikon gibt es im Vorspann der Retros im Urdruckteil die
+% Umgebung \verb+retrolexikon+. Einzelne Erklärungen werden mittels
+% \verb+retroart+ erläutert.
+%
+% \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}
+%
+% \DescribeMacro{\Abteilung}
+% Innerhalb der L"osungen gibt es auch einen Befehl \verb+\Abteilung+ um die einzelnen Abteilungen einzuleiten.
+% Die Parameter für diesen Befehl lauten:
+% \begin{enumerate}
+% \item{Name der Abteilung}
+% \item{Nummer des ersten Problems der Abteilung}
+% \item{Nummer des letzten Problems der Abteilung}
+% \item{Name des Sachbearbeiters}
+% \end{enumerate}
+%
+% \DescribeMacro{\Abteilung}
+% Sollte einmal nur eine Aufgabe in der Abteilung vorhanden sein, benutzt man
+% \verb+\Abteilung*+, die die dann nur 3 Parameter erwartet.
+%
+% \DescribeMacro{\Loeser}
+% \DescribeMacro{\Loeser*}
+% Innerhalb der Lösungen werden üblicherweise die Namen der kommentierenden Löser mit Kürzeln angegeben.
+% Am Beginn der Lösungen erscheint ein Liste aller der Name und Kürzel aller kommentierenden Löser.
+% Um die Kürzel und Namen innerhalb der Lösungen aufsammeln zu können, gibt es
+% den Befehl \verb+\Loeser+, der 2 Parameter erwartet:
+% \begin{enumerate}
+% \item{Kürzel des Lösers}
+% \item{Name des Lösers}
+% \end{enumerate}
+% Bei der \verb+\Loeser*+ Form erscheint der Name auch an der Stelle im Text.
+%
+% \DescribeMacro{\ListeLoeserKuerzel}
+% Gibt die aufgesammelten L"oserk"urzel und -namen aus.
+%
+% \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. Im Normalfall sind anschließend 2 Parameter anzugeben,
+% die dann entsprechend in der Text übernommen wird.
+% \begin{enumerate}
+% \item die Autoren des Buches; mehrere Autoren sind durch
+% \verb+;+ voneinander zu trennen.
+% \item der Titel des Buches
+% \end{enumerate}
+% Wenn man eine besondere Schreibweise für Titel und/oder Autoren verwenden
+% will, muss die \verb+*+-Form des Befehls verwendet werden: \verb+\Buch*+
+% Hier entfallen dann die beider Paramater.
+%
+% \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:
+%
+% \medskip
+% \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{Der Schrägstrich /}
+% Innerhalb von Lösungen werden unterschiedliche mögliche Züge häufig durch /
+% voneinander getrennt. Ohne Hilfe können diese Zeilen von \LaTeX{} nicht
+% getrennt werden. Ein Zwischenraum ist an diesen Stellen aber auch nicht
+% gewünscht. Daher wird der / zum Befehl gemacht, der
+% \begin{enumerate}
+% \item einen Umbruch hinter dem / erlaubt und
+% \item einen dehnbaren Abstand vor und hinter dem / einfügt, so dass beim
+% Umbrechen einer zu kurzen Zeile kleine Abstände vor und hinter den
+% Schrägstrichen auf einer Zeile verteilt werden
+% \end{enumerate}
+% \DescribeMacro{\bsol}
+% \DescribeMacro{\esol}
+% Dieses Verhalten wird automatisch am Anfang des Hefts eingeschaltet. Soll
+% dies einmal abgestellt werden, so kann dies mit \verb+\esol+ geschehen. Man
+% sollte das aber anschließend mit \verb+\bsol+ wieder aktivieren.
+%
+% \subsection{Ergänzungen}
+% Die \verb+schwalbe.cls+ erfährt immer wieder kleine Änderungen, meist in Form
+% von Ergänzungen, die dann nach einer Weile in eine neue Version einfließen.
+% Um zu vermeiden, diese Ergänzungen immer in eine Version einzubauen, die nur
+% lokal vorhanden ist, wird innerhalb der \verb+schwalbe.cls+ eine Datei
+% \verb+schwalbe.ext+ eingelesen, falls diese vorhanden ist. In dieser Datei,
+% die nicht mit ausgeliefert wird, werden dann die Ergänzungen bis zur nächsten
+% Veröffentlichung einer neuen Version der \verb+schwalbe.cls+ gesammelt.
+%
+% \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\newline
+% \verb+\foto{<Breite>}{<Hoehe>}{<Bildunterschrift>}+\newline
+% benutzt werden.
+%
+% \DescribeMacro{\x}
+% Der \textit{diagram-style} definiert das Makro \verb+\x+, das in der Notation
+% von Lösungen benutzt werden kann um das Symbol $\times$ für Schlagfälle zu
+% erzeugen. In \textit{feenschach} wird dies auch benutzt, in der Schwalbe
+% notieren wir einen Schlagfall mittels eines Doppelpunkt. Daher wird der
+% Befehl für die Schwalbe umdefiniert.
+% \DescribeMacro{\mal}
+% Als Kurzschreibweise für das $\times$ Symbol ist der Befehl \verb+\mal+ definiert.
+%
+% \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}
+\RequirePackage{schwalbe}
+\RequirePackage[utf8]{inputenc}% fsRUS 140121
+\RequirePackage[ngerman]{babel}
+\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 \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}[2017/01/31]
+\LoadClass[11pt,a4paper]{article}
+\RequirePackage[12pt]{schwalbe}
+\RequirePackage[T2A,T1]{fontenc}% fsRUS 140121
+\RequirePackage[koi8-r,utf8]{inputenc}% fsRUS 140121
+\RequirePackage[russian,german,english,ngerman]{babel}
+\RequirePackage{eurosym}
+\RequirePackage{ifthen}
+\RequirePackage{times}
+\RequirePackage{multicol}
+\RequirePackage{url}
+\RequirePackage{paralist}
+\RequirePackage{afterpage}
+\InputIfFileExists{schwalbe.ext}{}{}%
+\RequirePackage{picinpar}
+% \end{macrocode}
+%
+% Ein paar Trennhilfen und Einstellungen zum Trennverhalten.
+% \begin{macrocode}
+\hyphenation{Patt-idee Da-men-op-fer nicht-ortho-doxe Grim-shaw Rein-form}
+
+
+\advance\exhyphenpenalty by -10
+\tolerance2000\relax
+\emergencystretch15\p@
+% \end{macrocode}
+%
+% Für URLs etc. benutzen wir als Font Inconsolata
+% \begin{macrocode}
+\renewcommand*{\ttdefault}{zi4}%
+\def\zifour@spc{\hyphenchar\font=\m@ne}
+% \end{macrocode}
+%
+% Innerhalb der \Schwalbe{} haben wir ein spezielles Seitenlayout.
+% \begin{macrocode}
+\hoffset-1in
+\voffset-1in
+\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%
+}
+%-----------------------------------------------------------
+% 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}
+}%
+% \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%
+ \newcommand{\SchwalbeCopyright}%
+ {\textcopyright{} Schwalbe, deutsche Vereinigung für Problemschach #4}%
+}
+% \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.
+%
+% Außerdem wird innerhalb von der Umgebung ein etwas anderes Diagramm-Layout
+% eingestellt, bei dem in der 1. Zeile die Auszeichnung (\verb+\award+) und die
+% Aufgabennummer (\verb+\sourcenr+) angezeigt werden.
+%
+% Informationen wie die Quelle werden hier unterdrückt.
+%
+% \begin{macrocode}
+\newcommand{\@dia@award@InformalEntscheid}{%
+ \above@newline%
+ \bgroup%
+ \authorfont\the\award@tk\hfill%
+ \if@sourcenr\relax%
+ \the\sourcenr@tk%
+ \else\if@issue%
+ Heft~\the\issue@tk%
+ \if@pages%
+ , S.~\the\pages@tk%
+ \fi%
+ \else%
+ \if@special\relax%
+ \thediag%
+ \fi
+ \fi\fi%
+ \egroup%
+}
+\newcommand{\@dia@authors@InformalEntscheid}{%
+ \ifauth@r%
+ \ifnormal@names%
+ \def\@dianame{\@normalname}%
+ \fi%
+ \@firstfalse%
+ \let\@action=\@dia@writename% Parse the list of authors
+ \@parseTokenlist\aut@tk;%
+ \fi%
+}
+\newboolean{normaldiaabove}
+\setboolean{normaldiaabove}{true}
+\newcommand{\dia@above@InformalEntscheid}{%
+ \ifthenelse{\boolean{normaldiaabove}}{%
+ \orig@dia@above%
+ }{%
+ \setboolean{above@newline}{false}%
+ \@dia@award@InformalEntscheid%
+ \@dia@authors@InformalEntscheid%
+ \@dia@after%
+ \@dia@version%
+ \@dia@correction%
+ \@dia@dedic%
+ \@dia@fidealbum%
+ }%
+}
+\newenvironment{InformalEntscheid}{%
+ \@ifstar{\x@InformalEntscheid}{\y@InformalEntscheid}%
+}{}
+\newcommand{\x@InformalEntscheid}[3]{%
+ \stepcounter{@inhalt}%
+ \inhalt@label\relax%
+ % Weitere Einstellungen
+ \let\orig@dia@above=\dia@above%
+ \let\dia@above=\dia@above@InformalEntscheid%
+ \setboolean{normaldiaabove}{false}%
+ % 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.
+% Zur Einleitung der einzelnen Abteilungen gibt es einen speziellen Befehl
+% \verb+\Abteilung+.
+%
+% \begin{macrocode}
+\newcommand{\sw@urd@abteilung}{%
+ \@ifstar%
+ \@sw@urd@abteilung@one%
+ \@sw@urd@abteilung%
+}
+\newcommand{\@sw@urd@abteilung@one}[4]{%
+ \textbf{#1 (\ref{#2}): %
+ Bearbeiter = #3%
+ \url{#4}}
+}
+\newcommand{\@sw@urd@abteilung}[5]{%
+ \textbf{#1 (\ref{#2}-\ref{#3}): %
+ Bearbeiter = #4%
+ \url{#5}}
+}
+\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%
+ \let\Abteilung=\sw@urd@abteilung%
+ % 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}
+% Innerhalb der Umgebung gibt es einen speziellen Befehl, um die
+% Abteilungen einzuleiten.
+% \begin{macrocode}
+\newcommand{\sw@lsg@abteilung}{%
+ \@ifstar%
+ \@sw@lsg@abteilung@one%
+ \@sw@lsg@abteilung%
+}
+\newcommand{\@sw@lsg@abteilung@one}[3]{%
+ \textbf{#1 Nr. #2} (Bearbeiter = #3)%
+}
+\newcommand{\@sw@lsg@abteilung}[4]{%
+ \textbf{#1 Nr. #2-#3} (Bearbeiter = #4)%
+}
+\newenvironment{Loesungen}[2]{%
+ \begingroup%
+ \ttitel@skip%
+ \centerline{\Large\bfseries L\"osungen der Urdrucke aus Heft #1, #2}%
+ \titel@skip%
+ \stepcounter{@inhalt}%
+ \inhalt@label\relax%
+ \let\Abteilung=\sw@lsg@abteilung%
+ \let\Loeser=\cpd@save@Loeser%
+ % 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}
+%
+% Innerhalb der einzelnen Abteilungen in den L"osungen werden die Namen und K"urzel der L"oser aufgesammelt, damit
+% die Liste der L"oserk"urzel am Beginn der Lösungsbesprechungen angegeben werden kann.
+%
+% \begin{macrocode}
+\newwrite\@cpdfile@loeserkuerzel
+\AtBeginDocument{\immediate\openout\@cpdfile@loeserkuerzel=\jobname.ll}
+\AtEndDocument{\immediate\closeout\@cpdfile@loeserkuerzel}
+
+\newcommand{\x@cpd@saveloeser}[2]{%
+ \immediate\write\@cpdfile@loeserkuerzel{\unexpanded{#1:#2}}
+}
+\newcommand{\y@cpd@saveloeser}[2]{%
+ \x@cpd@saveloeser{#1}{#2}%
+ {#2}%
+}
+\newcommand{\cpd@save@Loeser}{%
+ \@ifstar{\y@cpd@saveloeser}{\x@cpd@saveloeser}%
+}
+
+\newboolean{@cpd@first@loeser}
+
+\newcommand{\cpd@display@loeser}[2]{%
+ \ifthenelse{\boolean{@cpd@first@loeser}}{\setboolean{@cpd@first@loeser}{false}}{, }%
+ #2 (#1)%
+}
+
+\newcommand{\ListeLoeserKuerzel}{%
+ \bgroup%
+ \setboolean{@cpd@first@loeser}{true}%
+ \let\Loeser=\cpd@display@loeser%
+ \InputIfFileExists{\jobname.llx}{}{}%
+ \egroup%
+}
+% \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}
+%
+% Analog zum Märchenlexikon gibt es das \textit{Retrolexikon}.
+%
+% \begin{macrocode}
+\newcounter{@retrolexikon}
+\setcounter{@retrolexikon}{0}
+\newboolean{@first@retrolexikon@entry}
+\newcommand{\retroart}[1]{%
+ \ifthenelse{\boolean{@first@retrolexikon@entry}}{%
+ \setboolean{@first@retrolexikon@entry}{false}%
+ }{%
+ --- %
+ }%
+ \emph{#1:} \ignorespaces%
+}
+\newenvironment{retrolexikon}%
+{%
+ \ifthenelse{\value{@retrolexikon}=0}{%
+ {\itshape Kleines Retro-Lexikon:} %
+ }{}%
+ \setboolean{@first@retrolexikon@entry}{true}%
+ \stepcounter{@retrolexikon}%
+}{}
+% \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}{%
+ \@ifstar{\@Buch}{\x@Buch}%
+}
+\newcommand{\@Buch}{%
+ \ifthenelse{\boolean{@firstbook}}{%
+ \titel@skip%
+ \setboolean{@firstbook}{false}%
+ }{%
+ \par%
+ }%
+ \stepcounter{@buecher}%
+}
+\newcommand{\x@Buch}[2]{%
+ \@Buch%
+ \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\bfseries#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\bfseries\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}%
+ \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%
+}
+%
+%-----------------------------------------------------------
+% 9) Einladungen zu Tagungen u. Turnieren
+\def\Einladung{%
+ \@ifnextchar[{\@@Einladung}{\@Einladung}%
+}
+\def\@Einladung#1{%
+ \ttitel@skip%
+ \vbox{%
+ \centering%
+ \Large\bfseries{#1}%
+ }%
+ \titel@skip%
+}
+\def\@@Einladung[#1]#2{%
+ \ttitel@skip%
+ \vbox{%
+ \centering%
+ \Large\bfseries{#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%
+ \esol%
+ \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
+}
+% \end{macrocode}
+%
+% Innerhalb von Lösungen werden mehrere Zugmöglichkeiten häufig durch einen /
+% voneinander getrennt. \verb+\sol@slash+ definiert einen Schrägstrich,
+% an dem die Zeile umgebrochen werden kann. Dieser Befehl wird dann für das
+% Zeichen / aktiviert.
+% \begin{macrocode}
+\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}}
+
+\renewcommand{\x}{:}
+\newcommand{\mal}{\mbox{\ifmmode\times\else$\times$\fi}}
+%
+%
+%</class>
+% \end{macrocode}
+%
+% \section{Die Implementierung des \Schwalbe{}-Style}
+% \begin{macrocode}
+%<*style>
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{schwalbe}[2017/01/31]
+% \end{macrocode}
+%
+% Der \textit{Schwalbe-Style} ist eine Erweiterung des
+% \textit{diagram-style}. Daher sollten die Optionen
+% \textit{10pt}, \textit{11pt} und \textit{12pt} an den
+% \textit{diagram-style} durchgereicht werden.
+% \begin{macrocode}
+\DeclareOption{10pt}{\PassOptionsToPackage{10pt}{diagram}}
+\DeclareOption{11pt}{\PassOptionsToPackage{11pt}{diagram}}
+\DeclareOption{12pt}{\PassOptionsToPackage{12pt}{diagram}}
+\ProcessOptions
+% \end{macrocode}
+%
+% \begin{macrocode}
+\RequirePackage{diagram}
+%
+%
+% Wir definieren das Diagrammlayout ein wenig um
+%
+\newcommand{\rb}[1]{\raisebox{0.4ex}{#1}}
+\nocomputer
+\setboolean{piececounter}{true}
+\diagcenter
+\setmonthstyle{Roman}
+
+\renewcommand*\authorfont{\bfseries}
+\renewcommand*\cityfont{\itshape}
+\renewcommand*\sourcefont{\slshape}
+\renewcommand*\awardfont{}
+\renewcommand*\dedicfont{\itshape}
+\renewcommand*\stipfont{}
+\renewcommand*\remfont{}
+\renewcommand*\labelfont{\footnotesize}
+\renewcommand*\cpd@boardfont{\footnotesize}
+
+\def\normaldia{%
+ \normalsize%
+ \diagramxii%
+ \setboardwidth%
+}
+\def\smalldia{%
+ \small%
+ \diagramx%
+ \setboardwidth%
+}
+
+\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}
+% \end{macrocode}
+%
+% \begin{macrocode}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\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%
+ \ifnormal@names%
+ \def\@dianame{\@normalname}%
+ \fi%
+ \@firsttrue%
+ \let\@action=\@dia@writename% Parse the list of authors
+ \@parseTokenlist\aut@tk;%
+ \else%
+ \above@newline
+ {\authorfont\@dia@numberx}%
+ \fi%
+}
+%
+\def\@dia@writename#1; {%
+ \above@newline
+ \if@first%
+ \@firstfalse%
+ \setbox\@test@box=\hbox{%
+ \authorfont%
+ \@dia@numberx\ %
+ \@dianame#1; %
+ }%
+ \@test@dimen=\wd\@test@box%
+ \ifdim\@test@dimen>\board@width\relax%
+ \noindent\hbox to\board@width{\authorfont\@dia@numberx\hfill}\above@newline%
+ \setbox\@test@box=\hbox{\authorfont\@dianame#1; }%
+ \@test@dimen=\wd\@test@box%
+ \ifdim\@test@dimen>\board@width\relax%
+ \noindent\hbox to\board@width{\authorfont\@dianame#1; \hss}%
+ \else%
+ {\authorfont\@dianame#1; }%
+ \fi%
+ \else%
+ {\authorfont\@dia@numberx\hfill\@dianame#1; }%
+ \fi%
+ \else%
+ % Changed to get the resulting names centered.
+ \hbox to\board@width{\hss\authorfont\@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