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