Mostrando entradas con la etiqueta tablas. Mostrar todas las entradas
Mostrando entradas con la etiqueta tablas. Mostrar todas las entradas

sábado, 9 de abril de 2016

Cómo poner Figura 1 / Tabla 1 en la lista de figuras y tablas

En los índices de figuras y tablas, estas se indican exclusivamente con el número correspondiente (1.1, 1.2...) omitiéndose las palabras "Figura" y "Tabla" delante.


Pero podemos añadirlas muy fácilmente, utilizando el paquete {tocloft}, y editando las variables "\cftfigfont" y "\cfttabfont", de la siguiente forma:

\usepackage{tocloft}

\renewcommand{\cftfigfont}{Figura }
\renewcommand{\cfttabfont}{Tabla }

domingo, 13 de marzo de 2016

Cómo quitar la numeración de figuras, tablas y ecuaciones

Para quitar la numeración de tablas y figuras, podemos usar el paquete {caption}.

\usepackage{caption}

Este paquete nos permite dos opciones. 1) Si lo que queremos es quitar la numeración de todas las tablas y figuras, añadimos las siguientes líneas de código al inicio de nuestro documento:

\captionsetup[table]{labelformat=empty}
\captionsetup[figure]{labelformat=empty}

2) Si lo que queremos es quitar la numeración de una tabla o figura en concreto, cuando añadimos su leyenda, lo hacemos con el comando "\caption*".

\caption*{Grandes ingenieros españoles.}


Para quitar la numeración de las ecuaciones, conozco un método que funciona pero que no es elegante. El paquete {amsmath} contiene la instrucción "\notag". Si escribimos esta instrucción al inicio de cada ecuación, no se numerará. (¿Conoces un método mejor?)

\usepackage{amsmath}

\begin{equation}
\notag e^{i\tau} = 1
\end{equation}

martes, 28 de octubre de 2014

Cómo girar 90 grados una sola celda en una tabla en LaTeX

Una de las asignaturas pendientes de LaTeX son las tablas. Hay que reconocer que, por ejemplo con Word, es inmensamente más fácil girar un texto de una celda, alinearlo, centrarlo vertical y horizontalmente, etc. ¿Cuál es mi consejo entonces? Bueno, cuando trabajo con LaTeX siempre trato de hacer las tablas lo más sencillitas posibles.

En esta entrada explicaré un poco cómo se puede girar verticalmente un texto. Las tablas se empiezan a complicar un poco, así que, es algo que recomendaría hacer solo en casos sencillos, como los siguientes.

En primer lugar, parto del siguiente ejemplo. Es una tabla normal, excepto quizás, en que en la primera columna fusiono las primeras 5 filas, y luego las 2 siguientes. Para lo que necesito el paquete {multirow}. Ahora, la idea sería girar 90º, las palabras Cretácico y Jurásico.

\usepackage{multirow}

\begin{table}[htb]
\centering
\begin{tabular}{|l|l|}
\hline
\multirow{5}{2cm}{Cretácico} & Tiranosaurio\\ \cline{2-2}
& Triceratops \\ \cline{2-2}
& Velociraptor \\ \cline{2-2}
& Anquilosaurio \\ \cline{2-2}
& Hadrosaurio \\ \hline
\multirow{2}{2cm}{Jurásico} & Alosaurio\\ \cline{2-2}
& Estegosaurio \\ \hline
\end{tabular}
\caption{Dinosaurios.}
\label{ta:dino}
\end{table}


Esto se puede hacer con el paquete {rotating}, que entre otras funciones, tiene la funcion "\rotatebox{xx}{yyy}", que nos gira la palabra yyy, el ángulo xx en grados (cuyo valor puede ser positivo o negativo). El resultado lo muestro a continuación. Por cierto, fíjate que ahora, la primera columna va a ser más estrechita. Y en vez de los 2cm de antes, pongo solo 0.5 cm.

\usepackage{multirow}
\usepackage{rotating}

\begin{table}[htb]
\centering
\begin{tabular}{|l|l|}
\hline
\multirow{5}{0.5cm}{\rotatebox{90}{Cretácico}} & Tiranosaurio\\ \cline{2-2}
& Triceratops \\ \cline{2-2}
& Velociraptor \\ \cline{2-2}
& Anquilosaurio \\ \cline{2-2}
& Hadrosaurio \\ \hline
\multirow{2}{0.5cm}{\rotatebox{90}{Jurásico}} & Alosaurio\\ \cline{2-2}
& Estegosaurio \\ \hline
\end{tabular}
\caption{Dinosaurios.}
\label{ta:dino}
\end{table}


