Manual de usuario de la aplicación Chess PDF browser v1.20 Índice Introducción La aplicación Chess PDF browser puede servir como ayuda a la hora de leer libros de ajedrez en formato PDF. Te permite abrir un libro en PDF, pudiendo navegar por sus páginas, y ofreciendo la opción de extraer todas las partidas del libro, para su posterior tratamiento o uso. De igual forma, permite abrir archivos en formato PGN. En ambos casos la aplicación permite navegar por los movimientos, editar las partidas (creando nuevas variantes y editando los comentarios y los datos de las partidas (TAGs de la partida en formato PGN), así como la posición inicial de las partidas). Como novedad en esta nueva versión, ahora es posible utilizar motores de ajedrez de tipo UCI para analizar posiciones. Además, se pueden jugar partidas con control de tiempos, entre dos jugadores humanos, un humano contra un motor, o poner a jugar dos motores entre sí. Qué es nuevo en la versión v1.20: Nueva opción de videos de demostración en el menú de Ayuda. Hace uso de la versión de plataforma v1.4: No se hace uso extensivo de Reflexión. Añade la ventana de Qué es nuevo. Conexión al servidor para buscar una nueva versión de la aplicación (new version query). Mejoras en la presentación de la partida: Ahora se pueden mostrar partidas en notación algebraica de figuras. En la presentación del tablero: Se muestran los nombres de los jugadores en el tablero. Se muestran las piezas capturadas. Se añaden dos juegos de piezas adicionales. Extractor de partidas mejorado: El extractor de partidas de PDF hace uso de los paréntesis para decidir a qué variante pertenece el movimiento actual. Nuevo extractor de los datos de las partidas procesadas (nombre de los jugadores, ELOs, etc.), con un sistema de expresiones regulares. Nuevo reconocedor (OCR) de posiciones de las imágenes. Se autoentrena con las posiciones conocidas, durante la extracción de partidas. Permite reconocer la posición determinando la cadena Fen de esa posición (pulsando botón derecho sobre la imagen del PDF). Intenta el reconocimiento automático de posiciones en partidas que no empiezan desde la posición inicial durante la extracción de partidas. Una vez reconocida la posición se puede abrir un tablero, para poder comprobar si la detección ha sido válida (y pegarlas, por ejemplo, en la ventana de edición de posición inicial). A veces el reconocimiento no es completo, entonces, si se ha podido determinar la rejilla del tablero, da la opción de entrenar al reconocedor editando la posición reconocida. Soporte para motores de tipo UCI (como stockfish) Se pueden añadir y configurar motores de tipo UCI a los que la aplicación puede conectarse. Nueva ventana de análisis, que muestra las variantes más prometedoras calculadas con los motores seleccionados. Nueva opción para jugar partidas con control de tiempo, entre humanos, entre motores, o un humano contra un motor. Nueva opción para analizar partidas completas. Mejora en los comentarios permitidos: Ahora se permiten comentarios en los inicios de variante. Nueva ventana de edición de datos básicos de la partida (Jugador blanco, Jugador negro, ELOs, etc). Se da soporte para más tipos de imágenes en los PDFs que en las versiones anteriores de la aplicación. Inicio rápido Requisitos Para ejecutar la aplicación es necesario tener el entorno de java instalado (Java Runtime Environment), en la versión 8 o superior. De esa manera, se podrá abrir el fichero .jar existente en la carpeta ./binary/ Trabajar con un archivo PGN Abre la aplicación Chess PDF browser, haciendo doble click en: el .jar de la aplicación: que está en .../_binary/chessPDF_browser.jar Abre un nuevo diálogo para abrir un fichero (Menú: Archivo->Abrir). Selecciona el archivo en formato PGN. Tiene que tener extensión .pgn, si no no lo reconocerá. Navega por las partidas, edita lo que necesites. En caso de ser requerido, el archivo modificado puede ser grabado de nuevo, con el mismo nombre, o escogiendo un nombre distinto. Extraer las partidas de un libro en formato PDF Abre la aplicación Chess PDF browser, haciendo doble click en: el .jar de la aplicación: que está en .../_binary/ChessPDFbrowser-main-v1.20-SNAPSHOT-all.jar Abre un nuevo diálogo para abrir un fichero (Menú: Archivo->Abrir). Selecciona el archivo en formato PDF. Tiene que tener extensión .pdf, si no no lo reconocerá. Cuando se cargue el PDF, se abrirá una nueva ventana, mostrando una página del PDF. Esa ventana permite navegar por el PDF, y también ofrece la opción de extraer las partidas (pulsando en el botón “Extraer las partidas”). Una vez se ha pulsado el botón, se abre una nueva ventana que permite seleccionar el idioma de las partidas del libro. Seleccionar el idioma y pulsar el botón “Iniciar”. En ese momento la ventana mostrará el progreso de la extracción de partidas, y una vez terminada, mostrará las partidas en la ventana principal. Trabajar con las partidas. Existe la opción de grabar las partidas extraídas en formato PGN. NOTAS: Es muy posible que haya que hacer alguna edición para dejar las partidas extraídas idénticas a las del libro PDF: Esta versión de la aplicación trata de reconocer las posiciones de las imágenes con tableros del libro, por lo que es posible que en las partidas que no comiencen con la posición inicial, la posición inicial sea detectada de manera correcta. Si no es así, esas partidas deberán ser editadas, configurando manualmente la posición inicial de la partida. Otro motivo por el que las partidas pueden no ser idénticas a las del PDF, se debe a que a la hora de analizar los movimientos, la aplicación a veces llega a ambigüedades que no pueden resolverse automáticamente. En ese caso, se ha optado por dividir la partida en bloques sin ambigüedades, por lo que es posible que alguna partida en la que pase eso, sea dividida en partes, pudiendo desaparecer algunos movimientos (los ambiguos). En un apartado posterior, indicaremos lo que puede hacerse para intentar solucionar este inconveniente: 5.14 - Ventana de análisis de partida La ventana tiene este aspecto: En la ventana hay varios componentes: Panel de progreso. Muestra el progreso del análisis. Panel de motor. Permite escoger el motor con el que realizar el análisis, así como añadir, eliminar o configurar motores a la lista de motores conocidos. (Los cambios son persistentes) Spinner con el valor en segundos que tardará el motor en el análisis de cada movimiento. Panel con los botones de iniciar y de cancelar. El análisis se realizará para: la partida actual (en caso de haber abierto la ventana mediante la opción del menú global) la primera partida seleccionada de la tabla (primera fila en color azul celeste) (en caso de haber abierto la ventana mediante el menú emergente de la tabla de partidas). Una vez comienza el proceso de análisis, este puede cancelarse (pulsando el botón de cancelar). En ese caso el análisis se parará justo tras recibir del motor el resultado de la siguiente posición. Si no se cancela el análisis y este no está vacío, se creará una partida con la línea principal de la partida original analizada, y, para cada movimiento, se incluirá el resultado de análisis del motor. El análisis podría estar vacío si el motor no devolvió ningún análisis, como podría pasar, por ejemplo, cuando el motor está configurado para limitar la destreza (configurarlo así puede ser útil para jugar una partida contra un nivel inferior al máximo, pero no es útil para el caso de análisis). Cuando la partida ha sido analizada, se añaden comentarios para facilitar la localización de esos análisis en el árbol de variantes. También se modifican algunos tags de la partida (Annotator y Event), para añadir la información de que la partida ha sido analizada con esta aplicación. Ejemplo de edición de partidas extraídas con ambigüedades A partir de esta versión de la aplicación (v1.20), se utiliza un nuevo extractor de partidas que tiene en cuenta los paréntesis y corchetes a la hora de decidir a qué variante pertenece cada movimiento. De esta manera, siempre que el libro en PDF respete esa convención de los paréntesis para las nuevas variantes, se producen muchos menos errores en la extracción de las variantes de las partidas que en anteriores versiones de la aplicación, aunque es posible que todavía se produzca algún error. Ventana principal En este capítulo se verá la ventana principal de la aplicación. Tras arrancar la aplicación gráfica y abrir un archivo pgn con partidas comentadas, aparece una pantalla como la siguiente: En ella pueden apreciarse varios elementos: Barra de menús. La barra de menús con sus opciones, será explicada en un capítulo posterior: 4 - Barra de menús A la derecha de la pantalla, puede observarse el tablero de ajedrez que muestra la posición actual. El propio panel del tablero, tiene una zona con fondo verde en la que se muestra la información más relevante de esa posición. La parte izquierda de la pantalla, se encuentra dividida en varias zonas, que explicaremos empezando de arriba hacia abajo: Panel con la opción “Blancas debajo”. Esta opción, como su nombre indica, permite seleccionar la orientación del tablero, es decir, si en el tablero, la posición inicial de las blancas está abajo o arriba. Panel con botones de navegación. Este panel contiene botones que permiten moverse por los movimientos de la partida. Área de texto que contiene las variantes de la partida, junto con los comentarios que pueden ser desactivados mediante configuración. Lista de las partidas. Muestra la información más relevante de las partidas y permite cambiar la partida actual (haciendo doble click sobre la nueva partida). Panel con el tablero de ajedrez En el panel de la derecha se muestra un tablero de ajedrez con la posición actual. Cuando el puntero del ratón pasa por encima de una pieza que tiene movimientos legales, esos movimientos se muestran, marcando las posibles casillas destino con un reborde en color verde. También se muestran las casillas inicial y final del último movimiento, con un reborde de color naranja. Cuando una pieza tiene movimientos legales posibles, esa pieza puede ser movida hacia una casilla destino legal (arrastrándola desde la posición inicial a la posición final). Si el movimiento todavía no figuraba entre los movimientos de la partida, se generará una nueva variante con ese nuevo movimiento. El movimiento actual seleccionado cambia a ser el del movimiento realizado. El panel con el tablero de ajedrez también muestra una zona con fondo verde en la que se indica la información más relevante de la posición. Adicionalmente, en el tablero se pueden mostrar otros mensajes en caso de que la partida no parta de la posición inicial, y no tenga configurada una posición inicial distinta a la habitual. También es posible que muestre un mensaje de posición ilegal, en caso de que el movimiento actual seleccionado no sea legal (o alguno de sus movimientos previos no sea legal). Área de texto con los movimientos de la partida Debajo del panel de navegación, existe un área de texto con los movimientos de la partida actual. En ella se muestran las variantes ( la variante principal en negrita, y las variantes secundarias en azul ) y los comentarios de cada movimiento, en caso de existir y que la aplicación esté configurada para mostrarlos. Cuando se pulsa con el ratón encima de un movimiento, ese movimiento pasa a ser el movimiento actual, mostrándose en el tablero la posición resultante justo después de ese movimiento. El movimiento actual se muestra con un fondo gris, para poder distinguirlo del resto. Cuando se pulsa con el ratón encima de un comentario, se abre la ventana de Edición de comentarios y NAGs, de manera idéntica a la opción del menú emergente “Editar comentario” explicado en el apartado de menú emergente. La aplicación también permite seleccionar variantes completas, para ser copiadas y pegadas, o borrar variantes completas. En el caso de seleccionar y copiar una variante, los movimientos de esa variantes copiada, se muestran con un fondo de color amarillo. Existe la posibilidad de que un movimiento de la partida actual no sea legal (debido a que se haya modificado la posición inicial de la partida de manera incorrecta o a algún error en los movimientos de la partida extraídos del PDF o cargados de un PGN). En ese caso, el movimiento se muestra con fondo rojo. Menú emergente Este elemento de la ventana dispone de un menú emergente propio que aparece cuando se pulsa el botón derecho del ratón: Las opciones del menú son las siguientes: Seleccionar y copiar variante. Esta opción permite seleccionar y copiar una variante, o cambiar la selección en caso de que ya haya una variante seleccionada previamente. Cuando se selecciona esta opción del menú, la variante seleccionada puede ser copiada en otra partida o en otra variante. Los números de movimiento tienen que coincidir para poder hacer la copia, si no la aplicación no permite esa replicación de la variante. En caso de que haya una variante seleccionada previamente, se marcan sus movimientos con fondo amarillo. Limpiar selección. Esta opción sirve para deseleccionar la variante previamente seleccionada. Pegar variante. Esta opción sirve para pegar la variante previamente seleccionada, a continuación del movimiento sobre el que se ha pulsado el botón derecho. Borrar. Esta opción permite borrar una variante. Editar comentario. Esta opción permite abrir la ventana de edición de comentarios y NAGs. Esta ventana será explicada en el capítulo: 5.2 - Ventana de edición de comentarios Editar posición inicial de la partida. Esta opción permite abrir la ventana de edición de la posición inicial de la partida. Esta ventana será explicada en el capítulo: 5.4 - Ventana de edición de la posición inicial Lista de las partidas En la parte izquierda de la ventana principal en la parte de abajo, existe una lista con las partidas. En ella se muestra la información principal de cada partida, dando la posibilidad de añadir nuevas partidas, borrarlas o moverlas. Pulsando doblemente sobre una partida, esta partida se convierte en la partida actual, sobre la que podemos navegar por los movimientos. Menú emergente Este elemento de la ventana dispone de un menú emergente propio que aparece cuando se pulsa el botón derecho del ratón: Las opciones del menú son las siguientes: Editar posición inicial de la partida. Permite editar la posición inicial de la primera de las partidas seleccionadas de la lista (que puede no coincidir con la partida actual). Esta opción permite abrir la ventana de edición de la posición inicial de la partida. Esta ventana será explicada en el capítulo: 5.4 - Ventana de edición de la posición inicial Abrir partida seleccionada aparte. Esta opción permite abrir las partidas seleccionadas en ventanas separadas, para facilitar la opción de copiar/pegar variantes entre ellas o con el Área de texto que contiene los movimientos de la partida actual. Las características de estas ventanas son las mismas que las que tiene el Área de texto con los movimientos de las partidas, explicados en el apartado anterior. También puede verse en el siguiente punto: 5.6 - Ventana de partida abierta “a parte” Mover partida seleccionada. Permite mover las partidas seleccionadas a la nueva posición de la lista (indicada con una línea en color rojo, al pulsar el botón derecho). Borrar partida seleccionada. Permite borrar las partidas seleccionadas. Crear partida antes. Permite crear una partida nueva justo antes de la posición actual cuando se pulsó el botón derecho. La posición donde se insertaría la nueva partida se muestra con una línea roja al pulsar el botón derecho. Crear partida después. Permite crear una partida nueva justo después de la posición actual cuando se pulsó el botón derecho. La posición donde se insertaría la nueva partida se muestra con una línea roja al pulsar el botón derecho. Analizar partida. Esta opción abre la ventana de análisis de partidas que, permitiendo elegir el motor para el análisis, analiza todas las posiciones de la partida seleccionada. Ver apartado: 5.14 - Ventana de análisis de partida Abrir el perfil de extracción de tags. Esta opción abre la configuración de extracción de tags abriendo el Perfil concreto que detectó los tags de la partida apuntada por el ratón. Puedes ver más detalles en este punto: 7.2 - Perfiles. Navegación por los movimientos con las teclas del cursor Cuando la ventana principal tiene el foco, existe la opción de moverse por los movimientos de la partida actual pulsando las teclas del cursor. Cursor a la derecha. Permite avanzar un movimiento, en caso de que el movimiento anterior sea el último almacenado de la línea actual, esta tecla permitirá avanzar por la variante principal. Cursor a la izquierda. Permite retroceder un movimiento. Cursor hacia arriba. Tiene dos comportamientos: Cuando el movimiento padre tiene un solo hijo (el actual), permite moverse hacia el movimiento anterior cuyo padre tiene más de un hijo. Cuando el movimiento padre tiene varios hijos, el cursor hacia arriba permite cambiar a la subvariante anterior. Cursor hacia abajo. Tiene dos comportamientos: Cuando el movimiento padre tiene un solo hijo (el actual), permite moverse hacia el movimiento posterior cuyo padre tiene más de un hijo, posicionándose, o bien en el hijo correspondiente a la línea actual, o si el movimiento ya ha sobrepasado la línea actual, en la variante principal. Cuando el movimiento padre tiene varios hijos, el cursor hacia abajo permite cambiar a la subvariante siguiente. Barra de menús En este capítulo se explicarán las opciones de la barra de menús. Menú Archivo El menú Archivo tiene este aspecto: Este menú tiene cuatro opciones: Abrir. Al pulsar sobre este elemento del menú se abrirá el diálogo para buscar el archivo que se desea abrir. La aplicación reconoce dos extensiones de archivo distintas: Extensión .pgn La aplicación permite abrir archivos de partidas en formato pgn. Para ello el archivo tiene que tener la extensión .pgn, si no tiene esta extensión, la aplicación no abrirá el archivo aunque tenga un formato de pgn válido. Extensión .pdf La aplicación permite abrir libros en formato .pdf. Para que la aplicación abra un libro pdf, el archivo tiene que tener la extensión .pdf, si no la tiene, no lo abrirá, aunque el archivo tenga un formato de pdf válido. Cuando se abre un archivo de tipo pdf, la aplicación abrirá otra ventana que será explicada en un capítulo posterior: 5.1 - Ventana de navegación de PDF Guardar. Al pulsar sobre este elemento del menú, la aplicación guardará el conjunto de partidas actual, con el nombre de fichero con el que se abrieron. En caso de que se escaneen las partidas de un libro pdf, se “limpiará” el nombre de archivo a guardar, y la opción de guardar, se convertirá en un guardar como Guardar como. Al pulsar sobre este elemento del menú, la aplicación abrirá el diálogo para salvar las partidas en un fichero .pgn, permitiendo escoger un nombre distinto para el archivo a guardar. Salir. Permite salir de la aplicación. Menú Edición El menú Edición tiene este aspecto: Este menú tiene tres opciones: Copiar FEN. Esta opción permite copiar en el portapapeles la cadena FEN de la posición actual. Esto puede ser útil para poder interactuar con otras aplicaciones que trabajen con cadenas FEN. También puede ser útil para copiar una posición determinada, como posición inicial de otra partida (hay una opción en la ventana de edición de posiciones iniciales, que permite pegar una posición FEN). Copiar PGN. Esta opción permite copiar la partida actual en formato PGN y ponerla en el portapapeles. Pegar. Esta opción permite pegar del portapapeles, o bien una posición FEN, o bien un PGN completo, o bien un fragmento de un libro de PDF, que añadirá al final del conjunto de partidas actual. Menú Partida El menú Partida tiene este aspecto: Este menú permite tratar con partidas y sus datos. Tiene varias opciones: Nueva partida.Abre la ventana que recoge los datos para comenzar una nueva partida con control de tiempos. Para más detalles, puedes ver este punto: .5.12 - Ventana de Nueva partida Pausar partida. Para momentáneamente los tiempos de la partida en curso, hasta que se vuelva a seleccionar la opción de reanudar partida. Reaundar partida. Reanuda la partida que fue pausada anteriormente, o que se pausó automáticamente por haber seleccionado algún otro movimiento del árbol de variantes o por haber seleccionado alguna otra partida de la lista de partidas. Datos de la partida. Abre la ventana para modificar los datos de la partida que está siendo mostrada en el tablero. 5.13 - Ventana Datos de la partida. Blancas resignan. Si hay una partida en curso, permite al jugador blanco (humano), resignar. La partida terminará. En caso de que no haya partida en curso, esta opción asignará un final de partida en la que el negro gana (0-1), en la posición actual del árbol de variantes. Negras resignan. Si hay una partida en curso, permite al jugador negro (humano), resignar. La partida terminará. En caso de que no haya partida en curso, esta opción asignará un final de partida en la que el blanco gana (1-0), en la posición actual del árbol de variantes. Tablas acordadas. Si hay una partida en curso entre dos humanos, la partida terminará asignando un final de partida de tablas (1/2-1/2). Si no hay partida en curso, se asignará un resultado final de tablas en la posición actual. Limpiar resultado de la partida. En una posición que tenga un resultado de final de partida, esta opción limpiaría ese resultado de partida. Analizar partida. Esta opción abre la ventana de análisis de partida completa, en la que puedes seleccionar el motor con el que analizar la partida. Ver punto: 5.14 - Ventana de análisis de partida Menú Vista El menú Vista tiene este aspecto: Este menú sólo tiene dos opciones: Juego de figuras de ajedrez. Esta opción es para que el usuario pueda escoger el tipo de figuras que se mostrará en el tablero. Zoom. Permite escoger la ampliación de la parte visual de la aplicación, con un porcentaje que indica el tamaño de los componentes en comparación con la visualización normal de las ventanas (100%). Menú Preferencias El menú Preferencias tiene este aspecto: Este menú tiene dos opciones: Idioma. Al abrir este submenú aparecen los idiomas disponibles. Sirve para poder cambiar el idioma de la aplicación. Por defecto hay disponibles los siguientes idiomas: "EN". Inglés "ES". Castellano "CAT". Catalán “RU”. Ruso Preferencias. Esta opción abre la ventana que permite configurar las opciones de la aplicación. Esa ventana será explicada en un capítulo posterior: 5.5 - Ventana de configuración de preferencias Menú Ventanas El menú Ventanas de tiene este aspecto: Este menú permite abrir las ventanas suplementarias de la aplicación. Tiene cinco opciones: Edición de comentarios. Esta opción permite abrir la ventana de edición de comentarios y NAGs, para el movimiento actual. Esta ventana será explicada en un capítulo posterior: 5.2 - Ventana de edición de comentarios Edición de TAGs. Esta opción permite abrir la ventana de edición de TAGs, que permite incluir información relevante de la partida actual. Esta ventana será explicada en un capítulo posterior: 5.3 - Ventana de edición de TAGs Editar posición inicial. Esta opción permite abrir la ventana de edición de la posición inicial para la partida actual. Esta ventana será explicada en un capítulo posterior: 5.4 - Ventana de edición de la posición inicial Abrir partida actual en ventana aparte. Esta opción permite abrir la partida actual en una ventana aparte, para poder permitir copiar/pegar variantes entre partidas. Esta ventana será explicada en un capítulo posterior: 5.6 - Ventana de partida abierta “a parte” Ventana de análisis. Esta opción abre la ventana de análisis en la que, tras haber elegido el motor de análisis, muestra las variantes más prometedoras proporcionadas por ese motor. Esta ventana se tratará en un capítulo posterior: 5.7 - Ventana de análisis Menú Ayuda El menú Acerca de tiene este aspecto: Este menú tiene seis opciones: Demos. Contiene un menú que abre una url con un video de demostración de varios temas relacionados con la aplicación: Trabajar con PGNs. Trabajar con PDFs. Añadir motores UCI. Analizar posiciones. Jugar partidas. Trabajar con el portapapeles. Reconocedor de posiciones (ocr). Editar comentarios. Editar tags. Editar la posición inicial. Ayuda. Abre este archivo de ayuda. Buscar nueva versión. Realiza la consulta de nueva versión, y abre una ventana con el resultado de dicha consulta. La ventana de resultado indica si se encontró una nueva versión o no y tiene el siguiente aspecto: Qué es nuevo. Abre una ventana con un resumen de las novedades de la versión actual. ( 5.8 - Ventana qué es nuevo ) Acerca de. Cuando se pulsa este elemento de menú, aparece un formulario con los datos de la aplicación, los agradecimientos y los datos de contacto. El aspecto de esta ventana, puede verse en un punto posterior: 5.9 - Ventana Acerca de … Licencia. Cuando se pulsa este elemento, aparece una ventana mostrando la licencia que se aceptó al ejecutar la aplicación por vez primera. El aspecto de esta ventana, puede verse en el siguiente punto: 5.10 - Ventana de Licencia En el siguiente anexo, se puede ver el texto de la licencia (que se muestra tras pulsar esta opción): 9.2 - Texto de la licencia Ventanas de la aplicación En este capítulo se explicarán las distintas ventanas de la aplicación que pueden estar abiertas. Ventana de navegación de PDF Cuando se abre un archivo PDF, la aplicación muestra una ventana aparte que permite navegar por las páginas del libro y también ofrece la opción de extraer las partidas del PDF. La ventana de navegación de PDF tiene este aspecto: En la parte superior de la ventana existen componentes que permiten navegar por el libro PDF. Nivel de ampliación En la parte izquierda hay un desplegable que permite cambiar el nivel de ampliación respecto al tamaño original. El nivel de ampliación varía entre el 25% y el 400%. Botones de navegación El siguiente componente hacia la derecha, es un conjunto de cuatro botones que permiten navegar por las páginas de libro PDF. El significado de los botones es intuitivo. Número de página actual Cuando se navega por las páginas, se actualiza el contenido de este componente de texto, con el número de página actual. De igual forma, es posible escribir un número de página diferente, dentro del rango del libro, y al pulsar return, la ventana muestra esa página. Menú contextual. Cuando se apunta con el ratón a una imagen y se pulsa el botón derecho, aparece un menú contextual. Se supone que la imagen es un tablero con una posición y este menú ofrece la opción de intentar reconocerla, y copiarla en el portapapeles como una cadena FEN. Intentar reconocer la posición. Cuando se selecciona esta opción el reconocedor de posiciones entra en acción. Ver más en el apartado 8 - Reconocedor de posiciones. Botón de extracción de partidas. Cuando se pulsa el botón de extracción de partidas, se abre una nueva ventana, que tiene este aspecto: En esta ventana hay varios paneles que contienen información de progreso o que permiten personalizar la extracción de partidas: Progreso: La parte superior de esta ventana muestra una barra del progreso de la extracción. Numero de posiciones de autoentrenamiento (para reconocedor de posiciones) pendientes de ser procesadas. Es el número en color naranja en una casilla rectangular arriba a la derecha. 8 - Reconocedor de posiciones. Idioma de las partidas: Debajo existe un desplegable que permite seleccionar el idioma de los movimientos de las partidas del PDF. Rango de páginas: En este panel, hay dos cajas de texto que permiten escoger el rango de páginas sobre el que se va a realizar la extracción de las partidas. Extractor de partidas: Permite seleccionar si se va a utilizar el nuevo extractor de partidas experimental para la extracción que está a punto de comenzar. Esa opción queda persistente, y a partir de entonces quedará guardada la opción, aunque en cada extracción será posible cambiarlo, o también desde la ventana de configuración. Acceso directo al extractor de tags. A la derecha de la selección del extractor de partidas experimental, hay un botón que permite acceder directamente a la configuración del extractor de tags. 5.5.4 - Pestaña: Extractor de tags Por último existen los botones de iniciar o cancelar el proceso de extracción. El proceso de extracción de partidas puede cancelarse una vez iniciado. Cuando el proceso de extracción de partidas finaliza, el texto del botón de cancelar, se cambia a cerrar. Hasta que no se cierre la ventana no se puede seguir utilizando la aplicación. Una vez extraídas las partidas, se actualiza la lista de partidas que está en la ventana principal y se puede navegar por ellas. Lo normal es que sea necesario retocar el resultado de la extracción de partidas, ya que en muchas ocasiones, en los libros existen movimientos ambiguos que es difícil resolver correctamente de manera automática. Es por eso que una vez extraídas las partidas, habrá que configurar manualmente las posiciones iniciales de las partidas que partan desde una posición distinta a la inicial. También habrá que resolver las ambigüedades de las que he hablado antes, recomponiendo los fragmentos de partidas que fueron divididos debido a esas ambigüedades. En este apartado, explicaremos como proceder para intentar obtener las partidas originales: 6 - Ejemplo de edición de partidas extraídas con ambigüedades La rueda del ratón Cuando el puntero del ratón se encuentra sobre esta ventana, la rueda del ratón tiene varios usos: CTRL + rueda arriba o abajo. Cuando se pulsa CTRL y simultáneamente se mueve la rueda del ratón, se modifica el nivel de ampliación, de la misma manera que podría hacerse seleccionando un nuevo nivel de ampliación en el desplegable. SHIFT + rueda arriba o abajo. Cuando se pulsa SHIFT y simultáneamente se mueve la rueda del ratón, si existía barra de desplazamiento horizontal, se cambia la posición del desplazamiento. Rueda del ratón arriba o abajo (sin SHIFT ni CTRL). Cuando se mueve la rueda del ratón sin SHIFT ni CTRL, si existía barra de desplazamiento vertical, se cambia la posición del desplazamiento. Si se había alcanzado el nivel superior y se sigue moviendo la rueda arriba, si existía una página anterior, se cambia a la página anterior. Si se había alcanzado el nivel inferior y se sigue moviendo la rueda hacia abajo, si existía una página posterior, se cambia a la página posterior. Ventana de edición de comentarios La ventana de edición de comentarios se puede abrir mediante la opción de menú (Ventana->Edición de comentarios), o bien pulsando uno de los comentarios de la partida actual, o bien mediante la opción del menú emergente que aparece al pulsar el botón derecho sobre uno de los movimientos de la partida actual. La ventana tiene este aspecto: En la ventana existen varios componentes que permiten modificar el comentario o los NAGs del movimiento. Ahora veremos esos componentes, comenzando por el de más arriba y hacia abajo. Opción de siempre al frente. Permite seleccionar si la ventana se pone siempre al frente (por encima del resto de ventanas, incluso aunque esta ventana no tenga el foco). Área de texto que muestra el movimiento para el que se puede modificar el comentario y los NAGs. Tipo de comentario. Indica si el comentario está asociado al movimiento o al inicio de una subvariante. Área de texto que muestra el comentario, en fuente de color verde, que puede editarse. Panel de edición de NAGs. Botón de limpiar NAGs. Cuando se pulsa este botón, se borran todos los NAGs del movimiento. Componente de texto: Cadena de NAG. Este componente de texto no editable, muestra la cadena de NAGs del movimiento, tal y como se muestran siguiendo al movimiento. Componente de texto: Código de NAG. Este componente de texto no editable, muestra los NAGs tal y como se graban en una partida con formato PGN. Botón de añadir NAGs. Cuando se pulsa este botón, el NAG seleccionado en el desplegable, se añade a los NAGs del movimiento. Desplegable de NAGs. Este desplegable permite seleccionar NAGs para añadirlos a la lista de NAGs del movimiento. Se muestra primero el NAG en formato PGN, y luego el NAG en formato imprimible. Panel de Novedad. Permite seleccionar si el movimiento supone una novedad. Esta versión de la aplicación detecta novedades durante la extracción de las partidas de los PDFs, y las marca en este panel, siendo posible cambiarlo aquí. Si un movimiento era un movimiento normal (no era novedad durante la extracción), la aplicación también permite que se pueda cambiar. Este parámetro no es estándar en el formato PGN, y para que no se pierda esta información al guardar en PGN, se crea un comentario automático que la aplicación es capaz de reconocer en este movimiento, que indica la condición de Novedad, en caso de que el movimiento se haya marcado como Novedad. Botón cancelar. Cuando se pulsa este botón, el usuario tiene la posibilidad de cerrar la ventana, descartando los cambios. Botón aceptar. Cuando se pulsa este botón, el usuario acepta los cambios realizados sobre el comentario y NAGs del movimiento y la ventana se cierra. Si no se pulsa este botón, si el usuario navega por otros movimientos, los cambios que haya realizado, se perderán. Botón revertir. Cuando se han realizado cambios sobre el comentario o los NAGs y se pulsa este botón, se vuelve a los valores originales de comentario y NAGs que tenía el movimiento. Ventana de edición de TAGs Los TAGs son parámetros que proporcionan información de la partida. La ventana de edición de TAGs se puede abrir mediante la opción de menú (Ventana->Edición de TAGs) y permite modificar estos parámetros. Los TAGs que pueden ser modificados, son los estándar del formato PGN. La ventana tiene este aspecto: La venta permite editar la información de la partida, separada en forma de TAGs, tales como White (Jugador blanco), Event (torneo), Site (lugar), Date (fecha), etc. Hay bastantes TAGs, y para poder seleccionarlos de forma más o menos sencilla, se han dividido en grupos que agrupan TAGs según el tema del que traten. En la tabla de TAGs de la partida, sólo aparecen los TAGs de los grupos que estén marcados, y que, además, cumplan con el filtro actual. Luego hablaremos del filtrado de TAGs. Selección de grupos de TAGs Los grupos de TAGs pueden seleccionarse/desseleccionarse individualmente, o bien mediante el menú emergente (botón derecho del ratón). Cuando se pulsa el botón derecho del ratón en esta zona de la ventana, aparece el siguiente menú: Este menú tiene tres opciones: Seleccionar sólo el grupo sobre el que está el ratón. Seleccionar todos los grupos. Deseleccionar todos los grupos. Filtrado, selección y edición de TAGs El filtrado se realiza mediante un desplegable en el que se pueden escribir nuevos elementos, o seleccionar los últimos elementos que se hayan escrito. La forma sencilla de actuar del filtro, y que utilizaremos normalmente, es que sólo se muestran los TAGs que contengan la secuencia de caracteres escrita en el filtro. Existe otra forma más avanzada de utilizar el filtro, pero que sólo estará al alcance de unos pocos, al requerir conocimientos de expresiones regulares. (Se muestran los TAGs en cuyo texto dé coincidencia con la expresión regular escrita en el filtro). De todas formas, al no haber excesivos TAGs, utilizar esta forma avanzada no supone una mejora sustancial, así que si no conoces las expresiones regulares, no te preocupes. El filtrado se efectúa cada vez que, estando el foco en el desplegable, se presiona return, o bien se seleccione otro elemento presente en el desplegable, o bien, el foco se salga del desplegable. Para eliminar el filtrado, hay que poner en el desplegable una cadena vacía (equivalente a que no haya filtro) y pulsar return. Si queremos seleccionar un TAG determinado, simplemente hay que clickar con el ratón sobre el TAG deseado o moverse con el cursor por las filas de la tabla. Cada vez que se selecciona un nuevo TAG, sus datos pasan a los componentes de más abajo, y en caso de que el TAG sea editable, la aplicación permite editarlos. El valor del TAG puede editarse en el área de texto marcada en rojo. Existen tres botones en la parte derecha de ese área de texto: Cruz: Limpiar TAG. Elimina el contenido del TAG. Es equivalente a borrar el texto y aceptar los cambios. V: Aceptar los cambios. Se aceptan los cambios realizados en el valor de este TAG en particular. Flecha: Revertir los cambios en el valor del TAG, respecto al valor que había cuando se seleccionó. Aceptar, descartar, revertir cambios La edición de TAGs individuales que hemos visto antes, permiten modificar TAGs de la cabecera de una partida. Sin embargo, esos cambios no se aplican inmediatamente sino que, una vez realizados todos los cambios deseados, habrá que realizar una acción sobre los botones globales de la ventana (son los botones de la parte inferior): En esta parte de la ventana, existen cinco botones: Eliminar todos los TAGs: Cuando se pulsa este botón, se borra el contenido de los valores de todos los TAGs. Tras este cambio, se puede continuar editando TAGs. Cuando se acepten los cambios, estos serán persistentes y no habrá marcha atrás. Configuración del extractor de tags: En caso de que la partida actual haya sido recién extraída de un PDF, y para esta partida se hayan reconocido automáticamente los tags, este botón permite abrir la configuración del perfil de extracción de tags que mejor coincidió y con el que se extrajeron los tags. (Esta opción podría ser útil, por ejemplo, si la extracción de tags no funcionó correctamente y deseamos corregir los posibles errores o ambigüedades que pudiera haber en los patrones configurados). 5.5.4 - Pestaña: Extractor de tags Cruz: Descartar los cambios realizados. Tras pulsar este botón, se descartan los cambios realizados hasta el momento, desde el momento en que se abrió la ventana de edición de TAGs. Tras descartar, la ventana se cerrará. V: Aceptar cambios. Tras pulsar este botón, las modificaciones realizadas en los TAGs se vuelven persistentes y no se pueden revertir. Tras aceptar, la ventana se cerrará. Flecha: Revertir cambios. Tras pulsar este botón, se descartan las modificaciones realizadas en los TAGs desde que se abrió la ventana. La ventana no se cierra y permite seguir editando TAGs. Ventana de edición de la posición inicial La aplicación permite crear partidas desde una posición arbitraria que no tiene por qué ser la posición inicial. Esto es útil, porque hay muchas partidas en los libros que comienzan a ser comentadas a partir de una posición avanzada de la apertura, del medio juego o del final. En ese caso, es posible editar la posición inicial de la partida para que se pueda navegar por los movimientos y que se puedan mostrar las posiciones resultantes en el tablero. En caso de que en ese tipo de partidas no se haya editado la posición inicial, la aplicación mostrará un mensaje encima del tablero vacío para indicar que para poder navegar por esa partida, antes se debe editar la posición inicial. El mensaje que muestra la aplicación en estos casos es el siguiente: Para solucionar esta situación, deberemos abrir la ventana de edición de la posición inicial. Esto puede realizarse de dos formas: Desde el menú principal de la aplicación: Ventanas->Editar posición inicial Desde el menú emergente (clickando el botón derecho del ratón) que aparece en la zona de la tabla de partidas. Poniéndose sobre la partida de la que se desea editar la posición inicial y con botón derecho del ratón: Menú emergente->Editar posición inicial de la partida. Una vez abierta, la ventana tiene este aspecto: La ventana está dividida en dos partes diferenciadas: Parte de arriba: Panel que contiene los controles de la ventana, las piezas que pueden ser arrastradas hasta el tablero y distintos parámetros de una posición que no son mostrables en la pantalla. Parte de abajo: Panel con el tablero, que muestra la posición de las piezas. Asignación de una posición inicial de partida En la parte superior izquierda del panel de control de la ventana, existen tres botones que permiten asignar directamente una posición inicial que luego podrá modificarse a mano. Botón: Asignar posición inicial. Como bien se puede suponer, cuando se pulsa este botón, las piezas aparecen en su posición inicial. Botón: Dejar sólo reyes. Al pulsar este botón, sólo se dejan los reyes en su posición inicial. Este puede ser un buen inicio para una posición de final, donde hay pocas piezas. Botón: Pegar posición FEN. Al pulsar este botón, la aplicación espera encontrar una cadena FEN en el portapapeles. Esta cadena FEN tiene que haberse copiado previamente en el portapapeles, bien desde otra aplicación, o bien copiando la posición FEN que aparece tras cada edición de la posición en el componente de texto Cadena FEN. El componente de texto Cadena FEN, tiene este aspecto: Para copiar la Cadena FEN en el portapapeles, hay que seleccionar toda la cadena de texto y copiarlo al portapapeles (Ctrl + C). Piezas para ser colocadas en el tablero Debajo de los botones, existen dos filas de imágenes con piezas. Una fila para cada color: Estas piezas están para ser arrastradas con el ratón al tablero. Otros controles de configuración de la posición Existen otros parámetros de una posición que pueden configurarse: Blancas abajo. Para la vista del tablero, puede configurarse si son las blancas o las negras las que juegan desde abajo. Esto no tiene ninguna afectación en la posición FEN resultado de la configuración de la posición inicial, simplemente puede ser útil en alguna ocasión, dependiendo del punto de vista para configurar la posición. Número de movimiento: Indica cual será el número del siguiente movimiento del jugador que tiene el turno (contando todos los movimientos realizados por el jugador desde el inicio de la partida). Turnos sin progreso: Este parámetro indica cuantos semi movimientos han transcurrido desde la última captura o movimiento de peón. Se utiliza para la regla de tablas por 50 movimientos sin progreso. Casilla de captura al paso: Este parámetro indica la casilla a la que puede capturar al paso un peón blanco en la quinta fila, o bien un peón negro en la cuarta fila, debido a que en el movimiento justo anterior, el peón contrario avanzó dos posiciones desde su posición inicial. El valor que tiene que tener este parámetro es la casilla de en medio entre la posición inicial y la posición final de un movimiento de peón (justo el movimiento anterior) que ha avanzado dos posiciones. En caso de que el movimiento anterior no haya sido un avance de dos posiciones de un peón, el valor de este parámetro debe estar vacío. Cuando se acepta la posición, se realizan comprobaciones para evitar valores erróneos en este parámetro. Turno de juego: Indica si el siguiente turno es de las blancas o de las negras. Botón de Girar tablero. Cuando se pulsa este botón se intercambia la posición. Observar que esta opción es distinta de la casilla de selección de blancas abajo. La selección de qué parte del tablero se muestra en la parte de abajo es independiente del giro de la posición. Esta opción puede ser útil en el caso, por ejemplo, de que el reconocedor de posiciones haya reconocido una posición al revés de cómo debería ser (tiene unos criterios para autodetectar si en la imagen tablero las blancas están abajo o no, pero es posible que esa autodetección falle, o que no esté configurada la detección automática). Indicadores de enroque: Son unos indicadores que indican básicamente si el rey o alguna de las torres ha movido de su posición inicial y ha regresado a su posición inicial de nuevo, produciendo una situación en la que no se puede deducir a partir de la posición de las piezas si el enroque todavía es posible o no. En caso de que estos indicadores estén marcados, la aplicación calculará si pueden producirse o no los enroques deduciéndolo a partir de la posición de las piezas (se supone que en este caso, ni el rey ni la torre, han salido de su posición inicial, y han regresado a ella). En caso de que o bien el rey, o bien alguna de las torres haya salido de su posición inicial y haya regresado a ella, habrá que indicárselo a la aplicación desmarcando los indicadores adecuados, indicando que no puede producirse el enroque aunque las piezas parezcan en su posición inicial. Además de los controles anteriores, existen tres botones que sirven para descartar, aceptar o revertir los cambios: Cruz: Descartar los cambios y cerrar la ventana. V: Aceptar los cambios, consolidarlos y cerrar la ventana. Flecha: Revertir los cambios que se hayan producido desde que se abrió la ventana, para continuar editando desde la posición al abrir la ventana. Ventana de configuración de preferencias En la ventana de preferencias pueden configurarse unos cuantos parámetros que permitirán modificar el comportamiento de la aplicación. La ventana tiene dos pestañas que explicaremos a continuación. Pestaña: Vista de ajedrez Esta pestaña tiene el siguiente aspecto: En esta pestaña hay varios parámetros configurables: Mostrar comentarios: Si este parámetro está marcado, se mostrarán los comentarios de las partidas (no tiene nada que ver con que se extraigan los comentarios de las partidas en la opción de extracción de partidas de los PDFs. La extracción de partidas, no incluye en ningún caso los comentarios). Mostrar NAGs: Si este parámetro está marcado, se mostrarán los NAGs de las partidas. Mostrar las ventanas de las partidas siempre al frente: Si este parámetro está marcado, se mostrarán las ventanas de las partidas “a parte” siempre al frente (por delante de la ventana principal). Juego de figuras. Permite seleccionar el juego de figuras que se va a utilizar en la aplicación. Idioma para mostrar las partidas: Existen varios idiomas predefinidos que pueden ser seleccionados del desplegable de idiomas. La información necesaria para cada idioma, se resume en conocer la letra que se utiliza para denominar a cada una de las piezas en el formato algebraico de los movimientos. La aplicación también permite utilizar un idioma no existente previamente (seleccionando el primer elemento del desplegable (Personalizado)), y definiendo las iniciales de las piezas, necesarias para poder expresar todos los movimientos. Estas iniciales, tienen que ponerse en el siguiente orden: Rey, Dama, Torre, Alfil, Caballo. Esta opción de configuración sólo tiene sentido en cuanto a las iniciales de las piezas utilizadas para escribir los movimientos del el árbol de variantes (los comentarios obviamente no se traducen automáticamente). La opción (FIGURAS) (♔♕♖♗♘) permite mostrar los movimientos en notación algebraica de figuras (en lugar de usar letras (RDTAC) para designar las piezas). Pestaña: Idiomas Esta pestaña tiene el siguiente aspecto: Los parámetros que pueden configurarse son los siguientes: Idioma. Es el idioma de los textos que escribe la aplicación. Los idiomas que pueden escogerse son: EN. Inglés ES. Español CAT. Catalán RU. Ruso Locale de idioma. Es el locale de Java que va a utilizar la aplicación para este idioma. La aplicación lo utiliza para convertir números a cadenas numéricas formateadas. Idioma web. Indica el idioma que se va a utilizar en las consultas de nueva versión al servidor. Idioma adicional. Es un nuevo idioma adicional que aparece a la hora de poder cambiar de idioma. Para el nuevo idioma, tendrás que seleccionar el locale de Java a utilizar. Si quieres poner un idioma del que no existen textos en la aplicación, puedes añadir tu idioma traduciendo los ficheros que hay dentro del directorio que se crea cuando pulsas el botón de ”Añadir idioma”. Los ficheros a traducir se copian al directorio indicado en: "Directorio de idioma adicional" El formato de estos ficheros de textos es el de properties de java. Para los que no conozcáis este formato, os diré que un fichero properties, tiene un título, y tras este, un número variable de etiquetas con su valor, parecido a lo que sigue: # TITULO # xxxxxxxxxx ETIQUETA1=texto 1 ETIQUETA2=texto 2 ... Las etiquetas deben permanecer sin modificar, y los textos deben modificarse dependiendo de la traducción en el idioma escogido. Además, también hay algunos archivos en formato RTF, que tendrás que traducir con un editor de RTF (un editor típico para ese formato es el Word de Office). Si creas la traducción para un idioma adicional distinto a los que hay disponibles en la aplicación, si quieres puedes enviármelo (frojasg1@hotmail.com) y lo incluiré en las siguientes versiones de la aplicación. Pestaña: Extractor de partidas Esta pestaña tiene el siguiente aspecto: En esta pantalla, hay dos paneles: Extractor de partidas: Uso del extractor de partidas experimental. Este elemento permite controlar si se va a utilizar el extractor de partidas experimental. Se substituye el extractor experimental de anteriores versiones por un nuevo extractor experimental, que en las pruebas ha funcionado mejor que el extractor experimental anterior, y también mejor que el extractor normal. Así pues, si se marca esta casilla, se utilizará el nuevo extractor experimental, que tiene en cuenta los paréntesis y corchetes para decidir a qué variante pertenece cada movimiento. Idioma para las partidas: En este panel se permite cambiar el idioma utilizado para las partidas de ajedrez. Existen dos desplegables: Idioma del libro PDF. Permite seleccionar el idioma de las partidas a ser leídas desde el PDF. Idioma para mostrar las partidas: Permite seleccionar el idioma en el que serán mostradas las partidas en las áreas de texto habilitadas para ello. En este caso, la opción (FIGURAS) (♔♕♖♗♘) muestra las partidas en notación algebraica de figuras. El idioma de las partidas de ajedrez es una simple configuración en la que hay que indicar a la aplicación las iniciales de los nombres de las piezas que serán utilizados para escribir los movimientos en el formato algebraico. Existen varios idiomas ya predefinidos, y si se quiere configurar un idioma que no esté disponible en el desplegable, siempre es posible escoger la primera opción (personalizado), que permite introducir directamente las iniciales de las piezas (tienen que estar en el orden correcto para que la aplicación funcione correctamente y sin ningún otro carácter entre medias, ni siquiera espacios). En castellano, esas iniciales serían las siguientes: RDTAC (Rey – Dama – Torre – Alfil – Caballo) Pestaña: Extractor de tags Entendemos por tags los datos asociados a una partida (como lo son WhitePlayer, BlackPlayer, WhiteElo, Event, Site, …). Muchas veces esta información está explícita en las partidas de los libros, y en esta versión de la aplicación el extractor de partidas intenta obtenerlos. Como la manera de plasmar esa información no es estándar, la aplicación permite configurar patrones para intentar extraer esa información de manera adecuada. En esta pestaña se puede controlar la configuración para la extracción de esos tags, y esta configuración será la que se utilice durante la extracción de partidas de los libros. La aplicación lleva una configuración de extracción de tags por defecto, que ha salido de las pruebas con varios libros y que funcionan razonablemente bien para esos tipos de formato de tags. Si encuentras algún libro para el que la aplicación no tiene éxito extrayendo los tags y te gustaría cambiar la configuración para tratar de que se extraigan esos tags, es posible que te interese seguir leyendo este apartado y todo lo relacionado con la extracción de tags. Para una compresión óptima sobre cómo funciona esta configuración, es recomendable leer primero el apartado ( 7 - Extracción de tags ) en el que se explican los conceptos usados para esta configuración. La pestaña tiene el siguiente aspecto: En esta pantalla, hay varios paneles. Cada uno de esos paneles está formado por un desplegable y una serie de botones a su derecha, que permiten: Añadir elemento (+). Da la posibilidad de añadir un elemento al desplegable, abriendo una ventana para editar los datos necesarios para hacerlo. Eliminar elemento (-). Da la posibilidad de eliminar un elemento del desplegable. Modificar elemento. Permite modificar los datos del elemento seleccionado. Cuando los desplegables muestran la lista de opciones, el nombre del elemento se muestra en un color que indica si ese elemento está activo o inactivo, para reconocer de un visionado esa característica de los perfiles de expresiones regulares. Algunos desplegables tienen otros botones adicionales, que explicaremos más adelante. Los desplegables están dispuestos en cascada, es decir, cuando se selecciona otro elemento en el desplegable padre, los desplegables hijos también modifican su contenido de manera adecuada, manteniendo el último estado conocido. Los paneles de esta pestaña son los siguientes: Configuración de ficheros de perfiles: Fichero. Este desplegable permite seleccionar el fichero del que se va a mostrar o a modificar la configuración. Cuando cambia la selección, los desplegables de los otros paneles modifican su contenido de manera apropiada. Se pueden añadir, eliminar y renombrar ficheros de configuración de perfiles. Cuando se pulsa a añadir o a renombrar, aparece una ventana de este estilo: Existen una serie de botones adicionales. Estos son los botones, de izquierda a derecha: Activar todos. Da la opción de activar todos los perfiles de expresiones regulares. Desactivar todos. Da la opción de desactivar todos los perfiles de expresiones regulares. Exportar. Permite exportar el fichero de configuración seleccionado. Importar un fichero xml. Permite importar un fichero xml externo. Importar xml de fábrica. Permite importar el xml configurado exactamente con la configuración inicial. Configuración de bloques de expresión regular: Bloques En este desplegable se encuentran los bloques del archivo xml seleccionado u serán los que utilicen los perfiles para la extracción de tags del mismo archivo. Se pueden añadir, eliminar y editar esos bloques. Configuración de perfiles de expresiones regulares para tags: Perfiles En este desplegable se configuran los perfiles de expresiones regulares para la extracción de tags. Se pueden añadir, eliminar y editar esos perfiles. Además, más a la derecha del desplegable y de los botones estándar (+, -, editar), hay unos botones adicionales que, de izquierda a derecha son: Activar todos. Permite activar todos los perfiles del desplegable. Desactivar todos. Permite desactivar todos los perfiles del desplegable. Activar actual. Para activar el perfil seleccionado. Pestaña: Reconocedor de posiciones La pestaña tiene este aspecto: La pestaña Reconocedor de posiciones, permite configurar ese aspecto de la aplicación. Se puede activar o desactivar la funcionalidad. Modo de giro del tablero: Permite escoger la manera como se detectan las posiciones (con blancas abajo o negras abajo). Opciones: Automático. Deja a la aplicación la decisión de si las blancas están abajo o no en cada uno de los tableros reconocidos. Jugador blanco siempre abajo. Jugador negro siempre abajo. Número de hilos a usar para reconocer posiciones. Restablecer. Esta opción existe para el caso de que se haya entrenado mal en alguna ocasión al reconocedor de posiciones, y esté reconociendo piezas en lugares incorrectos, o cambiando unas piezas por otras. Podría pasar en caso de fallo humano. Hay las siguientes opciones: Restablecer. Borrar todos los patrones aprendidos desde la instalación. Recargar. Volver a cargar los últimos datos guardados (desde el último cambio aceptado de configuración, o desde el inicio de la sesión). Pestaña: Motores La pestaña tiene este aspecto: La aplicación sólo reconoce motores tipo UCI. La pestaña para configurar los motores, tiene dos elementos: Un enlace que te permite visitar una página en la que hay varios motores interesantes algunos de ellos gratuitos. Este link lo descubrí cuando probé la aplicación Crafty y ahora lo comparto con los usuarios de esta aplicación. Configuración de motores UCI. Es un desplegable que tiene opciones de añadir, eliminar y editar configuraciones de motores. Cuando se pulsa el botón de añadir elemento (+) o el de modificar elemento actual, se abre la ventana para configurar el motor:5.11 - Ventana de Configuración de motor. Panel común para aceptar los cambios Como ha podido observarse en las imágenes de cada una de las pestañas de configuración, en la ventana de configuración existe un panel común a las dos pestañas. Este panel contiene tres botones que sirven para indicar a la aplicación qué desea hacerse con los cambios de configuración introducidos: Cruz: Descartar cambios y cerrar la ventana de configuración V: Aceptar cambios, consolidarlos y cerrar la ventana de configuración. Flecha: Revertir la configuración a la que había cuando se abrió la ventana de configuración y continuar con la ventana de configuración abierta. Ventana de partida abierta “a parte” Para editar, copiar/pegar variantes de unas partidas a otras (cosa que muchas veces es necesario para resolver las ambigüedades que se pueden producir al extraer las partidas), es útil tener disponible el árbol de variantes de varias partidas en ventanas separadas y visibles todas a la vez. Debido a la necesidad de abrir ventanas de este tipo, se han creado dos opciones de menú que permiten abrir una partida en una ventana separada. En el menú emergente de la tabla de partidas en la ventana principal. En el menú de ventanas. Este tipo de ventanas de partidas “a parte”, puede configurarse para que estén siempre al frente, por delante de la ventana principal (aunque este comportamiento puede cambiarse desde la ventana de configuración de preferencias). El aspecto de este tipo de ventanas es el siguiente: Menú emergente Se ha reaprovechado el mismo componente que contiene el listado de las variantes de la ventana principal, y también tiene el mismo menú emergente: El menú ya fue explicado en el apartado de ventana principal, aunque en este apartado veremos más detalles de las opciones para edición de partidas: Seleccionar y copiar una variante: Cuando se escoge esta opción del menú, se selecciona la variante que comienza con el movimiento sobre el que estaba el ratón cuando se pulsó el botón derecho. Tras seleccionar esta opción, en la ventana aparecerá resaltada con fondo amarillo la variante seleccionada: Limpiar selección, permite deseleccionar la variante seleccionada previamente. Pegar variante, permite pegar la variante seleccionada (marcada en amarillo), tras el movimiento sobre el que estaba el puntero del ratón al pulsar el botón derecho. En este caso se realiza la comprobación de que el número de movimiento y el turno del jugador coincidan, para evitar hacer copias inconsistentes. Borrar. Permite borrar la variante sobre la que estaba el ratón cuando se pulsó el botón derecho. Las opciones de pegar y borrar variante, no pueden deshacerse, por lo que hay que ir con especial cuidado para evitar cometer equivocaciones. Es posible pegar una variante seleccionada en otra partida diferente (que puede estar abierta también aparte), o también puede pegarse esa variante seleccionada en el área de texto de la partida en la ventana principal. Ventana de análisis La ventana tiene este aspecto: Se pueden abrir uno o varios paneles analizando la posición mostrada en el tablero. En cada panel de análisis se puede seleccionar: El motor (de entre los motores UCI configurados en 5.11 - Ventana de Configuración de motor) El número de variantes. Si el motor lo permite, se pueden configurar N variantes de análisis con el mismo motor. Cada variante tiene su propio cuadro de texto para indicar la variante más prometedora, con un botón a la izquierda que permite pegar esa variante a la partida de la ventana principal. El tiempo de análisis. Es el tiempo en segundos a invertir en el análisis. Botón para parar/rearrancar análisis Para cada panel de motor (si lo permite), se podrán configurar varias variantes y el tiempo (en segundos) a invertir en el análisis. Ventana qué es nuevo En esta ventana aparece un documento explicando las novedades de la versión. La ventana tiene este aspecto: Ventana Acerca de … En la ventana Acerca de… se muestran los agradecimientos y las urls de los sitios web de donde he extraído algún artículo, fuente o recurso que he utilizado en la aplicación. La ventana tiene este aspecto: Ventana de Licencia En la ventana de licencia, puede volver a leerse la licencia que se aceptó al instalar por vez primera la aplicación. Tiene el siguiente aspecto: Ventana de Configuración de motor Esta ventana permite visualizar y configurar los datos de un motor concreto. La misma ventana tiene dos comportamientos ligeramente distintos, dependiendo desde don de se haya abierto: Configuración de un motor nuevo Cuando se abre esta ventana desde el botón de añadir nuevo motor (+), aparece una ventana como esta: Se puede escoger la ruta donde se encuentra el binario de ese motor. Además, es posible añadirle parámetros de entrada a la invocación del motor. También se le puede poner un nombre, que no puede coincidir con ninguno de los ya existentes. Si el motor se reconoce correctamente, la aplicación propondrá un nombre válido basado en los datos del motor. También es posible acceder a la configuración del motor. Aunque esa parte está programada, no ha sido probada exhaustivamente, por lo que si aparecen errores, podéis poneros en contacto con el autor para informarle de ellos. Configuración de un motor ya existente Cuando se abre esta ventana desde el botón de configurar motor ya existente, aparece una ventana como esta: Se puede consultar el nombre del motor y la ruta donde se encuentra el binario de ese motor. Se puede acceder a la configuración del motor. Aunque esa parte está programada, no ha sido probada exhaustivamente, por lo que si aparecen errores, podéis poneros en contacto con el autor para informarle de ellos. Ventana de Nueva partida La ventana tiene este aspecto: Esta ventana recoge los datos de una nueva partida con control de tiempos, pudiendo elegir los detalles: Para cada jugador: Si son humanos o motores. Elo Control de tiempos. También hay un selector que permite escoger si: Se tiene que crear una nueva partida Ó la partida se continúa desde la posición actual mostrada en el tablero. En el caso de seleccionar “Continuar partida desde la posición actual”, puede ser útil el checkbox que permite escoger si se desea que la partida sea la línea principal (esa elección sólo aplicará al movimiento inicial de la partida, ya que el resto de movimientos siempre se insertarán como variante principal de la posición en la que se encuentran). Ventana Datos de la partida En esta pantalla se pueden editar los datos de la partida actual: Jugador blanco. ELO del jugador blanco. Jugador negro. ELO del jugador negro. Lugar. Evento. Ronda. Fecha. ECO (código de la apertura). Ventana de análisis de partida La ventana tiene este aspecto: En la ventana hay varios componentes: Panel de progreso. Muestra el progreso del análisis. Panel de motor. Permite escoger el motor con el que realizar el análisis, así como añadir, eliminar o configurar motores a la lista de motores conocidos. (Los cambios son persistentes) Spinner con el valor en segundos que tardará el motor en el análisis de cada movimiento. Panel con los botones de iniciar y de cancelar. El análisis se realizará para: la partida actual (en caso de haber abierto la ventana mediante la opción del menú global) la primera partida seleccionada de la tabla (primera fila en color azul celeste) (en caso de haber abierto la ventana mediante el menú emergente de la tabla de partidas). Una vez comienza el proceso de análisis, este puede cancelarse (pulsando el botón de cancelar). En ese caso el análisis se parará justo tras recibir del motor el resultado de la siguiente posición. Si no se cancela el análisis y este no está vacío, se creará una partida con la línea principal de la partida original analizada, y, para cada movimiento, se incluirá el resultado de análisis del motor. El análisis podría estar vacío si el motor no devolvió ningún análisis, como podría pasar, por ejemplo, cuando el motor está configurado para limitar la destreza (configurarlo así puede ser útil para jugar una partida contra un nivel inferior al máximo, pero no es útil para el caso de análisis). Cuando la partida ha sido analizada, se añaden comentarios para facilitar la localización de esos análisis en el árbol de variantes. También se modifican algunos tags de la partida (Annotator y Event), para añadir la información de que la partida ha sido analizada con esta aplicación. Ejemplo de edición de partidas extraídas con ambigüedades Caso práctico En este apartado se verá un ejemplo sencillo sobre cómo resolver las limitaciones del módulo de extracción de partidas, para volver a unir las partes de la partida que se habían separado debido a las ambigüedades que no pudieron resolverse automáticamente. En este ejemplo, veremos cómo resolver los problemas debido a las ambigüedades de la extracción de esta partida: Tras haber extraído las partidas del PDF, tenemos que la partida que nos ocupa, se encuentra dividida en dos partes, y entre estas dos partes, hay un fragmento que no ha podido extraerse. Vamos a ver cómo hacer para generar los fragmentos que nos faltan, y cómo poder pegar la segunda parte de la partida, en la posición adecuada de la primera parte extraída, para así tener todas las variantes juntas en una sola parte (una sola partida). Tenemos la primera parte de la partida en la ventana principal (haciendo doble click sobre la partida en la tabla de partidas): Abrimos la segunda parte de la partida, en una ventana “a parte”: Este es el aspecto tras abrir la segunda parte de la partida: Nos colocamos en el movimiento donde hay que reproducir los movimientos de la primera variante “perdida” ( 11… Axd5 12. Dh5+ +- ), por tanto debemos situarnos en el movimiento: 11. Cxd5 (el movimiento de la posición actual tiene fondo gris claro, para distinguirlo): Sobre el tablero, reproducimos manualmente los dos movimientos de la primera variante “perdida” ( 11… Axd5 12. Dh5+ +-): Nos colocamos sobre el punto ( 11… c5 ) donde podremos empezar añadir la segunda variante perdida ( 12. Df3+ Re8 13.Af4 ): Reproducimos manualmente la variante (realizando los movimientos arrastrando las piezas con el ratón): Seleccionamos la segunda parte extraída de la partida (que teníamos en la ventana “a parte”): Tras seleccionar toda la variante de la partida, tendremos esta imagen: Nos situamos en el movimiento apropiado para pegar la segunda parte de la partida, que tenemos seleccionada ( 9… e6 ): Pegamos la selección en la posición (hay que ponerse otra vez sobre el movimiento donde se quiere pegar la variante seleccionada y abrir el menú emergente con el botón derecho del ratón): Este es el aspecto tras pegar la segunda parte de la partida, sobre el movimiento anterior: Nos situamos sobre el primer movimiento de la variante que acabamos de pegar (sólo como simple comprobación): Tras tener ya toda la partida completa, podemos proceder a borrar la partida que contiene la segunda parte de la partida que nos ocupa (que acabamos de pegar sobre la partida actual): Tras eliminar esa partida que ya no nos servía, tendremos que hemos pasado a la partida siguiente de la tabla: Otro caso más complejo En este apartado se verá otro ejemplo de las limitaciones del módulo de extracción de partidas. En este caso se trata de una partida con un árbol de variantes más complejo, y la aplicación ha errado en obtener la variante a la que pertenecían algunos de los movimientos. En este caso es obvio que ha errado, ya que se producen movimientos ilegales, que la aplicación detecta y marca con fondo rojo. En otros casos más difíciles todavía, pueden producirse errores y que la aplicación no llegue a detectarlos, debido a que los movimientos también son legales en la variante en la que se han escrito. En situación normal, esto no debería pasar, pero en el caso de árboles de variantes con muchas variantes, podría pasar fácilmente, ya que hay ocasiones en las que la aplicación no puede deducir correctamente a qué variante pertenece cada movimiento (principalmente porque al extraer los movimientos de las partidas de los PDFs, no espera encontrar paréntesis que ayuden a la hora de saber a qué variante pertenece un movimiento, ya que es posible que estos paréntesis aparezcan o no). Debido a eso, existe mucha dificultad para conocer a qué variante pertenece un movimiento cuando se trata de un árbol de variantes complejo. La partida que nos ocupa en esta ocasión es la siguiente: El primer fragmento extraído de esta partida, es este: En el árbol de variantes extraído, puede observarse que la aplicación ha detectado dos posiciones ilegales. Esto quiere decir que cuando se selecciona uno de los movimientos marcados en rojo (o cualquiera que esté incluido en sus subvariantes derivadas), aparecerá el siguiente mensaje en el tablero de la ventana principal: Las posiciones ilegales es algo que sería recomendable arreglar a mano. Si en la partida existen muchos errores, quizás podría descartarse el resultado de la extracción de esa partida (borrando las partes obtenidas) y quizás, crear una partida nueva en su misma posición, esta vez realizando a mano todos los movimientos. Sin embargo, no es necesario resolver todos los movimientos ilegales antes de salvar, ya que la aplicación permite salvar los movimientos, incluso aunque produzcan posiciones ilegales. Cuando se vuelvan a cargar las partidas con posiciones ilegales, volverán a aparecer las indicaciones con fondo rojo, y los mensajes de Posición ilegal. Eso sí, es posible que si un PGN resultante grabado con esta aplicación con posiciones ilegales o con posiciones iniciales sin configurar intenta leerse con otra aplicación de ajedrez, se produzcan problemas. Extracción de tags Llamamos tags a cada uno de los datos (que no sean movimientos ni variantes) de la partida. Los libros en PDF, muchas veces tienen partidas de ejemplo, y habitualmente antes de esas partidas suelen aparecer una serie de líneas que contienen la información de algunos de esos tags: WhitePlayer, WhiteElo, BlackPlayer, BlackElo, Site, Event, Round, Eco. Como es obvio, no existe un formato predefinido que sigan todos los editores en todos sus libros para exponer estos datos de las partidas, y cada libro, o incluso en sección del libro, se expone esa información en un formato concreto. Como la extracción de partidas no sería lo mismo si no pudiéramos disponer de esa información, esta funcionalidad permite contemplar varios tipos de formato (configurando Perfiles), y cuando el extractor detecta una partida nueva, intenta cuadrar algún Perfil de entre las líneas anteriores a esa partida, y si se encuentra coincidencia con alguno de los perfiles, se obtienen los tags que ese perfil tenga definidos y se asignan a la partida que el extractor está a punto de procesar. Hacer esto no es tarea fácil, sobre todo debido a que no existe un formato estándar para la obtención de esos tags. En las pruebas realizadas para la validación de la extracción de partidas, se han hecho pruebas con bastantes libros diferentes con unos cuantos formatos de tags, que han dado lugar a unos cuantos Perfiles que se han incluido en la configuración por defecto de la aplicación. Es muy posible que haya formatos de tags que la configuración por defecto no reconozca, y en ese caso, sería necesario configurar esos nuevos formatos en Perfiles nuevos que permitan su reconocimiento durante la extracción de partidas. Si en la fase de extracción no se reconoce ningún Perfil para una partida en concreto, pues esa partida no va a tener asignados esos tags, y quedará un poco incompleta. A veces eso simplemente pasa debido a alguna irregularidad en la extracción que hace que la partida se seccione. Otras veces sí que es una partida nueva para la que no han podido obtenerse los tags. Cuando ocurra eso, hay varias opciones: O configuramos algún Perfil nuevo que haga coincidencia con ese formato (continuar leyendo este apartado), y en ese caso, a partir de ese momento el reconocimiento de los tags será automático para ese formato. O abrimos la ventana de datos de la partida (5.13 - Ventana Datos de la partida), donde se pueden introducir a mano los tags básicos de la partida. O, si queremos añadir algún tag que no sea básico, podemos abrir la ventana de edición de Tags (5.3 - Ventana de edición de TAGs), aunque esta opción es un poco más costosa. En este apartado se explicará de manera detallada el sistema de extracción de tags utilizado en esta aplicación, para que el usuario que tenga los conocimientos necesarios pueda adecuar la configuración para la extracción de tags a algún tipo de libro que no se haya tenido en cuenta en la configuración inicial que viene con la aplicación. Esta configuración puede constar de uno o varios ficheros independientes de configuraciones de extracción de tags, que pueden funcionar simultáneamente. Esta configuración se basa en expresiones regulares, por lo que en el subapartado (7.4 - Expresiones regulares) se dan unas nociones básicas de lo que se puede hacer con las expresiones regulares y cómo. En apartados sucesivos, se verá como se configuran los bloques, que son como los ladrillos de la extracción de tags, y más adelante veremos como se configuran los Perfiles, que es la unidad mínima para definir un formato de tags. Para no aburrir al lector, se tratarán los temas desde más alto nivel, hasta ir bajando a los detalles. Para configurar esta funcionalidad, hay que abrir la ventana de preferencias, en la pestaña de Extracción de tags. Dentro de esa pestaña, hay varios paneles: Ficheros La configuración, se guarda en archivos con formato xml. Pueden existir varios archivos xml independientes, que pueden aplicarse simultáneamente. Cada uno de estos ficheros está formado por: Un conjunto de bloques de expresiones regulares. Estos bloques son la unidad menor de información a ser recogida, y en ellos se define un patrón que define el contenido que al aplicarlo sobre un texto dará como resultado el valor a recoger. Conjunto de perfiles de expresiones regulares. Los perfiles contendrán un patrón de varias líneas correlativas que tendrán que coincidir exactamente con las líneas del texto que contienen los tags de las partidas. Perfiles Un perfil para la extracción de tags, contiene una serie de formatos de líneas. Esas líneas pueden ser opcionales (si son opcionales no es obligatorio que aparezcan en el texto para que den coincidencia). Para que un perfil coincida con las líneas que contienen los tags de una partida, tienen que coincidir todas las líneas no opcionales definidas en el perfil, y cero o más de las líneas opcionales, en el mismo orden en el que aparecen en el perfil. Cada una de esas líneas está compuesta por una expresión regular extendida (expresión regular con bloques). Los bloques a su vez están compuestos de expresiones regulares que pueden opcionalmente contener otros bloques. Si el usuario encontrara que un perfil está extrayendo mal los tags o que está dando coincidencias que no lo son (debido a que los patrones no son lo suficientemente específicos), siempre tenemos la opción de desactivar el perfil. Para averiguar el perfil que se corresponde con una partida recién extraída, tendremos la opción de abrirlo directamente desde el menú emergente de la lista de partidas (3.3.1 - Menú emergente), o desde la ventana de Edición de tags (5.3.3 - Aceptar, descartar, revertir cambios). Para ver las opciones que hay a la hora de definir perfiles de extracción de tags, ve al siguiente apartado 7.6 - Ventana de configuración de Perfiles para extracción de tags Este sería un ejemplo de perfil: Este perfil de ejemplo está formado por varias líneas: Cada línea tiene una lista de tags a extraer, a los que se le asignará alguno de los bloques definidos en el patrón. Tags a extraer para la línea 2: Tags a extraer para la línea 3: Cuando este perfil se aplica a esta cabecera de partida en un PDF: El extractor de tags, da coincidencia con el perfil de nombre “Edami-2”, y los tags extraídos son los siguientes: Como hemos podido ver, un Perfil está formado por varias líneas Líneas del perfil Las ventanas para configurar perfiles están compuestas de varios paneles que describen los patrones de las líneas. Los paneles, que contienen la configuración de una línea, están compuestos por los siguientes elementos: Expresión regular. Contiene el patrón que tiene que tener la línea para que dé coincidencia. Será una expresión regular que tendrá uno o más bloques. Los bloques son expresiones regulares que se toman como un bloque de texto unitario. Para extraer el valor de un tag, se deberá definir el patrón que tiene que cumplir ese tag configurando un bloque para cada tipo de patrón de tag. Cuanto más específicos sean esos patrones, menos probabilidad hay que de haya ambigüedades en la detección de esos tags. La expresión regular de las líneas, tendrá la restricción de que no puede hacer uso de los paréntesis (creación de grupos), y si fuera necesario crear grupos, habría que hacerlo creando nuevos bloques, que se han ideado para formar grupos reutilizables de manera sencilla con un nombre concreto. Botón de edición de la expresión regular.Permite editar la expresión regular pudiendo realizarle pruebas. 7.5 - Ventana de edición de expresiones regulares Tags a extraer. Desplegable con los tags a extraer en esta línea en concreto. Se pueden añadir, eliminar y editar tags. Cuando se edita un tag, se abre una ventana de configuración que permite asignarle uno de los bloques de la expresión regular. 7.5 - Ventana de edición de expresiones regulares Cuando esta línea dé coincidencia, los tags tomarán el valor del texto correspondiente al bloque en la línea en concreto. opcional. Permite seleccionar si. La línea es opcional o no. Para extraer el valor de un tag, se deberá definir el patrón que tiene que cumplir ese tag configurando un bloque para cada tipo de patrón de tag. Cuanto más específicos sean esos patrones, menos probabilidad hay que de haya ambigüedades en la extracción de esos tags. Bloques Cada fichero xml de expresiones regulares para la extracción de tags, tiene una serie de bloques de expresión regular que permiten definir exactamente un patrón para su contenido. Cada uno de estos bloques, podría designar un tipo de dato de la partida candidato para ser recogido. Cada bloque tiene asociados un nombre y un patrón (expresión regular). Los bloques no pueden contener el carácter “%” en su nombre, y son referenciados en una expresión regular, rodeando el nombre de bloque entre dos “%”. Así, por ejemplo, podríamos definir un bloque ELO, y podríamos ponerle como patrón que estuviera compuesto por 3 ó 4 dígitos. De esa manera, siempre que en una expresión regular de los perfiles, apareciera un elemento %ELO%, ya sabríamos que se refiere al bloque ELO, que está compuesto por 3 ó 4 dígitos, y podríamos recogerlo y asignarlo como el dato de partida WhiteElo, o el de BlackElo, dependiendo de la posición de la línea donde se encontrara ese bloque ELO. La idea es tener un bloque distinto por cada tipo de dato de partida (tag) candidato a ser recogido, y usar los nombres esos bloques de expresiones regulares para indicar la asignación del bloque a un dato concreto de la partida (tag). El panel de bloques de la pestaña Extractor de tags de la ventana de preferencias: Permite añadir, eliminar y editar bloques Al pulsar la opción de nuevo bloque (+) o de edición de bloque, se abre la ventana de edición de expresiones regulares, personalizada para bloques: 7.5 - Ventana de edición de expresiones regulares. Expresiones regulares Las expresiones regulares permiten definir un patrón de texto. Este patrón se puede utilizar para decidir si un texto determinado cumple con el patrón o no, o para extraer determinados elementos de ese patrón aplicado a un texto concreto. Estos dos casos de uso de las expresiones regulares serán utilizados en este sistema de extracción de tags. Las expresiones regulares podrán estar formadas por caracteres normales y por caracteres especiales. Si en el patrón se quiere hacer una coincidencia con un carácter especial, pero no en su aspecto especial sino en su aspecto literal, habrá que añadir delante del carácter especial una contrabarra (\). Eso hará que el carácter especial pierda su valor especial y se convierta en literal. Como es lógico, la contrabarra a su vez es un carácter especial, así que si queremos establecer una coincidencia con el literal contrabarra “\”, deberemos poner una contrabarra delante: \\, para que pierda su aspecto especial. Todos estos caracteres especiales, así como los caracteres literales, hacen coincidencia con un solo carácter del texto con el que se busca coincidencia. Para definir coincidencias con un número de veces distinto, habrá que aplicar alguno de los siguientes modificadores: Caracteres especiales principales: . (punto). Hace coincidencia con cualquier carácter. \d (dígito). Hace coincidencia con cualquier dígito numérico. \s (espacio). Hace coincidencia con cualquier carácter de espaciado (espacio, tabulación, final de línea, …) \w (carácter de palabra). Hace coincidencia con cualquier carácter de palabra [a-zA-Z0-9] y las vocales acentuadas o con diéresis, o con letras de palabra de otros alfabetos. [caracteres] (conjunto de caracteres encerrado entre corchetes).. Hace coindidencia con cualquiera de los caracteres enumerados entre los corchetes. Para designar rangos de caracteres, se utiliza el – (menos). Es decir, la expresión [a-zD], hará coincidencia con cualquier carácter de letra minúscula (de la ‘a’ a la ‘z’), ó con la letra D mayúscula. [^caracteres] (excluir conjunto de caracteres encerrado entre corchetes). Hace coincidencia con cualquier carácter excepto con los caracteres enumerados entre los corchetes. Funciona de manera idéntica que el del punto anterior, pero con el ^ (acento circunflejo) delante. Caracteres especiales que limitan el número de veces de un elemento: * (asterisco). Cero o más veces ? (interrogación). Cero o una veces. + (más). Una o más veces. {n} (llaves). n veces {n1,n2} (llaves). de n1 a n2 veces ambos incluidos. {,n2} (llaves). de 0 a n2 veces ambos incluidos. {n1,} (llaves). al menos n1 veces. Los caracteres que limitan el número de veces, aplican al elemento justo anterior, que puede ser: Un carácter normal. Un carácter único comprendido entre una enumeración de caracteres [caracteres] (corchete) Un grupo de caracteres (encerrado entre paréntesis) Caracteres especiales que indican inicio y final dentro del patrón: ^ (acento circunflejo). Inicio de la línea. $ (dólar). Final de la línea Ejemplos: Ha sido un resumen muy rápido. Si estás interesado en profundizar, puedes visitar la siguiente url: Restricciones en la configuración: Las expresiones regulares que se usarán para la configuración de la extracción de tags, no podrán contener paréntesis (), ya que los paréntesis se usan para localizar grupos que permiten extraer partes del patrón aplicado a un texto. Si se quieren realizar operaciones básicas con paréntesis, se podrán utilizar bloques. El único limitador de número de veces que se puede aplicar a un bloque candidato de ser extraído, será el (? )(interrogante), que indica opcionalidad, da coincidencia cuando se encuentra el patrón cero o una veces. Ventana de edición de expresiones regulares Hay varios modelos de ventana de edición de expresiones regulares, pero todos permiten hacer las mismas cosas, que incluyen la edición de la expresión regular y la realización de pruebas sobre la expresión regular (como si un texto cumple con el patrón, o extracción de textos de bloques). Ejemplo de ventana. En la ventana de edición se puede: Editar la expresión regular. Cuando se edita la expresión regular, existe un formateo al vuelo mientras el usuario está escribiendo. Si se detecta que la expresión regular es incorrecta, se marcará con texto rojo. Si la expresión regular es válida, se marcará en color verde el bloque seleccionado. Activar/desactivar la autocompletación. Ver como actúa esta funcionalidad: 7.5.1 - Activación de la ventana de autocompletación Seleccionar un bloque presente en la expresión regular que será el que se asociará con el tag (en caso de que el usuario haya abierto la ventana de edición de asignación de tags), o será el bloque se se usará en las pruebas para realizar la extracción a partir del texto de prueba (en caso de que el usuario haya abierto la ventana desde la edición de expresión regular de línea, o desde la edición de bloque). Hay otros elementos visuales que sirven para hacer pruebas con la expresión regular: Texto de prueba. Es el texto sobre el que se realizará la prueba (simulando una línea real a ser extraída). Comprobación de coincidencia. Botón a la derecha del componente de texto que permite comprobar si el texto cumple con el patrón de la expresión regular. Botón de substitución. Permite extraer el valor bloque cuando se aplica el patrón al texto de prueba. Activación de la ventana de autocompletación La funcionalidad de autocompletación puede activarse y desactivarse en todos los puntos donde se pueden editar las expresiones regulares y hace que cuando el usuario está editando la expresión regular, cuando escribe un inicio de invocación a bloque (%), se abre la ventana de autocompletación, con una relación de los bloques existentes que comienzan como está escribiendo el usuario. Esto puede ser útil para no tener que recordar exactamente los nombres de los bloques mientras se está editando la expresión regular. Cuando aparecen las opciones en la ventana de autocompletación, se pueden hacer las siguientes acciones: Seguir escribiendo. En este caso, a medida que el usuario va escribiendo, las opciones se van adaptando al texto escrito y cuando termine de escribir el bloque (escriba el segundo %, cerrando el bloque), o cuando la selección sea vacía (no hay coincidencias para el bloque que el usuario está escribiendo), la ventana de autocompletación se cerrará sola Pulsar escape. Si el usuario pulsa escape mientras la ventana de autocompletación está abierta, esta se cerrará. Seleccionar con las fechas del cursor. Te puedes mover con las flechas del cursor por las opciones disponibles en la ventana. Pulsar Return. Al pulsar Return, el usuario selecciona la opción actual, y esa opción se escribirá en el componente de texto. Hacer doble click sobre una de las opciones de la ventana. Esta opción es lo mismo que pulsar Return. Ejemplo de configuración de expresión regular Analicemos la expresión regular: ^ - Inicio de línea \(? - apertura de paréntesis (opcional) (observar la contrabarra de delante, para quitar al paréntesis su valor especial, y hacerlo literal). %NUMBER%? - Bloque que representa a un número (opcional). \)? – cierre de paréntesis (opcional). (observar la contrabarra de delante, para quitar al paréntesis su valor especial, y hacerlo literal). \s* - un número indeterminado de espacios de cualquier tipo. (puede ser cero espacios). (Ahora la contrabarra, le da un significado especial al carácter ‘s’) %PLAYER_NAME% - Bloque que representa a un nombre de jugador. \s* \(? %ELO%? - Bloque que representa a un Elo (opcional). \)? \s* - (Guión, literal) \s* %PLAYER_NAME% \s* \(? %ELO%? \)? \s* \[? – apertura de corchete (opcional). (observar la contrabarra de delante, para quitar al corchete su valor especial, y hacerlo literal). %ECO%? – Bloque que representa a un ECO (opcional). \]? – cierre de corchete (opcional). (observar la contrabarra de delante, para quitar al corchete su valor especial, y hacerlo literal). \s* ;? - (Punto y coma opcional). \s* $ - Final de línea Para este caso, los bloques usados en este patrón son los siguientes: Mapeo de tags: Ejercicio: Escribir cual sería el resultado de la extracción de tags para esta configuración de línea, aplicada al siguiente texto: Ivanchuk,V (2480) - Angelov,K (2380) [B01] Este ejemplo, es el de la línea 2 del ejemplo usado en 7.2 - Perfiles. En ese ejemplo, pueden verse los resultados de la extracción de tags de este ejemplo real. Ventana de configuración de Perfiles para extracción de tags La ventana tiene este aspecto: La ventana está compuesta de varios paneles: Panel superior con el nombre del Perfil. También permite activar y desactivar el perfil. Paneles de líneas. Panel inferior, para cancelar, aceptar o revertir los cambios. También se puede activar/desactivar la ventana de autocompletación. Los perfiles de extracción de tags, están compuestos por uno o varios paneles de línea (ahí es donde se configuran los patrones que tienen que coincidir con cada línea del texto real). Al crear un perfil, este perfil aparece con un solo panel de línea. Sin embargo, pueden añadirse más, eliminar paneles de línea concretos o cambiar esos paneles de orden (el orden de los paneles determinará el orden en el que tienen que aparecer las líneas en el texto para que haya coincidencia). Cómo añadir un nuevo panel de línea Para añadir un nuevo panel de línea, hay que situarse con el ratón sobre el panel donde se quiere añadir la nueva línea, y abrir el menú contextual con el botón derecho del ratón. Aparecerán varias opciones, entre ellas: Insertar línea antes. Insertar línea después. Cuando se selecciona una de esas opciones, se crea una nueva línea en la posición escogida. Cómo eliminar un panel de línea Para eliminar un panel de línea, hay que situarse con el ratón sobre el panel que se quiere eliminar, y abrir el menú contextual con el botón derecho del ratón. Aparecerán varias opciones, entre ellas: Borrar línea. Cuando se selecciona esa opción, se elimina la línea de la posición marcada. Cómo cambiar un panel de línea de posición Para cambiar un panel de línea de posición, hay que situarse con el ratón sobre el panel que se quiere mover, y arrastrarlo hasta otra posición distinta. El panel que se está intentando arrastrar aparece marcado en color amarillo y a medida que vas cambiando la posición del ratón, te marca la línea destino en donde se situará ese panel de línea cuando se suelte el botón del ratón. Reconocedor de posiciones Esta nueva funcionalidad ha sido creada para intentar reconocer las posiciones de las imágenes que están justo antes de las partidas que no empiezan en la posición inicial. Si la aplicación es capaz de resolver esa posición, podrá crear una partida con formato PGN desde posición arbitraria, poniendo la cadena FEN de dicha posición inicial, para así poder navegar por el árbol de variantes de manera adecuada. La aplicación intentará ese procedimiento sin la ayuda del usuario. La manera que tiene de funcionar, es que, durante la extracción de partidas, es posible que existan imágenes con posiciones conocidas (por ejemplo, de partidas que sí que comienzan con la posición inicial y que, a los pocos movimientos, han puesto una imagen de la posición). El extractor de partidas entrena al reconocedor de posiciones con esas posiciones conocidas. Una vez que se han extraído las partidas de un libro, el reconocedor de posiciones continúa procesando las posiciones de entrenamiento y, cuando termina, la aplicación ofrece la posibilidad de intentar reconocer las posiciones representadas en las imágenes del libro, pulsando el botón derecho sobre la imagen y seleccionando la opción que aparece. Una vez que se ha tratado de reconocer una posición pueden pasar varias cosas: Que el reconocedor no sea capaz de reconocer la rejilla con casillas del tablero. En ese caso no se continuará con el reconocimiento. Que el reconocedor reconozca las casillas del tablero pero no sea capaz de reconocer la posición completa. En ese caso se dará la posibilidad al usuario de abrir la posición parcialmente reconocida en un tablero, y que el usuario rellene las piezas no reconocidas para que entrene de esa manera al reconocedor. Si este proceso se ha realizado sin errores, tras ese entrenamiento, la posición podrá ser reconocida sin ayuda del usuario. Puedes ver la ventana que se abre para entrenar al reconocedor aquí:8.1.1 - Ventana de edición de posiciones. Entrenamiento del reconocedor. Que el reconocedor reconozca la posición completa. En ese caso, se da la opción de abrir la posición en un tablero, y de copiar la posición en el portapapeles (podrá ser pegada en la ventana de edición de posición inicial). Si la partida actual no tiene una posición inicial asignada, también se ofrece la posibilidad de que la posición reconocida se asigne como posición inicial de la partida. El reconocedor persiste las posiciones aprendidas cuando se cierra la aplicación. Así pues, si se cierra la aplicación y se vuelve a abrir más tarde, todavía será capaz de reconocer las posiciones aprendidas. Ventana de edición de posiciones. Entrenamiento del reconocedor Cuando la posición de la imagen no ha podido reconocerse completamente (pero sí que se ha podido detectar la rejilla de las casillas del tablero), se ofrece al usuario la posibilidad de abrir una ventana de edición de posición, marcando las casillas que presumiblemente contienen una pieza que no ha podido reconocerse con un marco rojo. La ventana tiene un aspecto como este: Cuando se confirman los cambios, la aplicación envía la asociación de la imagen y la posición al reconocedor de posiciones. Si se cancelan los cambios, no se trata de entrenar al reconocedor. Anexos Conceptos empleados en el manual En este apartado se explicarán algunos conceptos necesarios para poder entender correctamente el manual y el funcionamiento de la aplicación. Comentario. Texto explicativo que puede acompañar a una jugada. Los comentarios útiles son aquellos que han sido escritos por un experto de ajedrez que haya podido analizar la posición concreta. NAG. Es la forma de denominar una serie de comentarios estándar dentro de un archivo PGN. Los NAGs son los signos opcionales que siguen a un movimiento, indicando la calidad del mismo. Algunos de los NAGs posibles son los siguientes: PDF. Es un formato estándar de archivo que permite almacenar texto e imágenes formando documentos o libros. PGN. Es un formato estándar de un archivo que permite almacenar una lista de partidas de ajedrez con sus variantes. La información de cada partida contiene una cabecera con información sobre la partida (organizada en TAGs), y luego el cuerpo de la partida (una lista de movimientos organizados en variantes). Permite incluir comentarios y NAGs en cada uno de los movimientos. TAG. Tag es cada uno de los distintos parámetros de que se compone la cabecera de mensajes PGN, y que proporcionan información sobre la partida (el nombre de los jugadores, su elo, la localización, el evento, ronda, etc, etc). Existen siete TAGs que son obligatorios para las partidas grabadas en formato PGN, el resto de TAGs son opcionales. Los TAGs obligatorios son los siguientes: 1) Event (nombre del campeonato o del match) 2) Site (Localización del evento) 3) Date (la fecha del inicio de la partida) 4) Round (el número de ronda de la partida) 5) White (el jugador con piezas blancas) 6) Black (el jugador con piezas negras) 7) Result (resultado de la partida) Texto de la licencia La licencia que debe ser aceptada para utilizar la aplicación, tiene este texto: LICENCIA DE USO DEL PROGRAMA El presente programa, denominado ChessPDFBrowser v1.20 , tiene por objeto el estudio y la mejora de todos los aspectos referidos al milenario juego del ajedrez, para ello utiliza una interfaz que presenta la partida en pantalla de un modo atractivo y que permite el estudio exhaustivo de cada jugada. © 2016-2020. Francisco Javier Rojas Garrido. Este software es cedido de forma libre y gratuita, a cualquier persona o entidad que lo descargue, bajo las siguientes cláusulas: 1.- La posesión de este programa supone la aceptación de todas y cada una de las condiciones de esta LICENCIA DE USO DEL PROGRAMA ChessPDFBrowser v1.20. 2.- LICENCIA PRINCIPAL: (ChessPDFbrowser.v1.20 - ChessPDFbrowser-main-v1.20-SNAPSHOT-all.jar). Este programa es software libre: usted puede redistribuirlo y/o modificarlo bajo los términos de la Licencia Pública General GNU, publicada por la Fundación para el Software Libre, ya sea la versión 3 de la Licencia, o cualquier versión posterior. Este programa se distribuye con la esperanza de que sea útil, pero SIN GARANTÍA ALGUNA, ni siquiera la garantía implícita MERCANTIL o de APTITUD PARA UN PROPÓSITO DETERMINADO. Consulte los detalles en la Licencia Pública General GNU para obtener una información más detallada. http://www.gnu.org/licenses/gpl.html 3.- LICENCIA DE LAS LIBRERÍAS INTERNAS: Las librerías que se cita a continuación: * Librerías propias bajo licencia GPL: lib3D-v1.4-SNAPSHOT.jar (© 2020. Francisco Javier Rojas Garrido) libJerseyInetQuery-v1.4-SNAPSHOT.jar (© 2019. Francisco Javier Rojas Garrido) libPdfboxWrapper-v1.4-SNAPSHOT.jar (© 2020. Francisco Javier Rojas Garrido) Han sido creadas específicamente para la aplicación ChessPDFBrowser v1.20 y son cedidas por su autor bajo los términos de la Licencia Pública General GNU (GPL), versión 3.0. Consulte los detalles en la Licencia Pública General GNU para obtener información más detallada. http://www.gnu.org/licenses/gpl.html * Librerías propias bajo licencia LGPL: lib3Dapi-v1.4-SNAPSHOT.jar (© 2020. Francisco Javier Rojas Garrido) libInetQuery-v1.4-SNAPSHOT.jar (© 2019. Francisco Javier Rojas Garrido) libPdf-v1.4-SNAPSHOT.jar (© 2020. Francisco Javier Rojas Garrido) libGeneric-v1.4-SNAPSHOT.jar (© 2015-2020. Francisco Javier Rojas Garrido) libGenericDesktop-v1.4-SNAPSHOT.jar (© 2015-2020. Francisco Javier Rojas Garrido) libPdfInputElement-v1.20-SNAPSHOT.jar (© 2020. Francisco Javier Rojas Garrido) libChessEngineWrapper-v1.20-SNAPSHOT.jar (© 2020. Francisco Javier Rojas Garrido) libChessBoardRecognition-v1.20-SNAPSHOT.jar (© 2020. Francisco Javier Rojas Garrido) libChess-v1.20-SNAPSHOT.jar (© 2016-2020. Francisco Javier Rojas Garrido) ChessPDFbrowser-v1.20-SNAPSHOT.jar (© 2016-2020. Francisco Javier Rojas Garrido) Han sido creadas específicamente para la aplicación ChessPDFBrowser v1.20 y son cedidas por su autor bajo los términos de la Licencia Pública General Reducida (LGPL), versión 3.0. Consulte los detalles en la Licencia Pública General Reducida para obtener información más detallada. http://www.gnu.org/licenses/lgpl-3.0.txt * Librerías de código libre recopilado (sin licencia) cedido bajo licencia LGPL: libScreenImage-v1.2-SNAPSHOT.jar libTableColumnAdjuster-v1.2-SNAPSHOT.jar libImageProcessing-v1.4-SNAPSHOT.jar Son cedidas bajo los términos de la Licencia Pública General Reducida (LGPL), versión 3.0. Consulte los detalles en la Licencia Pública General Reducida para obtener información más detallada. http://www.gnu.org/licenses/lgpl-3.0.txt 4.- CÓDIGO FUENTE: El código fuente de ChessPDFBrowser v1.20 es público. Dicho código fuente está a disposición del cualquier persona interesada en las url siguientes: https://frojasg1.com https://sourceforge.net/projects/chesspdfbrowser1/ 5.- USO Y LICENCIA DE LIBRERÍAS EXTERNAS: La aplicación ChessPDFBrowser v1.20 requiere del uso de librerías externas no específicamente creadas para dicha aplicación. Las librerías utilizadas por la aplicación ChessPDFBrowser v1.20 , junto con sus correspondientes licencias de uso, son las que se enumeran a continuación: bcprov-jdk15on-1.47.jar (Copyright (c) 2000 - 2017 The Legion of the Bouncy Castle Inc. (https://www.bouncycastle.org)) http://grepcode.com/snapshot/repo1.maven.org/maven2/org.bouncycastle/bcprov-jdk15on/1.47 Licencia: Bouncy Castle Licence (MIT license). Para obtener información más detallada consulte: https://www.bouncycastle.org/licence.html jai-imageio-core-1.4.0.jar (Copyright (c) 2005 Sun Microsystems, Inc. Copyright © 2010-2014 University of Manchester Copyright © 2010-2015 Stian Soiland-Reyes Copyright © 2015 Peter Hull). https://github.com/jai-imageio/jai-imageio-core/ Licencia: Licencia permisiva, para más información consultar: https://github.com/jai-imageio/jai-imageio-core/blob/master/LICENSE.txt jai-imageio-jpeg2000-1.3.0.jar (Copyright (c) 1999/2000 JJ2000 Partners.). https://github.com/jai-imageio/jai-imageio-jpeg2000/ Licencia: para más información consultar: https://github.com/jai-imageio/jai-imageio-jpeg2000/blob/master/LICENSE-JJ2000.txt jbig2-imageio-3.0.3.jar (Copyright (c) The Apache Software Foundation). https://mvnrepository.com/artifact/org.apache.pdfbox/jbig2-imageio/3.0.3 Licencia: Apache License, Version 2.0 Para obtener información más detallada consulte: https://www.apache.org/licenses/LICENSE-2.0 pdfbox-2.0.19.jar (Copyright © 2009–2020 The Apache Software Foundation). https://pdfbox.apache.org/ Licencia: Apache License, Version 2.0 Para obtener información más detallada consulte: https://www.apache.org/licenses/LICENSE-2.0 juniversalchardet-1.0.3.jar (Copyright © 1998  Communications Corporation. Contributor: Kohei Takeda). https://mvnrepository.com/artifact/com.googlecode.juniversalchardet/juniversalchardet/1.0.3 Licencia, Mozilla Public License 1.1 (MPL 1.1), para más información consultar: http://www.mozilla.org/MPL/MPL-1.1.html La Licencia MPL-1.1 permite el uso de licencias alternativas para la totalidad o parte del código de la presente librería. El creador de ChessPDFBrowser v1.20. opta por el uso de esta librería bajo los términos de la Licencia Pública General Reducida (LGPL), versión 3.0. Consulte los detalles en la Licencia Pública General Reducida para obtener información más detallada. http://www.gnu.org/licenses/lgpl-3.0.txt 3D libs: org.jogamp.java3d - vecmath-1.7.0.jar (Copyright 1997-2008 Sun Microsystems, Inc.). Licencia: GNU General Public License (GPL), Version 2.0 Para obtener información más detallada consulte: https://www.gnu.org/licenses/old-licenses/gpl-2.0.html org.jogamp.java3d - j3dcore-1.7.0.jar (Copyright 1997-2008 Sun Microsystems, Inc.). Licencia: GNU General Public License (GPL), Version 2.0 Para obtener información más detallada consulte: https://www.gnu.org/licenses/old-licenses/gpl-2.0.html org.jogamp.java3d - j3dutils-1.7.0.jar (Copyright (c) 2007 Sun Microsystems, Inc.). Licencia: Permisiva (ver código fuente). El creador de la aplicación ChessPDFBrowser v1.20. manifiesta que las librerías externas enumeradas anteriormente han sido utilizadas respetando escrupulosamente las condiciones de uso expresadas en las correspondientes licencias. Asímismo, el usuario de ChessPDFBrowser v1.20. , deberá respetar las condiciones de uso y de cesión de las librerías externas enumeradas anteriormente, siendo éste el único responsable por el uso incorrecto de las mismas y no pudiendo derivarse ninguna responsabilidad de ello al creador de ChessPDFBrowser v1.20. Juegos de figuras de ajedrez: * El juego de figuras de ajedrez por defecto de esta versión de la aplicación, puede descargarse de esta página: https://www.virtualpieces.net/icons * Se ha utilizado un juego de figuras de ajedrez gratuito, con licencia Creative Commons: https://creativecommons.org/licenses/by/2.5/ Este juego de figuras, ha sido creado por: Yuri Mazursky, y se puede descargar en: https://www.iconfinder.com/iconsets/chess-7 Iconos utilizados: * Se han utilizado algunos iconos gratuitos y otros comprados de la página: https://www.iconfinder.com/ 6.- RESPONSABILIDAD: El creador del software ChessPDFBrowser v1.20 no será responsable del uso que el usuario pueda hacer del software sometido a la presente licencia . El usuario deberá utilizar el programa de acuerdo con las leyes vigentes en su país de residencia, en especial con las leyes sobre propiedad intelectual vigentes en el país de residencia del usuario. Cualquier responsabilidad civil o penal que se derive del uso inadecuado del programa ChessPDFBrowser v1.20, será atribuible únicamente al usuario del mismo, no pudiendo reclamarse ninguna responsabilidad, ni civil ni penal, al creador del software sometido a la presente licencia. 7.- VIGENCIA: El contrato entra en vigor a partir de la instalación del programa y la consiguiente aceptación de las presentes cláusulas. El desconocimiento de estas cláusulas no exime de su responsabilidad a los usuarios. Si no está conforme con la licencia de uso del programa, no instale este producto. En caso en que ya estuviese instalado, desinstálelo de forma inmediata.