lunes, 23 de enero de 2012

Referencias a imágenes y tablas en LaTeX.


Una de las características que mas me llamo la atención al comenzar a utilizar LaTeX fue la forma en que maneja las referencias tanto a imágenes como a tablas, permitiendo no solo referenciarlas desde el documento si no también generar de forma automática una lista tanto de figuras como de tablas, donde se visualizara tanto el numero de figura, como la pagina donde se encuentra.

Para lograr esto es necesario utilizar una serie de comandos, tanto para agregar las imágenes y tablas al documento, como para hacerles referencia.
Si bien esto puede sonar a mas trabajo, tiene la ventaja de dar acceso a mas opciones y a un formato de apariencia mas profesional, permitiendo llevar de forma automática la numeración de figuras y tablas y agregarles algo de texto.

Para esto se utilizaran los “entornos” figure y table los cuales ya están definidos en LaTeX, estos “entornos” son unidades que el compilador de LaTeX posicionara de modo que no interrumpan el flujo del texto y tampoco queden “cortados” por el cambio de pagina, lo cual es muy importante para las tablas.

El formato básico de cada uno de esos entornos se describe a continuación.

\begin{figure}
\includegraphics[scale=0.25]{./tex/Img_2/trama}
\caption{Trama Capturada.}
\label{c2_trama}
\end{figure}

Donde cada comando tiene estas funciones:
  • \begin{figure} : Inicia el entorno figura.
  • \includegraphics[scale=0.25]{./tex/Img_2/trama}: Agrega la imagen ubicada en ./tex/Img_2/trama y cambia su tamaño a un 25%.
  • \caption{Trama Capturada.}: El texto que se desplegara debajo de la imagen.
  • \label{c2_trama}: Define c2_trama como la etiqueta que referencia esta figura en particular.
  • \end{figure}: Termina el entorno figura.

El resultado luce como la figura 1

Figura 1: Ejemplo de figura.
Notara en la figura la presencia de un rectángulo de color rojo rodeando el numero 2.2, esta es una referencia a la figura generada por el código anterior, la cual se puede crear en cualquier punto del documento, anterior o posterior a la imagen por medio del comando \ref{etiqueta}, este comando sera sustituido en el documento por el numero que identifica la figura con esa etiqueta.

Con respecto a las tablas el formato de es similar, siendo la principal diferencia el hecho que incluye el código que genera la tabla, como se ve a continuación

\begin{table}

\begin{tabular}{|c|c|c|c|c|}
\hline
0-3 Bits & 4-7 Bits & 8-15 Bits & 16-18 Bits & 19-31 Bits \\ \hline
Versión & Tamaño Cabecera & Tipo Servicio & \multicolumn{2}{|c|}{Longitud Total} \\ \hline
\multicolumn{3}{|c|}{Identificador} & Banderas & Posición Fragmento \\ \hline
\multicolumn{2}{|c|}{Tiempo de Vida} & Protocolo & \multicolumn{2}{|c|}{Suma de Verificación del encabezado} \\ \hline
\multicolumn{5}{|c|}{Dirección IP Origen} \\ \hline
\multicolumn{5}{|c|}{Dirección IP Destino} \\ \hline
\multicolumn{4}{|c|}{Opciones} & Relleno \\ \hline
\end{tabular}

\caption{Cabecera IP.}
\label{c2_tabla_cabecera_ip}
\end{table}

Los comandos usados aquí son:
  • \begin{table}: Inicia el entorno tabla.
  • \begin{tabular}: Inicia los comandos para generar la tabla.
  • \end{tabular}: Termina los comandos de generación de tablas.
  • \caption{Cabecera IP.}: Define el texto que aparecerá debajo de la tabla
  • \label{c2_tabla_cabecera_ip}: Indica al compilador que c2_tabla_cabecera_ip es la etiqueta que identifica esa tabla
  • \end{table}: Termina el entorno tabular.
Notara que no se menciono que hace el código entre \begin{tabular} y \end{tabular} esto se debe a que la generación de tablas no es el propósito de esta entrada.

Este código generara la tabla mostrada en la figura

Figura 2: Tabla ejemplo.
De nuevo la tabla tiene un numero identificador generado automáticamente y que puede obtenerse por medio del comando \ref{etiqueta} desde cualquier punto del documento.

Otra de las características del uso de estos entornos es el poder generar la lista de figuras y de tablas con solo un comando para cada lista, basta usar \listoffigures y \listoftables para conseguir la lista de todas las figuras o tablas del documento como muestran las figuras 3 y 4 respectivamente.


Figura 3: Resultado de \listoffigures

