![Como reduzir tabelas para que caibam no comprimento de uma página?](https://rvso.com/image/286342/Como%20reduzir%20tabelas%20para%20que%20caibam%20no%20comprimento%20de%20uma%20p%C3%A1gina%3F.png)
Eu vi uma pergunta semelhante a esta:
Porém, não quero redimensionar minha tabela para que caiba dentro da largura de uma página (já faço isso sem convertê-la em imagem), quero diminuir a altura da minha tabela para que ela não ocupe duas páginas (ou mais) .
Vi algumas soluções possíveis como longtable
mas dividiram minha mesa em 2 e não quero isso.
Sou forçado a converter minha tabela em uma imagem usando \resizebox
o graphicsx
pacote ou tenho outras opções?
Responder1
Você não é forçado a converter sua tabela longa em uma imagem, \resizebox
embora este comando seja fornecido pelo graphicx
pacote. A mesa ainda será uma mesa.
Você pode definir a largura e/ou altura da tabela redimensionada com este comando. Observe que ao fixar ambas as medidas, as fontes podem não ser reduzidas proporcionalmente, então geralmente é melhor deixar uma dimensão como {!}
.
Você também pode reduzir o espaçamento vertical \arraystretch
para reduzir a fonte o mínimo possível e pode usar outra fonte para \tiny
alterar ligeiramente as proporções da fonte.
As linhas verticais são sempre más, mas neste caso também as linhas horizontais pelo mesmo motivo, principalmente quando \arraystretch
são reduzidas, exceto as linhas do cabeçalho e da linha inferior. O pacote booktabs
faz um bom trabalho para esta tarefa. Experimente este exemplo mínimo de trabalho:
\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}
Observe que alguns gostam de:
\resizebox{!}{\textheight}{ ...}
não produzirá uma tabela tão longa quanto a altura do texto, pois você está definindo aqui apenas a altura da caixa, mas na forma de estrela, refere-se à altura + profundidade, ou seja:
\resizebox*{!}{\textheight}{ ...}
fará a tabela tão longa quanto \textheight
(556,4pt no MWE acima).
Outro comando que você pode usar, do mesmo pacote graphicx
, é \scalebox
. O problema aqui é que você deve ter alguma ideia de como deve ser o escalonamento, ou experimentar os valores de escalonamento até obter o que deseja. Para testá-lo, basta substituir no MWE o \resizebox
comando por:
\scalebox{3}[2.2]{...}
Editar:O erro "Dimensão muito grande" do seu comentário é um problema de design da tabela, não do \resizebox
comando. O LaTeX não pode quebrar o texto dentro das colunas l
eft, r
ight e c
inseridas. Para colunas com texto descritivo, você deve usar as colunas p{width}
ou m{width}
em um tabular
ambiente. Outra opção são as colunas L
, C
, R
do tabulary
ambiente ou a X
coluna do tabularx
ambiente. Esses ambientes necessitam do pacote de mesmo nome e da largura total da tabela como primeiro argumento. Por exemplo:
\usepackage{tabulary}
...
\begin{tabulary}{\linewidth}{RCLL}
...
\end{tabulary}
Alterei seu código para usar tabularx
colunas personalizadas que usam fontes, cores e justificativas diferentes. Adicionei também cores de linha para evitar linhas verticais e a maioria das linhas horizontais, para o resto use as do booktabs
pacote e não as do pacote \hline
. Este é o resultado:
\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}