Tablas con LaTeX (1)

A continuación, mostraré una pequeña introducción para dibujar tablas sencillas en LaTeX. En primer lugar, nuestro archivo .tex tendrá que ser algo parecido a lo siguiente. Además de los paquetes habituales {babel} y inputenc}, se carga el paquete {multirow}, necesario para poder combinar celdas.

documentclass[a4paper,openright,10pt]{report}
usepackage[spanish]{babel} 
usepackage[utf8]{inputenc} 
usepackage{multirow} % para las tablas

begin{document}

end{document}

LaTeX, cuando trabaja con el paquete [spanish] llama a las tablas “Cuadros”. Para que mejor las llame “Tablas”, tenemos que indicarlo escribiendo:

usepackage[spanish,es-tabla]{babel}


Una tabla muy sencilla puede ser la siguiente:

Por ejemplo, la tabla (ref{tabla:sencilla}):

begin{table}[htbp]
begin{center}
begin{tabular}{|l|l|}
hline
País & Ciudad \
hline hline
España & Madrid \ hline
España & Sevilla \ hline
Francia & París \ hline
end{tabular}
caption{Tabla muy sencilla.}
label{tabla:sencilla}
end{center}
end{table}

Cuyo resultado sería:

Básicamente, utilizamos “&” para pasar a la siguiente celda, “\” para saltar de línea, y “hline” para hacer una línea horizontal.
Cuando en la tercera línea ponemos begin{tabular}{|l|l|}, las “l” (letra ele) indican alineación a la izquierda (left). También podríamos haber puesto “c” o “r”, para alineación en el centro o a la derecha. Los “|” (palitos verticales) significan separación con línea vertical.
Por último, en la primera línea hemos puesto [htbp]. Esto indica el orden en que queremos que LaTeX trate de colocar la tabla.
  • h (here) aquí.
  • t (top) arriba.
  • b (bottom) abajo.
  • p (page) en esta página.
Es decir, si ponemos [htbp], LaTeX probará primero de poner la tabla aquí. Si no le convence, probará arriba de la página. Luego abajo. Y luego en cualquier parte de esta página. De todos modos, LaTeX es bastante especial para colocar las tablas e imágenes. Si queremos obligar a LaTeX que situe la tabla exactamente donde hemos dicho, hay que poner [H] y usar el paquete {float}.


Se pueden fusionar celdas de la misma fila, mediante el comando multicolumn.

begin{table}[htb]
centering
begin{tabular}{|l|l|}
hline
multicolumn{2}{|c|}{Europa} \ hline
País & Ciudad \
hline hline
España & Madrid \ hline
España & Sevilla \ hline
Francia & París \ hline
end{tabular}
caption{Tabla muy sencilla.}
label{tabla:sencilla2}
end{table}

En este caso multicolumn{2}{|c|}{Europa}: {2} = 2 celdas fusionadas (contando de izquierda a derecha), {|c|} = texto centrado. (Por cierto, este comando también nos puede valer para alinear de una manera diferente, una única celda de una columna. Por ejemplo, con multicolumn{1}{|r|}{xxx})

El resultado sería:


LaTeX se encarga de seleccionar el ancho de las celdas que él considera “mejor”. Sin embargo, utilizando el comando p{…cm} en vez de “l”, “c” o “r”, podemos fijar el ancho que queramos.

begin{table}[htb]
centering
begin{tabular}{| p{2.2cm}| p{2.2cm} |}
hline
multicolumn{2}{|c|}{Europa} \
hline
País & Ciudad \
hline hline
España & Madrid \ hline
España & Sevilla \ hline
Francia & París \ hline
end{tabular}
caption{Tabla de ancho fijo.}
label{tabla:anchofijo}
end{table}

Cuyo resultado sería:


También podemos fusionar celdas de una misma columna. Para ello utilizamos el comando “multirow”, que está en el paquete {mutlirow}.

usepackage{multirow}

begin{table}[htb]
centering
begin{tabular}{|l|c|}
hline
multicolumn{2}{|c|}{Europa} \
hline
País & Ciudad \
hline hline
multirow{2}{1cm}{España} & Madrid \ cline{2-2}
& Sevilla \ hline

Francia & París \ hline
end{tabular}
caption{Fusionando celdas.}
label{tabla:fusionandoceldas}
end{table}

En este caso multirow{2}{1cm}{España}: {2} = 2 celdas fusionadas (contando de arriba abajo), {1cm} = ancho de la celda.
Además, ahora ya no se puede utilizar siempre el comando hline, pues crea una línea horizontal de longitud toda la tabla. Hay que usar el comando cline{n1-n2}, que crea una línea horizontal entre la columna n1 y la columna n2.


Por último, un ejemplo de una tabla un poco más grande. (Fíjate que la rayita está centrada en el centro, no a la izquierda.)

usepackage{multirow}

begin{table}[htb]
centering
begin{tabular}{|l|l|l|l|}
hline
& multicolumn{3}{c|}{Europa} \
cline{2-4}
& Ciudad & Río & Símbolo\
hline hline
multirow{3}{1cm}{España} & Madrid & Manzanares & Cibeles\ cline{2-4}
& Sevilla & Guadalquivir & Giralda\ cline{2-4}
& Zaragoza & Ebro & Pilar\ cline{1-4}
Francia & París & Sena & Torre Eiffel\ cline{1-4}
multirow{2}{1cm}{Italia} & Roma & Tíber & San Pedro\ cline{2-4}
& Milán & multicolumn{1}{c|}{-} & Duomo\ cline{1-4}
end{tabular}
caption{Tabla muy bonita.}
label{tabla:final}
end{table}


Una última cosa. La etiqueta de las tablas, aparece debajo de cada tabla. Para que vaya arriba, basta con escribir la etiqueta “caption{}” antes de “begin{tabular}”.

Deja un comentario