# Composición tipográfica del juego de Ajedrez

En este artículo se muestra un breve resumen de las diferentes librerías, con sus usos habituales, que sirven para editar, con comodidad, documentos LaTeX que incluyan partidas u otros aspectos del juego del Ajedrez.

# El paquete skak

Este paquete facilita la composición tipográfica de partidas de ajedrez que utilicen la notación PGN(Portable Game Notation). Además, permite mostrar diagramas con la posición en curso.
Para utilizarlo basta con insertar \usepackage{skak} en el preámbulo del documento.
Cuando, se desee iniciar una partida, basta con utilizar \newgame. Para comprobar cuál es la posición del tablero después de iniciar la partida, basta con escribir \showboard, que mostrará un diagrama como el que sigue:
Los movimientos de la partida se introducen mediante el comando [\mainline{PGN}]] en donde el texto PGN representa la serie de movimientos a realizar. Además de avanzar en la partida, este comando muestra en pantalla los movimientos formateados como sigue:
Para ocultar algunos movimientos, basta con utilizar \hidemoves; por ejemplo, si en el ejemplo anterior, se ocultan los tres primeros movimientos, \hidemoves{1.e4 e5 2. Nf3}, seguido de, \mainline{2...Nc6 3.Bb5}, el resultado sería este:
Además, existen otros comandos para facilitar la edición y la composición de los textos.
Para componer una variación de una posición, basta con utilizar el comando \variation; por ejemplo, \variation{3.Nf6}, que se muestra en la composición, pero no tiene consecuencias sobre la posición actual.
Por ejemplo, en el tablero siguiente, la variación \variation{3.Nf6} no se ve reflejada.
Si, por el contrario, se desea avanzar por una línea de movimientos, mostrando diagramas, para luego regresar a un punto anterior desde el que mostrar otra línea, es necesario utilizar \mainline en ambos casos. Esto supondría tener que ejecutar dos veces todos los movimientos, hasta “llegar” al punto de bifurcación. Para evitarlo, skak pone a disposición del editor dos comandos, \storegame{etiqueta} y \restoregame{etiqueta}, que permiten marcar un punto de la partida con una etiqueta y regresar posteriormente a él, respectivamente.
Junto con los anteriores comandos, conviene destacar la existencia de otros dos comandos \savegame{nombre_de_fichero} y \restoregame{nombre_de_fichero}, que permiten, respectivamente: almacenar la partida, hasta la posición actual y en notación PGN, en el fichero que se indique; y cargarla posteriomente a partir de él.
Para terminar, comentar algunas otras opciones y comandos:
* El comando \mover muestra en el diagrama un pequeño icono indicando al jugador que le toca mover.
* El comando \showinverseboard muestra el tablero con las fichas negras abajo.
* Existen comandos, \showonlywhite y \showonlyblack, para mostrar solo las piezas de un color.
* El comando \showonly{P,p}, permite mostrar solamente los peones blancos y negros. Con variaciones en los parámetros (mayúsculas y minúsculas, representando las piezas de blancas y negras, respectivamente) se pueden mostrar solamente aquellas piezas que se desee.
* Existe un comando complementario, denominado \showallbut.
* Es posible inicializar el tablero en cualquier posición mediante el comando \fenboard, al que se le debe pasar, como parámetro entre llaves, una cadena de caracteres que represente una posición en el tablero mediante la notación de Forsyth-Edwards.
* Existen algunos estilos de notación por defecto \styleA, \styleB y \styleC; en el manual del paquete se pueden consultar como configurar de forma personalizada el formato en que se muestran los movimientos.

# El paquete chessboard

Este paquete permite componer tableros de ajedrez que van más allá del caso estándar. Entre las opciones que permite, se encuentran:
* Tableros de tamaño mayor y menor a 8x8 escaques.
* Colorear el tablero y las piezas a voluntad.
* Poner marcas, cajas, flechas… en el tablero.
* Utilizar diversos tipos de piezas.
En principio, debe funcionar correctamente en conjunción con el paquete skak, sustituyendo \showboard por el comando \chessboard , que permite más opciones y es más flexible.