Figura 4: Salida de \listoftables

Observaciones sobre los entornos figure y table

Antes de concluir es necesario hacer hincapié en una serie de detalles que tienen ambos entornos, que pueden causar resultados no deseados y pueden ser difícil detectar.

Primero es muy importante que el comando \label se declare dentro del entorno, ya sea table o figure y después del comando \caption, no hacer esto hará que el compilador le regrese el numero equivocado al comando\ref.

Lo segundo tiene mas que ver con el compilador Tex live, es posible que se pase con otros, pero no lo he podido comprobar de primera mano, y es que al modificar el documento, sobretodo al agregar una nueva figura o tabla es necesario compilar el documento dos veces, el no hacerlo hará que el comando \ref regrese signos de interrogación en lugar de la referencia, esto es facil de detectar pues el compilador mandara un mensaje de advertencia.

Referencias


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

lunes, 9 de enero de 2012

Instalando LaTex en Fedora Linux.



Un detalle con el que me he encontrado mas de una vez al leer tutoriales sobre LaTeX (y de hecho varios programas, lenguajes de programación y librerías de programación) es que presuponen que ya se tiene instalado.

En el caso de LaTeX este no suele ser el caso, por fortuna su instalación, si bien es un paso extra es bastante sencilla al menos tanto en las distribuciones Ubuntu y Fedora, en ambos casos debe busca el paquete “Tex Live”.

Tex Live

Esta es una implementacion de LaTeX/TeX para sistemas UNIX con la cual puede compilar los documentos en LaTeX y que incluye todas las cabeceras y programas necesarios.

Ya que las distribuciones linux varian un poco en la forma de instalar programas mostrare como se realiza esto desde Fedora Core 15 que es la distribución con la que cuento en este momento.

Instalación en Fedora Core 15.

Figura 1: Menú de aplicaciones en Fedora 15.

Para instalar Tex Live en Fedora Core 15 basta con que acceda a “Añadir/Quitar Software” desde el menu de aplicaciones, esto iniciara el manejador de paquetes de software, en este escriba “Tex Live” en el campo de texto, de la lista de paquetes resultantes busque el que tenga como descripción “Binaries for the TeX formatting System”, como muestra la figura

Figura 2: Seleccionado paquete TeX Live en el gestor de paquetes.

De doble click en el paquete y presione Aplicar, con esto las dependencias necesarias seran descargadas e instaladas junto con TeX Live.

Referencias:

viernes, 6 de enero de 2012

LaTeX: Sistema de preparación de Documentos.

Como mencione en la entrada anterior la investigación necesaria para mi tesis esta prácticamente completa, por lo que el siguiente paso consiste en afinar la redacción y transcribirlo a un documento con el formato requerido por la facultad.

Si bien esto ultimo puede realizarse desde cualquier procesador de textos e inclusive una maquina de escribir mi asesor de tesis me recomendó el uso de una herramienta en particular, el sistema de preparación de documentos LaTeX.

Este sistema, ampliamente utilizado en el ámbito de la investigación permite generar documentos de alta calidad que se visualizan de manera consistente sin importar el medio en que sean presentados.

Otra de sus ventajas es la enorme cantidad de características que posee, yendo desde algunas muy comunes como lo son los encabezados y numeración de las paginas a características avanzadas como lo son mantener automáticamente las referencias, la generación automática de indices y listas de figuras, tablas y por su puesto la generación de ecuaciones matemáticas de una calidad que aun no es alcanzada por los procesadores de texto actuales.

Sin embargo el uso de este sistema es un cambio muy drástico con respecto a herramientas como el Microsoft Word, ya que el LaTeX tiende a ser mas similar a un lenguaje de programación, o mas exactamente un lenguaje de marcado como el html.

Esto puede sonar un tanto rebuscado, pero no es mas complejo que escribir manualmente una pagina web, en ambos casos el texto del la pagina/documento se escribe en texto plano junto con las instrucciones de presentación, enlaces e imágenes que se desean incluir en el documento y una vez hecho eso el documento es generado, en el caso de LaTeX esta etapa es realizada por un compilador, el cual toma los archivos de texto plano y genera el documento en el formato deseado.

De nuevo, las ventajas y características que ofrece LaTeX, aunado al hecho que es el sistema de-facto para los documentos de investigación profesionales hacen que aprender su uso sea una buena inversión de tiempo y esfuerzo, lo cual es ayudado por el hecho por una enorme cantidad de recursos, tutoriales y foros de ayuda existentes en internet.


Referencias:
LaTeX – A document preparation system
Lenguaje de marcado - Wikipedia la enciclopedia libre