User:NavarroJ/Importing Graphics

Inserting figures into a document is often a very problematic task when we start learning LaTeX and using it for the first few times. The large ammount of different graphic formats, and incompatibilities between them, also makes the situation more confusing. This chapter will try to explain the complete method required to insert figures into your document, while providing several tips and hints on how to get the best results.

Conventions
Before we start, and in order to avoid any possible confusion, we will have to agree on the terms that will be used in this chapter, and what they mean when they are used.


 * A graphic is any drawing, illustration, image, diagram, photograph, graph, chart, plot, histogram, etc.; that you might want to include in a document to illustrate or clarify an idea. Most of the content of this chapter deals with preparing graphics for inclusion in LaTeX documents.


 * A figure is the structure commonly utilized to insert a graphic in a document. A figure is usually composed by a graphic, a caption (which is not part of the graphic), as well as a numbering sequence that identifies figures in the document (Figure 1, Figure 2, ...).

Overview of the process
The complete process to include a figure in a LaTeX document is composed, essentially, of the following four steps:


 * 1) Determine the appropriate format for your graphic. There are two main kinds of graphics: raster graphics and vector graphics. It is important to know the difference between them so that you can choose which one is more appropriate for your needs. This step will also help you to determine which of the available tools will be most useful in the next step.
 * 2) Draw/create/obtain the graphic. This is probably the most important part of the whole process. Next steps will be much simpler (and produce better results) if this step is carried out correctly. However, this step is also the most difficult to explain due to the large ammount of available tools and programs to produce graphics.

Además, dependiendo del tipo de gráfico y del origen de tus datos, unas herramientas pueden ser más adecuadas que otras. Por otra parte, generar un gráfico con la herramienta inadecuada puede ocasionar que las figuras terminen con muy mala calidad en tu documento final. Una gran parte de esta guía está dedicada a darte diversas sugerencias y estrategias para seleccionar la herramienta adecuada según el tipo de gráfico que necesites.
 * 1) Preparar el gráfico en un formato adecuado para LaTeX. Esta parte es normalmente muy 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.
 * 2) 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 como realizar exitosamente cada uno de estos pasos, y te brindan también una gran cantidad de consejos para obtener los mejores resultados.

Determinar el formato adecuado para tu gráfico
Antes de comenzar a discutir las diversas opciones y herramientas para producir gráficos es necesario aclarar que existen, escencialmente, dos formas de almacenar un gráfico dentro de un archivo en la computadora (y es una decisión muy importante determinar cual de los dos formatos es el adecuado para el tipo de gráfico que necesitas):

Mapas de bits
Un mapa de bits es, en escencia, una gran tabla que indica el color de cada punto (píxel) en tu gráfico. Es un formato muy sencillo y popular para internet pues no requiere (salvo la compresión) de un procesamiento complicado para mostrar el gráfico, simplemente la tabla de colores se copia en la pantalla y listo. Este tipo de archivos es conveniente para guardar fotografías ya que las cámaras y escáneres digitales funcionan precisamente de esa manera, dividiendo el gráfico en una gran cantidad de puntos y registrando el color de cada uno de ellos.

La desventaja principal de este formato es que no puede cambiarse 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 la pantalla. Pero si tratamos de hacer el gráfico más y más grande acabaremos por ver unos cuadrotes en lugar de puntitos. Además, si hacemos el gráfico pequeño y lo queremos después agrandar perderemos inevitablemente calidad en la imagen (una tabla pequeña no puede guardar la misma información que una tabla grande).

Extensiones típicas de archivos que usan este tipo de formato son: BMP, JPEG, GIF, PNG y TIFF. Entre las aplicaciones populares que pueden generar este tipo de archivos están Microsoft Paint y Adobe Photoshop entre otras.

Gráficos vectoriales
Una alternativa para tener gráficos que no pierdan calidad cuando se cambia su tamaño son los gráficos vectoriales. 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 vez que lo 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 todas 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 es preferible, si es posible, tener gráficos vectoriales 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. Las herramientas de dibujo de Microsoft Office (como en PowerPoint, Word, Excel o Microsoft Draw) también generan gráficos vectoriales (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) puede utilizarse para describir gráficos en un estilo 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. Un error que muchos llegamos a cometer es pensar que, como hemos logrado guardar un gráfico dentro de un EPS, el gráfico ya es vectorial. 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 resultando, usualmente, en archivos enormes aún para gráficos pequeños).

Hecha esta explicación lo único que queda por decir es que, siempre que sea posible, utilices algún formato vectorial para crear y guardar tus gráficos. Las únicas excepciones son cuando el gráfico es por naturaleza un mapa de bits, como por ejemplo: una fotografía, material obtenido de internet o capturas de pantalla.

