Schachfigurensatz mit TEX und LaTEX

Frank Hassel

Als Vereinsspieler mußte ich in vielen Diskussionen feststellen, daß fast jeder aktive Spieler den Wunsch hat, seine Partien zu dokumentieren oder welcher Verein hätte nicht gerne eine Vereinszeitung. Dazu greift der versierte Schachspieler zu Diagrammstempel mit Figurentypen oder Diagramm-Prints mit Abreibefiguren und stellt bei fehlendem manuellem Geschick fest, daß ihm das Resultat mißfällt oder auf die Dauer zu teuer wird. Der Computerbesitzer startet sein Schachprogramm, wählt den Menuepunkt ”PRINT DIAGRAM“ und wird in den meisten Fällen auf eine ASCII-Textdatei stoßen. Wenn er Glück hat kann er eine PCX, DGM, WPG oder sonstige Graphikdatei anlegen und falls er das dazu passende Graphikprogramm hat auch ausdrucken. Wer viel Geld hat kauft sich ChessBase mit Chess-Set für ca. 700.-DM. Wer allerdings TEX hat, kann dies natürlich auch auf elegante Weise zum Nulltarif.

Schach und TEX?

Zu verdanken haben wir dies Piet Tutelaers [1], der die für den Schachfigurensatz erforderlichen Fonts und ein Makropaket (CHESS.STY) entworfen hat. Dieser TEX-Style erlaubt das Setzen von Schachpartien mit automatischer Stellungsberechnung in Buchdruckqualität. Ebenso beinhaltet er einen Analysenmodus, welcher es erlaubt Partien zu kommentieren oder in der platzsparenden Kurznotation zu setzen. Von mir wurde ein weiteres Makropaket (Bd-FCHESS.STY) hinzugefügt [2]. Es erweitert CHESS.STY um Diagrammdarstellungen und fügt insbesondere Optionen für Fernschachspieler, wie Verwaltung der Bedenkzeiten für die Züge und Druck einer Postkarte zur Zugübermittlung nach den Richtlinien des Deutschen Fernschachbundes hinzu.

Schachfiguren

Um ein komplettes Schachdiagramm zu setzen benötigt man 26 Zeichen. Ein leeres helles und ein leeres dunkles Feld. Für jede Schachfigur (Bauer, Springer, Läufer, Turm, Dame und König) 4 Zeichen, je eine weiße und schwarze Figur auf hellem bzw. dunklem Feld.

P  O  p  o  0 N  M  n  m  Z B  A  b  a R  S  r  s Q  L  q  l K  J  k  j

Die Tabelle zeigt uns alle Zeichen des Schachfonts CHESS10 der Größe 10 point mit der jeweiligen ASCII-Zuordung. Die Schachfonts werden von Piet Tutelaers in der Größe 10, 20 und 30 point zur Verfügung gestellt. Da in dem Makropaket auch der METAFONT-Quellcode der Fonts enthalten ist, ist es nach dem Ändern eines einzigen Parameters leicht möglich mit METAFONT neue Fontgrößen zu berechnen. Mit diesem Font wäre es im Prinzip schon möglich ein Schachdiagramm zusammenzubasteln. Die elegante Lösung besteht jedoch in dem Makro \board{...}, dessen Gebrauch im folgenden Beispiel erläutert wird :

                                                   \board{ * * L *}
                                                         {* * * B }
                                                         { b * * *}
                                                         {* * * * }
                                                         { S * * *}
                                                         {kB* * * }
                                                         { *K* * *}
                                                         {* * * * }
                                                    $$\showboard$$
                                               Weiß am Zug, Matt in 3 Zügen

Die 64 Argumente des Befehles \board repräsentieren die 64 Felder eines Schachbrettes. Um eine Figur auf ein bestimmtes Feld zu setzen, muß man nicht die ASCII-Codierung des Zeichens kennen, sondern nur den Anfangsbuchstaben der Figur. Großbuchstaben stehen für weiße - ,Kleinbuchstaben für schwarze Figuren, ⊔ und * für leere weiße und schwarze Felder. Zur Darstellung des Brettes dient der Befehl \showboard bzw. $$\showboard$$ um es zentriert zu setzen. Ergebnis mit dem Font chess20 (20 point) :

