ocubom's blog

Libro de notas en orden caótico e inexistente

Imágenes en LaTeX

con 19 comentarios

Uno de los puntos más complicados de LaTeX es el uso de figuras. Es bastante habitual tener problemas para incrustar y colocar estos elementos en el documento aunque la mayoría de ellos se deben al desconocimiento del funcionamiento del sistema. Este funcionamiento se divide en dos partes:

  1. Inclusión de la figura. En esta parte se indica qué fichero gráfico hay que incluir y la forma de hacerlo.
  2. Posicionamiento de la figura. El posicionamiento lo hace de forma automática y transparente LaTeX aunque se puede controlar ligeramente su comportamiento.

Para posicionar una figura de forma correcta es necesario conocer estos dos aspectos de LaTeX.

Inclusión de figuras

Para incluir una figura en LaTeX se utiliza la estructura \includegraphics[opciones]{ficherográfico}. El parámetro obligatorio es el fichero gráfico que indica la ruta (relativa al directorio dónde se encuentra el fichero tex) en el que se encuentra la imagen sin extensión, por ejemplo img/logo.

Contrariamente a otros sistemas, LaTeX no reconoce cualquier formato gráfico y los formatos soportados dependen del modo de compilación. En general se diferencian tres tipos diferentes de elementos gráficos:

Vectoriales:
Son imágenes o diagramas que pueden redimensionarse sin perder calidad. Esto se debe a que almacenan las figuras necesarias para reconstruirlas (almacena circulo con centro en el punto x,y y radio r) y pueden “redibujarla” cambiando la escala. Estas imágenes se generan con programas como Microsoft Visio, DIA, Inscape, Rational Rose, etc y las extensiones más habituales son WMF (Windows Meta-File), SVG (Scalable Vector Graphics) o EPS (Encapsulated Postcript).
Generados por ordenador:
Se trata de imágenes no vectoriales que han sido generadas o tratadas por ordenador. Pueden de modelo 3D, capturas de pantalla o imágenes fotográficas que se han editado añadiendo partes transparentes. Los formatos más habituales son GIF, PNG o JPG.
Fotográficas:
Son fotografías reales digitalizadas. Estas imágenes se caracterizan por no poder redimensionarse sin perder calidad. El formato más habitual es JPG

Además de la clasificación de imágenes, es posible utilizar dos compiladores diferentes. El habitual es latex, que genera un fichero DVI transformable a PS y/o PDF, y pdflatex que genera directamente ficheros PDF. Los formatos disponibles para cada uno de ellos se resumen en la tabla siguiente.

Compilador Formato de imágen
Vectorial Ordenador Fotografía
latex eps eps eps
pdflatex pdf png jpg

Una vez conocido el formato gráfico y el compilador, llega el momento de insertar imágenes. Lo primero es cargar los paquetes apropiados para que el compilador procese imágenes en el preámbulo del documento:

\RequirePackage{ifpdf} % ¿latex o pdflatex?
% Configuración de las imágenes
\ifpdf
	\usepackage[pdftex]{graphicx}	% Inclusión de imágenes
	\DeclareGraphicsExtensions{.pdf,.png,.jpg}
\else
	\usepackage{graphicx}		% Inclusión de imágenes
	\DeclareGraphicsExtensions{.eps}
\fi
\graphicspath{ {./img/} } % Ruta respecto al fichero tex principal dónde se buscan imágenes

A partir de este momento es posible utilizar imágenes cuando sea necesario. Para incluir una imagen se debe utilizar el siguiente código:

\begin{figure}[htb]
	\begin{center}
		\includegraphics[opciones]{imagen} % include ./img/imagen.[pdf|png|jgp] si es pdflatex o ./img/imagen.eps si es latex
	\end{center}
	\caption[título indice (corto)]{título figura (largo)}label{fig:id-imagen}
\end{figure}

Las opciones en la sentencia \includegraphics controlan la presentación de la imagen. Si no se especifica nada se presentará tal cual está en el fichero (su tamaño por defecto, posición…). Las opciones más usadas son:

