Jekyll y las tildes

6 minuto(s) de lectura

En la anterior entrada de la serie, dentro del apartado Creando el primer artículo para el blog, aparecía una sucinta nota que invitaba a no utilizar tildes a la hora de declarar el título con el comando rake. En un idioma con el nuestro, plagado de caracteres “extraños” a ojos del alfabeto inglés (tildes, eñes o símbolos de apertura para exclamaciones e interrogaciones, por nombrar algunos), el anterior consejo nos ata bastante las manos, limitándonos a la hora de expresarnos. Además, por desgracia, tal y como viene configurado por defecto el sitio web, esta situación no sólo afecta a los títulos de nuestros artículos, ya que también la padecen las propias categorías que definamos para ellos.

En los siguientes párrafos exploraremos los problemas que surgen (examinando los diferentes mensajes de error que nos arrojan desde la terminal), así como veremos sencillas y rápidas maneras para sortearlos.

Reproduciendo el problema

Para analizar la situación con detalle, vamos a generar un artículo cuyo título sea “Una prueba rápida” y experimentar con él. Para ello, no tenemos más que abrir la terminar, movernos hacia el directorio raíz del sitio web y teclear:

rake post title="Una prueba rápida"

Al instante, aparecerá el siguiente mensaje:

Creating new post: ./_posts/2017-08-07-una-prueba-rpida.md

A primera vista, todo parece funcionar a la perfección, con la salvedad de que el carácter á desaparece del nombre del fichero que contiene el artículo. En principio, un detalle sin demasiada importancia, ¿verdad? No obstante, si ahora procedemos a editar dicho artículo con nuestro editor de texto plano favorito, podremos comprobar que en la línea asociada al título (aquella que comienza con title: en el espacio delimitado entre ---) aparece un espacio en blanco en el lugar donde debería estar presente el carácter á, quedando como “Una prueba r pida”.

Esta situación sí que es más inquietante, ya que nuestro objetivo no es enfrentar a los lectores a un juego del tipo “adivina cuáles son las letras que faltan en el título”. En mi caso, en un primer instante, y de forma un tanto inocente, opté simplemente por escribir la letra que faltaba, con la esperanza de que así se solucionase el problema. Por experimentar, actuemos así: corrigiendo la errata, salvando el archivo y luego revisando el sitio web localmente. Recordemos que para esto último tenemos que escribir en la terminal:

jekyll serve

Un extenso mensaje de error aparece enseguida, parecido al que se muestra a continuación (he editado las rutas completas hacia los ficheros para que así fuese un tanto más breve):

Error: could not read file [...]/_posts/2017-08-07-una-prueba-rpida.md: invalid byte sequence in UTF-8

Liquid Exception: invalid byte sequence in UTF-8 in [...]/_posts/2017-08-07-
una-prueba-rpida.md

¿Cómo podemos resolver entonces esta situación? Tras consultar algunos foros y leer las experiencias de otros usuarios, al final, la solución más sencilla que he encontrado es simplemente prescindir del uso de caracteres “extraños” a ojos del alfabeto inglés a la hora de utilizar el comando rake y luego editar adecuadamente la línea title: dentro del archivo que recoge el artículo propiamente.

Es decir, en la terminar teclearíamos:

rake post title="Una prueba rapida"

para luego, editar el fichero que se genera (2017-08-07-una-prueba-rapida.md) y escribir

title: "Una prueba rápida"

De hecho, el título de nuestro artículo no viene forzosamente determinado por la cadena de texto que utilicemos en el comando rake. Sin ir más lejos, para este documento he tecleado en la terminal:

rake post title="s01d004-sorteando-el-problema-de-las-tildes"

y después he editado la línea asociada a title: para que el texto sea el que aparece al principio de esta página.

Ahora bien, como comentaba en la introducción, este problema no afecta únicamente a los títulos de nuestros artículos, ya que podemos encontrar comportamientos extraños que afectan a otras partes de los mismos.

Benditas etiquetas

No nos detengamos aquí y sigamos experimentando con el artículo que acabamos de generar. A continuación, vamos a declarar dos etiquetas para el mismo: “Música” y “Análisis”. Para ello, editamos la línea del fichero correspondiente a tags: y escribimos:

tags: [Música, Análisis]