Dibujar/crear/obtener el gráfico
En esta sección presentaremos diversos consejos para producir diferentes tipos de gráficos. Empezaremos por el caso de los mapas de bits donde las siguientes sugerencias te ayudarán a obtener buenos resultados.

Fotografías en formato JPEG
La mayoría de las cámaras y escáneres digitales producen directamente archivos ya en formato JPEG (o JPG, que son lo mismo). La ventaja principal del formato JPEG es que tiene un algoritmo de compresión muy poderoso que produce, normalmente, archivos muy pequeños (comparados por ejemplo con un BMP). Para alcanzar estos altos niveles de compresión se basa en el hecho de que el ojo humano no es realmente capáz de distinguir tantos colores como hay disponibles en una computadora (algo así como 24 millones de colores) y modifica ligeramente el color de algunos puntos (píxeles) en la imagen.

Podemos decir, de hecho, que el formato JPEG logra comprimir la imagen sacrificando un poco de su calidad. Para fotografías, u otro material similar, que normalmente contienen muchisimos colores la pérdida de calidad es imperceptible y convierte al formato JPEG en una opción excelente.

Imágenes sencillas en formatos BMP, GIF, PNG
En este caso por sencillas me refiero a mapas de bits con pocos colores, o con areas uniformes (del mismo color) muy grandes. Este tipo de gráficos son comunes, por ejemplo, en manuales de software donde quieres incluir una figura mostrando alguna de las ventanas de tu aplicación o en general cualquier captura de pantalla (screenshot). Para estos casos la compresión en JPEG puede ser un desastre ya que la pérdida de calidad si se hace notoria y evidente.

La solución entonces es recurrir a formatos como BMP que no realiza gran esfuerzo para comprimir (en cuanto a calidad es el mejor formato porque guarda la tabla de colores, casi, tal cual). Otras mejores soluciones son GIF y PNG que sí tienen algoritmos de compresión más inteligentes pero evitan en lo posible demeritar la calidad del gráfico. En todo caso, si tienes la posibilidad de elegir, PNG es mucho mejor formato pues nunca ha tenido problemas de patentes y es mucho más amigable con LaTeX.

Herramientas para manipular mapas de bits
Si quieres hacer retoques o editar un mapa de bits existen soluciones comerciales como Adobe Photoshop o Paint Shop Pro. Windows tiene 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, es el favorito de los usuarios de Linux y hay también una versión de Gimp para Windows. Estos programas te permiten también convertir entre tipos de formatos y producir, entre otros, los BMP, PNG o JPEG. El programa ImageMagick, que presentaremos en detalle más adelante, es también muy util para convertir entre diferentes formatos.

Recuerda, sin embargo, no utilizar mapas de bits a menos que tu gráfica sea una fotografía, que la única fuente que tengas de la imagen sea a través de internet, o que la imagen la obtengas como una captura de pantalla.

Productos comerciales
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, para crear tus gráficos. Este tipo de programas normalmente pueden exportar buenos archivos 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. Siempre guarda, además del EPS que puedes exportar, una copia de tu gráfico en el formato nativo de la aplicación para poder modificarlo o reusarlo después.

En el caso de gráficas de puntos o lineas, o gráficas en general que resultan de análisis numérico, muy buenas soluciones comerciales incluyen a MATLAB y Mathematica. Estos programas también permiten exportar los gráficos en EPS y otros formatos amigables para LaTeX.

La desventaja obvia es que necesitas tener acceso a uno de estos programas ya sea en tu universidad, lugar de trabajo o, alternativamente, comprar una licencia para usarla en tu propia computadora. Otra desventaja es que para algunos usuarios principiantes la gran cantidad de opciones y herramientas puede hacer parecer complicado el usar este tipo de programas.

Nota: Algunas aplicaciones tienen la opción de agregar un "tiff preview" al archivo EPS. Verifica que tengas deshabilitada esta opción ya que dichos previews hacen que LaTeX sea incapaz de procesar correctamente el archivo EPS.

Soluciones alternativas
Existe también software libre alternativo que puedes utilizar para crear tus gráficos. Un muy buen editor libre para gráficos vectoriales es Inkspace. Otra solución alternativa, enfocada particularmente a la creación de diagramas y realmente muy fácil de usar, es Dia que cuenta también con un instalador para Windows.

La ventaja principal de estos programas es que se trata de software libre, que puedes obtener gratuitamente desde internet, y su potencial es muy cercano al de las soluciones comerciales discutidas anteriormente.

