Ce sont les vacances de la Toussaint et j’ai un peu plus de temps. Du coup, j’en profite pour raconter ma vie ici et surtout faire mon intéressant !
Il se peut aussi que quelqu’un tombe sur cet article qui cause tout de même d’échecs quelque part et que ça lui donne des idées ou des pistes.
En séances d’échecs, je donne régulièrement des fiches d’exercices. Ces fiches proviennent de livres ou parfois je les rédige moi-même. Au fil des années, j’ai utilisé différents outils. Aujourd’hui, via le web, on en trouve des plus évolués et pratiques qui permettent bien plus facilement de réaliser ce genre de choses.
Il y a quelques mois, j’avais entrepris de faire une application « maison » qui me convienne. J’utilise des logiciels libres depuis plus de 25 ans. D’ailleurs en 2015, Les Rencontres Mondiales du Logiciel Libre (RMLL) : c’était à Beauvais !
La preuve en vidéo avec Richard (aka rms) qui venait des states prêcher la parole sainte sur le parvis de notre cathédrale.
Dans un futur déjà là, on ne pourra plus dire : « la preuve en vidéo ! »… Passons… C’est un autre sujet… 🙂
J’avais hébergé à l’époque un développeur argentin à l’origine du moteur de jeu GODOT, moteur qui est désormais mondialement connu dans le domaine du jeu vidéo. Il avait hésité à rendre le moteur libre et finalement satisfait par son choix, m’avait-il raconté. Je suppose qu’il l’est encore davantage aujourd’hui. Ca coûte un bras pour se marier en Argentine, m’avait-il aussi confié… Bon… Ca aussi : c’est encore une autre histoire…
Tous les outils/techniques utilisés pour l’application que j’ai fièrement appelée « 6ssa » en référence à Sissa :
- Le système d’exploitation Debian
- Le langage de programmation Go
- Le langage de composition de documents Latex
- Le kit pour GUI (Graphical User Interface) avec Go : Fyne
- La notation échiquéenne FEN et le format pdf
- Un éditeur de texte simple pour coder comme gedit
Latex est un langage qui permet de réaliser des documents non pas en WYSIWYG (What You See Is What You Get) comme un certain traitement de texte que je ne citerai pas (pouaaaah ! :)) mais en utilisant des « instructions ».
Cela a de nombreux avantages et Latex est depuis très longtemps utilisé dans le monde universitaire (ça facilite grandement l’écriture de formules de mathématiques et bien d’autres choses).
Exemple en image :

Certains livres d’échecs sont réalisés avec Latex. Il y a des extensions (packages) pour facilement faire des diagrammes d’échecs.
Exemple en image :

Un autre exemple (extrait d’un livre de John Nunn paru chez Olibris) :

