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.
Ya sé que me estoy saltando el índice del curso a la torera, ved esto como un interludio, al fin y al cabo el idioma hay que configurarlo tarde o temprano. Yo prefiero temprano.
La cuestión es que 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ón (por donde 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
1. 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 claves
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 todos2.
En el manual del estilo spanish del paquete babel
tenemos esta tabla que nos dice cómo llama a cada uno de los elementos:
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
). 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.
Termino ya con la que probablemente sea la entrada más larga y técnica que he escrito (y voy a escribir) sobre LaTeX. Si no habéis entendido absolutamente nada no os preocupéis, copiad las líneas del último apartado en vuestro preámbulo y en futuro ya lo entenderéis mejor. Y, por supuesto, podéis preguntar todo lo que no esté claro.
Referencias
Manual del paquete babel
(pdf)
Estilo spanish para el sistema babel (pdf)
Bien explicado, pero… definitivamente LaTeX no es pa’ mi !!
LaTeX no es para mucha gente, es denso y agobiante, si no tienes que escribir una tesis o así te puedes librar de él sin problema.
(Bueno, escribiendo una tesis casi que también, que yo la mía la escribí en Markdown 😀 )
🙂
Pingback: Lo que he aprendido: variables locales en Emacs | Onda Hostil
¡Fantástico! Mejor explicado, imposible.
Incides mucho en que pdflatex es antiguo y que xelatex y lualatex funcionan mejor (por lo de la codificación y tal), pero son muy lentos y pesados, ¿no? Yo he notado un cambio enorme entre pdflatex y los otros. ¿Te ha pasado o hago algo mal?
Me alegro de que te guste 😀
Yo suelo compilar con xelatex y sí es cierto que me ha pasado que vaya lento, especialmente en los documentos grandes y el ordenador viejo. Voy a mirar si hay por ahí algo escrito al respecto, tiene que haber alguna razón.
En cualquier caso, a mí solo por el hecho de que la codificación funcione directamente y poder cambiar de fuente con facilidad me compensa.
Pingback: En qué ando: segunda quincena de febrero | Onda Hostil
Pingback: Curso no convencional de LaTeX: formas, tamaños y colores | Onda Hostil