Crétacico ha quedado bien, pero Jurásico es demasiado largo. Aquí empiezan los problemas que mencionaba con LaTeX... Bueno, esto se puede solucionar, por ejemplo, añadiendo un cierto espacio extra en las dos últimas filas. Esto se puede hacer añadiendo justo después del salto de línea, [ZZex] donde ZZ corresponde al espacio añadido, como se ve a continuación:

\usepackage{multirow}
\usepackage{rotating}

\begin{table}[htb]
\centering
\begin{tabular}{|l|l|}
\hline
\multirow{5}{0.5cm}{\rotatebox{90}{Cretácico}} & Tiranosaurio\\ \cline{2-2}
& Triceratops \\ \cline{2-2}
& Velociraptor \\ \cline{2-2}
& Anquilosaurio \\ \cline{2-2}
& Hadrosaurio \\ \hline
\multirow{2}{0.5cm}{\rotatebox{90}{Jurásico }} & Alosaurio\\[1.8ex] \cline{2-2}
& Estegosaurio \\[1.8ex] \hline
\end{tabular}
\caption{Dinosaurios.}
\label{ta:dino}
\end{table}


Un último pequeño problema es que ahora las palabras Alosaurio y Estegosaurio quedan muy arriba de sus respectivas celdas. Quedaría más bonito si estuvieran centradas verticalmente. Para solucionarlo, he añadido 2 filas extra (ahora con Jurásico fusiono 4 columnas, no solo 2), y añado al final de cada salto de línea los espacios extra con [ZZex]

\usepackage{multirow}
\usepackage{rotating}

\begin{table}[htb]
\centering
\begin{tabular}{|l|l|}
\hline
\multirow{5}{0.5cm}{\rotatebox{90}{Cretácico}} & Tiranosaurio\\ \cline{2-2}
& Triceratops \\ \cline{2-2}
& Velociraptor \\ \cline{2-2}
& Anquilosaurio \\ \cline{2-2}
& Hadrosaurio \\ \hline
\multirow{4}{0.5cm}{\rotatebox{90}{Jurásico }} & \\[-1ex]
& Alosaurio\\[0.9ex] \cline{2-2}
& \\[-1ex]
& Estegosaurio \\[0.9ex] \hline
\end{tabular}
\caption{Dinosaurios.}
\label{ta:dino}
\end{table}

Cómo girar una tabla con LaTeX

Girar una tabla es LaTeX es muy fácil. Crea la tabla de manera normal, y a continuación, gírala con los comandos \begin{turn} \end{turn}, que están en el paquete {rotating}. Fíjate que de esta forma, puedes girar todo lo que quieras. No solo una tabla.

\usepackage{rotating}
\usepackage{float}

\begin{table}[H]
\centering
\begin{turn}{90}
\begin{tabular}{|l|l|}
\hline
Tiranosaurio & Triceratops \\
\hline
Alosaurio & Estegosaurio \\
\hline
\end{tabular}
\end{turn}
\caption{Dinosaurios.}
\label{ta:dino}
\end{table}


En este ejemplo, para evitar que LaTeX mueva la tabla a otro sitio (cosa que le gusta bastante), uso el paquete {float} y la instrucción [H].

Si además de girar la tabla, también te gustaría girar la leyenda, puedes leer el siguiente manual sobre tablas (click aquí). Sin embargo, yo aún no he encontrado la solución perfecta.

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}

viernes, 13 de diciembre de 2013

Cómo poner puntitos en una tabla hasta el final de la celda

En esta entrada mostraré cómo poder rellenar una tabla con puntitos, hasta la celda siguiente.

El comando "\dotfill", nos permite rellenar la celda con puntitos. Pero si sólo lo hacemos así, solo nos rellenará la celda actual. Y quedará un espacio en blanco, antes del texto de la siguiente celda. Como se ve a continuación. (Por cierto, recuerda que con "p{40mm}" definimos la anchura de la columna.)

\begin{table}[htb]
\begin{center}
\begin{tabular}{p{40mm} r}
\hline
Ciudad & Altura \\
\hline \hline
Ciudad de México \dotfill & 2250 m\\
Madrid \dotfill & 650 m \\
Ginebra \dotfill & 430 m \\
París \dotfill & 50 m \\
\hline
\end{tabular}
\caption{Altura respecto el nivel del mar.}
\label{ta:altura}
\end{center}
\end{table}


