Gestionar bibliografía con Emacs

Llevo tiempo utilizando documentos en formato texto para todo. La documentación, como ya he contado muchas veces en este blog, la escribo utilizando LaTeX y como sabéis, la bibliografía de esos documentos se guarda normalmente en ficheros .bib . Hasta ahora utilizaba la herramienta JabRef para gestionar esas bases de datos y todo funcionaba perfectamente: es una gran aplicación. Pero de un tiempo a esta parte, las versiones que van sacando de JabRef me han dejado de funcionar. No tengo muy claro por qué, lo estoy achacando a la versión de OpenJDK, --y todo su entorno--, que instala Tumbleweed.

El otro día, escribiendo un documento, me di cuenta que JabRef no me funcionaba. Afortunadamente, cuando abrí el fichero .bib con Emacs se me abrió un modo que se llama BibTex . Colorea sintaxis y agrega una gran lista de funciones para gestionar las entradas en la base de datos. Además, era una lista pequeña, sólo había cinco documentos que citar y se podía gestionar a mano de forma fácil.

Probé varias veces a recuperar JabRef, lanzándolo desde línea de comandos, descargando varias versiones para al final llegar a la conclusión de que no me funcionaba y que haría bien en buscar una alternativa y, puesto que, últimamente mis herramientas tienen a orbitar alrededor de Emacs miré alternativas con mi editor favorito.

Como ya dicho podemos modificar el fichero de texto, algo que puede ser útil para bibliografías pequeñas pero que puede ser un infierno para las grandes, sobre todo buscando una entrada concreta. Tenía que encontrar algo mejor y rebuscando un poco me topé con el paquete ebib y decidí probarlo. Escribo este artículo desde el descubrimiento, es decir: lo estoy probando para ver si me es útil y no conozco al 100% la herramienta. A diferencia de BibTex , ebib no es un modo, ni mayor ni menor, sino una aplicación que corre teniendo emacs como entorno... pero empecemos por el principio.

Instalación y primeros pasos ebib se puede instalar desde el gestor de paquetes de emacs y no tiene mayor misterio. En el manual de la herramienta recomienda definir una combinación de teclas para acceder directamente a la herramienta ( C-c e ). Yo no he definido ninguna combinación de teclas y llamo a la aplicación desde la general M-x . Para salir de la aplicación se pueden utilizar varias teclas según lo que queramos hacer. Lo primero que sorprende es que desaparecen las ventanas que tenemos abiertas y aparecen sólo dos. La de arriba es una lista para las entradas de la(s) base(s) de datos y la de abajo son los detalles de cada una de esas entradas. Si queremos volver a los buffers con los que estábamos trabajando sin cerrar ebib , podemos pulsar z y si realmente queremos salir utilizaremos q .

Abrir un fichero .bib Una vez lanzado el programa con la combinación M-x ebib , podemos abrir cualquier fichero .bib pulsando la tecla o . Una de las cosas que me ha gustado es que se pueden abrir simultáneamente varios ficheros y saltar de una base de datos a otra pulsando las teclas del 1 al 9. Además, las teclas de movimiento dentro del fichero se corresponde con las habituales en emacs p (o C-p ) para ir al registro anterior y n (o C-n ) para ir al siguiente, también se pueden utilizar las teclas de cursor. Para cerrar una base de datos basta con pulsar c para hacerlo, aunque sin cerrar ebib . Si hemos pulsado o y le damos un nombre de fichero que no existe, ebib creará una nueva base de datos.

Trabajar con las referencias Las operaciones más habituales son las de crear, editar y borrar entradas, como en todas las bases de datos. Para añadir una referencia en la ventana de ebib pulsaremos la tecla a . Esto creará una nueva entrada y nos pasará el control a la ventana de campos, donde podemos modificar cada uno de ellos pulsando enter sobre él. Cuando terminemos la edición, pulsaremos q y volveremos a la lista de entradas. Si ya tenemos la entrada y lo que queremos es modificarla, pulsaremos la tecla e . Podemos también borrar una entrada pulsando k , este comando pasará dicha entrada al anillo de borrado: podemos recuperar lo borrado pulsando y . Esto es bastante útil cuando estamos trabajando con varios ficheros, porque podemos recuperar entradas entre distintas bases de datos. Aunque sería más recomendable que se utilizara el comando M-x ebib-copy-entry . Si queremos insertar una cita en un buffer en el que estemos trabajando, podemos buscar la referencia que necesitamos pulsando la tecla / y después la cadena de búsqueda. Una vez encontrada la referencia que buscamos pulsaremos i , nos preguntará el buffer y siguiendo las instrucciones ebib insertará la referencia.

Guardar la base de datos Pulsando la tecla s guardará la base de datos que se haya modificado, aunque también funciona la combinación habitual de emacs C-x C-s . Si utilizamos la tecla w , como su equivalente de emacs C-x C-w nos permitirá guardar el fichero con cualquier otro nombre.

Filtros Si estamos trabajando con una base de datos muy grande y queremos reducir el número de entradas a algo más manejable, pero sin borrar nada, podemos establecer filtros pulsando la tecla & . Por ejemplo, si queremos que muestre sólo las entradas de un determinado autor, haríamos las siguientes acciones: Pulsamos & Seleccionamos author en la lista (por defecto, filtra por el tipo de documento) Escribimos el autor que nos interesa y pulsamos enter . En realidad, el carácter & añade una condición and al filtro establecido por defecto, que normalmente está vacío. Además, en la barra de estado de la base de datos nos indicará qué filtro tiene activado. Para acceder las funciones de filtro utilizaremos la tecla F . Por ejemplo, para cancelar el filtro utilizaremos la combinación F c o para guardar el filtro para posteriores usos, podemos utilizar la combinación F s . El fichero donde se guardan esos filtros, según la documentación es ~/.emacs.d/ebib-filters .

Impresión de la base de datos Una funcionalidad que encontré de casualidad es la capacidad de imprimir el fichero .bib . Bueno, en realidad no lo imprime, lo que hace ebib es generar un fichero LaTeX que luego se puede imprimir. Tiene dos modos que se pueden acceder desde el menú de emacs o lanzando los comandos ebib-print-* .