Insertar figuras en LaTeX
Insertar figuras en un documento de LaTeX suele ser una de las principales causas de dolores de cabeza para quienes nos enfrentamos a esta tarea por primera vez. Y la situación se complican con la diversidad e incompatibilidad que existe entre formatos para almacenar gráficos. Además, pareciera que LaTeX no es muy amigable con formatos tipo web (JPEG, GIF) a los que podríamos estar más acostumbrados.
El objetivo de esta guía es ayudarte a entender el proceso “completo” para insertar figuras en un documento, así como brindarte consejos y sugerencias para obtener los mejores resultados.
Antes de comenzar, y para evitar posibles confusiones, es necesario ponernos de acuerdo con los términos que se usan en la guía, y lo que significan cuando son usados.
-
Un gráfico es cualquier dibujo, ilustración, imagen, diagrama, fotografía, gráfica de puntos o líneas, histograma, diagrama de sectores, etc.; que podrías querer insertar en tu documento para ilustrar o clarificar alguna idea. La mayor parte de esta guía trata sobre cómo preparar los gráficos para incluirlos en tu documento.
-
Una figura es la forma que normalmente se utiliza para insertar un gráfico dentro de un documento. Las figuras están compuestas por un gráfico y un título (que no es parte del gráfico), así como de una numeración que indica la secuencia de figuras dentro del documento (Figura 1, Figura 2, …).
Descripción del proceso
Hechas estas aclaraciones, podemos comenzar a describir el proceso completo para insertar una figura en LaTeX que se compone, esencialmente, de los siguientes cuatro pasos:
-
Determinar el formato adecuado para tu gráfico. Hay, en esencia, tres diferentes clases de formatos para almacenar gráficos en una computadora: mapas de bits (con y sin pérdida) y gráficos vectoriales. Es importante saber cuál es la diferencia entre ellos para poder elegir el más adecuado según tus necesidades.
-
Dibujar/crear/obtener el gráfico. Esta es la parte más importante de todo el proceso. Los pasos siguientes se simplifican bastante (y generan mucho mejores resultados) si este paso se lleva a cabo correctamente. Desafortunadamente, ya que existen una gran cantidad de herramientas y programas diferentes para generar gráficos, éste es también el paso más difícil de explicar. Dependiendo del tipo de gráfico y del origen de tus datos, unas herramientas pueden ser más adecuadas que otras. Por otra parte, no seleccionar la herramienta adecuada puede ocasionar que las figuras aparezcan con muy mala calidad en tu documento final. Una gran parte de esta guía está dedicada a darte diversas sugerencias y consejos para seleccionar la herramienta adecuada según el tipo de gráfico que necesites.
-
Preparar el gráfico en un formato adecuado para LaTeX. Esta parte es relativamente sencilla. Aunque es la parte con la que muchos principiantes tenemos problemas por no haber llevado a cabo satisfactoriamente el paso anterior, y por desconocer los comandos existentes para realizar esta tarea. Esta guía explicará también los métodos más comunes para preparar tu gráfico en un formato que LaTeX pueda entender.
-
Insertar el gráfico como una figura dentro de tu documento. Esto ya es pan comido, simplemente agregas unos cuantos comandos a tu documento y ¡listo!.
Las siguientes secciones detallan cómo realizar cada uno de estos pasos, y te brindan también una gran cantidad de consejos para obtener los mejores resultados.
1. Determinar el formato adecuado para tu gráfico
Hay tres sencillas reglas a seguir para escoger el formato más adecuado para tu gráfico.
A. Fotografías en formato TIFF o JPEG
La mayoría de las cámaras y escáneres digitales producen archivos en formatos TIFF o JPEG (o JPG, que es lo mismo). Estos dispositivos funcionan dividiendo la imagen que se quiere capturar en una cuadrícula, y registrando el color de cada uno de los “puntos” (o píxeles) en la cuadrícula. Esto genera una gran tabla de colores que se puede almacenar en un archivo y mostrar también en pantalla. A esta forma de representar imágenes como “tablas de colores” es a lo que se llama un mapa de bits.
Ya que esta “tabla de colores” puede ser bastante grande, los formatos TIFF y JPEG utilizan algoritmos para comprimir el gráfico y que esta ocupe menos espacio al ser almacenada. Estos algoritmos se aprovechan de que el ojo humano no es realmente capaz de distinguir todos los colores que puede producir una computadora (algo así como 24 millones de colores) y modifica ligeramente el color de algunos de los puntos que forman al gráfico. Podemos decir, de hecho, que estos formatos logran comprimir el gráfico sacrificando un poco de su calidad y se llaman por lo tanto mapas de bits de compresión con pérdida. Para fotografías que normalmente contienen muchísimos colores, la pérdida de calidad es imperceptible y convierte a estos formatos en la opción perfecta.
Algo que hay que tener en mente cuando se trabaja con mapas de bits es que no se puede cambiar el tamaño del gráfico con facilidad. Originalmente los puntos son del tamaño del punto más pequeño que se puede mostrar en pantalla. Pero si tratamos de hacer el gráfico más y más grande acabaremos por ver cuadrotes en lugar de puntitos. Además, si hacemos el gráfico pequeño y lo queremos después de nuevo hacer grande, perderemos inevitablemente calidad en la imagen (una tabla pequeña no puede guardar la misma información que una tabla grande). Por eso es importante que los originales de estos gráficos tengan la mayor resolución (cantidad de “puntos”) posibles.
B. Imágenes simples en formatos BMP, GIF o PNG
En este caso por “simples” me refiero a mapas de bits con pocos colores, o con áreas uniformes (del mismo color) muy grandes. Este tipo de gráficos son comunes, por ejemplo, en manuales de software donde quieres incluir una captura de pantalla (screenshot) mostrando alguna ventana de tu aplicación. Para estos casos la compresión en JPEG puede ser un desastre ya que la pérdida de calidad sí se nota y se hace muy evidente.
La solución es entonces recurrir a formatos como BMP, que no realiza gran esfuerzo para comprimir el gráfico (la tabla de colores se guarda, casi, tal cual); u otras mejores soluciones como GIF y PNG que sí tienen algoritmos más inteligentes de compresión, pero no reducen en absoluto la calidad del gráfico. Éstos son los que se llaman mapas de bits de compresión sin pérdida. Dependiendo de la aplicación con la que los generes, el formato TIFF puede también almacenar mapas de bits sin pérdida de información. En todo caso—si tienes posibilidad de elegir—PNG es el mejor formato pues fue creado para mejorar y reemplazar al GIF, además de que puede ser reconocido directamente por LaTeX.
Con o sin pérdida, sin embargo, estos formatos también son un mapa de bits y su tamaño no se puede modificar con facilidad. Más aún, ya que cambiar el tamaño del gráfico invariablemente implica una pérdida de información, cualquier ventaja de usar un algoritmo de compresión “sin pérdida” se ve rápidamente eliminada. Del mismo modo, convertir de un formato con pérdida a uno sin perdida no tiene mucho sentido, ¡la información ya se perdió! Lo ideal en estos casos es entonces preparar el gráfico original en su tamaño “natural”, y sólo ajustar su tamaño cuando es insertado al final en el documento.
C. Diagramas (y prácticamente todo lo demás) en un formato vectorial
Los gráficos vectoriales son una alternativa para representar gráficos que no pierden calidad cuando se cambia su tamaño. Este tipo de formatos, en lugar de guardar una gran tabla de colores, almacena una serie de instrucciones a seguir por la computadora para, literalmente, dibujar el gráfico cada que se necesite. Un archivo vectorial puede contener instrucciones como: “dibujar un circulo aquí con este radio”, “trazar una recta de este punto a este otro”, “poner una flecha al final de esta linea”, y las instrucciones pueden complicarse hasta cosas como “escribir este texto en esta posición con este tipo de letra y este tamaño”, “dibujar una curva de Bézier con esta lista de puntos de control”.
Como las coordenadas de los puntos y dimensiones en un gráfico vectorial están dadas de manera relativa, aumentar o reducir el tamaño del gráfico es (para la computadora) una simple cuestión de multiplicar o dividir. Este formato es particularmente útil para crear diagramas (en esencia lineas, flechas y cuadros), así como gráficos para visualizar datos, fórmulas o ecuaciones (histogramas, diagramas de sectores, gráficas de puntos o líneas, etc.); así como ilustraciones en general: modelos de un átomo, el diagrama de un experimento o un fenómeno físico, una ilustración geométrica. Siempre que sea posible, la mejor opción es guardar gráficos en un formato vectorial pues conservan su calidad aún después de transformarlos o modificar su tamaño.
Hay aplicaciones profesionales, comerciales, que generan este tipo de gráficas como Corel Draw y Adobe Illustrator. También pueden utilizarse programas de código abierto como Inkscape que generan gráficos en formato SVG. Las herramientas de dibujo de Microsoft Office (como en PowerPoint, Word, Excel) también pueden generar gráficos vectoriales en formato WMF. En el mundo TeX son populares los formatos EPS (PostScript Encapsulado) y PDF, además de que el mismo lenguaje de LaTeX (junto con algunos paquetes auxiliares) se puede utilizar para describir gráficos en un estilo vectorial. La siguiente sección describe éstas y muchas otras alternativas para producir archivos en formato vectorial.
Cabe señalar que la mayoría de los formatos vectoriales (si no es que todos) soportan también insertar mapas de bits dentro de ellos. Muchos llegamos a veces a pensar que, como hemos logrado guardar un gráfico dentro de un formato vectorial, el gráfico es vectorial. ¡Pero esto no es siempre el caso! Hay varias herramientas para producir gráficos que dicen poder exportar gráficos en EPS, pero lo único que hacen es guardar la tabla de colores dentro del EPS (¡y cabe señalar que el EPS es un formato particularmente malo para guardar mapas de bits!).
2. Dibujar/crear/obtener el gráfico
En esta sección se describen varias de las aplicaciones y herramientas que existen para generar gráficos. Observa que, según el formato más adecuado para almacenar tu gráfico, unas aplicaciones pueden ser más o menos adecuadas para tus necesidades.
Aplicaciones para crear y manipular mapas de bits
Si quieres hacer retoques o editar un mapa de bits existen soluciones comerciales como Adobe Photoshop o Paint Shop Pro. En Windows está también el programa Paint que provee una funcionalidad mínima y para algunos casos puede ser suficiente.
Alternativamente, en el mundo del software libre, puedes encontrar The Gimp que es el favorito de muchos usuarios de Linux y existen también versiones de Gimp para Windows y Gimp para OS X. En OS X otra excelente alternativa es la aplicación Seashore basada también en la tecnología de Gimp.
Estos programas te permiten también convertir entre tipos de formatos y producir, entre otros, los JPEG y PNG. Recuerda utilizar el formato más adecuado (con o sin pérdida en la compresión) según el tipo de gráfico que estás editando. En general, evita usar mapas de bits a menos que tu gráfica sea una fotografía, una captura de pantalla, o que la única fuente que tengas de la imagen sea ya un mapa de bits.
Aplicaciones para crear y manipular para gráficos vectoriales
Para gráficos vectoriales hay muchas más opciones y caminos a seguir. Todos con sus propias ventajas y desventajas. Un grupo de estas soluciones consiste en utilizar algún producto comercial como Corel Draw o Adobe Illustrator. Especialmente para Mac OS X hay una gran cantidad de productos comerciales entre los que destacan Lineform, y VectorDesigner, además de Keynote parte de iWork.
Este tipo de programas normalmente pueden exportar archivos PDF (o en su defecto EPS) que se pueden utilizar con LaTeX. Una de sus principales ventajas es que proveen un juego de herramientas muy completas para hacer todo tipo de diseños profesionales.
La desventaja obvia es que necesitas tener acceso a alguno de estos programas ya sea en tu universidad, lugar de trabajo o, alternativamente, comprar una licencia para usarla en tu propia computadora.
Afortunadamente existen también alternativas en el software libre que puedes utilizar para editar tus gráficos. Una de las opciones más destacadas para dibujar gráficos vectoriales es Inkscape que funciona sin problemas en Linux, Windows y OS X.
Otra solución alternativa, enfocada particularmente a la creación de diagramas, es Dia que cuenta también con versiones de Dia para Windows y Dia para OS X. Y otra de las opciones tradicionales es Xfig en Linux, con algo de esfuerzo puedes instalar Xfig para OS X y existen un clon WinFIG para Windows.
Para los usuarios de Linux, otros proyectos maduros son sk1 y Skencil; así como la suite de aplicaciones de KOffice que corre en el ambiente KDE y, entre otras monerías, incluye Kivio (para diagramas) y Karbon (para gráficos vectoriales).
La ventaja principal de estos programas es que todos ellos son software libre, los puedes obtener gratuitamente en internet, y su potencial es relativamente cercano al de las soluciones comerciales.
Una de las pocas desventajas es que prácticamente todos estos programas se originaron para Linux y, aunque con mayor o menor esfuerzo es posible hacerlos compilar y funcionar en otros sistemas operativos, el entorno de trabajo no siempre es tan estable y fluido como el de una aplicación nativa. La mejor recomendación, de cualquier manera, es probar con varias de estas opciones y decidir al final cual es la mejor para tus necesidades.
Soluciones amigables para Windows
Si estás acostumbrado al uso de productos de Microsoft Office, o programas de Windows en general, un buen truco consiste en instalar el controlador de una impresora PostScript genérica en tu computadora. Hecho esto puedes mandar a imprimir desde cualquier programa o aplicación de Windows y guardar los resultados en un archivo EPS. Después de esto tienes aún que arreglar el archivo EPS antes de poder usarlo en LaTeX. Los detalles y consejos adicionales para poner en práctica esta solución los puedes encontrar en el excelente artículo Cómo crear figuras EPS desde Windows de JL Diaz.
Una opción shareware en esta misma dirección consiste en utilizar WMF2EPS. Este programa te ayuda realizar con unos cuantos clicks todo el proceso, que puede llegar a ser algo engorroso, de imprimir el archivo EPS y corregirlo. La gran desventaja de esta solución es que se trata de shareware y tienes que adquirir una licencia para conservar el programa en tu computadora.
Soluciones amigables para Mac OS X
El formato PDF está altamente integrado al sistema operativo de Mac OS X. Esto es una buena noticia para los usuarios de LaTeX en esta plataforma. Desde cualquier aplicación puedes mandar a imprimir un gráfico y, en el diálogo de impresión, puedes encontrar la opción de guardar el resultado como un archivo PDF.
Además, para extraer un gráfico de cualquier documento PDF, puedes abrirlo con la aplicación Preview, seleccionarlo y copiarlo. Una vez copiado, elige el comando “File → New from Clipboard” para obtener un recorte del documento PDF original y guardarlo como un archivo independiente.
Graficar datos o funciones matemáticas
En el caso de gráficas de puntos o lineas, o gráficas en general que resultan de análisis numérico o evaluar fórmulas matemáticas, las más reconocidas soluciones comerciales incluyen a MATLAB y Mathematica. Estos programas permiten también exportar los gráficos en EPS o SVG para mantener la naturaleza vectorial del gráfico.
Una solución gratuita alternativa, diseñada originalmente para aplicaciones de estadística per útil también en cualquier otra área, es el proyecto R. R es, de hecho, un completo y poderoso lenguaje de programación que, en particular, puede exportar gráficos en formato PDF.
Dibujar gráficos programáticamente
El lenguaje de LaTeX es, de hecho, bastante poderoso y puede ser usado también para describir y generar tus gráficos. Un excelente paquete que te permite hacer esto es TikZ de Till Tantau que pone a tu disposición una amplia gama de comandos para realizar todo tipo de gráficos y diagramas. Los resultados son impresionantes y espectaculares, tan sólo echa una mirada al manual de usuario (en inglés) que, además, es un placer de leer.
Esto tiene sus ventajas y desventajas, muy similares a LaTeX mismo. Por un lado, al poder programar tus gráficos, tienes un control absoluto y preciso sobre todos los detalles, realizar gráficos sencillos es también muy rápido. Además, como el procesado final del gráfico se hace por LaTeX mismo, puedes insertar texto y fórmulas con toda la libertad como lo harías en el resto de tu documento. Esto produce gráficos de muy profesionales que, además, comparten la misma alta calidad de los tipos de letra usados en el resto del documento.
Por otra parte, esto implica un nuevo lenguaje que aprender, no viene por sí mismo con una interface gráfica y el código (por más sencillo que sea) no te permite ver inmediatamente como es que se verá finalmente el gráfico.
Un paquete que pone en práctica una idea muy similar es PSTricks de Herbert Voß que, aunque puede ser algo más poderoso, tiene la desventaja de que sólo puede producir directamente archivos en formato PS. Para lograr conseguir archivos PDF tienes que usar algunos trucos extras.
Existen varias aplicaciones que tratan de ofrecer interfaces gráficas para ganar las ventajas de este tipo de soluciones, sin tener que cargar con todas sus desventajas. En Linux está la aplicación Ktikz que te permite ver el dibujo que creas al momento de escribir el código de tikz; además de que puede exportar directamente en los formatos png y pdf. Otros de los proyectos notables son LaTeXDraw y jPicEdt (ambos basados en Java) que te permiten exportar código de PSTricks para incluirlo en tus documentos.
En la categoría de dibujar gráficos con código, y para OS X, está NodeBox. Esta es una aplicación que te permite generar programáticamente gráficos con Python y exportarlos como gráficas en PDF o incluso películas para QuickTime.
Específicamente para dibujar grafos (es decir gráficas con vértices y aristas), una útil aplicación es Graphviz para Linux y Windows, o Graphviz para OS X, que dibuja automáticamente el grafo a partir de su descripción (una lista de aristas). Otro proyecto similar es la librería igraph que implementa algoritmos para dibujar automáticamente grafos, ofrece impresionantes resultados, y se puede acceder desde sus interfaces para Python o R.
3. Preparar el gráfico en un formato adecuado para LaTeX
En este momento debes de tener ya dibujado o creado tu gráfico pero, posiblemente, no se encuentre aún en un formato adecuado que pueda entender LaTeX. La regla básica a seguir es conseguir los siguientes formatos:
- Formato JPEG para mapas de bits con pérdida.
- Formato PNG para mapas de bits sin pérdida.
- Formato PDF para gráficos vectoriales.
Las siguientes son algunas estrategias para convertir entre diferentes formatos de gráficos y obtener los que necesitas.
Convertir mapas de bits con ImageMagick
Una excelente herramienta, si ya tienes tu gráfico guardado como mapa de bits pero en algún formato incompatible con LaTeX, es utilizar ImageMagick. Entre otras cosas, este programa te permite convertir entre una cantidad inimaginable de formatos utilizando el comando convert
desde una consola o terminal,
por ejemplo:
$ convert grafico.tiff grafico.png
Aunque ImageMagick soporta algunos formatos vectoriales (especialmente para leer, no para escribir), su fuerte está en la manipulación de mapas de bits.
Convertir EPS a PDF
Muchas de las soluciones discutidas anteriormente te permiten generar o exportar archivos EPS. Si ya tienes el EPS entonces conseguir el PDF es muy sencillo. Esto se hace con el comando epstopdf
que viene ya incluido en la mayoría de las distribuciones modernas de LaTeX. En este caso el comando
$ epstopdf grafico.eps
se puede usar para generar el archivo PDF correspondiente. El archivo PDF resultante será vectorial si el EPS también lo era. Procura asegurarte de que la aplicación que estés usando realmente produzca gráficos EPS vectoriales (y no sólo enormes tablas de colores guardadas como mapa de bits).
Convertir gráficos vectoriales a PDF
Si tu aplicación puede generar gráficos vectoriales pero, por alguna razón, no puede exportar a PDF, una solución es utilizar UniConvertor. Derivado del proyecto sk1, UniConvertor puede leer gráficos vectoriales en diferentes formatos—como por ejemplo WMF y SGV—para producir como resultado un archivo PDF.
4. Insertar el gráfico como una figura dentro de tu documento
Ya que tienes listo el gráfico en un formato adecuado, agrega en el preámbulo de tu documento principal (antes de \begin{document}
) la instrucción:
\usepackage{graphicx}
Este paquete lo que hace es permitir incluir gráficos externos en tu documento. Luego, en algún lugar cercano a donde quieras que se coloque tu figura agrega el siguiente código:
\begin{figure}
\centering
\includegraphics{grafico}
\caption{Mi Figura}
\label{fig:ejemplo}
\end{figure}
El comando \includegraphics{..}
indica el nombre del archivo que contiene el gráfico que quieres insertar. Observa que no es necesario incluir la extensión del archivo (JPEG, PNG o PDF), LaTeX buscará y utilizará el archivo apropiado.
Tamaño de la figura
Si la figura resulta demasiado grande o pequeña puedes agregar opciones al comando para incluir el gráfico. Por ejemplo,
\includegraphics[width=0.7\textwidth]{migrafico}
ajusta el ancho de la figura al 70% del ancho del texto que cabe en una página. Puedes, por supuesto, modificar el valor 0.7 por cualquier según tus necesidades. Hay muchas más opciones que provee el comando \includegraphics
, si tienes curiosidad puedes leer la guía Using Imported Graphics in LaTeX2e.
Posición de la figura
Una de las tareas de LaTeX es encontrar el lugar más adecuado para colocar tu figura dentro del documento. Esto suele ocasionar sorpresa y un poco de incomodidad sobre todo en usuarios principiantes, “¡pero yo quiero mi figura aquí! ¿por qué LaTeX la pone allá?”. La mejor solución realmente es relajarse, cambiar de actitud y dejar que LaTeX haga su trabajo. Evita usar redacciones del tipo:
... como en la siguiente figura:
y utiliza en su lugar las bondades de LaTeX:
... como en la Figura~\ref{fig:ejemplo}.
Esto hace que la referencia no dependa del lugar donde aparezca la figura y, finalmente, todo se ve mucho más elegante. Si, por alguna razón, realmente quieres controlar la posición donde aparece la figura puedes leer el artículo Quiero mi figura AQUÍ de JL Diaz.
Ruta para guardar los archivos
Para evitar problemas, la solución más sencilla es poner los archivos de los gráficos en la misma carpeta donde se encuentra el archivo principal .tex
de tu documento. Existen opciones para especificar rutas alternativas donde LaTeX puede buscar tus gráficos, si estás interesado revisa la también la guía Using Imported Graphics in LaTeX2e donde se discuten además los pros y los contras.
La opción draft
para borradores
Un problema común que nos puede ocurrir es que la gráfica no aparece y, en su lugar, sólo vemos una caja con el nombre del archivo del gráfico. Esto ocurre porque se tiene activada la opción draft
, ya sea como opción del paquete en \usepackage[draft]{graphicx}
o como una opción global para todo el documento en \documentclass
. Esta opción puede ser útil para visualizar documentos más rápidamente si es que tienes demasiados gráficos. Sin embargo recuerda quitar esta opción, o cambiarla por final
, si quieres que aparezcan los gráficos en el documento.