¿Cómo reducir las tablas para que quepan en una página?

¿Cómo reducir las tablas para que quepan en una página?

He visto una pregunta similar a esta:

Sin embargo, no quiero cambiar el tamaño de mi tabla para que quepa dentro del ancho de una página (ya lo hago sin convertirla en una imagen), quiero reducir la altura de mi tabla para que no ocupe dos páginas (o más) .

Vi algunas posibles soluciones como longtablepero dividieron mi mesa en 2 y no quiero eso.

¿Me veo obligado a convertir mi tabla en una imagen usando el \resizeboxpaquete graphicsxo tengo otras opciones?

Respuesta1

No está obligado a convertir su tabla larga en una imagen, \resizeboxaunque este comando lo proporciona el graphicxpaquete. La mesa seguirá siendo una mesa.

Puede definir el ancho y/o el alto de la tabla redimensionada con este comando. Tenga en cuenta que al fijar ambas medidas de las fuentes, las fuentes no se reducen proporcionalmente, por lo que normalmente es mejor dejar una dimensión como {!}.

También puede reducir el espacio vertical \arraystretchpara reducir la fuente lo menos posible y puede utilizar otra fuente para \tinycambiar visiblemente las proporciones de la fuente.

Las líneas verticales siempre son malas, pero en este caso también las líneas horizontales por el mismo motivo, sobre todo cuando \arraystretchestán reducidas, excepto las líneas de cabecera y la línea de fondo. El paquete booktabshace un buen trabajo para esta tarea. Experimente con este ejemplo de trabajo mínimo:

\documentclass{article}
\usepackage{graphicx,booktabs}
\begin{document}
\centering
{\tiny\renewcommand{\arraystretch}{.8}
\resizebox{!}{.35\paperheight}{%
\begin{tabular}{ccccc}
\toprule
    11 & 12 & 13 & 14 & 15\\
\midrule
    21 & 22 & 23 & 24 & 25\\
    31 & 32 & 33 & 34 & 35\\
    41 & 42 & 43 & 44 & 45\\
    51 & 52 & 53 & 54 & 55\\
    61 & 62 & 63 & 64 & 65\\
    71 & 72 & 73 & 74 & 75\\
    81 & 82 & 83 & 84 & 85\\
    91 & 92 & 93 & 94 & 95\\
    101 & 102 & 103 & 104 & 105\\
    111 & 112 & 113 & 114 & 115\\
    121 & 122 & 123 & 124 & 125\\
    131 & 132 & 133 & 134 & 135\\
    141 & 142 & 143 & 144 & 145\\
    151 & 152 & 153 & 154 & 155\\
    161 & 162 & 163 & 164 & 165\\
    171 & 172 & 173 & 174 & 175\\
    181 & 182 & 183 & 184 & 185\\
    191 & 192 & 193 & 194 & 195\\
    201 & 202 & 203 & 204 & 205\\
    211 & 212 & 213 & 214 & 215\\
    221 & 222 & 223 & 224 & 225\\
    231 & 232 & 233 & 234 & 235\\
    241 & 242 & 243 & 244 & 245\\
    251 & 252 & 253 & 254 & 255\\
    261 & 262 & 263 & 264 & 265\\
    271 & 272 & 273 & 274 & 275\\
    281 & 282 & 283 & 284 & 285\\
    291 & 292 & 293 & 294 & 295\\
    301 & 302 & 303 & 304 & 305\\
    311 & 312 & 313 & 314 & 315\\
    321 & 322 & 323 & 324 & 325\\
    331 & 332 & 333 & 334 & 335\\
    341 & 342 & 343 & 344 & 345\\
    351 & 352 & 353 & 354 & 355\\
    361 & 362 & 363 & 364 & 365\\
    371 & 372 & 373 & 374 & 375\\
    381 & 382 & 383 & 384 & 385\\
    391 & 392 & 393 & 394 & 395\\
    401 & 402 & 403 & 404 & 405\\
    411 & 412 & 413 & 414 & 415\\
    421 & 422 & 423 & 424 & 425\\
    431 & 432 & 433 & 434 & 435\\
    441 & 442 & 443 & 444 & 445\\
    451 & 452 & 453 & 454 & 455\\
    461 & 462 & 463 & 464 & 465\\
    471 & 472 & 473 & 474 & 475\\
    481 & 482 & 483 & 484 & 485\\
    491 & 492 & 493 & 494 & 495\\
    501 & 502 & 503 & 504 & 505\\
\bottomrule
\end{tabular}}}
\end{document}

MWE

Tenga en cuenta que a algunos les gusta:

\resizebox{!}{\textheight}{ ...}

no producirá una tabla tan larga como la altura del texto, porque aquí estás definiendo solo la altura del cuadro, pero en la forma estrellada, se refiere a la altura + profundidad, es decir:

\resizebox*{!}{\textheight}{ ...}

hará que la tabla sea tan larga como \textheight(556,4 puntos en el MWE anterior).

Otro comando que puedes utilizar, del mismo paquete graphicx, es \scalebox. El problema aquí es que debes tener alguna idea de cómo debe ser la escala, o experimentar con los valores de escala hasta obtener lo que deseas. Para probarlo, simplemente reemplace en el MWE el \resizeboxcomando por:

\scalebox{3}[2.2]{...}

Editar:El error "Dimensión demasiado grande" de su comentario es un problema del diseño de la tabla, no del \resizeboxcomando. LaTeX no puede ajustar el texto dentro de las columnas lizquierda, rderecha e cingresada. Para columnas con texto largo, debe utilizar las columnas p{width}o m{width}en un tabularentorno. Otra opción son las columnas L, C, Rde tabularyentorno o la Xcolumna del tabularxentorno. Estos entornos necesitan el paquete del mismo nombre y el ancho total de la tabla como primer argumento. Por ejemplo:

\usepackage{tabulary}
...

\begin{tabulary}{\linewidth}{RCLL}
...
\end{tabulary}

Cambio su código para usarlo tabularxcon columnas personalizadas que usan una fuente, colores y justificación diferentes. También agregué colores de fila para evitar líneas verticales y la mayoría de las horizontales, para el resto use los del booktabspaquete y no \hline. Este es el resultado:

MWE

\documentclass[a4paper]{article}
\usepackage{microtype}
\usepackage[margin=2.54cm]{geometry}
\usepackage{graphicx,booktabs,tabularx}
\usepackage[table]{xcolor}

\newcolumntype{R}{>{\leavevmode\color{magenta!70!black}\ignorespaces\sffamily\bfseries}p{2.5cm}}%
\newcolumntype{H}{>{\leavevmode\color{orange!30!black}\ignorespaces\raggedright\arraybackslash\sffamily}X}%
\newcolumntype{J}{>{\leavevmode\color{green!30!black}\ignorespaces\sffamily}X}%
\newcolumntype{W}{>{\leavevmode\color{blue!30!black}\ignorespaces\raggedleft\arraybackslash\sffamily}X}%

\rowcolors{2}{purple!05}{olive!05}
\begin{document}
\centering
{\resizebox*{\textwidth}{\textheight}{%
\renewcommand{\arraystretch}{2}
\begin{tabularx}{\textwidth}{RHJW}
\toprule\rowcolor{white}
    & \textbf{Hibernate OGM} & \textbf{EclipseLink NoSQL} & \textbf{DataNucleus}\\\midrule
  Goal & Complement JPA with NoSQL, key-value stores & Integrates in the father project main goal of providing a complete persistence solution & Being a standards compliant and efficient JPA and JDO platform\\
  NoSQL and Datastores supported & Infinispan, EHCache, MongoDB & MongoDB, Oracle NoSQL, Oracle AQ, JMS, XML files & Google Big Table, MongoDB, Cassandra, Excel, OOXML, ODF, XML, HBase, AppEngine/DataStore, Neo4j, JSON, Amazon S3, GoogleStorage, LDAP, NeoDatis, db4o\\
  Operations supported & Object Oriented queries (JP-QL), CRUD of entities, Polymorphic entities, Embeddable objects, Basic types (partial), Unidirectional and Bidirectional relationships (partial), Collections, Hibernate Search queries, JPA and Hibernate ORM API & Object Oriented Queries, Polymorphic entities, Basic types, Unidirectional relationships, Collections, JPA (partial), Complex hierarchical, Indexed hierarchical data, Mapped hierarchical data, CRUD operations, Embedded objects and collections, Inheritance, Subset of JP-QL and Criteria API, Denormalization & CRUD operations, Embedded objects and collections, Inheritance, Relationships (Unidirectional and Bidirectional), Queries for JP-QL, JDOQL and SQL (partial),  Basic types, Joins.\\
  No support for & Denormalization, Complex joins and aggregations & Joins & Aggregations? (not specified in documentation)\\
  Future & High performance sequence generator, parallel key fetching, support for Map/Reduce, more NoSQL classes, better mixing of NoSQL and RDBMS & ? & JPA2.1 full feature list, Official support for Cassandra, Considering a plugin for REDIS\\
  Commercial support & Red Hat & Oracle (via TopLink) & Supported by DataNucleus team\\
  Documentation & Scattered, inactive forums, official documentation lacking & Bureaucratic forums, information is complete and gathered mainly in the official website & Active forums, acceptable official documentation, but the big advantage comes from user support in form of blogs and posts scattered around the Internet\\\bottomrule
\end{tabularx}}}
\end{document}

información relacionada