## Tableros de tamaño diferente al estándar

Para crear un tablero nuevo el comando a utilizar es \setchessboard. Por ejemplo:
Muestra el siguiente resultado:
El significado de cada línea es el que sigue:
* \newgame es un comando del paquete skak que inicializa la partida. chessboard no mantiene la partida por sí mismo, sino que puede utilizar skak, xskak o texmate. Además, es posible inicializar el tablero a una posición determinada con diversas opciones granulares que posicionan piezas sueltas, por ejemplo, \setchessboard{setpieces={Ke1}} , posicionaría un rey blanco en el escaque e1 eliminando todas las piezas previas. Para añadir piezas sin eliminar ninguna otra, se puede utilizar la opción addpieces, en el lugar de setpieces.
* maxfield=j12, establece el tamaño del tablero.
* clearboard, vacía el tablero.
* startfen, establece la esquina superior izquierda a partir de la que se colocan las piezas de modo estándar.
* restorefen, recoloca las piezas en su escaque actual tomando como base la posición relativa indicada por startfen.
* \chessboard , imprime el tablero. Sustituye al comando \showboard del paquete skak.

## Colorear el tablero y las piezas

Es posible colorear tablero y piezas de diversa forma. Por ejemplo:

## Poner marcas, etc.

También se pueden establecer marcas complejas en el documento:

## Utilizar piezas diferentes a las estándares

Es bastante complejo instalar figuras (que están basadas en tipos de letra) diferentes de las estándares que incorpora el paquete skak. A continuación se intenta dar una explicación somera de los pasos a seguir:
* En la página http://www.enpassant.dk/, se pueden encontrar los ficheros de fuentes abiertas de varios tipos de figuras de ajedrez. Descargar y configurar a mano estos ficheros para que se usen en LaTeX es una tarea compleja. Parte de este trabajo, se ha realizado ya, y se encuentra en el paquete enpassant que se encuentra en CTAN.
* Lo primero que hay que hacer es descargar e instalar el paquete enpassant. Se deben seguir las instrucciones del fichero README, copiando a mano cada conjunto de ficheros (según la extensión) en las carpetas correspondientes de la instalación de LaTeX.
* Después de copiar todos los ficheros, se debe actualizar la base de datos de LaTeX: en linux, en una consola de terminal, se debe ejecutar el comando:texhash
* Después de copiar el fichero “.map”, es necesario añadirlo a la configuración de TeXlive. Para ello, basta con ejecutar el siguiente comando:sudo updmap-sys --enable Map=chess-enpassant.map
* Además, también en línea de comando, se debe ejecutar: en linux: sudo updmap) (Si se tienen ficheros de configuración local basta con ejecutar: updmap). Esto es para que la instalación de LaTeX reconozca los mapeos de las nuevas fuentes que se han incluido en el fichero (.map añadido previamente).
Una vez realizado lo anterior, será posible utilizar los tipos de letra que vienen en el paquete enpassant que incorporen por sí mismos los ficheros con extensión .pfb, como por ejemplo: berlin y pirat. Para el resto de casos, es necesario convertirlos directamente a partir de las versiones TTF de dichos ficheros. Para ello:
* Descargar el fichero TTF correspondiente de la página web http://www.enpassant.dk/chess/fonteng.htm.
* Utilizar la aplicación fontforge para generar un fichero pfb mediante la opción File $>$ Generate font.
* La “font” se debe exportar en formato binario y debe denominarse con el estándar de denominación que indica el paquete “enpassant”. Normalmente, será algo así: chess-<nombre_de_font>-board-fig-raw-pfb.
* Este fichero deberá llevarse al directorio correspondiente de la instalación LaTeX. Por ejemplo, si se han seguido las instrucciones de instalación del fichero README del paquete enpassant, el directorio, en linux, sería: /usr/share/texlive/texmf-dist/fonts/type1/chess/enpassant
* Después, es necesario volver a ejecutar el comando sudo texhash en un terminal para que la base de datos de LaTeX se actualice y reconozca el nuevo fichero pfb.
Conviene alertar de que, si bien este paquete facilita mucho el uso de los tipos de letra de ajedrez que se encuentran en la página web enpassant.dk, no necesariamente tiene que funcionar bien para todos ellos ya que puede haber codificaciones que sean diferentes entre fuente y fuente. En ese caso será necesario ver qué código es el que tiene una figura en la fuente original y modificar el fichero “.enc” en consecuencia.
Si se ha completado con éxito la instalación, se puede utilizar el comando \setchessboard{boardfontfamily=<nombre-de-font>} . Con el nombre del tipo que contiene las figuras deseadas.
Así mismo, se puede cambiar también la fuente de las figuras que aparecen en el texto en PGN que se imprime cuando se utilizan comandos como \mainline o \variation. Para ello, se utiliza el comando \setfigfontfamily, perteneciente al paquete chessfss que debe incluirse previamente con usepackage.
Por ejemplo, lo siguiente (con el tipo de letra “alfonso” instalado):
Muestra los siguientes movimientos y su tablero:
Con el tipo de letra “condal” instalado, se puede hacer:
Y se muestran los siguientes movimientos y tablero:
Para concluir esta breve exposición, destacar que, además de todo lo visto en esta sección, el paquete chessboard tiene un amplio conjunto de opciones adicionales de configuración que requieren un estudio en profundidad de su manual.

