portada

Crear tablas en LaTeX

Tabla de Contenido

Existen distintas alternativas para crear tablas en LaTeX. En este artículo presentamos uno de los métodos más utilizados basado en el entorno tabular.

Los comandos mínimos para crear una tabla con el entorno tabular incluyen: crear el entorno, definir el número de columnas necesarias y añadir el contenido en tantas filas como sea necesario.

Código

\begin{tabular}{r l}
Fruta & Cantidad \\
Manzana & 4 \\
Naranja & 10 \\
Plátano & 3
\end{tabular}

Resultado

Tabla en LaTeX

Los comandos \begin{tabular} y \end{tabular} delimitan el entorno. Junto con el comienzo del entorno tabular deben definirse el número de columnas. Esto se lleva a cabo escribiendo entre llaves una letra para cada columna. Esta letra indica si el contenido debe estar alineado a la izquierda (l), a la derecha (r) o centrado (c).

En este caso hemos definido dos columnas, la primera alineada a la derecha y la segunda a la izquierda, (e.g. { r l }).

También es posible definir la anchura de las columnas en lugar de su alineación. En este caso indicamos cada columna con la letra p seguida de la anchura entre llaves. Por ejemplo, para crear dos columnas de 4 y 3 cm, respectivamente, escribiríamos:

\begin{tabular}{ p{4cm} p{3cm} }

Para añadir el contenido de cada fila debemos separar mediante & el contenido correspondiente a cada columna. Para indicar el final de una fila escribimos \\.

Por ejemplo, el código

Manzana & 4 \\

Escribirá Manzana en la primera columna, 4 en la segunda columna y a continuación cerrará la fila. Siguiendo este esquema pueden añadirse tantas filas como sea necesario.

Si queremos mostrar una línea horizontal entre dos filas podemos escribir el comando \hline después de la doble barra invertida \\.

Tabla con línea horizontal

También es posible incluir líneas verticales entre las distintas columnas. Estas deben crearse al abrir el entorno tabular y definir las columnas. Por ejemplo, si queremos crear tres columnas centradas con líneas verticales entre ellas escribiremos:

\begin{tabular}{ c | c | c }

Aplicando este sistema a la tabla anterior obtenemos:

Código

\begin{tabular}{| c | c |}
\hline
Fruta & Cantidad \\ \hline
Manzana & 4 \\
Naranja & 10 \\
Plátano & 3 \\ \hline
\end{tabular}

Resultado

Tabla con líneas horizontales y verticales

Con el mismo sistema también es posible crear líneas dobles:

\begin{tabular}{ c || c || c }

Hay ocasiones en las que es necesario definir exactamente la posición en la que aparece la tabla dentro del documento. Además, a veces será necesario añadir una descripción o poder hacer referencia a ella en algún punto del texto. Para ello es necesario incluir la tabla, declarada mediante el entorno tabular, dentro de un entorno table.

\begin{table}[t]
\begin{center}
\begin{tabular}{| r | l | c |}
Fruta & Cantidad & Origen \\ \hline
Manzana & 4 & Estados Unidos \\
Naranja & 10 & España \\
Plátano & 3 & Colombia \\ \hline
\end{tabular}
\caption{Fruta disponible}
\label{tab:fruta}
\end{center}
\end{table}

El primer comando de este ejemplo abre un entorno table. La indicación entre llaves, en este caso [t], indica que la tabla debe posicionarse en la parte superior de la página. Las cuatro posibilidades principales son t (top: parte superior), b (bottom: parte inferior), h (here: aproximadamente en el punto donde se inserta la tabla) o p (page: mostrar la tabla en una página a parte).

A continuación se abre un entorno center para centrar la tabla horizontalmente en la página.

Una vez cerrado el entorno tabular y antes de cerrar el entorno table puede indicarse la descripción y etiqueta de la tabla.

La descripción se incluye mediante el comando \caption{Texto descriptivo} y aparecerá debajo de la tabla. Por defecto, el paquete babel en español llama cuadros a las tablas. Si no especificamos nada, la descripción de la tabla aparecerá como:

Tabla con descripción (cuadro)

Si preferimos que se muestren con la palabra Tabla, debemos indicarlo al cargar el paquete babel mediante:

Código

\usepackage[spanish,es-tabla]{babel}

Resultado

Tabla con descripción (tabla)

La etiqueta se define mediante el comando \label{etiqueta}. Al tratarse de una tabla es recomendable pero no obligatorio definir la etiqueta empezando con el texto tab:___. Esto permite evitar confusiones con otros elementos en el documento.

Una vez definida la etiqueta puede crearse una referencia en el texto mediante el comando \ref{tab:etiqueta}. Por ejemplo,

Como podemos ver en la Tabla \ref{tab:fruta}, hay tres tipos de fruta disponible.
Referencia a una tabla en el texto

Combinar celdas en LaTeX


Existen ocasiones en las que es necesario combinar celdas de una tabla. El procedimiento a seguir es distinto dependiendo de si las celdas se combinan horizontalmente o verticalmente.

Para combinar celdas horizontalmente debemos indicar que la nueva celda abarca distintas columnas. Esto se consigue mediante el comando \multicolumn. Al utilizar el comando \multicolumn hay que indicar tres parámetros:

\multicolumn{columnas}{alineación}{contenido}

En primer lugar escribimos entre llaves el número de columnas que deben fusionarse. En segundo lugar indicamos el alineación de la nueva celda: l, r o c. Finalmente, incluimos el contenido en la nueva celda.

Con este comando podemos crear una fila inicial que abarque las cuatro columnas:

Código

