Blog

2009/10/11

Schaken en LaTeX

Al jaren voer ik al mijn partijen in in SCID. Dit is een open source schaak database. De partijen die ik in de competitie speelde zette ik dan daarna in een documentje. Ik zorgde ervoor dat de letters van de stukken vervangen werden door hun symbool. Hiervoor gebruikte ik een schaakfont.

Deze aanpak had en aantal nadelen. Ik moest de letters van font veranderen en een andere 'waarde' geven. Het symbool van de dame kwam niet overeen met de 'D'. Replace string ging wel maar je moest oppassen dat je dat alleen bij de zetten deed en niet bij de namen van de spelers. Een ander nadeel was dat als je het document op een computer zette die het font niet had, de symbolen weer gewoon (verkeerde) letters werden. Een derde nadeel was het maken van diagrammen. Of je moest een programma gebruiken die stellingen in een BMP of GIF veranderde en die in je document zetten of je moest het diagram als tekst in je document zetten. Hierbij kon je gebruik maken van de schaakfont.

Op een dag zocht ik wat in SCID. Ik vond een optie om de partijen uit de filter te exporteren naar een LaTeX bestand. Via een stagiair op het werk was ik al in aanraking gekomen met LaTeX. LaTeX is een tool waarmee je 'platte'-tekst kan omzetten naar een gestruktureerd document. Dit kan een tekstdocument, presentatie of PDF zijn. Ik begon te googlen naar een gratis tool en vond MiKTeX. Een package voor schaken was snel gevonden: SKAK. SKAK voldeed aan mijn wensen.

Nu begon mijn zoektocht om de partijen in de juiste vorm te zetten. De uitvoer van SCID voldeed niet aan mijn wensen dus begon ik met experimenteren. Uiteindelijk vond ik de voor mij juiste layout. Om het laatste beetje 'handwerk' weg te halen schreef ik een programma in Java die voor mij een PGN file omzette in een LaTeX file. Enkele voorbeelden kunnen op de Downloads pagina van de schaakvereniging waar ik speel gevonden worden. Het Java programma vind je hier.

Hier volgt een voorbeeld:

\documentclass[dutch,twocolumn,a4,10pt]{report}

\usepackage{skak}
\usepackage{babel}
\usepackage[T1]{fontenc}
\usepackage[pdftex]{graphicx}
\usepackage{titlepic}

\topmargin =-15.mm
\oddsidemargin =0.mm
\evensidemargin =0.mm
\headheight =0.mm
\headsep =0.mm
\textheight =250.mm
\textwidth =165.mm
\parindent =0.mm


\title{Schaken en LaTeX}
\author{Marco de Booij}
\titlepic{\includegraphics[width=7cm]{Logo.jpg}}
\date{\today{}}

\begin{document}
\maketitle

\end{document}

Dit is het 'skelet' waarin je de schaakpartijen in wil zetten. Logo.jpg is een JPEG bestand die ik op de titel pagina wil hebben. Een partij met daarbij de eindstand zet je na de regel met \maketitle:

\mainline{1.e4 e5 2.Bc4 Nc6 3.Qh5 d6 4.Qxf7#}
\showboard

Om een variant te laten zien gebruik je:

\variation{3... a6 4.Qxf7#}

Dit is de basis. Je kan zover gaan als je wilt (of wat wordt toegelaten). Om er nu een PDF file van te maken voer je het volgende commando uit:

pdflatex <bestand>

Als je het bestand de extensie .tex hebt gegeven dan hoef je de extensie niet mee te geven. pdflatex maakt een PDF bestand aan met dezelfde naam.