PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Tabellenskalierung



T.M.
16-10-2012, 08:53
Hallo zusammen!

Ich habe ein Problem mit der Skalierung einer Tabelle. Hab mir schon mehrere Seiten angesehen, aber irgendwie sind die Beispiele, die ich gefunden habe, für mich immer nicht sehr hilfreich.

Meine Tabelle soll 10 Spalten haben und insgesamt so breit sein wie der Text. Ich hab also die tabularx-Umgebung genommen und die Breite auf \textwidth gesetzt. Das Problem ist das die Einträge in den einzelnen Zellen nicht umgebrochen werden sollen und können.

Gibt es einen Weg Latex dazu zu bringen die Tabelle ganz normal zu erstellen (also in diesem Fall deutlich breiter als die Seite) und sie dann einfach runterzuskalieren, bis sie in eine Textbreite passt?

Um mein Problem zu verdeutlichen hier mal ein Teil meiner Tabelle:

\begin{table}[htbp]
\centering
\begin{tabularx}{\textwidth}{XXXXXXXXXX}
\hline\hline
&$U_\text{1}$ &$I_\text{1}$ &$R_\text{1}$ &$P_\text{1}$ &$U_\text{2}$ &$I_\text{2}$ &$R_\text{2}$ &$P_\text{2}$ &$U_\text{a}$\\
\hline

&\unit[XXXXXX]{mV} &\unit[XXXXX]{mA} &\unit[XXXXX]{$\Omega$} &\unit[XXXXXX]{mW} & & & & &\unit[XX]{mV}\\

& & & & &\unit[XXXXXX]{V} &\unit[XXXXXX]{mA} &\unit[XXXXXXX]{$\Omega$} &\unit[XXXXXX]{mW} &\unit[XX]{mV}\\
\hline
$\bar{X}$ & & &\unit[XXXXX]{$\Omega$} &\unit[XXXXXX]{mW} & & &\unit[XXXXXX]{$\Omega$} &\unit[XXXXXX]{mW} &\\
\end{tabularx}
\caption{Überschrift}
\label{tab:}
\end{table}

rstuby
16-10-2012, 09:05
Mit \resizebox müsste das zwar gehen, aber dann werden die Einträge doch wirklich sehr klein, oder?
Ich versuch mal dein Beispiel so zu verbasteln.

rstuby
16-10-2012, 09:22
Ich stelle mir es in etwa so vor, kann es aber selber zur Zeit nicht testen:

\documentclass{scrreprt}
\usepackage{graphicx}
\usepackage{siunitx}
\begin{document}

\begin{table}[htbp]
\resizebox{\textwidth}{!}{
\begin{tabular}{cccccccccc}
\hline\hline
&$U_\text{1}$ &$I_\text{1}$ &$R_\text{1}$ &$P_\text{1}$ &$U_\text{2}$ &$I_\text{2}$ &$R_\text{2}$ &$P_\text{2}$ &$U_\text{a}$\\
\hline

&\unit[XXXXXX]{mV} &\unit[XXXXX]{mA} &\unit[XXXXX]{$\Omega$} &\unit[XXXXXX]{mW} & & & & &\unit[XX]{mV}\\

& & & & &\unit[XXXXXX]{V} &\unit[XXXXXX]{mA} &\unit[XXXXXXX]{$\Omega$} &\unit[XXXXXX]{mW} &\unit[XX]{mV}\\
\hline
$\bar{X}$ & & &\unit[XXXXX]{$\Omega$} &\unit[XXXXXX]{mW} & & &\unit[XXXXXX]{$\Omega$} &\unit[XXXXXX]{mW} &\\
\end{tabular}
}
\caption{Überschrift}
\label{tab:}
\end{table}

\end{document}

hakaze
16-10-2012, 10:02
Best practise ist eigentlich, die Einheiten zu den Symbolen in den Tabellenkopf zu packen. Damit lässt sich auch schon Platz sparen.

Dann ist da auch die Frage, wie viele signifikante Stellen du brauchst. Sind 654321 mA eine sinnvolle Angabe (wenn ich mal die XXXXXX als Platzhalter nehme)?

