viernes, 4 de abril de 2014

Cómo añadir imágenes en una tabla

En esta entrada mostraré cómo añadir imágenes en una tabla. Es muy fácil, y en lo único en lo que hay que fijarse más, es cuando queremos alinear las imágenes.

En este ejemplo, tengo dos imágenes (en formato .eps), "dibujo1.eps" y "dibujo2.eps". La primera imagen tiene un tamaño 1039 x 549 pixels, y la segunda 484 x 498 pixels.  (Importante para luego.)

A continuación, puedes ver el código de ejemplo. Recuerda que con "p{xxx}" definimos la anchura de la columna igual a xxx.

\documentclass[a4paper,openright,12pt]{book}
\usepackage[spanish]{babel}
\usepackage[latin1]{inputenc}
\usepackage{graphicx}
\usepackage{array}
\usepackage{float}

\begin{document}

\begin{table}[H]
\centering
\begin{tabular}{| p{4cm} | p{3cm} | p{2cm} |}
\hline
\includegraphics[width=40mm]{./dibujo1} & \includegraphics[width=30mm]{./dibujo2} & Targaryen y Arryn \\
\hline
\end{tabular}
\end{table}

\end{document}


La verdad es que así solo, ha quedado un poco feo. El texto está muy abajo, la segunda imagen está completamente pegada arriba...

Para centrar todas las celdas, podemos poner "m{xxx}". Además, para evitar que la segunda imagen queda pegada arriba, añado un pequeño margen con "\vspace{1.52mm}". (Añado también este espacio en la primera imagen para que quede centrada con respecto a la segunda imagen).

\begin{table}[H]
\centering
\begin{tabular}{| m{4cm} | m{3cm} | m{2cm} |}
\hline
\vspace{1.52mm}\includegraphics[width=40mm]{./dibujo1} & \vspace{1.52mm} \includegraphics[width=30mm]{./dibujo2} & Targaryen y Arryn \\
\hline
\end{tabular}
\end{table}


Como la primera imagen es más bajita que la segunda, podemos decidir si dejarla centrada, ajustarla arriba, o bien ajustarla abajo. Para hacer esto, basta con que movamos esta imagen la distancia justa arriba o abajo. Y para ello, basta con hacer unos pequeños cálculos.

La primera imagen mide de ancho 40 mm (porque lo definimos en [width=40mm]), y de alto 549 / 1039 · 40 mm = 21.14 mm.
La segunda imagen mide de ancho 30 mm, y de alto  498 / 484 · 30 mm = 30.87 mm.

De forma que si queremos alinear arriba la primera imagen, tenemos que moverla 30.87 - 21.14 - 1.52 = 8.21 mm. (Descontando los 1.52 mm, que bajamos la segunda imagen.) Como queremos moverla hacia arriba, ponemos el valor negativo.

\begin{table}[H]
\centering
\begin{tabular}{| m{4cm} | m{3cm} | m{2cm} |}
\hline
\vspace{-8.21mm} \includegraphics[width=40mm]{./dibujo1} & \vspace{1.52mm} \includegraphics[width=30mm]{./dibujo2} & Targaryen y Arryn \\
\hline
\end{tabular}
\end{table}


Por último, si lo que queremos es alinearla en la parte de abajo, tenemos que moverla 30.87 - 21.14 + 1.52 = 11.25 mm.

\begin{table}[H]
\centering
\begin{tabular}{| m{4cm} | m{3cm} | m{2cm} |}
\hline
\vspace{11.25mm}\includegraphics[width=40mm]{./dibujo1} & \vspace{1.52mm} \includegraphics[width=30mm]{./dibujo2} & Targaryen y Arryn \\
\hline
\end{tabular}
\end{table}

3 comentarios:

Unknown dijo...

Hola amigo, tengo un problema. Cuando inserto dos imágenes una de ellas se pasa de las dimensiones de la tabla, y cuando la hago más pequeña la otra imágen tiene el mismo problema.
Mi pregunta es, ¿cómo cambio el tamaño de la tabla?
Gracias.

Pablo Angamarca Briceño dijo...

Hola, gracias por el valioso aporte que realizan.
Por favor necesito ayuda. Estoy trabajando con una tabla larga (longtable), e intento insertar una imagen (lo cual lo he logrado) pero necesito que esta imagen tenga su \caption{} y su \label{} para que aparezca en el indice de figuras y para poder hacer referencias a ella. Pero me da un error al colocar el \caption{}. Intente colocar la imagen dentro de una minipage pero también me da el siguiente error:

! Misplaced \noalign.\caption ->\noalign\bgroup \@ifnextchar [{\egroup \LT@c@ption \@firstofone ... \caption

Adjunto el código. Cualquier ayuda les agradezco desde ya.
Saludos


\begin{center}
\begin{longtable}{p{0.5cm}m{11cm}p{0.5cm}}

\multicolumn{3}{l}{\cellcolor[HTML]{9B9E93}{\color[HTML]{FFFFFF} \textbf{Plena Edad Media}}}\\


\multicolumn{2}{l}{\cellcolor[HTML]{DCDDDF}\textbf{Desde el siglo XI d.C.}} & \cellcolor[HTML]{9B9E93}{\color[HTML]{FFFFFF}} \\[1mm]

\endfirsthead

%primera parte de la tabla por pagina
\multicolumn{3}{l}{{{\small Continuación de la tabla \ref{lt:EuropaPlenaEdadMedia_de_XIdC_a_XIVdC}.}}} \\
\endhead

% ultima parte de la tabla por pagina
\multicolumn{3}{l}{{ {\small Continúa en la siguiente página.}}} \\
\endfoot

% ultima parte de la tabla

\multicolumn{2}{l}{\cellcolor[HTML]{DCDDDF}\textbf{al siglo XIV d.C.}} & \cellcolor[HTML]{9B9E93}\\[1mm]

\endlastfoot

%inicio del contenido de la tabla

\cellcolor[HTML]{DCDDDF}
$\xarrowvert[\begin{gathered}
& \color[HTML]{606060}

%AQUI SE INSERTA LA IMAGEN
\begin{minipage}[t]{0.3\textwidth}
\begin{figure}[H]
\includegraphics[width=4cm]{escudoUniversidadBoloniaZoom}
\caption{Fotografía de un paraguas}
\end{figure}
\end{minipage}


&\multirow{-8.6}{*}{\cellcolor[HTML]{9B9E93}{\color[HTML]{FFFFFF}\rotatebox{-90}{\textbf{EUROPA AL INICIO DE LA EDAD MEDIA}}}}\\

\end{longtable}
\end{center}

chuco dijo...

hola, gracias por esta información, esta pagina me es muy útil, aprendí mas latex aquí que en los libros