Podemos poner puntitos al final de la primera columna y al inicio de la segunda columna. Pero el seguirá quedando un espacio en blanco entre ambas columnas.

\begin{table}[htb]
\begin{center}
\begin{tabular}{p{40mm} r}
\hline
Ciudad & Altura \\
\hline \hline
Ciudad de México \dotfill & \dotfill 2250 m\\
Madrid \dotfill & \dotfill 650 m \\
Ginebra \dotfill & \dotfill 430 m \\
París \dotfill & \dotfill 50 m \\
\hline
\end{tabular}
\caption{Altura respecto el nivel del mar.}
\label{ta:altura}
\end{center}
\end{table}


Para indicar que no queremos ningún espacio, lo podemos hacer con @{}. Este comando sirve para definir el tipo de separación entre columnas (un puntito, una raya, otros símbolos...). Entre {} se indica el símbolo que queremos usar (click aquí). Como aquí no ponemos ninguno, queremos decir que no habrá ninguna separación.

El resultado sigue sin ser bueno. Los puntitos no están todos equidistantes. Hay una rotura en esa simetría entre las dos columnas. (En este ejemplo se ve en ". .650".)

\begin{table}[htb]
\begin{center}
\begin{tabular}{p{40mm}@{} r}
\hline
Ciudad & Altura \\
\hline \hline
Ciudad de México \dotfill & \dotfill 2250 m\\
Madrid \dotfill & \dotfill 650 m \\
Ginebra \dotfill & \dotfill 430 m \\
París \dotfill & \dotfill 50 m \\
\hline
\end{tabular}
\caption{Altura respecto el nivel del mar.}
\label{ta:altura}
\end{center}
\end{table}


En internet encontré un truquito muy inteligente (click aquí), donde se hace todo en una única columna. Por eso, primero fusionamos ambas columnas con el paquete {multirow}.

\usepackage{multirow}

\begin{table}[htb]
\begin{center}
\begin{tabular}{p{40mm} l}
\hline
Ciudad & Altura\\
\hline \hline
\multicolumn{2}{c@{}}{Ciudad de México \dotfill 2250 m}\\
\multicolumn{2}{c@{}}{Madrid \dotfill 650 m}\\
\multicolumn{2}{c@{}}{Ginebra \dotfill 430 m}\\
\multicolumn{2}{c@{}}{París \dotfill 50 m}\\
\hline
\end{tabular}
\caption{Altura respecto el nivel del mar.}
\label{ta:altura}
\end{center}
\end{table}

viernes, 11 de octubre de 2013

Cómo cambiar el nombre de las tablas y figuras

El comando "\renewcommand{xx}{yy}" se utiliza para cambiar el nombre de una variable definida por LaTeX. Donde "xx" es la función que define esa variable,  e "yy" es el nuevo nombre que le queremos dar.

Por ejemplo, cuando trabajamos con el paquete [spanish] {babel}, el nombre que reciben los índices de figuras, tablas y contenidos son:



Mientras que las figuras y tablas se nombran como "Figura 1" y "Cuadro 1" respectivamente:




Para editar estos nombres, podemos hacer lo siguiente:

\begin{document}
\renewcommand{\listfigurename}{LISTA DE FIGURAS}
\renewcommand{\listtablename}{Lista de Tablas}
\renewcommand{\contentsname}{Lista de Contenidos}
\renewcommand{\figurename}{Foto}
\renewcommand{\tablename}{DATOS}



Por cierto, también podemos editar el formato de estas variables. Por ejemplo, si queremos que Figura nos lo ponga en negrita y curvisa, podríamos poner:

\renewcommand{\figurename}{\textbf{\textit{Figura}}}



Una última cosa importante. El paquete {babel} edita las funciones \listfigurename, \listtablename,\contentsname, \figurename y \tablesname. Como ahora queremos reeditar estas funciones, es importante escribir \renewcommand después de \begin{document}, para que el paquete {babel} no nos pise lo que queremos hacer. Si hubieramos querido cambiar otra función distinta (por ejemplo \notesname), que no fuera editada por ningún paquete, sí que lo podríamos haber puesto delante de \begin{document}.

martes, 4 de junio de 2013

Cómo modificar el grosor de las líneas de las tablas