Weiß am Zug, Matt in 3 Zügen

Die Orginalgröße des Brettes beträgt 9x9cm. Weitere Brettdarstellungsbefehle sind \showinversboard, \showboardwithnotation und \showinversboardwithnotation, deren Namensgebung wohl selbsterklärend ist.

Schachpartien

Falls Sie komplette Schachpartien oder Auszüge daraus mit TEX bzw. LaTEX setzen möchten, ist dies leicht mit den in diesem Absatz beschriebenen Befehlen möglich. Doch zuerst wieder ein kleines Beispiel, daß einen Auszug aus einer Schachpartie wiedergibt :

8 ^{7} ^{6} ^{5} ^{4} ^{3} ^{2} ^{1} a b c d e f g h

18.  e5×f6  d8×f6
19.  e4×c6+  a5×c6
20.  c3–e4  f6–d8
21.  c2×c6+

8 ^{7} ^{6} ^{5} ^{4} ^{3} ^{2} ^{1} a b c d e f g h

Die Befehlsfolge mit LaTEX sieht wie folgt aus :

\begin{position}
\White(Kg1,Dc2,Tf1,Ta1,Le4,Le5,Sc3,
a3,b2,d4,e3,f2,g2,h2)
\Black(Ke8,Dd8,Ta8,Tg8,Lc6,Sa5,Sf6,
a6,b6,c7,e6,f7,g5,h6)
\global\Whitetrue\global\movecount=17
\end{position}
$$\showboardwithnotation$$
\move e5f6 d8f6
\move e4c6+ a5c6
\move c3e4 f6d8
\ply c2c6+
$$\showboardwithnotation$$

Die Initialisierung des Schachbrettes erfolgt bei einer neuen Partie mit \newgame. Bei einem Teilspiel mit der Umgebung position, mit

seinen Befehlen \White(...) und \Black(...)

mit denen die Position jeder Figur in algebraischer Notation festgelegt wird. Weiß am Zug wird mit dem Flag \Whitetrue und Schwarz am Zug mit \Whitefalse festgelegt. Mit \movecount=17 wird LaTEX die aktuelle Zugnummer mitgeteilt. Damit ist die Initialisierung abgeschlossen und der eigentliche Spielverlauf kann mit den beiden (programmiertechnisch aufwendigsten) Macros \move und \ply gesetzt werden. Mit \move wird ein kompletter Zug, mit \ply ein Halbzug dargestellt. Als Argument muß nur das Startfeld und das Endfeld übergeben (z.B. e5f6) werden. TEX berechnet für Sie die Zugnummer, zeigt die Figur ( ), die gezogen wurde und stellt fest, ob eine Figur geschlagen wurde. Eine Rochade und Schlagen ”en passant“ werden erkannt. Zusätzlich zum Zug können Kommentare, wie Schach +, guter Zug !, schlechter Zug ? usw. angehängt werden. Wenn ein Bauer das letzte Feld erreicht, wird eine Figurenumwandlung durch Anhängen des Anfangsbuchstabens der Figur gesetzt (\ply b7b8D). Die Stellung der Figuren auf dem Brett wird nach jedem Zug neu berechnet und kann jederzeit mit \showboard angezeigt werden.

Analysen und Kurznotation

Abgerundet wird das Makropaket von Piet Tutelaers durch einen Analyse- und Turniermodus der durch die Umgebungen |...| bzw.

\begin{chess} und \end{chess} aufgerufen

wird. Innerhalb dieser Umgebung ist es zum Beispiel möglich eine Partie zu kommentieren :

\ply e8f8 Hätte ich doch besser |17.: Lc6*e4| gespielt \move a1c1 a8a7

ergibt :

