miércoles, 20 de mayo de 2015

Tablas complejas en Latex

Los usuarios que ya usan Latex, han de saber que la creación de tablas es latosa, tediosa y simplemente es complicada. En algunas ocasiones es preferible crear la tabla en hoja de cálculo y exportarla como imagen e insertar en Latex.

Sin embargo, cuando se logra crear una tabla, se siente una enorme satisfacción, sobre todo porque, hay ventajas al crear la tabla en Latex, y no insertarla como imagen, la primera que se me ocurre es, que la puedes referenciar como tabla y no como imagen, la puedes modificar directo en Latex, y copiar y pegar una vez que ya está en PDF.

¿Entonces, cómo crear una tabla de manera fácil en Latex?
A puesto a que no hay una manera fácil como tal, sin embargo se puede simplificar un poco, aquí les presento una serie de pasos que yo utilizo al momento de crear tablas.

Como ya hemos de saber, crear tablas como estás:
Imagen 1
Es relativamente fácil, sobre todo porque no hay celdas combinadas, no hay columnas combinadas, pero qué tal es para crear tablas como está?
Imagen 2
Entonces las cosas ya cambian, o qué tal crear una así?
Imagen 3
La situación ya se complica no?

Bueno, el truco que yo uso es el siguiente:
Realizaré como ejemplo la tabla que se presenta en la imagen 2.

1.- Diseñar la tabla en hoja de cálculo, y digo hoja de cálculo porque uso la paqueteria ofimática de libreoffice, igual pueden usar excel.
2.- Una vez que ya tengo el diseño en cal (hoja de cálculo), entonces paso a Latex, mi editor favorito, es TexStudio. Antes de proseguir, es necesario que le den una leída al manual https://en.wikibooks.org/wiki/LaTeX/Tables, del que me basé.
Imagen 4
3.- Contar la cantidad de columnas que usé en Cal para diseñar las tablas, en este caso son 4 columnas (ver imagen 4), por lo tanto declaro una tabla con 4 columnas.

A veces es necesario indicar el tamaño de cada columna, en este caso, es de 3 centímetros cada una. La opción m es para que se pueda centrar verticalmente. Ahora ya sabemos que la tabla medirá 12cm en total.
\begin{table}[!htb]
    \centering
    \begin{tabular}{|m{3cm}|m{3cm}|m{3cm}|m{3cm}|}
    \end{tabular}
    \caption{Alguna descripćión.}
    \label{tabla:pobconlimsincolor}
\end{table}

4.- Si, ya leyeron el link que les pasé, la opción multicolum es necesario para unir celdas en columnas. Ahora creo la columna para título de la tabla. Para el título se concatenan las 4 columnas, por lo tanto se agrega la línea de color azul, lo que se indica cmo multicolumn es que use las 4 columnas como una sola, aquí es importante usar la opción p para la celda, esto para que lo tome como párrafo y se puedan insertar textos largos, además también para que se pueda centrar con la opción centering las barras | | indican que debe haber lineas alrededor de la celda concatenada.
\begin{table}[!htb]
    \centering
    \begin{tabular}{|m{3cm}|m{3cm}|m{3cm}|m{3cm}|}
        \hline
        \multicolumn{4}{|p{13.3cm}|}{\centering Título corto o largo}\\
        \hline
\end{tabular}
\caption{Alguna descripćión.}
\label{tabla:pobconlimsincolor}
\end{table}
A veces, al declarar la tabla con columnas de un tamaño específico, hace que se descuadre el tamaño al concatenarlas, lo que se debe hacer entonces, es ajustar el tamaño de la celda concatenada hasta encontrar el valor exacto, como se muestra aquí: {|p{13.3cm}|}el tamaño real era 12cm, sin embargo al concatenar, tuvo que ajustarse a 13.3cm.

El resultado que deben tener hasta ahora es:
Imagen 5
5.- Ahora ya tenemos el título. Continuemos con los títulos de las columnas, en este ejemplo, las columnas son simples, así que solo agregamos la línea azul, la etiqueta hline es para indicar que hay línea horizontal, si se quita la tabla no tendrá borde horizontal.
\begin{table}[!htb]
\centering
\begin{tabular}{|m{3cm}|m{3cm}|m{3cm}|m{3cm}|}
    \hline
    \multicolumn{4}{|p{13.3cm}|}{\centering Título corto o largo}\\
    \hline
    \centering Variable &\centering  Entidad &\centering  Municipio & Porcentaje de la población\\
    \hline
\end{tabular}
\caption{Alguna descripćión.}
\label{tabla:pobconlimsincolo}
\end{table}
Ahora el resultado es:
Imagen 6
6.- Aquí es donde se pone interesante. Como ven en la imagen 4, la columna que sigue tiene una concatenación, entonces lo que se hace es lo siguiente: al insertar la celda que contiene el texto PCLIM_MOT se indica que usará 4 filas.
La línea que se inserta es la de azul:
\begin{table}[!htb]
\centering
\begin{tabular}{|m{3cm}|m{3cm}|m{3cm}|m{3cm}|}
    \hline
    \multicolumn{4}{|p{13.3cm}|}{\centering Título corto o largo}\\
    \hline
    \centering Variable &\centering  Entidad &\centering  Municipio & Porcentaje de la población\\
    \hline
    \multirow{4}{2cm}{PCLIM\_MOT} & \multicolumn{3}{c|}{\centering Mínimo} \\
    \hline
