A vueltas con el idioma
Hoy os voy a hablar de algo en lo que suele haber bastante lío en LaTeX: la configuración de idioma. Creo que he conseguido más o menos entender cómo va, así que voy a intentar explicar qué paquetes tenemos que usar y por qué. Es una entrada que entra bastante en detalle, porque me gusta saber el motivo de hacer las cosas, si no os apetece leer toda la chapa (es mucha chapa) podéis ir directamente al resumen final.
Si no escribimos en inglés, tenemos que configurar LaTeX para que se adapte a nuestro idioma. Para ello, necesitamos elegir un paquete de idioma y una codificación.
El paquete de idioma
El paquete de idioma realiza dos funciones principales:
-
Gestiona que las palabras claves como Capítulo o la fecha se escriban en el idioma que hemos elegido.
-
Aplica la silabaciónPor dónde nos parte una palabra cuando no cabe en la línea correcta para el idioma concreto, así como otras reglas tipográficas.
Dependiendo de qué compilador estemos usando tendremos que usar un paquete de idioma u otro:
-
Si usamos
pdflatex
, necesitamos cargar el paquetebabel
con el idioma elegido como opción, por ejemplo:
\usepackage[spanish]{babel}
-
Si usamos compiladores más modernos como
xelatex
olualatex
, podemos usar el paquetepolyglossia
Digo podemos porque, menos en algún caso especial,babel
también funciona.. Este paquete es más simple y ligero aprovechando que estos compiladores ya gestionan la codificación y las fuentes de por sí. En este caso no cargamos el idioma como opción, sino que lo elegimos con el comando\setmainlanguage
:
\usepackage{polyglossia}
\setmainlanguage{spanish}
Redefinir palabras clave
Nos puede pasar que no nos guste la palabra que el paquete de idioma
utiliza para referirse a cierta parte del documento, por ejemplo,
utilizando la opción de español LaTeX llamará Cuadro a las
tablas. Si es así, podemos redefinir el nombre del elemento. Es
sencillo, tenemos que usar \renewcommand
con la siguiente
estructura:
\renewcommand{Comando a redefinir}{Nueva definición}
Aquí, por supuesto, hay diferencias si usamos babel
o
polyglossia
.
El caso babel
Si usamos babel
, el comando que redefiniremos tendrá un
nombre formado por el nombre del idioma y el nombre de la palabra
clave. Por ejemplo, para cambiar Cuadro por Tabla en
español haríamos:
\renewcommand{\spanishtablename}{Tabla}
Del mismo modo, si queremos modificar cómo llama LaTeX a las figuras
en francés, redefiniríamos el comando \frenchfigurename
y
así con todos.
En el caso concreto de las tablas y para pdflatex
podemos
cargar el paquete babel
con la opción
es-tabla
y nos evitamos problemas, pero para el resto de
elementos tenemos que hacer lo que os cuento.
El caso polyglossia
Si usamos polyglossia
, en su manual dicen que tenemos que
cambiar el nombre de la palabra clave con \gappto
(o
\addto
para que sea compatible con
babel
)A pesar de que leí (y escribí) que esos nombres se cambiaban con el comando \addto
en el manual de español de babel
dicen que es mejor usar directamente renewcommand
y spanishtablename
o el nombre que corresponda.
. Por ejemplo:
\gappto\captionsspanish{\renewcommand{\tablename}{Tabla}}
Texto en diferentes idiomas
La última cosa que os voy a contar sobre los paquetes de idioma es cómo cambiamos de idioma en un mismo documento.
El caso babel
En este caso simplemente cargamos como opciones del paquete
babel
todos los idiomas que vamos a usar en el documento:
\usepackage[idioma1, idioma2]{babel}
Los vamos activando en el texto con \selectlanguage
:
\usepackage[spanish, english]{babel}
\selectlanguage{spanish}
\begin{document}
\section{Sección en español}
\selectlanguage{english}
\section{Section in english}
\end{document}
El caso polyglossia
Si estamos usando polyglossia
, cargamos el paquete y
establecemos los idiomas en el preámbulo de la siguiente manera:
\usepackage{polyglossia}
\setmainlanguage[Opciones]{Idioma} % Idioma principal
\setotherlanguage[Opcions]{Idioma} % Otro idioma
Si queremos cambiar el idioma de un trocito pequeño de texto usaremos
el comando \textIDIOMA
. Por ejemplo, para poner la fecha
en español haríamos:
\textspanish{\today}
Si vamos a escribir un pedazo de texto largo en otro idioma, es preferible que usemos el entorno correspondiente al idioma;
\begin{spanish}
Texto en español
\end{spanish}
La codificación
La otra parte importante a la hora de configurar el idioma en LaTeX es la codificación. Hay dos tipos de codificación: la codificación de entrada y la codificación de fuente.
Configurar la codificación de entrada correctamente para
nuestro idioma nos permite escribir directamente los caracteres
especiales desde el teclado, por ejemplo, poder poner á
en lugar de \'a
.
Una codificación de fuente correcta, por su parte, sirve para
que LaTeX pueda partir las palabras por donde debe y para que podamos
buscar en el pdf resultante palabras con caracteres
especiales. Si usamos una codificación de fuente inadecuada ocurren
cosas curiosas como que no podamos copiar de un pdf palabras
que contengan fi
. Esto se debe a que LaTeX trata
fi
como un único carácter, ya que es una ligadura
tipográfica.
Aquí nos ocurre exactamente lo mismo que antes, dependiendo del compilador tenemos que usar o no diferentes paquetes.
El caso de pdflatex
El pobre pdflatex
es viejecito y necesita ayuda para
gestionar la codificación. Nos hacen falta los siguientes paquetes:
-
inputenc
: gestiona la codificación de entrada. Como opción le daremos la codificación, para ahorrarnos problemas usaremos UTF 8 -
fontenc
: gestiona la codificación de fuente. Para escribir en castellano, usaremos la codificación T1 que contiene los caracteres necesarios de los idiomas que usan alfabeto latino con acentos. Si queréis escribir en cirílico no os vale esta codificación, tendréis que usar la T2A. -
lmodern
ocm-super
: la fuente que LaTeX usa por defecto, Computer Modern, no es compatible con la codificación T1 así que necesitaremos usar su variante Latin Modern (paquetelmodern
) o la Computer Modern Super (paquetecm-super
). Parece ser que la Latin Modern es mejor para los acentos y la CM Super para el cirílico.
Si queremos escribir en español, la parte del idioma en el preámbulo
para pdflatex
nos queda por lo tanto así:
\usepackage[spanish]{babel}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
Para cualquier otro idioma con acentos o caracteres especiales
necesitamos los mismos paquetes y solo tendríamos que cambiar la
opción de idioma en el paquete babel
.
Xelatex y otros compiladores modernos
Los compiladores modernos gestionan ellos solitos la codificación de entrada y la de fuente así que no es necesario que añadamos ningún paquete extra. Qué bien ¿eh?
En resumen, ¿qué hago?
Después de todo el rollo que os he soltado, vamos a recapitular y ver qué necesitamos en cada caso.
Para compilar con pdflatex
añadimos esto
al preámbulo:
\usepackage[spanish,es-tabla]{babel} % Cargamos es-tabla para Tabla en lugar de Cuadro
\usepackage[utf8]{inputenc} % Codificación de entrada
\usepackage[T1]{fontenc} % Codificación de fuente
\usepackage{lmodern} % Fuente compatible
Para compilar con xelatex
añadimos esto
al preámbulo:
\usepackage{polyglossia}
\setmainlanguage{spanish}
% Para Tabla en lugar de Cuadro
\gappto\captionsspanish{\renewcommand{\tablename}{Tabla}}
Podemos venirnos arriba, utilizar el paquete ifxetex
(que mira
si estamos compilando con xelatex
), añadir este trocito
al preámbulo y asegurar que funciona con los dos compiladores:
% Idioma
\ifxetex
\usepackage{polyglossia}
\setmainlanguage{spanish}
% Tabla en lugar de cuadro
\gappto\captionsspanish{\renewcommand{\tablename}{Tabla}
\renewcommand{\listtablename}{Índice de tablas}}
\else
\usepackage[spanish,es-tabla]{babel}
% Para los acentos (xelatex no lo necesita)
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\fi
Os he añadido la parte de cambiar Cuadro por Tabla pero, por supuesto, no es necesario.
Referencias
Manual del paquete babel
(pdf)
Estilo spanish para el sistema babel (pdf)
Manual del paquete polyglossia
(pdf)
Anterior: LaTeX y las ecuaciones, Siguiente: Tamaños, formas y colores [Contenido]