![Wie kann man Tabellen verkleinern, sodass sie auf eine Seite passen?](https://rvso.com/image/286342/Wie%20kann%20man%20Tabellen%20verkleinern%2C%20sodass%20sie%20auf%20eine%20Seite%20passen%3F.png)
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, longtable
aber sie haben meine Tabelle in zwei Hälften aufgeteilt und das möchte ich nicht.
\resizebox
Muss ich meine Tabelle mithilfe des Pakets in ein Bild umwandeln graphicsx
oder habe ich andere Möglichkeiten?
Antwort1
Sie müssen Ihre lange Tabelle nicht in ein Bild umwandeln, \resizebox
obwohl dieser Befehl im graphicx
Paket 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, \arraystretch
um die Schrift so weit wie möglich zu verkleinern, und möglicherweise eine andere Schriftart verwenden, um \tiny
die 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 \arraystretch
sie reduziert sind, mit Ausnahme der Kopfzeilen und der Fußzeile. Das Paket booktabs
erledigt 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}
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 \resizebox
durch:
\scalebox{3}[2.2]{...}
Bearbeiten:Der Fehler „Dimension zu groß“ in Ihrem Kommentar ist ein Problem des Tabellendesigns, nicht des \resizebox
Befehls. LaTeX kann den Text nicht in die Spalten l
eft, r
ight und c
entry 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
, R
Spalten von tabulary
oder die X
Spalte der tabularx
Umgebung. 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 tabularx
mit 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 booktabs
Pakets und nicht \hline
. Dies ist das Ergebnis:
\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}