Tabelle - Zellen in der selben Spalte unterschiedlich breit

Tabellen und Grafiken erstellen und anordnen


Seban
Forum-Fortgeschrittener
Forum-Fortgeschrittener
Beiträge: 94
Registriert: Do 10. Jan 2013, 13:31

Tabelle - Zellen in der selben Spalte unterschiedlich breit

Beitrag von Seban »

Hallo,

Ich habe eine Auflistung der Art
Spalte 1 | Spalte 2 | Spalte 3
Größe    | Wert      | Einheit

Das ganze zwei mal nebeneinander, füllt in der Höhe fast eine ganze Seite aus. (Im Bsp. habe ich der Einfachheit halber zwei mal den gleichen Inhalt nebeneinander eingefügt und die Tabelle gekürzt).

Nun stört mich, dass zw. Spalte 1 und 2 eine fixe Grenze ist (im Bild links). Lieber wäre mir, wenn diese Grenze variabel ist (rechts), so dass bei langen Einträgen in Spalte 1 diese quasi breiter und Spalte 2 dafür schmaler wird. Umgekehrt genau so, wenn der Inhalt in Spalte 1 schmal, in Spalte 2 aber breit ist, sollte Spalte 1 schmaler & 2 entsprechend breiter sein.

Bild


Leider habe ich keine Idee, wie man das umsetzen könnte oder wonach ich suchen sollte. Hat jemand einen guten Tipp?

Gruß & Dank,
Seban


Hier mein Bsp.:
\documentclass[
	a4paper, 			% Seitengröße
	11pt, 				% Standardschriftgröße
	openany, 			% Beginnt Kapitel auf geraden und ungeraden Seiten
	parskip				% Erste Zeile eines Absatzes nicht eingerückt
]{scrreprt}

\usepackage[ngerman]{babel}
\usepackage[scaled]{uarial}
\usepackage[T1]{fontenc}
\usepackage[ansinew]{inputenc}

\usepackage[						% Maße des Dokuments festlegen
	includeheadfoot,							% Kopf- & Fußzeilen zählen zum Textkörper
	width=16cm,	left=2.5cm,	right=2.5cm,		% Breite des Textkörpers; linker Rand; rechter Rand (Gesamtbreite A4 = 210mm)
	height=27.2cm, top=1.25cm, bottom=1.25cm,	% Höhe des Textkörpers; oberer Rand; unterer Rand (Gesamthöhe A4 = 297mm)
	head=1.75cm, headsep=0.5cm,					% Höhe der Kopfzeile (inkl. headsep); Abstand zw. Kopfzeile und Text
	foot=0.75cm									% Höhe der Fußzeile
]{geometry}

\usepackage{
	tabularx,
	booktabs,
	multicol
}

\newcolumntype{L}{>{\raggedright\arraybackslash}b{3.5cm}}
\newcolumntype{R}{>{\raggedleft\arraybackslash}p{3cm}}

\begin{document}

\footnotesize
\begin{multicols}{2}
	\begin{tabularx}{\textwidth}{LRl}
		\textbf{Allgemeine Daten} 				&&\\
		Nennleistung 							& 750 		& kW \\
		Scheinleistung						&& \\
		\hspace{1cm}Variante 1	 				& 800 		& kW \\
		\hspace{1cm}Variante 2					& 825 		& kW \\
		Blindleistung							&&\\
		\hspace{0.5cm}Erzeugung					&&\\
		\hspace{1cm}Variante 1					& 561 		& kvar \\
		\hspace{1cm}Variante 2					& 848 		& kvar \\
		\hspace{0.5cm}Aufnahme					&&\\
		\hspace{1cm}Variante 1					& -52 		& kvar \\
		\hspace{1cm}Variante 2					& -684 		& kvar\\
		Widerstand								& xy		&\\
		ACHTUNG\_1									& auch hier steht schon mal was langes 		&\\
		trololo									& xy		&\\
		Hier kann etwas längeres stehen, das umgebrochen werden muss 	& ACHTUNG\_2 		&\\\addlinespace[6pt]	
	\end{tabularx}
	