# Otros paquetes
## El paquete xskak

Este paquete amplía la funcionalidad del paquete skak permitiendo:
* Volver y mostrar cualquier posición de una partida de Ajedrez, no solamente la actual.
* Mantener en memoria diversas partidas de ajedrez de forma simultánea.
* Manejar más opciones de la notación PGN que skak. Aunque ninguno de los dos la soporta completa.

## El paquete chessfss

Se trata de un paquete específico para facilitar un conjunto de comandos relacionados con la gestión de las fuentes de caracteres de Ajedrez. Permite conmutar entre ellas (como se ha visto en el apartado anterior) y facilita nombres sencillos para cada una de las piezas. Por ejemplo, el siguiente código:
Da como resultado:
Formateado con las figuras de la fuente “berlin”.

## El paquete texmate

En cierta medida, permite realizar el mismo trabajo que skak, pero permite que el formato de entrada de la partida sea más “relajado” que el estricto PGN. Además, dispone de un conjunto de comandos para facilitar el formateo de una partida completa.
Por ejemplo:
Cuyo resultado es el que sigue:
En general, este paquete dispone de utilidades parecidas a las de skak. Sus comandos son de más alto nivel y toman mayores decisiones de diseño, como el formateo de los títulos, indentado de las variaciones mediante [\item , etc.

## Resumen

Si en el documento que se esté creando únicamente se requiere mostrar las figuras de las piezas del Ajedrez, bastará con usar el paquete chessfss que, unido al paquete enpassant, permitiría utilizar un amplio conjunto de tipos de figuras.
Si se necesitan los tableros para mostrar una partida, skak, xskak o texmate, son la solución.
Si se requiere “pintar” sobre el tablero para destacar cualquier elemento o desarrollar problemas no estándar, con cualquier número y tipo de piezas, etc. La solución es el paquete chessboard.

# Referencias

* Página del proyecto skak en CTAN.
* Página del proyecto xskak en CTAN.
* Página del proyecto chessboard en CTAN.
* Página del proyecto enpassant en CTAN. El directorio de fuentes incluido (y que se requieren para configurarlas) es el sitio del club de ajedrez de Dinamarca Nørresundby.
* Página del proyecto chessfss en CTAN.
* Página del proyecto texmate en CTAN.

# Notas

* ↑ Por razón de no haber podido contactar con los autores de los tipos de letra, el autor del paquete enpassant no ha podido incorporar las versiones pfb de la mayoría de estos tipos.
* ↑ Actualmente, es la manera más simple de generar un fichero pfb a partir de uno ttf. En linux se puede instalar normalmente a través de la herramienta de distribución de paquetes correspondiente: apt-get, synaptic, yum, etc..