21.  …  e8–f8

Hätte ich doch besser 17…., c6×e4 gespielt

22.  a1–c1  a8–a7

oder Partien in der Kurzform zu setzen

\bf %Fettdruck
\begin{chess}
1. d4 d5 2. c4 Sf6 3. Sc3 e6 4. Lg5 Lb4
5. e3 Ld7 6. Sf3 dc 7. Lc4*
\end{chess}

ergibt :

1. d4 d5 2. c4  f6 3.  c3 e6 4.  g5  b4
5. e3  d7 6.  f3 dc 7.  c4×

Im Analysemodus haben einige der Buchstaben spezielle Bedeutungen, so wird aus jedem K,D,T,L,S ein , , , , . Aus * wird, um das Schlagen einer Figur zu kennzeichnen, ein × und falls Schwarz in der Analyse am Zug ist kann mit : der entsprechende Platz …, einräumt werden.

Abschließend noch einige Beispiele zum Analysemodus :

Eingabe  Ausgabe
|21. Sf3-e5??|  21.  f3–e5??
|21. : Ke8*f8|  21….,  e8×f8

                                             \begin{chess}

21. Sfe5, K*f8  21.  fe5,  ×f8
21. : f8D+  21…., f8  +

                                             \end{chess}

Fernschach

Unter Fernschach ist das Partieschach zu verstehen, bei dem die Züge postalisch auf Fernschachkarten, Postkarten oder Briefen übermittelt werden. Hinter dieser Definition steckt, daß jeder Fernschachspieler, und das sind in Deutschland ca. 10000, seine Spiele und Partiestellungen notieren und seine Züge versenden muß. Die Züge werden üblicherweise auf vorgedruckten Fernschachkarten verschickt. Die Zugabgabe muß in zweifelsfreier und ausreichender Notation [4] erfolgen. Gebräuchlich ist die folgende Zahlennotation

Partie Nr. Ihr Zug Nr. Mein Zug
1  13  1131  13  6848

jedes Schachfeld wird hierbei durch eine zweistellige Zahl bezeichnet (11 ˆ=a1, 18 ˆ=a8, 81 ˆ=h1, 88 ˆ=h8). Diese Notation ist zwar eindeutig, sieht aber für meinen Geschmack unschön aus. Um die Vorteile von Piet Tutelaers CHESS.STY auch für Fernschachspieler nutzbar zu machen, habe ich deshalb ein Erweiterungsmakropaket BdFCHESS.STY erstellt. Das Kürzel BdF steht zur Erinnerung an den alten Namen des Deutschen Fernschachbundes (BdF) [3], der bis vor einigen Jahren noch Bund deutscher Fernschachfreunde hieß. Das Makropaket stellt z.B. die Befehle \postmove und \postply zur Verfügung, die ähnlich wie \move und \ply arbeiten, zusätzlich aber die erforderlichen Ankunfts- und Abgangsdaten, sowie die Bedenkzeiten in einer übersichtlichen Tabelle verwalten. Nachdem die Züge in den Tabellen erstellt wurden, kann durch einen einzigen Befehl (\postcard(...,...)), die für die Zugübermittlung notwendige Postkartenrückseite gesetzt werden :

Brett 1  Brett 2 Züge Partie 1  Züge Partie 2 Meine Daten  Ihre Daten
Sie  zeigt  die  aktuellen  Partie-

stellungen (\showboard), was natürlich den Brettaufbau zu Hause erleichtert und Hilfsmittel, wie Fernschachpartiealben mit Plastiksteckfiguren zum Festhalten der jeweiligen Stellung überflüssig macht. Die Züge werden nicht mehr in der Zahlennotation, sondern in der algebraischen Notation

Partie Nr. Ihr Zug Nr. Mein Zug
1  13  a1–c1 13  f8×d8