Es muy fácil añadir una línea horizontal con un grosor mayor al normal, a una tabla de LaTeX. En vez de "\hline", puedes poner "\noalign{\hrule height xxx}" (donde en xxx se pone el grosor de la línea). Como puedes ver en el ejemplo siguiente. (Por cierto, recuerda que para trabajar con tablas, necesitas cargar el paquete {array}.)

\usepackage{array}

\begin{table}[htb]
\centering
\begin{tabular}{|c|c|}
\noalign{\hrule height 2pt}
A & B\\
\hline
C & D\\
\noalign{\hrule height 2pt}
\end{tabular}
\caption{Letras.}
\label{ta:grosor}
\end{table}


Por otro lado, si lo que quieres es editar el grosor de las líneas verticales, sustituye "|" por "!{\vrule width xxx}" (donde en xxx se pone el grosor de la línea). Como puedes ver a continuación:

\begin{table}[htb]
\centering
\begin{tabular}{!{\vrule width 2pt}c|c!{\vrule width 2pt}}
\noalign{\hrule height 2pt}
A & B\\
\hline
C & D\\
\noalign{\hrule height 2pt}
\end{tabular}
\caption{Letras.}
\label{ta:grosor}
\end{table}

lunes, 12 de marzo de 2012

Cómo añadir un texto alternativo para la leyenda de tablas y figuras

Cuando añadimos un índice de figuras y tablas, LaTeX lo crea utilizando las leyendas que hemos puesto a cada elemento. Cuando las leyendas son muy largas o descriptivas, los índices quedan un poco feos. Por ejemplo, como ocurre a continuación:

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

\begin{document}

\listoffigures % indice de figuras
\listoftables % indice de tablas

\chapter{Introducción}

\begin{table}[htb]
\centering
\begin{tabular}{l l}
\hline
Montaña & Altura \\
\hline \hline
Pico de Orizaba & 5 610 m \\
Popocatépetl & 5 500 m \\
Iztaccíhuatl & 5 284 m \\
Teyotl  & 4 660 m \\
Nevado de Toluca & 4 680 m\\
\hline
\end{tabular}
\caption{Tabla con los picos más altos de México. Muchas de las montañas más altas de México son volcanes. Algunos están apagados. Otros, como el Popocatépetl (támbién llamado el Popo o don Goyo), siguen activos.}
\label{ta:montanas}
\end{table}

\begin{figure}[htb]
\centering
\includegraphics[width=0.3\textwidth]{./imagenes/anticitera}
\caption{Este aparato es una posible replica del Mecanismo de Anticitera. La foto la tomé en el Museo de las Artes y Oficios de París.}
\label{fig:anticitera}
\end{figure}




Esto se resulve muy fácilmente, dando a LaTeX una leyenda alternativa para utilizar en los índices. Estas leyendas alternativas se indican entre corchetes. Como se puede ver a continuación:

\begin{table}[htb]
\centering
\begin{tabular}{l l}
\hline
Montaña & Altura \\
\hline \hline
Pico de Orizaba & 5 610 m \\
Popocatépetl & 5 500 m \\
Iztaccíhuatl & 5 284 m \\
Teyotl  & 4 660 m \\
Nevado de Toluca & 4 680 m\\
\hline
\end{tabular}
\caption[Montañas más altas de México]{Tabla con los picos más altos de México. Muchas de las montañas más altas de México son volcanes. Algunos están apagados. Otros, como el Popocatépetl (támbién llamado el Popo o don Goyo), siguen activos.}
\label{ta:montanas}
\end{table}

\begin{figure}[htb]
\centering
\includegraphics[width=0.3\textwidth]{./imagenes/anticitera}
\caption[Mecanismo de Anticitera]{Este aparato es una posible replica del Mecanismo de Anticitera. La foto la tomé en el Museo de las Artes y Oficios de París.}
\label{fig:anticitera}
\end{figure}


viernes, 27 de enero de 2012

Cómo hacer tablas largas que ocupen varias hojas en LaTeX

A continuación mostraré cómo se pueden realizar tablas largas en LaTeX, que ocupen más de un folio. Para ello, hay que utilizar el paquete {longtable}. Este paquete, no es perfecto, y en estas tablas no vamos a poder utilizar todos los comandos que usamos en las tablas normales.