Si guardamos el archivo y revisamos localmente el sitio web, ni apreciaremos errores de bulto en la página, ni la terminal nos arrojará mensaje de error alguno. El único detalle que quizá pueda llamar un poco nuestra atención es que algunos enlaces pasan a tener un aspecto un tanto peculiar. Por ejemplo, para la etiqueta “Música”, en el sitio web encontraremos direcciones del estilo /tags.html#M%C3%BAsica. No obstante, como todo funciona adecuadamente, no considero que sea necesario darle más vueltas al asunto.

Pasemos a examinar cómo afecta la situación que estamos explorando a las categorías, que es donde aparece el verdadero problema.

Tildes en categorías: una pesadilla hecha realidad

Para un blog como este, cuya principal temática va a ser lo que hoy en día se conoce como Ciencia de Datos, parece natural que aparezcan categorías como “Estadística” o “Análisis”, por nombrar algunos ejemplos. ¿Por qué no probamos a declarar una de ellas para nuestro artículo de prueba?

De esta manera, volvemos a editar el fichero correspondiente, y para la línea que comienza con category: tecleamos:

category: Estadística

Si ahora guardamos y revisamos localmente el sitio, a primera vista, tendremos la impresión de que nos hemos salido con la nuestra y todo funciona a la perfección. No obstante, al hacer clic sobre el enlace al artículo, nos redirigen automáticamente a la página de Error 404 disponible para nuestro sitio web. En mi caso, como a día de hoy todavía no la he editado (se puede hacer modificando el archivo 404.html que figura en el directorio raíz), es una simple página en blanco que muestra el mensaje “Sorry this page does not exist =(“.

El instinto nos debe llevar inmediatamente a echar un vistazo a la terminal, en la que, efectivamente, encontraremos un mensaje de error parecido al siguiente:

ERROR `/estadística/2017/08/07/una-prueba-rapida' not found.

Al parecer, si en el apartado de categorías utilizamos uno de esos caracteres “extraños” a ojos del alfabeto inglés, Jekyll no es capaz de construir de manera adecuada la estructura para el enlace del artículo (lo que se conoce como permalink). ¿Debemos entonces empezar a buscar nombres alternativos para aquellas categorías que puedan crear conflictos? Sin ir más lejos, cuando redacté una de las primeras entradas de este blog, le asigné la categoría “Opinión”, pero al encontrarme esta situación, simplemente opté por resolver el problema de la manera más sencilla, y renombré la categoría a “Reflexiones”.

Sin embargo, puesto que el problema reside en la propia estructura del enlace que se genera para los artículos, ¿no es natural que planteemos una posible modificación de la misma? En la documentación de Jekyll asociada al permalink, tenemos la información necesaria para poder configurarlo a nuestro antojo. Por defecto, presenta la siguiente estructura:

/:categories/:year/:month/:day/:title

Así pues, ¿por qué no suprimir directamente la parte que hace referencia a las categorías? De esta manera, generaríamos unos permalinks para nuestros artículos muy similares a los que, por ejemplo, la plataforma WordPress utiliza.

Con tal idea en mente, vamos a editar el archivo _config.yml, que se encuentra ubicado en el directorio ráiz de nuestro sitio web. Al principio del mismo, aparecerá la siguiente línea:

permalink: /:categories/:year/:month/:day/:title

que cambiaremos por esta otra:

permalink: /:year/:month/:day/:title

Si guardamos ahora el archivo y generamos de nuevo localmente el sitio web, podremos comprobar que todo funciona correctamente. De esta forma, ya estamos en condiciones de escribir artículos sin preocuparnos excesivamente por utilizar caracteres “extraños” a ojos del alfabeto inglés tanto en los títulos, como en las categorías.

Nota (I): si bien es cierto que todavía no hemos explorado con detalle el archivo _config.yml, enseguida salta a la vista un hecho: el símbolo # es el utilizado para escribir comentarios. Destaco esto porque no estaría de más acompañar el cambio que acabamos de llevar a cabo con una breve explicación que lo justifique. Así, en un futuro, seremos capaces de saber al instante qué nos llevó a actuar de cierta manera concreta.

Nota (II): esta entrada se ha almacenado dentro del proyecto MetaBlog, quedando así disponible para su consulta también a través del siguiente enlace.

Comentar