Diagrammes d'échecs avec LaTeX

2012-12-08 16:56, écrit par kib2 dans tutos - tex - chess

Depuis quelques temps déjà, j'écris dans la rubrique échecs du journal TMV (Tours Ma Ville) appartenant à la Nouvelle République.

J'ai pas mal galéré avant de pouvoir sortir et envoyer de beaux diagrammes d'échecs en PDF à ma petite femme qui travaille sur la mise en pages de celui-ci (entre autres!).

Il existe plusieur packages (skak et skaknew par exemple), chacun ayant ses propres caractéristiques (sortie ps, dvi, pdf) et j'avais des besoins très spécifiques: en particulier, le diagramme obtenu devait être croppé, càd pouvoir tenir dans une boite rectangulaire aux dimensions minimales.

Voici globalement ce que j'obtiens en image:

DiagrammeEchecs

Vous désirer voir un rendu de qualité ? Le PDF est vraiment top.

Globalement, on part d'un diagramme écrit en notation FEN, et on désire afficher celui-ci, les noms des jouers, du tournoi, et bien sûr commenter les coups à partir de celle position.

Au départ, j'utilisais pdfcrop pour convertir le pdf obtenu, mais ça reste bien lourd: nécessité d'installer Perl, d'avoir GhostScript dans son Path, etc.

La solution m'est venue aujourd'hui à l'esprit: utiliser le package preview qui fait des merveilles. Je ne sais pas pourquoi je n'y ai pas pensé avant, je l'utilise au quotidien dans mes travaux de maths sous Geogebra.

Voici donc un petit snippet d'exemple (désolé pour la coloration, je n'ai pas encore de langage TeX officiel pour Prism, celui-ci est bidouillé en quelques lignes):

\documentclass[12pt]{article}

\usepackage{chessboard}
\usepackage[ps]{skak}
\usepackage{latexsym}
\usepackage{fourier}
\usepackage[utf8]{inputenc}
\usepackage[frenchb]{babel}
\usepgfmodule{shapes}
\font\logo=logo10
\font\sknf=SkakNew-Figurine
\font\sknfbx=SkakNew-FigurineBold
\font\skndia=SkakNew-DiagramT

\columnseprule0.25pt
\parindent 0pt\topmargin 0pt\headheight 0pt\headsep 0pt\footskip 0pt
\usepackage[dvips,a4paper,margin=6mm]{geometry}
\everymath{\displaystyle}
\pagestyle{empty}
\frenchspacing
\usepackage[active,tightpage]{preview}


\begin{document}
\begin{preview}

\begin{center}
%% On utilise le package chessboard pour afficher l'échiquier
%% Renseignements de la partie: 
%% - joueurs
%% - tournoi & année
$\triangleright$\textbf{Gulara Zhumanbekova}\\
$\blacktriangleright$\textbf{Natalya Grebenshikova}\\
\textbf{Neftekamsk, 2000}\\
\chessboard[
   boardfontfamily=berlin,
   setfen=r2q2k1/pp1n1r1p/2p3p1/2P2p2/2P5/1P1R4/PB4PP/R2Q2K1 w - - 0 1, showmover]\\
   Les blancs jouent et gagnent.
\end{center}

%% On utilise skak pour pouvoir ensuite afficher les variantes
\fenboard{r2q2k1/pp1n1r1p/2p3p1/2P2p2/2P5/1P1R4/PB4PP/R2Q2K1 w - - 0 1}

Une belle exploitation du clouage.

\vspace{0.5cm}
\par
\textbf{Solution:} \mainline{ 1. Rd6 }: l'idée est d'exploiter à la fois le clouage, mais auissi la grande diagonale a1-h8 \mainline{ 1... Qe7 2. Qd4 Nf6 3. Rxf6} bye bye !

\end{preview}
\end{document}

Enregistrez ce fichier comme echecs_exemple.tex, puis compiler celui-ci avec: pdflatex echecs_exemple.tex.

Vous devriez obtenir un joli echecs_exemple.pdf.

Sous Windows, pour nettoyer tous les fichiers temporaires, j'utilise le batch suivant que j'ai nommé cleanAllCrap.bat et qui va vous enlever tous les fichiers AUX,LOG,OUT,GZ,PS,DVI. A vous de l'adapter suivant vos besoins:

REM Desactive echo local
@echo off

Echo Les fichiers AUX,LOG,OUT,GZ,PS,DVI vont etre effaces !

REM Va dans le rep. demandé %1
cd %1

Echo Les fichiers AUX,LOG,OUT,GZ,PS,DVI vont etre effaces !
del *.aux,*.out,*.log,*.gz,*.ps,*.dvi

echo Termine !

Enfin, si vous avez besoin d'une image png, j'ai choisi ImageMagick car la ligne de commande permet beaucoup de liberté par rapport à une interface GUI classique. Par exemple, pour transformer diagramme.pdf en diagramme.png, je tape simplement ceci:

convert -density 300 -resize 40% diagramme.pdf diagramme.png

Note: la commande convert n'est pas destructive et ne touchera donc pas vos originaux. C'est toujours bon à savoir!

comments powered by Disqus

 


© 2012 by Kib².