domingo, 15 de enero de 2012

Errores con \usepackage[latin1]{inputenc} en Tex Live

Uno de los problemas mas molestos que se me presentaron cuando comente a utilizar el LaTeX de forma regular en Linux fue un error muy extraño que aparecía al momento de compilar los documentos, y cuyo mensaje de error es el siguiente: 

! Missing $ inserted. 
<inserted text>
$ 

Sobra decir que el mensaje de error no tiene ningún sentido por si mismo, por lo que su corrección fue un proceso de buscar en todos los foros disponibles hasta encontrar la solución (el enlace hacia la misma se encuentra en la sección de referencias)

Esperando ayudar a aquellos que se encuentren con el mismo error presento lo que encontré y algunas de mis conclusiones al respecto.

Sobra decir que no soy un experto completo en lo que respecta a LaTeX y mucho menos sobre las opciones avanzadas proporcionadas por Tex Live, por lo que es posible esta solución sea de hecho innecesaria, sin embargo funciona y su aplicación es bastante simple.

Para comenzar tomaremos un archivo LaTeX que se usara como ejemplo, el código se presenta a continuación, sobra decir que este ejemplo solo aplica si esta utilizando Tex Live y desde un entorno Linux o UNIX.


\documentclass[12pt, spanish]{article}
\usepackage{babel}
\usepackage[latin1]{inputenc}
\begin{document}
\title{Documento ejemplo.}
\author{nombre del autor}
\date{15 de Enero del 2012}
\maketitle
\newpage
\chapter{Introducción}
El objetivo de este ejemplo es demostrar una de las
modificaciones que deben de hacerse al código \LaTeX para
compilarlo de manera correcta en Tex live.
\chapter{Caracteres especiales del Español}
Si usa adecuadamente los paquetes \emph{latin1} o \emph{utf8}
podra escribir los acentos, ñ y dieresis directamente sin
necesidad de usar comandos extra para escapar individualmente
cada caracter.
como muestra la siguiente lista.
\begin{itemize}
\item{á, Á}
\item{é, É}
\item{í, Í}
\item{ó, Ó}
\item{ú, Ú}
\item{ñ, Ñ}
\item{ü, Ü}
\end{itemize}
\end{document}

Simplemente copie este código a un archivo y guárdelo con algún nombre adecuado, como ejemplo.tex.

No se necesitan demasiados conocimientos de LaTeX para saber que se desea aparezca en el documento, ya que la mayoría de los comandos (\author, \date, \list, \item, etc ) son bastante claros, ya que halla copiado el documento abra una terminal de linea de comandos, diríjase al directorio donde almaceno el archivo y compilelo con el comando pdflatex.

Conseguirá una salida como la mostrada en la figura
Figura 1: Salida de pdflatex.

Presione X (es muy importante que sea x mayúscula) para regresar a la linea de comandos.

La cual muestra el mismo error que se mostró al principio de esta entrada, ocurriendo en la linea 15 del documento, justo después de

\chapter{Introducción} 

Ahora podría revisar linea por linea desde ese punto y jamas localizara el error, puesto que ese error no esta localizado en esa parte del documento, sino en la tercera linea del archivo en el comando 

\usepackage[latin1]{inputenc} 

Este comando en particular, que funciona sin ningún problema en entornos LaTeX para Windows como lo es MikTeX, le indica a LaTeX que el archivo de entrada usa la codificación latin1, con lo cual las ñ y acentos pueden escribirse directamente y ser interpretadas de forma correcta.

Sin embargo no nos encontramos en un entorno Windows, si no en un entorno Linux/UNIX, por lo que la codificación utilizada para los archivos es diferente, si desea comprobar esto simplemente escriba este comando en el terminal donde intento compilar ejemplo.tex 

file ejemplo.tex 

Que le dara como salida: 

ejemplo.tex: LaTeX 2e document, UTF-8 Unicode text 

Es la ultima parte la que nos da una clave de la solución, si el archivo fue creado con codificación UTF-8 y deseamos sacar partido de eso y escribir directamente los acentos y la ñ, entonces es necesario indicarselo a LaTeX

Hacer esto es muy sencillo, basta remplazar la linea 
\usepackage[latin1]{inputenc} 
con \usepackage[utf8]{inputenc}, como muestra el siguiente código:



\documentclass[12pt, spanish]{article}
\usepackage{babel}
\usepackage[utf8]{inputenc}
\begin{document}
\title{Documento ejemplo.}
\author{nombre del autor}
\date{15 de Enero del 2012}
\maketitle
\newpage
\chapter{Introducción}
El objetivo de este ejemplo es demostrar una de las modificaciones que deben de hacerse al código \LaTeX para compilarlo de manera correcta
en Tex live.
\chapter{Caracteres especiales del Español}
Si usa adecuadamente los paquetes \emph{latin1} o \emph{utf8} podra escribir los acentos, ñ y diéresis directamente sin necesidad de usar comandos extra para escapar individualmente cada carácter.
como muestra la siguiente lista.
\begin{itemize}
\item{á, Á}
\item{é, É}
\item{í, Í}
\item{ó, Ó}
\item{ú, Ú}
\item{ñ, Ñ}
\item{ü, Ü}
\end{itemize}
\end{document}

Guardar el archivo y volver a compilar con el comando pdflatex, tras lo cual obtendrá una salida muy diferente, mostrada en la figura 2 y un archivo .pdf conteniendo su documento.

Figura 2: Salida exitosa.
Referencias:

Solución al problema encontrada originalmente en - [SOLVED] Problems with spanish accents in Latex