übermittelt. Für internationale Turniere kann die Postkartensprache über den Schalter \postcardlanguage[...] gewählt werden. Standardmäßig mitgeliefert wird Deutsch, Englisch und Französisch, kann jedoch leicht selbst an andere Sprachen angepaßt werden. Die Postkartenvorderseite besteht aus Absender, Empfänger und optionalen Mitteilungen. Um sie zu setzen, müssen die Makros \sender, \receiver und \cardmessage definiert werden. Da es sich um ”leere“ Definitionen handelt, können sie individuell nach eigenem Geschmack gestaltet werden. Sie werden durch den Befehl \postcardaddress(...) nach folgendem Schema zur Postkarte zusammengesetzt:

Mitteilungen Absender  Empfänger

Die abschließenden Befehle von BdFCHESS berücksichtigen bei der Bedenkzeitberechnung Urlaubstage und ermöglichen es dem Schachpartner Eventualzüge vorzuschlagen.

Fazit und Wünsche

In Deutschland sind ca. 100000 Schachspieler im Deutschen Schachbund organisiert. Ein Vielfaches davon ist an Schachprogrammen und - computern verkauft worden, so daß sicherlich öfter der Wunsch auftritt eine Schachpartie in ansprechender Form auszudrucken oder welcher Schachverein hätte nicht gerne eine Vereinszeitung. Die hier vorgestellten Makros und Fonts für TEX und LaTEX erlauben es dem Schachspieler in einfacher Weise Schachpartien und Schachstellungen zu setzen und zu kommentieren. Die Ergebnisse liegen in hervorragender Qualität vor, die einen Vergleich mit professionellen Schachzeitschriften und Büchern nicht zu scheuen brauchen. Und dies alles zum Nulltarif, die Makros und Fonts sind ”In the spirit of TEX“ Public Domain. Subjektive Nachteile von CHESS.STY sind für mich die zwingende Nutzung der Style-Files des BABEL-Systems zur Sprachumschaltung, die es nicht ermöglicht zum Beispiel GERMAN.STY 2.4a zu nutzen oder die fehlende Prüfung auf unsinnige Züge (ein Zug von einem leeren Feld wird als Königszug akzeptiert). Die Eingabe von vielen Partien ist nach wie vor mühsam und ein dafür geeigneter Editor mit graphischer Oberfläche und Mausunterstützung wäre eine feine Sache. Wer Informationen über Dateiformate von Schachprogrammen hat, kann diese mir zuschicken, damit sie Berücksichtigung in einem Konvertierprogramm nach TEX finden.

Literatur

[1] Piet Tutelaers, A Font and a Style for Typesetting Chess using LaTEX or TEX, Dokumentation zu CHESS.STY erschienen in TUGboat.

[2] Frank Hassel, Im Kirschgarten 14, 55286 Wörrstadt, A LaTEX style for management of correspondence chess games, Dokumentation zu BdFCHESS.STY.

[3] Informationen zu Fernschachturnieren und -meisterschaften national und international vom Deutschen Fernschachbund (BdF), Postfach 2025, 37010 Göttingen.

[4] Turnierordnung des Deutschen Fernschachbundes § 2.

LaTEX- Eingabe :

\bf System des Damenfianchettos\\
\newgame
\move c2c4 e7e5
\ply b2b3

$$\showboard$$

Ein etwas passives System.  Weiß
möchte Druck auf den zentralen
Bauern e5 ausüben, räumt dem Gegner
dabei aber die Möglichkeit ein,
seine Kräfte ungehindert zu
mobilisieren.
\ply g8f6
\move c1b2 b8c6
\move e2e3 f8e7
Gut ist auch |4.  :  d5 5.  cd S*d5
6.  a3 Ld6| (Petrosjan-Balaschow,
Moskau 1978).
\move a2a3 e8g8
\move d1c2 d7d5
Oder |6.  :  Te8 7.  d3 Lf8 8.  Sd2 d5
9.  cd D*d5 10.  Sgf3 Lg4 11.  Le2 a5|
mit gleichem Spiel (Psachis-
Faibissowitsch, Leningrad 1979).
\move c4d5 f6d5
\move g1f3 e7f6
\move d2d3 g7g6
\move b1d2 f6g7
\move a1c1 f8e8
Die Chancen halten sich ungefähr die
Waage (Petrosjan-Sosonko,
Tilburg 1981)

