viernes, 27 de enero de 2012

Tablas con LaTeX (3)

A continuación mostraré más ejemplos sobre tablas avanzadas. Nuestro documento .tex tendrá que tener la forma siguiente, donde se cargan los paquetes {graphicx}, para insertar figuras, {multirow}, para fusionar celdas de la misma columna, {array} para centrar verticalmente los elementos de una casilla, y {float}, para usar el comando [H].

\documentclass[a4paper,openright,10pt]{report}
\usepackage[spanish]{babel} % para escribir en espanol
\usepackage[latin1]{inputenc} % para acentos sin codigo
\usepackage{graphicx} % graficos
\usepackage{multirow, array} % para las tablas
\usepackage{float} % para usar [H]

\begin{document}

\end{document}



  • Cómo obligar a LaTeX a que situe una tabla (o figura) en un sitio determinado.
LaTeX suele colocar las tablas (y figuras) donde él considera mejor. Podemos indicarle el orden de nuestra preferencia con [htb] (here, top, bottom), pero no siempre funciona bien. Si queremos forzar a LaTeX que coloque la tabla justo en un sitio, hay que poner [H]. Para usar este comando, es necesario cargar el paquete {float}.

\begin{table}[H]

\end{table}



  • Cómo amoldar el texto de una celda, a un ancho fijo. Y que automáticamente el texto vaya saltando de línea.
Para ello, podemos utilizar el comando p{xcm}. Donde "xcm" es la anchura que queremos dar a la columna. (Podemos usar "in", "mm", "cm", etc.)

\begin{table}[H]
\centering
\begin{tabular}{p{2cm} p{5cm}}
\hline
Autor & Poema \\
\hline \hline
Espronceda & Con diez cañones por banda, viento en popa, a toda vela, no corta el mar, sino vuela un velero bergantín... \\
\hline
Bécquer & Volverán las oscuras golondrinas, en tu balcón sus nidos a colgar, y otra vez con el ala, a sus cristales jugando llamarán... \\
\hline
\end{tabular}
\caption{Autores españoles.}
\label{tabla:autores}
\end{table}




  • Cómo centrar verticalmente el texto de una celda.
Para ello, podemos cargar la librería {array} y usar los comandos >{\arraybackslash}m{xcm}, como se muestra a continuación. (Si además queremos que el texto esté centrado horizontalmente, añadimos \centering.)

\begin{table}[H]
\centering
\begin{tabular}{>{\centering\arraybackslash}m{2cm} >{\arraybackslash}m{5cm} }
\hline
Autor & Poema \\
\hline \hline
Espronceda & Con diez cañones por banda, viento en popa, a toda vela, no corta el mar, sino vuela un velero bergantín... \\
\hline
Bécquer & Volverán las oscuras golondrinas, en tu balcón sus nidos a colgar, y otra vez con el ala, a sus cristales jugando llamarán... \\
\hline
\end{tabular}
\caption{Autores españoles.}
\label{tabla:autores}
\end{table}



  • Cómo insertar una imagen en una celda de una tabla.
Las imágenes se insertan fácilmente con \includegraphics[width=15mm]{dibujo}. En estos casos, suele ser importante que las celdas queden centradas verticalmente, utilizando los comandos explicados previamente.

\begin{table}[H]
\centering
\begin{tabular}{ >{\centering\arraybackslash}m{2cm} >{\arraybackslash}m{5cm}}
\hline
Autor & Poema \\
\hline \hline
\includegraphics[width=15mm]{./figuras/espronceda} & Con diez cañones por banda, viento en popa, a toda vela, no corta el mar, sino vuela un velero bergantín... \\
\hline
\includegraphics[width=15mm]{./figuras/becquer} & Volverán las oscuras golondrinas, en tu balcón sus nidos a colgar, y otra vez con el ala, a sus cristales jugando llamarán... \\
\hline
\end{tabular}
\caption{Autores españoles.}
\label{tabla:autores}
\end{table}




Por último, muestro un ejemplo de tabla un poco más complejo. Donde los versos de ambos poemas se han escrito en líneas distintas.

\begin{table}[H]
\centering
\begin{tabular}{ >{\centering\arraybackslash}m{2cm} >{\centering\arraybackslash}m{6cm}}
\hline
Autor & Poema \\
\hline \hline
\multirow{4}{2cm}{\centering\includegraphics[width=15mm]{./figuras/espronceda}} & Con diez cañones por banda,\\
& viento en popa, a toda vela,\\
& no corta el mar, sino vuela \\
& un velero bergantín... \\
\hline
\multirow{4}{2cm}{\centering\includegraphics[width=15mm]{./figuras/becquer}} & Volverán las oscuras golondrinas,\\
& en tu balcón sus nidos a colgar,\\
& y otra vez con el ala,\\
& a sus cristales jugando llamarán... \\
\hline
\end{tabular}
\caption{Autores españoles.}
\label{tabla:autores}
\end{table}

33 comentarios:

María dijo...

Muchas gracias. Me estaba tirando de los pelos y gracias a esta entrada he conseguido que la tabla se vea como yo quería.

Un saludo!!

Luis dijo...

Me alegro. :-)

¡Hasta luego!

Unknown dijo...

