Wie kann man Tabellen verkleinern, sodass sie auf eine Seite passen?

Wie kann man Tabellen verkleinern, sodass sie auf eine Seite passen?

Ich habe eine ähnliche Frage wie diese gesehen:

Ich möchte die Größe meiner Tabelle jedoch nicht so ändern, dass sie in die Breite einer Seite passt (das mache ich bereits, ohne sie in ein Bild umzuwandeln), sondern ich möchte die Höhe meiner Tabelle verringern, damit sie nicht zwei Seiten (oder mehr) einnimmt.

Ich habe mir einige mögliche Lösungen angesehen, longtableaber sie haben meine Tabelle in zwei Hälften aufgeteilt und das möchte ich nicht.

\resizeboxMuss ich meine Tabelle mithilfe des Pakets in ein Bild umwandeln graphicsxoder habe ich andere Möglichkeiten?

Antwort1

Sie müssen Ihre lange Tabelle nicht in ein Bild umwandeln, \resizeboxobwohl dieser Befehl im graphicxPaket enthalten ist. Die Tabelle bleibt weiterhin eine Tabelle.

Mit diesem Befehl können Sie die Breite und/oder Höhe der skalierten Tabelle festlegen. Beachten Sie, dass bei der Festlegung beider Maße die Schrift nicht proportional verkleinert wird. Es ist daher normalerweise besser, eine Dimension unverändert zu lassen {!}.

Sie können auch den vertikalen Abstand verringern, \arraystretchum die Schrift so weit wie möglich zu verkleinern, und möglicherweise eine andere Schriftart verwenden, um \tinydie Schriftproportionen leicht zu verändern.

Vertikale Linien sind immer schlecht, aber in diesem Fall sind es aus dem gleichen Grund auch die horizontalen Linien, insbesondere wenn \arraystretchsie reduziert sind, mit Ausnahme der Kopfzeilen und der Fußzeile. Das Paket booktabserledigt diese Aufgabe gut. Experimentieren Sie mit diesem minimalen Arbeitsbeispiel:

\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

Beachten Sie, dass einige mögen:

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

wird keine Tabelle mit der Länge der Texthöhe erzeugen, weil Sie hier nur die Höhe der Box definieren, in der mit Sternchen versehenen Form bezieht es sich jedoch auf Höhe + Tiefe, d. h.:

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

macht die Tabelle so lang wie \textheight(556,4 pt im obigen MWE).

Ein weiterer Befehl aus demselben Paket, den Sie verwenden können graphicx, ist \scalebox. Das Problem dabei ist, dass Sie eine Vorstellung davon haben müssen, wie die Skalierung sein sollte, oder mit den Skalierungswerten experimentieren müssen, bis Sie das gewünschte Ergebnis erzielen. Um es zu testen, ersetzen Sie einfach den Befehl im MWE \resizeboxdurch:

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

Bearbeiten:Der Fehler „Dimension zu groß“ in Ihrem Kommentar ist ein Problem des Tabellendesigns, nicht des \resizeboxBefehls. LaTeX kann den Text nicht in die Spalten left, right und centry umbrechen. Für Spalten mit langem Text müssen Sie die Umgebung p{width}oder m{width}Spalten in einer verwenden tabular. Eine andere Möglichkeit ist die Umgebung L, C, RSpalten von tabularyoder die XSpalte der tabularxUmgebung. Diese Umgebungen benötigen das gleichnamige Paket und die Gesamtbreite der Tabelle als erstes Argument. Beispiel:

\usepackage{tabulary}
...

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

Ich ändere Ihren Code, um ihn tabularxmit benutzerdefinierten Spalten zu verwenden, die eine andere Schriftart, Farben und Ausrichtung verwenden. Ich habe auch Zeilenfarben hinzugefügt, um vertikale und die meisten horizontalen Linien zu vermeiden. Für den Rest verwende ich die des booktabsPakets und nicht \hline. Dies ist das Ergebnis:

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}

verwandte Informationen