%% 2. Spalte
	\begin{tabularx}{\textwidth}{LRl}
		\textbf{Allgemeine Daten} 				&&\\
		Nennleistung 							& 750 		& kW \\
		Scheinleistung						&& \\
		\hspace{1cm}Variante 1	 				& 800 		& kW \\
		\hspace{1cm}Variante 2					& 825 		& kW \\
		Blindleistung							&&\\
		\hspace{0.5cm}Erzeugung					&&\\
		\hspace{1cm}Variante 1					& 561 		& kvar \\
		\hspace{1cm}Variante 2					& 848 		& kvar \\
		\hspace{0.5cm}Aufnahme					&&\\
		\hspace{1cm}Variante 1					& -52 		& kvar \\
		\hspace{1cm}Variante 2					& -684 		& kvar\\
		Widerstand								& xy		&\\
		ACHTUNG\_1									& auch hier steht schon mal was langes 		&\\
		trololo									& xy		&\\
		Hier kann etwas längeres stehen, das umgebrochen werden muss 	& ACHTUNG\_2 		&\\\addlinespace[6pt]		
	\end{tabularx}
\end{multicols}


\end{document}

Benutzeravatar
Johannes_B
Moderator
Moderator
Beiträge: 5079
Registriert: Do 1. Nov 2012, 14:55
Kontaktdaten:

Beitrag von Johannes_B »

Ich glaube nicht, dass LaTeX dieses Verhalten unterstützten wird. Das entspricht auch irgendwie gegen eine saubere Tabelle.

Du hast in deiner Tabelle sehr viele Dopplungen. Du vergleichst Variante eins und zwei, warum stehen die nicht nebeneinander?

\documentclass{scrreprt} 
\usepackage[ngerman]{babel}
\usepackage[T1]{fontenc}
\usepackage{selinput}
\SelectInputMappings{}

\usepackage{
	siunitx,
	booktabs,
}

\DeclareSIUnit{\leistung}{\kilo\watt}
\DeclareSIUnit{\blindwatt}{\kilo var}

\begin{document}

\begin{tabular}{lcSS}
	\toprule
	& {Einheit} & {Variante 1} & {Variante 2} \\
	\midrule
	Nennleistung & \si{\leistung} & \multicolumn{2}{c}{750}\\
	Scheinleisung & \si{\leistung} & 800 & 825 \\
	Blindleistung (Erzeugung) &\si{\blindwatt} & 561 & 848 \\
	Blindleistung (Aufnahme) &\si{\blindwatt} & -52 & -684\\
	\bottomrule
\end{tabular}

\end{document}
Das war mein erster Gedanke zur Tabelle.

Noch ein Hinweis. Das Paket siunitx eignet sich gut zum Setzen physikalischer Einheiten. LaTeX ist eine Makrosprache. Wenn du gleiches immer wieder eintippst, solltest du dich fragen: Warum tippe ich das denn schon wieder ein? Willst du beispielsweise die manuelle Verschiebung deiner Elemente später ändern, so musst du alle Instanzen ersetzen.
Siehe dazu bitte auch Wie sollte ich vorgehen, wenn ich bestimmte Sachen hervorheben will?
TeXwelt - Fragen und Antworten Schaut vorbei und stellt Fragen.
LaTeX-Vorlagen?

Der Weg zum Ziel: Ruhe bewahren und durchatmen, Beiträge und unterstützende Links aufmerksam lesen, Lösungsansätze verstehen und ggf. nachfragen.

Seban
Forum-Fortgeschrittener
Forum-Fortgeschrittener
Beiträge: 94
Registriert: Do 10. Jan 2013, 13:31

Beitrag von Seban »

Johannes_B hat geschrieben:Ich glaube nicht, dass LaTeX dieses Verhalten unterstützten wird. Das entspricht auch irgendwie gegen eine saubere Tabelle.

Du hast in deiner Tabelle sehr viele Dopplungen. Du vergleichst Variante eins und zwei, warum stehen die nicht nebeneinander?
Wie gesagt, ist das nur ein Ausschnitt der Auflistung (zudem auch 2x das gleiche). Im ganzen sind es ca 50-60 Größen, wobei nur 5x zw. 2 Varianten unterschieden wird und das auch nicht in jedem Dokument (ich erstelle eine Vorlage, die in Zukunft häufiger verwendet wird). Eine Auflistung nach Varianten macht also in diesem Fall keinen Sinn, das Layout soll schon so bleiben.