Muchísimas gracias, llevaba tiempo buscando como hacer esto ^^

Luis dijo...

Muchas de nadas :-)

Lupita Moreno dijo...

Gracias, esta buenísimo tu post

Luis dijo...

Gracias Lupita. ^^

De mi interes dijo...

Hola Luis,
Estoy trabajando un documento grande con \multirow, aunque he cargado el paquete correspondiente, me sale el siguiente error
! Undefined control cequence
\multirow

y en un documento pequeño si me funciona. ¿Me podrías colaborar con esto?
Muchas gracias.
Catalina.

Luis dijo...

Hola Catalina, ¿qué tal?

El tamaño del documento no tiene nada que ver.

Creo que el problema está sencillamente en que tienes alguna letra mal puesta. A lo mejor tienes mal escrito el nombre del paquete al cargarlo, o quizás tengas escrita mal el nombre de la función.

\usepackage{multirow}

\multirow{4}{2cm}{texto}

Hasta luego

Unknown dijo...

Muchas gracias!

Luis dijo...

¡Muchas de nadas! :)

Unknown dijo...

gracias me sirvio bastante para dejar donde quiero las tablas saludos

Luis dijo...

Me alegro, Cristopher :-)

Unknown dijo...

Lo primero muchas gracias por tu blog, me sirve de mucha ayuda!. Ahora una consulta ¿algún comando para cambiar el color de los cuadros? me refiero a las rayas negras que forman el propio cuadro... ¡saludos!

Luis dijo...

Hola Pedro,

para eso puedes usar el paquete {colortbl}

Hasta luego

http://osl.ugr.es/CTAN/macros/latex/contrib/colortbl/colortbl.pdf

Unknown dijo...

¡Vale muchas gracias! es que vengo del entorno word y siempre use mucho la escala de grises, las tablas tan negras contrastan mucho con el resto de documentos.
Saludos y enhorabuena por tu blog

Luis dijo...

Gracias :-)

Unknown dijo...

Hola. he escrito el código que aparece ahí, pero mi tabla es muy grande, de echo aparece solo la mitad la tabla y en la pag siguiente ya no aparece, aparece como si estuviera cortada o debajo de la pag siguiente, que otra opción tengo para poder poner mi tabla y que aparezca correctamente.
gracias. saludos

Luis dijo...

Hola Arturo,

para páginas que ocupen varias hojas, es mejor usar el paquete {longtable}. Búscalo en categorías.

Hasta luego

christian lopez dijo...

intento forzar mi tabla a que quede donde yo la necesito con [H] , pero no me da resultado me la poner al final del capitulo.

Luis dijo...

Hola Christian,
¿estás cargando el paquete {float}?
Hasta luego

Javier dijo...

Buenas,
importé el paquete float para la imagen fija, y todo funciona perfectamente. El único inconveniente que encuentro con este método es que al hacer uso de la [H], en ocasiones la imagen me desplaza los pies de página que tenía en la hoja. Por ejemplo, resulta que mi imagen, por cuestión de espacio, se debería situar en el final de una página, pero por el pie de página, no cabe. Entonces Latex me envía la imagen al comienzo de otra página, pero desplazando el pie de página junto al texto que precedía a la imagen.

Muchas gracias y magnífico blog.

Luis dijo...

Hola Javier,
entiendo el problema, pero no conozco una solución perfecta. Yo uso casi siempre [H], y voy viendo cómo va quedando. Si no me gusta, muevo un poco de texto antes o después, y vuelvo a comprobar. Es decir, que no tengo una solución para hacerlo de manera automática.
Hasta luego

Unknown dijo...

Hola, Quisiera saber como hacer tablas que contengan ecuaciones, y si se puede colocar alguna de estas ecuaciones en negrilla dentro de la tabla. Muchas Gracias.

Unknown dijo...

Hola Luis, primero que nada muchas gracias por tu post, me sirvió muchísimo. Tengo una pregunta, hice lo mismo que tu con el código pero las imágenes se salen de los bordes de las tablas, me podrías dar algún consejo? Saludos

katy pacheco dijo...

Muy bueno me sirvió mucho gracias :*






Bianca dijo...

Una vez más este blog me ha dado el dato preciso que necesitaba!

Muchas gracias Luis.

Saludos desde Paraguay.

Luis dijo...

Me alegro. Saludos desde el otro lado del charco. :-)

Edwin Bone dijo...

Saludos, excelente blog, como puedo hacer para que el título de las tablas no me aparezca centrado, sino alineado a la izquierda. Gracias

Unknown dijo...

Excelente muy buenos contenidos y una gran ayuda a quienes queremos dominar el mundo de la pequeñas fieras... Las letras.

Unknown dijo...

Buenas Noches, es que necesito generar una tercera columna, pero no he podido lograrlo. Espero su respuesta

SACT/2n dijo...

Hola, yo quisiera agregar una línea de separación entre cada fila. ¿Cómo le hago?

Unknown dijo...

Hola, tengo un problema con las tablas en mi documento latex, cuando compilo en el documento las referencias que hago a una tabla en el texto me sale "??" en lugar del número de la tabla. Qué puede ser?

Mary dijo...

Hola, es que la tabla invade el pie de página. ¿Cómo hago para solucionarlo?
GRacias.