Bref, je voulais que mon application puisse me permettre :
- de saisir des positions d’échecs (faire l’éditeur interactif : j’en ai un peu… [censored] )
- de les enregistrer (j’ai mis une base de données sqlite du coup)
- de réaliser des fiches d’exercices en sélectionnant des positions
- de les générer en pdf
Me suis bien servi de l’IA pour faire l’appli parce que je n’y connaissais quasi rien en Go (un langage venu de chez Google qui avait notamment embauché Ken Thompson et Rob Pike, des pointures informatiques quasi légendaires pour bosser dessus). Voici un aperçu en vidéo après probablement plus d’une centaine d’heures de sueur quand même :
Le code Latex qui sert de modèle pour la fiche d’exercices (l’application vient en fait remplir des champs dans cette fiche comme : le titre, la consigne et les positions (et c’est là que la notation FEN est bien utile)).
% MODELE
% FICHE D'EXERCICES
% VERSION : 4.0
\documentclass{article}
% PACKAGES
\usepackage[a4paper]{geometry}
\usepackage[utf8]{inputenc}
\usepackage[default]{cantarell}
\usepackage{tikz}
\usepackage{graphicx}
\usepackage{chessboard}
\usepackage{array,multirow,makecell}
\usepackage{fancyhdr}
% REGLAGES
\geometry{top=2cm,bottom=2cm,left=1cm,right=1cm}
\pagestyle{fancy}
\fancyhead[L]{\bfseries \Huge{Mat du couloir}}
\fancyhead[R]{\normalfont \itshape \Large{Trouve le mat en 1 coup}}
\fancyfoot{}
\setchessboard{boardfontsize=24pt,showmover=true,moversize=1em,moverstyle=triangle}
% COMMANDES
\newcommand*\circled[1]{\tikz[baseline=(char.base)]{\nodeshape=circle,draw,inner sep=4pt {\large\textbf#1};}}
\begin{document}
\begin{table}[ht!]\centering \bigskip
\begin{tabular}{ m{8cm} m{0.8cm} m{8cm} }
\circled{1} & & \circled{2} \
\Gape[-16pt]{\chessboard[setfen=6k1/5ppp/8/8/8/8/5PPP/3R2K1 w - - 0 1]} & &
\Gape[-16pt]{\chessboard[setfen=6k1/5p1p/6p1/8/8/2B5/5PPP/1R4K1 w - - 0 1]} \ \
\circled{3} & & \circled{4}\
\Gape[-16pt]{\chessboard[setfen=6k1/5ppp/8/3b4/8/6QP/5PP1/R5K1 w - - 0 1]} & &
\Gape[-16pt]{\chessboard[setfen=6k1/5npp/8/8/3R4/5P2/B5PP/6K1 w - - 0 1]} \ \
\circled{5} & & \circled{6}\
\Gape[-16pt]{\chessboard[setfen=2k5/1pp5/p3P3/3p4/Q7/3K4/8/8 w - - 0 1]} & &
\Gape[-16pt]{\chessboard[setfen=1RB3k1/5pp1/7p/8/8/6P1/5P1P/6K1 w - - 0 1]} \
\end{tabular}
\end{table}
\end{document}
Là, je ne me suis pas servi de l’IA qui n’était pas idéale/performante pour ce qui est mise en page. Le code n’est d’ailleurs pas 100% propre. Suis quand même assez fier du truc car ça tient en peu de place et ça rend comme je l’avais imaginé au départ au niveau taille, mise en page et différents détails. Les commandes Latex sont parfois difficiles à manier (faire des tableaux par exemple peut dans certains cas s’avérer compliqué). Il existe de nombreux éditeurs Latex qui peuvent aider. Chez Olibris, il me paraît évident que Latex est utilisé (on reconnaît en général au premier coup d’oeil un document qui a été réalisé avec).
6ssa se sert donc de ce modèle et génère la jolie fiche avec les positions qu’on a sélectionnées puis ouvre le visualiseur externe par défaut pour l’afficher au format pdf.
Reste à imprimer et à distribuer en oubliant pas de mentionner avec une joie bergsonienne non dissimulée :
« C’est beau hein ? Ah bah, c’est moi qui l’ai fait ! ».
Au passage, je crois que celui ou ceux qui ont conçu les possibilités en Latex de réaliser des diagrammes d’échecs ont dû penser aux économies d’encre. En effet, lorsqu’on imprime beaucoup de diagrammes, le fait d’avoir des cases rendues noires avec des hachures et non complètement remplies, mine de rien : ça utilise moins d’encre pour un résultat à l’oeil humain tout aussi satisfaisant.
Il y a par exemple un livre de Laszlo Polgar de 5334 exercices et parties qui fait 1184 pages. Je suis quasi certain qu’il a utilisé Latex. Qu’il ait de son côté fait un programme pour en faciliter la réalisation ne m’étonnerait pas. Au niveau des dates ça pourrait a priori coller. La première version de Latex date de 1983 et le bouquin en question de 1994.
Bon… l’appli maison 6ssa fonctionne dans les grandes lignes… Je dois avouer que j’ai la flemme d’aller plus loin, de rendre l’application plus aboutie. Ca serait encore beaucoup de boulot pour la publier, bien la documenter, y apporter des corrections, la rendre éventuellement portable sur différents systèmes, se soucier de problèmes de licences, etc. C’est un prototype on dira.
Et puis…je ne suis pas développeur dans l’âme. Cela demande des qualités que je n’ai pas, faut bien le reconnaître. Bidouiller en mode fun : ça va. Aller plus loin : c’est du tracas. Puis ma tante m’a toujours dit de ne jamais me marier mais c’est encore un autre sujet 🙂
Quant au langage Go, pour un amateur, je dirais que c’est dans l’ensemble plutôt plaisant et abordable. Je réussis encore à lire le code après plusieurs mois sans avoir mis le nez dedans. Ca été conçu en partie pour ça en principe et pourtant ce n’est pas moi qui ferait de la pub pour Google, bien au contraire. Beaucoup disent que Go est même ennuyeux. Mouep… Je ne sais pas. En fait, je n’ai fait qu’effleurer le langage et n’importe quel autre aurait pu convenir pour faire cette petite appli. Juste, je n’avais pas envie d’utiliser un langage orienté objet et Go ne l’est pas à la base.
Une avancée pourrait être d’automatiser la création de livres d’exercices. En entrée : on envoie des listes de problèmes en FEN (lichess en publie ici en CSV) et en sortie on obtient un joli bouquin avec pages numérotées : le tout sans avoir à aucun moment touché à un traitement de texte. 6ssa vérifie déjà qu’il n’y ait pas de doublons dans les positions.
Une autre avancée pourrait être une sorte de retour en arrière. Au lieu de développer une application graphique de travailler sur un programme en CLI. Au départ, c’est ce que j’avais fait rapidement en bash et avec sed (ça m’avait pris pas 1 heure sans être du tout un pro du shell) mais pouvoir saisir interactivement les positions était un souhait pratique. Faire les deux alors… Pfiou…
En tout cas, générer des documents via Latex (ou des alternatives, par exemple : typst), est quelque chose qui peut se révéler très pratique et avec des résultats de belle qualité. Cela demande des efforts d’apprentissage au départ qui se trouvent bien récompensés par la suite. Je dirais qu’il y a un côté « attachement » qui joue également. Une fois qu’on a peaufiné un fichier Latex, on n’a pas envie de s’en séparer. C’est beau, on est content, on peut le réutiliser et ça fait classe ! Des exemples de modèles divers ici sur un site plutôt commercial.
Chessboard, le package Latex, pour faire les diagrammes d’échecs est celui qui offre le plus d’options et de possibilités (et il y en a un paquet !) que j’ai trouvé. Je viens de remarquer que celui qui s’occupe de ce package se nomme Ulrike… Fischer. Y a des coïncidences des fois comme des clins d’oeil du destin ou alors c’est un pseudo bien choisi.
L’autre jour, je voulais faire plein d’images grosso modo d’un même type et je n’avais pas pensé qu’au lieu d’utiliser un logiciel de graphisme, je pouvais utiliser un outil en ligne de commande comme le vénérable ImageMagick mais c’est encore une autre histoire…
@bientôt pour de nouvelles aventures sur l’échiquier ce coup-ci 🙂