In der Liste stehen halt ein paar Einträge, die in Spalte 1 oder Spalte 2 zu lang sind; für diese wäre es eben schön, wenn man die Grenze zw. den Spalten variieren könnte. Als Bsp.:
Bild
Ist die untere Auflistung nicht übersichtlicher? mMn schon (nicht, dass ich iwie Ahnung von gut formatiertem Text oder Tabellen hätte, aber ich kann die Daten so leichter auf einen Blick erfassen)

Johannes_B hat geschrieben:Noch ein Hinweis. Das Paket siunitx eignet sich gut zum Setzen physikalischer Einheiten. LaTeX ist eine Makrosprache. Wenn du gleiches immer wieder eintippst, solltest du dich fragen: Warum tippe ich das denn schon wieder ein? Willst du beispielsweise die manuelle Verschiebung deiner Elemente später ändern, so musst du alle Instanzen ersetzen.
Siehe dazu bitte auch Wie sollte ich vorgehen, wenn ich bestimmte Sachen hervorheben will?
Danke für den Hinweis. Befehle in Art des 2ten Links nutze ich zum Teil bereits, bspw. für immer wiederkehrende Richtlinien (inkl. Literaturangabe) oder für Größen, die nicht nur in dieser Auflistung auftauchen, sondern mehrfach im Dokument oder Begriffe, die eben anders formatiert werden sollen.

Was meinst du mit "manuelle Verschiebung deiner Elemente"?

Das Paket siunitx muss ich mir mal anschauen, das habe ich bisher noch nie genutzt.


Vielen Dank!

esdd
Forum-Meister
Forum-Meister
Beiträge: 2561
Registriert: So 7. Feb 2010, 16:36

Beitrag von esdd »

Mit einer Kombination aus \makebox und \parbox kann man schon über den Rand einer Tabellenzelle hinausschreiben, die andere wird dabei aber nicht automatisch schmaler. Außerdem finde ich das schon ziemlich unübersichtlich:
\documentclass{scrreprt} 
\usepackage[ansinew]{inputenc} 
\usepackage{tabularx}

\newcommand\Kurz{Das ist ein kurzer Text.}
\newcommand\Lang{Dieser Text ist länger als der andere.}
\newcommand\Laenger{Dieser Text ist länger als der andere und noch länger.}

\begin{document} 
\renewcommand\arraystretch{1.5}
\noindent
\begin{tabularx}{0.7\linewidth}{>{\raggedright\arraybackslash}b{4cm}>{\raggedleft\arraybackslash}X}
\Kurz&\Kurz\\
\Lang&\Kurz\\
\Kurz&\Lang\\
\makebox[\linewidth][l]{\parbox[b]{1.8\linewidth}{\raggedright \Lang}}&Text\\
Text&\makebox[\linewidth][r]{\parbox[tt]{1.2\linewidth}{\raggedleft \Lang}}\\
\makebox[\linewidth][l]{\raisebox{0pt}[\dimexpr\height+5pt\relax][\depth]{\parbox[b]{1.8\linewidth}{\raggedright \Laenger}}}&Text\\
Text&\makebox[\linewidth][r]{\parbox[tt]{1.2\linewidth}{\raggedleft \Laenger}}
\end{tabularx}
\end{document}  
Gruß
Elke

Seban
Forum-Fortgeschrittener
Forum-Fortgeschrittener
Beiträge: 94
Registriert: Do 10. Jan 2013, 13:31

Beitrag von Seban »

esdd hat geschrieben:Außerdem finde ich das schon ziemlich unübersichtlich
Den Code oder so eine flatternde Tabelle? Mir kommt mein Anliegen gerade wie ein typographischer Fauxpas vor :?

Werde morgen mal deinen Vorschlag ausprobieren und das ganze auf mich wirken lassen.

Vielen Dank

Antworten