keepaspectratio
indica que la imagen no debe deformarse al redimensionarla. Esto permite cambiar el tamaño de ancho sin tener que calcular el alto apropiado.
width ó height
indican el ancho y alto, respectivamente, deseados. Se pueden especificar de forma absoluta (width=123unidad) de forma relativa al tamaño de la página (width=0.5\textwidth indica el 50% del tamaño de una línea). La segunda opción suele proporcionar mejores resultados.
scale
establece el tamaño respecto al original de la imagen. Por ejemplo, scale=0.5 indica que la imagen debe redimensionarse a la mitad. Únicamente se usa cuando se conoce el tamaño original de la imagen para poder controlar adecuadamente su tamaño.
angle
indica el ángulo de giro en grados que debe rotarse la imagen. Es muy útil para situar una imagen en apaisado especificando angle=90

Si se quieren usar múltiples opciones se separan con comas. Habitualmente, el par width/height no se suele usar con scale.

Posicionamiento de figuras

LaTeX se encarga de posicionar las figuras (y tablas) de forma adecuada aunque se le pueden dar pequeñas directrices de cómo hacerlo. El funcionamiento es sencillo:

  1. En primer lugar se intenta colocar la imagen en la posición indicada del texto. Si no es posible, se añade a la cola de imágenes pendientes y se continúa rellenando la página con el texto que sigue a la imagen.
  2. Al cambiar de página se intenta vaciar la cola de imágenes pendientes posicionando todas las que se pueda.

Es posible modificar este comportamiento mediante las letras situadas con el \begin{figure}[htb]. Las letras indican que primero debe intentarse en la posición indicada (here), al inicio de la página (top) o al final (bottom), sin importar el orden.

Un efecto no deseado de este mecanismo es que una imagen grande va “retrasando” la aparición de otras imágenes pudiendo llegar a volcar todas las imágenes juntas al final del documento o capítulo. Existe una técnica para evitarlo mediante el paquete afterpage: justo tras acabar la inserción de una figura que ocupa una página completa se debe añadir un \afterpage{\clearpage}. De esta forma tras insertar la figura se insertará un salto de página lo que facilita que se pueda procesar correctamente la cola de imágenes.

Escrito por Oscar

Martes, 27 Mayo 2008 a 09:42:54

Escrito en LaTeX

Etiquetado con , ,

19 comentarios