\begin{table}[t]
\begin{center}
\begin{tabular}{| c | c | c | c | }
\hline
\multicolumn{4}{ |c| }{Coches disponibles} \\ \hline
Fabricante & Modelo & Clase & Motor \\ \hline
BMW & Serie 3 & Berlina & Diésel \\
Peugeot & 508 & Berlina & Gasolina \\
Chrysler & Voyager & Monovolumen & Gasolina \\
Land Rover & Defender & Todoterreno & Gasolina \\ \hline
\end{tabular}
\caption{Coches disponibles}
\label{tab:coches}
\end{center}
\end{table}

Resultado

Tabla con el comando multicolumn

También podemos combinar solo algunas de las celdas de una fila concreta:

Código

\begin{table}[t]
\begin{center}
\begin{tabular}{| c | c | c | c | }
\hline
\multicolumn{4}{ |c| }{Coches disponibles} \\ \hline
Fabricante & Modelo & Clase & Motor \\ \hline
\multicolumn{2}{ |c|}{BMW serie 3} & Berlina & Diésel \\
Peugeot & 508 & Berlina & Gasolina \\
Chrysler & Voyager & Monovolumen & Gasolina \\
Land Rover & Defender & Todoterreno & Gasolina \\ \hline
\end{tabular}
\caption{Coches disponibles}
\label{tab:coches}
\end{center}
\end{table}

Resultado

Tabla con el comando multicolumn en una fila

En este caso el contenido “BMW serie 3” se muestra en una sola celda, mientras que el resto de celdas en la fila siguen la división de la tabla.

También puede ser necesario combinar celdas en dirección vertical. Para estos casos es necesario cargar el paquete multirow, que da acceso al comando \multirow con un funcionamiento muy similar a \multicolumn. En este caso debemos definir el número de filas a combinar, la anchura de la columna y el contenido de la nueva celda. Por ejemplo, el código

\multirow{2}{4 cm}{Contenido}

resulta en la combinación de dos celdas, dándoles una anchura de 4 cm y con la palabra “Contenido”. También es posible escribir un asterisco como parámetro de anchura para que la celda se adapte automáticamente a la anchura necesaria. Aplicando este comando a la tabla anterior puede obtenerse

Código

\usepackage{multirow} \begin{table}[t]
\begin{center}
\begin{tabular}{| c | c | c | c | }
\hline
\multicolumn{4}{ |c| }{Coches disponibles} \\ \hline
Fabricante & Modelo & Clase & Motor \\ \hline
BMW & serie 3 & \multirow{2}{*}{Berlina} & Diésel \\
Peugeot & 508 & Berlina & Gasolina \\
Chrysler & Voyager & Monovolumen & Gasolina \\
Land Rover & Defender & Todoterreno & Gasolina \\ \hline
\end{tabular}
\caption{Tabla de coches disponibles}
\label{tab:coches}
\end{center}
\end{table}

Resultado

Tabla en LaTeX

Donde ahora la palabra “Berlina” aparece en una celda combinada. Es importante mantener un espacio en blanco (entre dos signos &) en las celdas que ahora están ocupadas por la nueva celda combinada. En este caso esto ocurre en la tercera fila correspondiente al Peugeot 508.

Centrar verticalmente el contenido de una celda


Para centrar verticalmente las celdas de una tabla es necesario incluir el paquete array en el preámbulo:

\usepackage{array}

Este paquete permite definir la alineación de cada columna de un entorno tabular con el parámetro m. El parámetro m (middle) indica que el texto debe aparecer verticalmente en el centro. Por ejemplo, el siguiente código:

Código

\begin{table}[t]
\begin{center}
\begin{tabular}{ | m{2cm} | m{5cm} | }
\hline País & Ciudades \\ \hline
España & Madrid, Barcelona, Sevilla, Valencia, Málaga, Zaragoza, Granada, Córdoba, Bilbao, etc. \\ \hline
Francia & París, Lyon, Burdeos, Toulouse, Marsella, Estrasburgo, Niza, Nantes, Montpellier, etc. \\ \hline
Alemania & Berlín, Múnich, Hamburgo, Colonia, Stuttgart, Leipzig, Núremberg, Bremen, Hannover, etc. \\ \hline
\end{tabular}
\end{center}
\end{table}

Resultado

Tabla con celdas centradas verticalmente

Como puedes ver el nombre de los países aparece centrado verticalmente.

Tablas de más de una página en LaTeX


En algunos casos es necesario crear tablas tan largas que acaban ocupando más de una página. Para gestionar este tipo de tablas existe el paquete longtable.

Podemos crear una tabla con este entorno siguiendo el mismo esquema que en el caso del entorno tabular. Es decir,

\begin{longtable}{ c c }
Fruta & Cantidad \\ Manzana & 4 \\
Naranja & 10 \\
% Muchas líneas
Plátano & 3
\end{longtable}

La ventaja de utilizar este entorno es que podemos definir un encabezado para la tabla que se repetirá al principio de cada página.

En primer lugar podemos definir el encabezado que aparece justo en el comienzo de la tabla. Al finalizar la definición de este encabezado escribimos el comando \endfirsthead.

A continuación definimos el encabezado que aparecerá en las páginas subsiguientes y escribimos el comando \endhead al final.

Después de estas dos definiciones incluimos el contenido de la tabla.

A modo de ejemplo:

\begin{longtable}{| c | c |}
\hline
\multicolumn{2}{|c|}{Lista de frutas} \\ \hline
Fruta & Cantidad \\ \hline
\endfirsthead
Fruta & Cantidad \\ \hline
\endhead
Manzana & 4 \\
Naranja & 10 \\
Manzana & 4 \\
Naranja & 10 \\
Plátano & 3 \\ \hline
\end{longtable}

Produce el resultado

Tabla creada con longtable - primera página Tabla creada con longtable - segunda página

Resumen