Acentos, latin1, utf-8, LaTeX…

Otra entrada en español, sobre un asunto que lleva tiempo dándome guerra. En algún momento, linux fue cambiando de la codificación de caracteres (encoding) latin1 al estándar actual, utf-8.

Como resultado, los documentos en texto, sobre todo las famosas “fuentes LaTeX, que nunca hay que cambiar porque son texto” pueden cambiar después de todo (a efectos prácticos). En algunos sitios, como mindspill, he visto por fin cómo determinar y cambiar la codificación.

Primeramente, un viejo conocido, el comando file, puede proporcionarnos la codificación de un archivo (si es que está definida):

$ file -i *.tex
prueba1.tex: text/plain charset=utf-8
prueba2.tex: text/plain charset=utf-8
prueba3.tex: text/plain charset=iso-8859-1
prueba4.tex: text/plain charset=utf-8

Lo he aplicado a una serie de archivos que contienen acentos, todos utf-8 menos uno (iso-8859-1 es la manera correcta de decir latin1). Para convertir de uno a otro está el comando iconv (que viene con el paquete glibc en mi distribución linux):

iconv -f utf-8 -t latin1 prueba2.tex > prueba3.tex

“-f” es “from”, “-t”, “to”, y hay que redireccionar (“pipetear”) la salida del comando hacia otro fichero. iconv -l devuelve una larga lista de codificaciones posibles.

Hay algunos aspectos que todavía no comprendo bien. Por ejemplo, cómo distintos editores, como emacs y vi, distinguen la codificación automáticamente y por qué a veces no se ponen de acuerdo. Puede que se deba incluso a que vi se corre en modo de texto, desde una terminal y emacs, por lo general, es gráfico. Esto está relacionado con una vieja solución a este problema (“export TERM=C”) que, por lo visto, ya no es necesaria.

Notas:

El comando LaTeX para utf8 es:

\usepackage[utf8]{inputenc}
% (utf8x si hay problemas)

y el comando para latin1:

\usepackage[latin1]{inputenc}
\inputencoding{latin1}

en todo caso, siempre está bien, para guionado y otros asuntos:

\usepackage[spanish]{babel}

Además, se puede probar con estos exports desde línea de comandos, antes de lanzar vi o emacs ("emacs -nw" para modo texto):

export LANG=latin1
export LANG=utf-8
export LANG=C

Parece que, además, WinEdt y emacs comparten un mecanismo para especificar al principio de un documento tex qué codificación tenemos. Ejemplos:

% -*-coding: utf-8 -*-

% -*-coding: iso-latin-1  -*-

Como es un comentario, latex no se entera, pero los editores sí (no inmediatamente, claro, pero al añadir la línea y volver a abrir el documento, parece que se ve bien).

 

About these ads

3 thoughts on “Acentos, latin1, utf-8, LaTeX…

  1. Muchas gracias, te pasaste con la explicación. Estoy recién aprendiendo algo de linux, y mi trabajo q en gran parte escribí en windows me daba error al abrirlo en Kile. Te re pasaste.

    • Acabo de releer el artículo, y me encanta este comentario. Tengo grabada la expresión “te pasaste” desde que escuchaba a Les Luthiers de niño: “¿Te compraste un Chaque heure pour la minorie? ¡Te pasaste, macho!”

  2. Pingback: RafaLinux » Tildes, utf8 y LaTeX

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s