Para añadir una tabla larga, usamos el comando {longtable}. Primero definimos el encabezado de la primera hoja. A continuación definimos el encabezado del resto de hojas. Luego, definimos el fondo de la tabla en todas las hojas menos en la última. Y luego el fondo en la última hoja. Finalmente, escribimos el cuerpo de la tabla. Aquí muestro un ejemplo:

\usepackage{longtable} % para tablas largas

\begin{longtable}{c c}

% aquí añadimos el encabezado de la primera hoja.

\hline
Letra & Código \\
\hline \hline
\endfirsthead


% aquí añadimos el encabezado del resto de hojas.
\hline
Letra & Código \\
\hline \hline
\endhead


% aquí añadimos el fondo de todas las hojas, excepto de la última.
\multicolumn{2}{c}{Sigue en la página siguiente.}
\endfoot


% aquí añadimos el fondo de la última hoja.
\endlastfoot

% aquí añadimos el cuerpo de la tabla.
A & . -\\
\hline
B & - . . .\\
\hline
C & - . - .\\
\hline
D & - . .\\
\hline
E & .\\
\hline
F & . . - .\\
\hline
G & - - .\\
\hline
H & . . . .\\
\hline
I & . .\\
\hline
J & . - - -\\
\hline
K & - . -\\
\hline
L & . - . .\\
\hline
M & - -\\
\hline
N & - .\\
\hline
O & - - -\\
\hline
P & . - - .\\
\hline
Q & - - . -\\
\hline
R & . - .\\
\hline
S & . . .\\
\hline
T & -\\
\hline
U & . . -\\
\hline
V & . . . -\\
\hline
W & . - -\\
\hline
X & - . . -\\
\hline
Y & - . - -\\
\hline
Z & - - . .\\
\hline
\\
% esta línea es importante para que deje un espacio entre la tabla y el nombre de la tabla.
\caption{Código Morse.}
\label{ta:morse}
\end{longtable}


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}

miércoles, 30 de marzo de 2011

Tablas con LaTeX (2)

En la siguiente entrada mostraré algunos ejemplos un poquito más complejos de tablas.

Cuando hacemos tablas, el comando \multicolumn{1}{|c|}{A} es muy útil. Con él podemos fusionar celdas de la misma fila, cambiar el ajuste del texto (centrado, izquierda, derecha...) en una sola celda, o poner líneas verticales solo en algunas celdas. Las primeras llaves dicen las celdas que se van a fusionar ({1} = celda formada por una única celda, es decir, no se fusiona nada). Las segundas llaves dicen el formato ({|c|} = con rayas verticales y el texto centrado). Las últimas llaves dicen el texto de la celda. A continuación, un ejemplo:

\begin{table}[htb]
\centering
\begin{tabular}{ c c c c c }
\hline
\multicolumn{5}{c}{Cuadro mágico.}\\
\hline \hline
11 & 24 & 7 & 20 & 3\\
4 & 12 & 25 & 8 & 16\\
\cline{2-2}
17 & \multicolumn{1}{|c|}{5} & 13 & 21 & 9\\
\cline{2-2} \cline{4-5}
10 & 18 & 1 & \multicolumn{1}{|c}{14} & \multicolumn{1}{c|}{22}\\
\cline{4-5}
23 & 6 & 19 & 2 & 15\\
\hline
\end{tabular}
\caption{Tabla ejemplo.}
\label{tabla:sinlineas}
\end{table}
% cline{1-2} = crea una línea horizontal entre la columna 1 y la 2.




Hay veces, que nos interesa ajustar varios números respecto del punto de los decimales. Una posibilidad es dividir los números en dos columnas, una de la parte entera, ajustada a la derecha, y otra de la parte decimal, ajustada a la izquierda. Cuya separación entre ambas columnas sea un punto, en vez de una raya. Para eso, se utiliza el comando "r@{.}" (en vez de {.} podríamos haber puesto cualquier otro símbolo). A continuación, un ejemplo:

Por ejemplo, la tabla (\ref{tabla:ajustepunto}):

\begin{table}[htb]
\centering
\begin{tabular}{|c|r@{.}l|}
\hline
\multicolumn{3}{|c|}{Números decimales} \\
\hline
A & 2 & 501 \\
\hline
B & 15 & 4 \\
\hline
C & 3700 & 25 \\
\hline
\end{tabular}
\caption{Números ajustados en el punto decimal.}
\label{tabla:ajustepunto}
\end{table}

martes, 2 de noviembre de 2010

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}".