miércoles, 25 de abril de 2012

Redimensionar Tablas en LaTeX

Como se menciono anteriormente al realizar tablas en LaTeX es necesario vigilar manualmente el grosor de la tabla para evitar que la tabla sea mas ancha que la pagina y se "corte".

Sin embargo existe una sencilla para prevenir esos casos, a la vez que le da a la tabla una apariencia mas procesional, el comando \resizebox.

Este comando toma como argumento el ancho que deseamos tenga la tabla y la escala adecuadamente cambiando el tamaño de letra y grosor de las lineas, logrando que la tabla solo tenga el ancho indicado.

Para poder hacer uso de este comando es necesario incluir el paquete graphicx que viene incluido en la instalación por defecto tanto de Tex Live como de MikTeX.

El formato de este comando es el siguiente:

\resizebox{<ancho_deseado>}{!} {

<entorno tabular que se desea escalar>

}

Es muy importante poner las llaves ya que estas delimitan donde tendrá efecto el comando.

Ahora se presentara un pequeño ejemplo con el fin de ilustrar el efecto del comando

Para esto en un documento LaTeX que contenga las declaraciones necesarias (\documentclass , \begin{document}, etc) agrege este codigo

\begin{table}
\centering
\begin{tabular}{|c|c|c|c|c|c|c|c|c|}
\hline
\multicolumn{5}{|c|}{Puerto fuente} & \multicolumn{4}{|c|}{Puerto destino} \\ \hline
\multicolumn{9}{|c|}{Numero de secuencia} \\ \hline
\multicolumn{9}{|c|}{Numero de reconocimiento} \\ \hline
Longitud cabecera & Reservado & URG & ACK & PSH & RST & SYN & FIN & Tamaño ventana \\ \hline
\multicolumn{5}{|c|}{Suma verificación} & \multicolumn{4}{|c|}{Puntero a datos urgentes} \\ \hline
\multicolumn{9}{|c|}{Opciones} \\ \hline
\multicolumn{9}{|c|}{Datos} \\ \hline
\end{tabular}
\caption{Estructura de un segmento TCP.}
\label{c2_tabla_segento_tcp}
\end{table}

El cual generara una tabla como la mostrara el la figura 1

Figura 1: Tabla sin redimensionar.
Notara que la tabla queda "cortada" por el borde de la pagina y parte del contenido queda fuera vista.

Ahora remplace el codigo de la tabla por este:

\begin{table}
\centering
\resizebox{10cm}{!} {
\begin{tabular}{|c|c|c|c|c|c|c|c|c|}
\hline
\multicolumn{5}{|c|}{Puerto fuente} & \multicolumn{4}{|c|}{Puerto destino} \\ \hline
\multicolumn{9}{|c|}{Numero de secuencia} \\ \hline
\multicolumn{9}{|c|}{Numero de reconocimiento} \\ \hline
Longitud cabecera & Reservado & URG & ACK & PSH & RST & SYN & FIN & Tamaño ventana \\ \hline
\multicolumn{5}{|c|}{Suma verificación} & \multicolumn{4}{|c|}{Puntero a datos urgentes} \\ \hline
\multicolumn{9}{|c|}{Opciones} \\ \hline
\multicolumn{9}{|c|}{Datos} \\ \hline
\end{tabular}
}
\caption{Estructura de un segmento TCP.}
\label{c2_tabla_segento_tcp}
\end{table}

Y recompile el documento, el resultado ahora lucirá como la Figura 2
Figura 2: Tabla redimensionada.

Ahora la tabla cabe perfectamente en la pagina y su contenido es perfectamente visible.

25 comentarios:

  1. Mil gracias! Llevaba años con esta duda.

    ResponderEliminar
  2. Como modificar el alto de las tablas

    ResponderEliminar
    Respuestas
    1. jajaja me surgió la misma duda

      Eliminar
    2. \resizebox{ancho}{altura}{argumento}
      solo cambia "!" por lo que deceas de altura
      ejemplo:
      \resizebox{10cm}{3cm} {
      \begin{tabular}{|c|c|c|c|c|c|c|c|c|}
      \hline
      \multicolumn{5}{|c|}{Puerto fuente} & \multicolumn{4}{|c|}{Puerto destino} \\ \hline
      \multicolumn{9}{|c|}{Numero de secuencia} \\ \hline
      \multicolumn{9}{|c|}{Numero de reconocimiento} \\ \hline
      Longitud cabecera & Reservado & URG & ACK & PSH & RST & SYN & FIN & Tamaño ventana \\ \hline
      \multicolumn{5}{|c|}{Suma verificación} & \multicolumn{4}{|c|}{Puntero a datos urgentes} \\ \hline
      \multicolumn{9}{|c|}{Opciones} \\ \hline
      \multicolumn{9}{|c|}{Datos} \\ \hline
      \end{tabular}}

      Eliminar
  3. qué buena onda!!!! has salvado mi presentación de mañana jeje :)

    ResponderEliminar
  4. Felicidades Tiburón de alambre, excelente aportación.

    ResponderEliminar
  5. Que gran aporte!!! muchas gracias, estuve mucho tiempo intentando hacer esto.

    ResponderEliminar
  6. genial, muchas gracias!!.
    Consulta hice que mi tabla quedara del tamaño optimo para la hoja, sin embargo la letra queda demasiado pequeñita, como la puedo editar?

    ResponderEliminar
  7. Muchas gracias!! Demasiado útil

    ResponderEliminar
  8. Muchas gracias por la información muy útil

    ResponderEliminar
  9. En el nombre de todos los usuarios de Latex, mil gracias por esta solución

    ResponderEliminar
  10. buena cabros qlos, la hicieron de oro.
    a too ritmo chuchetumareeeee :3

    ResponderEliminar
  11. Me has salvado amigo!! Tu aporte vale oro!

    ResponderEliminar