\end{tabular}
\caption{Alguna descripćión.}
\label{tabla:pobconlimsincolo}
\end{table}

La etiqueta multirow tiene 3 llaves que abren y cierran, la primera indica el número de filas a utilizar, la segunda indica el ancho de la columna, y la tercera contiene el texto. A esta misma altura, hay que insertar la columna, de nombre mínimo. Con la etiqueta multicolumn se indica que concatenará columnas. Ésta etiqueta también tiene 3 llaves, que indican número de columnas a concatenar, el tipo de columna, también se podría poner el ancho, y el texto que contendrá las columnas concatenadas.

El resultado hasta ahora es el siguiente: se puede ver que no se muestra correctamente, esto se debe a que aún no se insertan las demás filas.
Imagen 7
7.- Ahora, agregaremos las filas, aquí, se debe de aclarar algo, las filas que se agregan, únicamente corresponden de la columna dos en adelantes, es decir, no se agrega texto en la primera columna, recordar que esa columna está concatenada, entonces se agregan las siguientes líneas de azul:

\begin{table}[!htb]
\centering
\begin{tabular}{|m{3cm}|m{3cm}|m{3cm}|m{3cm}|}
    \hline
    \multicolumn{4}{|p{13.3cm}|}{\centering Título corto o largo}\\
    \hline
    \centering Variable &\centering  Entidad &\centering  Municipio & Porcentaje de la población\\
    \hline
    \multirow{4}{2cm}{PCLIM\_MOT} & \multicolumn{3}{c|}{\centering Mínimo} \\
    \cline{2-4}
    & Chiapas & Santiago el Pinar & 0.3 \\
    \cline{2-4}
    & \multicolumn{3}{c|}{\centering Máximo} \\
    \cline{2-4}
    & Oaxaca & Santiago Nejapilla & 33.8 \\

    \hline
\end{tabular}
\caption{Alguna descripćión.}
\label{tabla:pobconlimsincolo}
\end{table}
La instrucción cline se usa para agregar borde a la tabla, comenzando desde la columna 2 hasta la columna 4. Esto es para que únicamente haya borde en esa parte y no hasta la primera columna. Si notan, la instrucción  & Chiapas & Santiago el Pinar & 0.3 \\ comienza con & esto, es porque no hay dato en la columna 1, y se deja vacío.

La instrucción & \multicolumn{3}{c|}{\centering Máximo} \\ indica que se concatenarán 3 columnas, para agregar el subtitulo Máximo, si lo notan, así como está en la imagen 2.

La línea & Oaxaca & Santiago Nejapilla & 33.8 \\ agrega una fila abajo de la fila Máximo,  nuevamente sin agregar nada en la primera columna. Con esta fila, se completan las cuatro filas que concatenará la primera columna.

EL resultado que deben observar es el siguiente:
Y como pueden ver, ya se obtuvo el resultado esperado. Sé que no son pasos como tal, pero cuando se realiza fila por fila, es más fácil obtener el resultado que se desea.

El archivo para latex lo pueden descargar desde aquí.

Las fuentes de las que me basé son:


Y eso es todo. Si tiene dudas favor de comentar.

4 comentarios:

  1. Excelente, ha sido de gran ayuda, muchas gracias por este aporte, de ahora en adelante las tablas no serán problema.
    Tengo un par de dudas y tal vez podás despejarlas, la primera, ¿Cómo hago para evitar que los titulos de tablas sean alineadas automáticamente al centro? Quisiera que estuviesen justificadas y no centradas. La segunda duda, ¿Tenés alguna publicación ejemplificada (Como esta) sobre la creación de citas bibliográficas?

    ResponderEliminar
    Respuestas
    1. Hola, buen día.

      Claro que sí, busca en los ejemplos de latex, en mi blog.

      para lo de centrado lo puedes eliminar quitando la etiqueta \centering que aparece antes del titulo de la tabla

      Eliminar
    2. Aquí está lo que buscas.
      https://linuxgx.blogspot.mx/2014/12/recientemente-me-fue-necesario-usar.html


      Otros post que te pueden interesar:
      https://linuxgx.blogspot.mx/2015/02/citar-referencias-textuales-en-latex.html

      https://linuxgx.blogspot.mx/2015/01/mostrar-ampersand-en-lugar-de-y-en.html

      https://linuxgx.blogspot.mx/2015/01/reemplazar-cols-por-et-al-en.html

      https://linuxgx.blogspot.mx/2015/01/ejemplos-de-referencias-de-bibtex-para.html

      Y si necesitas algun ejemplo más en concreto puedo pasarte más ejemplos.

      Eliminar
  2. ¡Muchas gracias! Voy a revisarlos todos. Aún soy nuevo usando \LaTeX pero este blog ha sido de gran ayuda

    ResponderEliminar