Hiermal noch ein Vorschlag nur mit siunitx (http://ctan.org/pkg/siunitx) (ersetzt den unit-Befehl und ist auch generell das mächtigere Paket für den Satz von Zahlen und SI-Einheiten) und booktabs (http://ctan.org/pkg/booktabs) (für bessere horizontale Linien):
\documentclass{scrreprt}

\usepackage{siunitx,booktabs}
\begin{document}

\begin{table}[htbp]
\small % etwas kleinere Schrift
\caption{Überschrift}
\label{tab:}
\begin{tabular}{cccccccccc}
\toprule
&$U_\text{1}/\si{\milli\volt}$ &$I_\text{1}/\si{\milli\ampere}$ &$R_\text{1}/\si{\ohm}$ &$P_\text{1}/\si{\milli\watt}$ &$U_\text{2}/\si{mV}$ &$I_\text{2}/\si{mA}$ &$R_\text{2}/\si{\ohm}$ &$P_\text{2}/\si{mW}$ &$U_\text{a}/\si{mV}$\\
\midrule

A &XXXX & XXXXX & XXX & XXXX & & & & & XX \\

B & & & & & XXXX & XXXX & XXXX & XXXX & XX \\
\midrule
$\bar{X}$ & & & XXXXX & XXXX & & & XXXX & XXXX &\\ \bottomrule
\end{tabular}
%
\end{table}

\end{document}

Ein Vorschlag noch: wenn du nur so wenige Zeilen mit Messreihen hast, könntest du die Tabelle auch stürzen. Da wäre auch keine Verkleinerung der Schriftgröße notwendig.

localghost
16-10-2012, 10:04
Zunächst gibt es da ein paar Dinge, durch die sich die Breite der Tabelle an sich schon einmal reduzieren lässt.

Üblicherweise werden die Einheiten nicht an jeden Wert geschrieben, sondern im Tabellenkopf einmalig angegeben.
Die Länge \tabcolsep (Voreinstellung 6pt) lässt sich neu definieren.
Eine geringere Schriftgröße in der Tabelle selbst.


Die Ausrichtung der Zahlenwerte übernimmt das schon erwähnte siunitx (http://ctan.org/pkg/siunitx). Zusammengebastelt ergibt das etwas wie dies.

\documentclass[
captions=tableabove,
ngerman
]{scrartcl}
\usepackage[T1]{fontenc}
\usepackage{selinput}
\SelectInputMappings{
adieresis={ä},
germandbls={ß},
Euro={€}
}
\usepackage{babel}
\usepackage{mathtools}
\usepackage{booktabs}
\usepackage[locale=DE]{siunitx}

\begin{document}
\begin{table}[!ht]
\caption{Überschrift}
\label{tab:dummy}
\centering
\small
\setlength{\tabcolsep}{3pt}
\begin{tabular}{l*{9}{S}} \toprule
& {$U_1$} & {$I_1$} & {$R_1$} & {$P_1$} & {$U_2$} & {$I_2$} & {$R_2$} & {$P_2$} & {$U_\text{a}$} \\
& \si{\mV} & \si{\mA} & \si{\ohm} & \si{\mW} & \si{\mV} & \si{\mA} & \si{\ohm} & \si{\mW} & \si{\mV} \\ \midrule
& 1000,0 & 1,00 & 10,00 & 100,000 & 1,000 & 1000,0 & 1,00 & 10,00 & 100,000 \\
& 10,000 & 100,0 & 1,000 & 1000,0 & 10,00 & 10,000 & 100,0 & 1,000 & 1000,0 \\
$\bar{X}$ & 100,00 & 1,000 & 100,0 & 10,00 & 100,0 & 100,00 & 1,000 & 100,0 & 10,00 \\ \bottomrule
\end{tabular}
\end{table}
\end{document}


Thorsten


P.S.: Etwas zu langsam

T.M.
17-10-2012, 13:46
Vielen Dank für Eure Antworten.
Die Einheiten in den Tabellenkopf zu schieben ist eine Idee, die ich auch schon hatte, aber da ich die gleiche Tabelle auch schon in einem Worddokument so hatte und das schöner fand wollte ich das hier eigentlich auch so machen.

Das mit kleinerer Schrift wäre zwar möglicherweise eine Lösung, aber die muß ich dann ja ändern, wenn ich das Papierformat ändere und ich bin leider noch nicht sicher, ob das A4 oder A5 wird.

@hakaze: Ja, ich brauche leider bis zu 7 Stellen. Und ja, mein Messgerät zeigt nicht nur so viele an, sondern ist auch dafür kalibriert, das die stimmen :-)

So, ich werd mal Eure Vorschläge ausprobieren. Notfalls werd ich die Tabelle vielleicht einfach als Bild einbinden, da funktioniert die Skalierung ja in etwa so, wie ich mir das vorstelle.

Schönen Tag Euch noch!

T.M.

defcon
17-10-2012, 14:10
Wir hatten ja vor kurzem hier (http://www.mrunix.de/forums/showthread.php?t=74068) die Diskussion, wie die Schriftgröße sich automatisch dem Tabelleninhalt anpaßt, damit die Tabelle noch auf eine Seite paßt.
Vielleicht hilft dir das ja weiter.

hakaze
17-10-2012, 14:17
Die Einheiten in den Tabellenkopf zu schieben ist eine Idee, die ich auch schon hatte, aber da ich die gleiche Tabelle auch schon in einem Worddokument so hatte und das schöner fand wollte ich das hier eigentlich auch so machen.
Da muss ich widersprechen. Es geht bei einer Tabelle nicht um Schönheit, sondern um Information. Der Leser will sich auf die Zahlwerte konzentrieren können und nicht die sich ständig wiederholende Einheiten sehen. Das, was in allen Zellen ein Spalte gleich ist, kommt in den Tabellenkopf, d.h. Symbol, Einheitenpräfix/Multiplikator und Einheit.


Das mit kleinerer Schrift wäre zwar möglicherweise eine Lösung, aber die muß ich dann ja ändern, wenn ich das Papierformat ändere und ich bin leider noch nicht sicher, ob das A4 oder A5 wird.
...
Notfalls werd ich die Tabelle vielleicht einfach als Bild einbinden, da funktioniert die Skalierung ja in etwa so, wie ich mir das vorstelle.
Bevor du die Tabelle als Bild einbindest (bitte nicht!), schau dir doch nochmal den Vorschlag von rstuby (http://mrunix.de/forums/showpost.php?p=347102&postcount=3) mit resizebox zum dynamischen Anpassen der Tabelle an die verfügbare Textbreite an.


@hakaze: Ja, ich brauche leider bis zu 7 Stellen. Und ja, mein Messgerät zeigt nicht nur so viele an, sondern ist auch dafür kalibriert, das die stimmen :-)
Okay, ich wollte deine Experimente nicht kritisieren :rolleyes: ich kenne deine Arbeit ja nicht. Das war nur der gut gemeinte Hinweis, dass du bedenken solltest, ob die Angabe von 7 Stellen auch für den Leser sinnvoll ist.