Otro de los favoritos de Linux es Xfig que tiene su equivalente WinFIG para Windows. Además está Skencil que, después de cargar una buena cantidad de herramientas y aplicaciones, también puedes correr en Windows. Finalmente esta la suite de aplicaciones de KOffice que corre en el ambiente KDE y, entre otras monerias, incluye Kivio (para diagramas) y Karbon14 (para gráficos vectoriales). También hay intentos de hacer correr KOffice en Windows pero se encuentra todo en etapas mas bien experimentales y necesitas instalar una buena cantidad de emuladores de Linux (vamos, que al final es más facil instalarte mejor un sistema de Linux completo).

Una de las pocas desventajas es que prácticamente todos estos programas se originaron para Linux y, aunque si hay algunas versiones para Windows relativamente fáciles de instalar, el entorno de trabajo no se siente tan estable y fluido como el de las soluciones comerciales.

Soluciones amigables para Windows
Si estás muy acostumbrado al uso de productos de Microsoft Office o programas de Windows en general, hay buen truco que 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 línea consiste en utilizar WMF2EPS. Este programa te ayuda realizar con unos cuantos clicks todo el proceso, que puede llegar a ser un poco engorroso, de imprimir el archivo EPS y corregirlo. La gran desventaja de esta solución es que se trata de shareware y sólo lo puedes utilizar, según la documentación, durante diez dias antes de comprar el producto.

Usando el lenguaje de LaTeX
Otra solución que da muy buenos resultados es utilizar el mismo lenguaje de LaTeX para describir tus gráficos. Un paquete excelente que te permite hacer este tipo de cosas es TikZ de Till Tantau (lo puedes instalar fácilmente desde MiKTeX Options) 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 da 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. Por otra parte, tienes un nuevo lenguaje que aprender, no tiene 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 hacer un poco más de trucos.

Existen algunos intentos por crear interfaces gráficas que pueden ayudarte a ganar un poco de las ventajas de este tipo de soluciones sin tener que cargar con todas sus desventajas. Uno de proyectos más notables es jPicEdt de Sylvain Reynal que te permite exportar código de PSTricks para incluirlo en tu documento de LaTeX. jPicEdt es una buena solución y con un repertorio de herramientas bastante razonable pero, aunque que se encuentra en constante y activo desarrollo, aún no tiene el potencial y la versatilidad que otras soluciones (tanto libres como comerciales) suelen llegar a tener. Obserba también que jPicEdt está escrito en Java y necesitas tener una máquina virtual de Java para poder ejecutarlo.

Otra aplicación que cae en esta categaría es gnuplot que te permite crear gráficos a partir de datos o funciones matemáticas. Se trata también de un programa donde tienes que hacer scripts (aprender un nuevo lenguaje) para después procesarlos y obtener el gráfico en alguno de los lenguajes para LaTeX (como PSTricks) o directamente en EPS.

La ventaja principal de este tipo de soluciones es que, a diferencia de todas las anteriores, el procesado del gráfico se hace por LaTeX mismo. En particular tienes acceso a insertar texto y fórmulas con toda la libertad como lo harías en el resto de tu documento. Esto produce finalmente gráficos de muy buena calidad pues, si contienen texto o símbolos, se utilizan las mismas fuentes del resto del documento ganando uniformidad.

Las mejores soluciones, en cuanto a calidad final, se pueden lograr normalmente utilizando este tipo de herramientas. Sin embargo, son también estas soluciones las que pueden requierir de mucho más trabajo y esfuerzo para lograr ver los resultados finales en tu documento.

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. Para esto hay dos reglas básicas que tienes que seguir:


 * Si generas un documento PS (compilas con latex + dvips, los modos LaTeX => PS ó LaTeX => PS => PDF de TeXnicCenter) necesitas todas tus figuras en formato EPS.
 * Si generas directamente un PDF (compilas con pdflatex, o el modo LaTeX => PDF de TeXnicCenter) necesitas tus figuras ya sea en PNG, JPEG o PDF.

Si eres de los que les gusta simplificarse la vida y no te gustan las reglas complicadas, entonces simplemente apréndete esta regla infalible:


 * Asegurate de tener, por cada gráfico, una versión EPS y otra versión en alguno de los formatos: PNG, JPEG o PDF.

De estos últimos tres formatos elige el más adecuado según el tipo de gráfico que se trate: PNG para mapas de bits simples, JPEG para fotografías digitales y PDF para gráficos vectoriales. Ahora la pregunta que seguramente te estás haciendo es: ¿Y cómo carambas logro obtener mi gráfico en alguno de estos formatos raros? Las siguientes secciones muestran los métodos más comunes y efectivos.

EPS a PDF
Muchas de las soluciones presentadas anteriormente te permiten generar o exportar a un archivo EPS. Si ya tienes el EPS entonces conseguir el PDF es muy sencillo. Simplemente abre una ventana de Símbolo de Sistema o Consola de Comandos busca la carpeta donde tienes tu gráfico y ejecuta el comando:

> epstopdf grafico.eps

Esto genera el archivo PDF correspondiente y, si el EPS contenía originalmente un gráfico vectorial, el PDF resultante será también vectorial. No es recomendable usar esta ruta si el EPS contiene un mapa de bits ya que producir un PNG o JPEG es mucho mejor alternativa. El comando epstopdf es parte de MiKTeX y seguramente ya lo tienes instalado.

JPEG a EPS
Si tienes un gráfico JPEG, y necesitas producir un documento PS, la mejor solución es encapsularlo dentro de un EPS usando jpeg2ps. Este programa lo tienes que bajar e instalar en tu computadora, una vez hecho esto puedes ejecutar el comando:

> jpeg2ps grafico.jpg > grafico.eps

para generar el archivo EPS correspondiente. Este comando lo que hace es simplemente añadir a tu archivo JPEG cierta información adicional que le permite a LaTeX procesarlo correctamente, conservando la compresión del archivo original. Esto es buena idea ya que, como comenté anteriormente, el formato EPS es particularmente malo para tratar directamente con mapas de bits (genera archivos muy grandes).

ImageMagick: LoQueSea a LoQueSea
Una excelente herramienta, si ya tienes tu gráfico guardado 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 usando un sencillo comando convert (se ejecuta también desde una consola de comandos), por ejemplo:

> convert grafico.png grafico.eps

En particular si tienes Ghostscript instalado (en MiKTeX, por ejemplo, ya viene incluido) te brinda soporte para generar los archivos EPS. ImageMagick da muy buenos resultados convirtiendo mapas de bits, pero debes de tener un poco de cautela tratando de convertir gráficos vectoriales pues no siempre da los mejores resultados.

Insertar el gráfico como una figura dentro de tu documento
Ya que tienes listo el gráfico en un formato adecuado lo que sigue es agregarlo a un documento en LaTeX. Abre tu documento de LaTeX (.tex) y agrega la siguiente instrucción en el preámbulo (antes de ):

\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{migrafico} \caption{Mi Figura} \label{fig:ejemplo} \end{figure}

El comando  indica el nombre del archivo que contiene el gráfico que quieres insertar. Observa que no es necesario incluir la extensión del archivo, de este modo LaTeX siempre utilizará el más adecuado (EPS, PDF, PNG o JPEG) según la forma en que estés compilando.

Consejos y notas adicionales
En esta útlima sección se encuentran algunas notas finales que pueden ayudarte a resolver problemas típicos cuando tratas de insertar figuras en LaTeX.

Posicionamiento de las figuras
Normalmente las figuras no aparecen exactamente en el lugar donde tu las podrías esperar. Pero no te alarmes demasiado, LaTeX es muy inteligente y lo que hace es tratar de acomodar las figuras en el lugar más apropiado donde se verán mejor.

Evita entonces redacciones del tipo:

... como se muestra en la siguiente figura:

y utiliza en su lugar las bondades de LaTeX:

... como se muestra en la Figura~\ref{fig:ejemplo}.

Esto hace que la referencia no dependa del lugar donde aparesca 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.

Tamaño de las figuras
Si la figura resulta demasiado grande o demasiado pequeña puedes agregar opciones al comando para incluir el gráfico:

\includegraphics[width=0.7\textwidth]{migrafico}

que 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 otro para ajustar el tamaño a tus necesidades. Hay muchas más opciones que provee el comando, si tienes curiosidad puedes leer la guía Using Imported Graphics in LaTeX2e.

Ruta para guardar los archivos
Recuerda poner los archivos de los gráficos (al menos las versiones que requieres para compilar en LaTeX) en la misma carpeta donde se encuentra el archivo principal <tt>.tex</tt> de tu documento. Esto te ayuda a resolver muchos de los problemas que podrías tener insertanto figuras y ayuda a que LaTeX sea más eficiente procesando 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.

Problemas de visualización
Uno de los problemas típicos de visualización que los principiantes llegamos a tener 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 normalmente ocurre porque se tiene activada la opción, ya sea como opción del paquete en   o como una opción global para todo tu documento en. Esta opción puede ser muy útil ya que, normalmente, los documentos sin gráficos se pueden visualizar más rápidamente mientras estás desarrollando tu trabajo. Sin embargo recuerda quitar esta opción, o cambiarla por, si quieres que aparescan los gráficos en el documento.

Otro de los problemas es que, principalmente con archivos EPS, los gráficos no aparecen correctamente cuando visualizas el DVI de tu documento. Recuerda que el formato DVI es sólo para pre-visualizar tus documentos. No esperes ver todas tus gráficas y con todos sus efectos especiales en un visor de archivos DVI (como Yap de MiKTeX). Para ver los resultados finales y definitivos siempre mira el archivo PS o PDF.