Suscríbete a los comentarios mediante RSS.

  1. Ke tal, gracias por la infor, esta nice!!! y super entendible

    Saludos

    Rubén Ramírez

    Viernes, 6 Junio 2008 a 15:22:07

  2. Tengo un problema con la inclusión de imágenes.
    Puse una imágen casi a un cuarto de página.. de aproximademente 5×5cm. Luego, en la misma página quise colocar otra de las mismas deimensiones pero la “lanza” a la pagina siguiente y no la coloca dspués del texto que quiero. Lo que he usado para incluir la imagen es lo siguiente (colocaré como ejemplo mi imagen)

    \begin{figure}[h!]
    \begin{minipage}{18 cm}
    \begin{center}
    \includegraphics[width=5cm]{Diagrama2.png}
    \\Figura (3.3). \\Diagrama de cuerpo libre
    \end{center}
    \end{minipage}
    \end{figure}

    Recuerdo que alguna vez logré solucionar solo este problema, pero ahora no recuerdo qué fue lo que hice. Pensé que lo que había hecho era borrar el [h!] de arriba, pero por lo que veo acá esto da la orden para que la imagen vaya “aquí”.
    Agradezco su ayuda..
    De antemano muchas gracias
    Camilo

    Camilo

    Viernes, 19 Septiembre 2008 a 00:19:37

    • Si eliminas el comando \begin{figure} … \end{figure} la imagen se coloca auntomaticamente debajo del texto, y no donde latex quiera. De esta forma puede manejar mejor las imágenes.

      Diego

      Viernes, 17 Julio 2009 a 00:26:02

      • En efecto eso ocurre. Sin embargo, no utilizar el entorno de figura tiene dos inconvenientes (i) pueden quedar zonas en blanco al no poder rellenar con texto y (ii) los títulos de las figuras pueden no quedar correctamente situados (en distintas páginas o mal referenciados).

        Salvo para imagenes extraordinariamente sencillas o cuando se desee realizar maquetación manual (en cuyo caso es mejor utilizar un procesador de textos como Word que lo simplifican), no es recomendable omitir los entornos figure o table.

        Oscar

        Viernes, 17 Julio 2009 a 07:26:37

  3. Jajajaja… no he dicho nada, no había observado que la imagen no cabía. Por esta razón la lanzó a la página siguiente.
    Muchas gracias

    Camilo

    Viernes, 19 Septiembre 2008 a 00:22:30

  4. @Camilo: Ese es un problema bastante común. De todos modos en el marcado veo un par de cosas:

    1. Si redimensionas la figura es aconsejable añadir la opción keepaspectratio para mantener las proporciones. Además, es aconsejable redimensionar sólo figuras vectoriales o reducir fotografías.

    2. Los pies de las figuras se especifican con \caption[titulo corto]{titulo largo} que se encarga de numerarlas y generar el el listado de figuras. Haciéndolo a mano se corre el riesgo de cometer errores en la numeración y no mantener el formato o que el tíulo y la imágen estén en dos páginas separadas. Para personalizar la forma con la que se presentan se puede usar el paquete caption.

    Oscar

    Viernes, 19 Septiembre 2008 a 08:15:34

  5. Tengo un problema en latex, cuando inserto una figura y le pongo un caption me aparece de la siguiente forma:

    Figure 1: mi imagen.

    El problema es que quiero cambiar la palabra Figure a Figura o sea de ingles a español, como puedo hacer esto.

    sodor

    Lunes, 1 Diciembre 2008 a 15:36:43

  6. La traducción se gestiona a mediante el paquete babel. Para traducirlo basta con añadir \usepackage[spanish]{babel} para que pase a estar en español.

    Oscar

    Lunes, 1 Diciembre 2008 a 16:52:19

  7. Hola,

    mi problema con las imágenes es que quisiera poner una al lado de otra, pero no sé cómo hacerlo, ya que automáticamente la manda a la página siguiente. Por el ancho de las imágenes las 2 caben en la misma página. ¿Hay alguna forma para hacerlo?

    Gracias, saludos!

    Gnuku

    Miércoles, 3 Diciembre 2008 a 21:01:50

  8. La mejor opción es utilizar el paquete subfig (http://tug.ctan.org/pkg/subfig). Además, permite añadir títulos a cada imagen de forma manual, numerarlas (figura 1a, figura 1b) o referenciarlas por separado.

    Oscar

    Miércoles, 3 Diciembre 2008 a 21:12:40

  9. ¡gRACIAS! Me ha servido mucho esta información… ¡Graaaaaciaaas!!!

    Esperanza

    Miércoles, 28 Enero 2009 a 13:45:36

  10. Hola estoy empezando con latex, he incluido una imagen en mi documento pero… es posible indicarle a latex que incluya la imagen en blanco y negro.

    Gracias

    alfonso

    Sábado, 21 Febrero 2009 a 17:35:42

  11. Hasta donde sé no es posible transformar la imagen a b/n con LaTeX. Lo habitual es realizar la conversión antes de su inclusión.

    Oscar

    Sábado, 21 Febrero 2009 a 18:41:08

  12. Figuras que pase a .eps la inserte en un archivo latex.
    Unas figuras me quedaron muy bien situadas en el texto y otras tienen espacios muy grandes en la parte superior y en la inferior. No he podido cambiarlas.

    ANA

    Domingo, 7 Junio 2009 a 01:37:44

    • Supongo que se trata de una imágen grande rodeada de párrafos de 2-3 líneas, o una imagen seguida de una sección…

      Resumiendo mucho el sistema básicamente ha colocado junto a la imágen todos los párrafos que puede (sin generar líneas huérfanas o palabras divididas entre páginas, entre otras cosas). El espacio libre lo ha repartido entre todos los bloques (párrafos, listas, figuras) pero la mayor parte se sitúa entre elementos diferentes (separación entre párrafo y figura) para que quede mejor visualmente.

      Para evitar el efecto se puede:

      1. Ampliar/reducir/unir párrafos para permitir su división entre páginas. Hay que tener en cuenta que un párrafo de 2-3 líneas no puede dividirse sin dejar huérfanas (lineas sueltas al inicio o final de la hoja).

      2. Adelantar o retrasar la figura (si es posible) para que esté más distanciada de la siguiente sección. En algunos casos cambiando ligeramente el tamaño se obtienen mejores resultados.

      3. Si la imagen es muy grande se puede posicionar sola en una página. Para ello se debe utilizar el paquete afterpage (\usepackage{afterpage} en el preámbulo) y añadir justo detrás del \end{figure} un \afterpage{\clearpage}.

      4. Retocar los criterios que utiliza LaTeX para decidir divisiones, principalmente: clubpenalty, widowpenalty, hyphenpenalty. Todos los valores son de -10000 a +10000, los valores negativos significan favorecer y los positivos evitar (por ejemplo, un \widowpenalty=10000 impide completamente que la última línea de un párrafo pase a la siguiente página.

      El proceso es un poco manual y depende mucho del caso en cuestión.

      Oscar

      Domingo, 7 Junio 2009 a 09:44:39

  13. Hooola

    llevo ya como 5 horas peleandome
    mi problema: no me caben 2 figuras en la misma linea
    tengo dos opciones en al cabeza y no se hacer ninguna de las dos
    1) redimensionar las imagenes
    2) aumentar el ancho de la pagina
    si me explicaras como hacer alguna de estas dos yo te estaria eternamente agradecida (hasta mañana o asín jeje)
    gracias

    annita

    anita

    Miércoles, 8 Julio 2009 a 21:49:38

    • Aunque se puede realizar las dos acciones, es más aconsejable redimensionar las imágenes ya que tocar los márgenes puede “romper” el diseño de la página.

      Para que entren basta con escribir:


      \includeimage[width=.45\textwidth,keepaspectratio]{fig1}
      \includeimage[width=.45\textwidth,keepaspectratio]{fig2}

      Si además se quieren añadir títulos individuales, se puede considerar el uso del paquete subfloat (http://tug.ctan.org/cgi-bin/ctanPackageInformation.py?id=subfloat)

      Oscar

      Jueves, 9 Julio 2009 a 07:41:44

  14. Hola

    Tengo una duda respecto a insertar figuras en latex,
    puedo insertar formatos jpg pero no eps, en el preambulo
    utilizo:

    \documentclass[12pt]{report}
    \usepackage{graphicx}
    …….

    y utilizo en entorno figure de la siguiente forma

    \begin{figure}[H]
    \begin{center}
    \includegraphics [width=12cm,height=5cm] {C:/Users/DEMO/Escritorio/Tesislatex/prueba/figura.ps}
    \caption{figura}
    \label{1}
    \end{center}
    \end{figure}

    Se genera el pie de figura pero esta no se inserta y ni siquiera deja el espacio donde deberia ir. utilizo WinEdt.

    de antemano agradezco su atencion.

    Carlos

    Miércoles, 29 Julio 2009 a 07:47:50

    • Intuyo que el problema son los formatos que se pueden usar. Si funciona correctamente con un jpg el código se está compilando con pdflatex que no soporta imagenes en eps. Mi sugerencia es convertir los ps a pdf con lo que funcionaría correctamente.

      Del código aconsejo no utilizar el H ya que puede “romper” el maquetado estándar. De las dimensiones, es más adecuado indicar ancho o alto (pero no los dos) y añadir el keepaspectratio para que calcule proporcionalmente la otra dimensión. Para finalizar, no es adecuado indicar la extensión (el código del artículo indica cómo configurarlo para que la detecte correctamente) ni usar rutas completas ya que al moverlo de directorio o a otra máquina no es posible compilarlo: es más adecuado usar rutas relativas al fichero TEX principal.

      Oscar

      Miércoles, 29 Julio 2009 a 09:02:38


Escribe un comentario