Beispiel einer LaTEX-Eingabe und Ausgabe einer kommentierten Schacheröffnung aus Moderne Eröffnungstheorie, Mark Taimanow, Englisch, S.124, Sportverlag Berlin.

Ergebnis :

System des Damenfianchettos

1.  c2–c4  e7–e5
2.  b2–b3

Ein etwas passives System. Weiß möchte Druck auf den zentralen Bauern e5 ausüben, räumt dem Gegner dabei aber die Möglichkeit ein, seine Kräfte ungehindert zu mobilisieren.

2.  …  g8–f6
3.  c1–b2  b8–c6
4.  e2–e3  f8–e7
Gut ist auch 4…., d5 5.cd  ×d5 6.a3  d6

(Petrosjan-Balaschow,Moskau 1978).

5. a2–a3 0–0
6.  d1–c2d7–d5
Oder 6….,  e8 7.d3  f8 8.  d2 d5 9.cd  ×d5
10.  gf3  g4 11.  e2 a5 mit gleichem Spiel

(Psachis-Faibissowitsch, Leningrad 1979).

7.  c4×d5  f6×d5
8.  g1–f3  e7–f6
9.  d2–d3  g7–g6
10.  b1–d2  f6–g7
11.  a1–c1  f8–e8

Die Chancen halten sich ungefähr die Waage

(Petrosjan-Sosonko, Tilburg 1981)

DANTE - Frank Hassel

Datum  Datum
Ankunft Abgang  ∑ Weiß  Schwarz Ankunft Abgang  ∑
3.9.87  3.9.87  0  e2–e4  1.  d7–d6  11.9.87 11.9.87  0
12.9.87 14.9.87  2  d2–d4  2.  g8–f6 15.9.87 16.9.87  1
17.9.87 19.9.87  4  b1–c3 3.  g7–g6  21.9.87 22.9.87  2

1 ^{2} ^{3} ^{4} ^{5} ^{6} ^{7} ^{8} h g f e d c b a

Frank Hassel - DANTE

Datum  Datum
Ankunft Abgang  ∑ Weiß  Schwarz Ankunft Abgang  ∑
11.9.87 11.9.87  0  d2–d4  1.  g8–f6 12.9.87 14.9.87  2
15.9.87 16.9.87  1  c2–c4  2.  g7–g6  17.9.87 19.9.87  4
21.9.87 22.9.87  2  b1–c3 3.

8 ^{7} ^{6} ^{5} ^{4} ^{3} ^{2} ^{1} a b c d e f g h

Fertig gesetzte Tabelle der Fernschachpartien mit Ankunfts- und Abgangsdaten, Bedenkzeiten, Zügen und Partiestellungen.

8 ^{7} ^{6} ^{5} ^{4} ^{3} ^{2} ^{1} a b c d e f g h

Partie 1

Nr. Ihr Zug Nr. Mein Zug
3  b1–c3 3  g7–g6

Empfangen am 21.9.87 Beantwortet am 22.9.87 Meine Bedenkzeit 1 Tag(e) Meine Gesamtbedenkzeit 2 Tage

8 ^{7} ^{6} ^{5} ^{4} ^{3} ^{2} ^{1} a b c d e f g h

Partie 2

Nr. Ihr Zug Nr. Mein Zug
2  g7–g6  3  b1–c3

Ihr Poststempeldatum 19.9.87 Ihre Bedenkzeit 2 Tag(e) Ihre Gesamtbedenkzeit 4 Tage

Freundliche Grüße

Absender:

Frank Hassel Im Kirschgarten 14 55286 Wörrstadt

Mitteilungen Postkarte

DANTE

Postfach 10 18 40

69008 Heidelberg

Fernschachkartenrück- und Vorderseite