fester Wert für erste Spalte - Rest gleichmäßig verteilen

Antwort erstellen


Diese Frage dient dazu, das automatisierte Versenden von Formularen durch Spam-Bots zu verhindern.
Smilies
:D :) :( :o :shock: :? 8) :lol: :-x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen:

BBCode ist eingeschaltet
[img] ist eingeschaltet
[flash] ist ausgeschaltet
[url] ist eingeschaltet
Smilies sind eingeschaltet

Die letzten Beiträge des Themas

Ich habe die Datenschutzerklärung gelesen und bin damit einverstanden.

   

Wenn du eine Datei oder mehrere Dateien anhängen möchtest, gib die Details unten ein.

Ansicht erweitern Die letzten Beiträge des Themas: fester Wert für erste Spalte - Rest gleichmäßig verteilen

Re: fester Wert für erste Spalte - Rest gleichmäßig verteilen

von KOMA » Di 22. Nov 2022, 11:05

ich meine ja nur hat geschrieben:
Mo 21. Nov 2022, 19:24
Im konkreten Fall kann man natürlich die Breiten der beiden hinteren Spalten auch einfach berechnen, wenn man für die erste eine feste Breite verwendet. Wie man so eine Berechnung durchführt, habe ich dir ja bereits gezeigt.
Wenn jemand schon ein vollständiges Minimalbeispiel angegeben hat, kann man das mit der Berechnung natürlich auch einfach noch einmal zeigen:
\documentclass[ngerman,10pt]{scrartcl}

\usepackage{babel}
\usepackage[T1]{fontenc}
%\usepackage{graphicx}% Wird für das Beispiel nicht benötigt.

\usepackage{scrlayer-scrpage}
\usepackage{%array,% wird für das Beispiel nicht benötigt.
  calc}
  
%\usepackage{showframe}% Kann bei Bedarf verwendet werden, um verschiedene Bereiche der Seite in der Testphase sichtbar zu machen.

\begin{document}
\noindent% Wichtig für eine Tabelle außerhalb jeder Umgebung! Sonst hat die Tabelle den normalen Absatzeinzug.
	\begin{tabular}{|p{1cm}|*2{p{(\linewidth-1cm-6\tabcolsep)/2}|}}
		\hline		
		Zeit & Unterrichtsinhalt & didaktisch-methodisches Vorgehen und Medieneinsatz\tabularnewline% Hier kann in dem Fall auch \\ statt \tabularnewline verwendet werden.
		\hline
  		\multicolumn{3}{|c|}{Einstiegsphase}\tabularnewline% Hier kann in dem Fall auch \\ statt \tabularnewline verwendet werden.
  		\hline
  		9.00h bis 10.00h & Hier steht was da so getrieben wird, das wird meist ziemlich ausführlich & Auch hier steht so einiges drin, weswegen ich die Spalten gleichmäßig aufteilen möchte\tabularnewline
  		\hline
	\end{tabular}
\end{document}
Erklärung: Das Paket calc wird verwendet, um Berechnungen im Argument des Spaltentyps p zu ermöglichen. Ich selbst bevorzuge übrigens die Verwendung der Anweisung \dimexpr, aber das ist in erster Linie eine Geschmacksfrage.

Bei der Berechnung ist neben der Breite der ersten Spalte von 1cm auch der Abstand der Spalten voneinander zu berücksichtigen. Das ist (wenn man nicht @{…} o. ä. verwendet) vor jeder Spalte und nach jeder Spalte ein Abstand der Breite \tabcolsep. Bei drei Spalten sind das also insgesamt \tabcolsep. \linewidth ist die Breite, die in der aktuellen Umgebung insgesamt zur Verfügung steht. Damit steht für die Spalten 2 und 3 zusammen \linewidth - 1cm - 6\tabcolsep zur Verfügung. Sollen beide Spalten gleich breit sein, muss der Wert also nur noch durch 2 geteilt werden. Die Spaltendeklaration mit *2{…} sagt lediglich, dass die Deklaration aus dem Argument zweimal angewendet werden soll. Ich spare mir damit, die Berechnung zu wiederholen. Natürlich kann man aber auf diesem Weg auch unterschiedliche Breiten für die beiden Spalten verwenden, beispielsweise mit:
\documentclass[ngerman,10pt]{scrartcl}

\usepackage{babel}
\usepackage[T1]{fontenc}
%\usepackage{graphicx}% Wird für das Beispiel nicht benötigt.

\usepackage{scrlayer-scrpage}
%\usepackage{array,calc}% Dieses Mal zeige ich stattdessen \dimexpr.
  
%\usepackage{showframe}% Kann bei Bedarf verwendet werden, um verschiedene Bereiche der Seite in der Testphase sichtbar zu machen.

\begin{document}
\noindent% Wichtig für eine Tabelle außerhalb jeder Umgebung! Sonst hat die Tabelle den normalen Absatzeinzug.
	\begin{tabular}{|p{1cm}|p{\dimexpr(\linewidth-6\tabcolsep-1cm)/3\relax}|p{\dimexpr(\linewidth-6\tabcolsep-1cm)/3*2\relax}|}
		\hline		
		Zeit & Unterrichtsinhalt & didaktisch-methodisches Vorgehen und Medieneinsatz\tabularnewline% Hier kann in dem Fall auch \\ statt \tabularnewline verwendet werden.
		\hline
  		\multicolumn{3}{|c|}{Einstiegsphase}\tabularnewline% Hier kann in dem Fall auch \\ statt \tabularnewline verwendet werden.
  		\hline
  		9.00h bis 10.00h & Hier steht was da so getrieben wird, das wird meist ziemlich ausführlich & Auch hier steht so einiges drin, weswegen ich die Spalten gleichmäßig aufteilen möchte\tabularnewline
  		\hline
	\end{tabular}
\end{document}
In Abschnitt 4.3 der tabularx-Anleitung ist übrigens angegeben, wie man so etwas auch mit X-Spalten erreichen kann. Schöner geht das dann aber in der Tat mit tabularray.

BTW: Mit tabularx würde ich für die erste Spalte einfach eine l-Spalte verwenden. Dann hat das Paket auch wirklich einen Vorteil gegenüber der Methode der Eigenberechnung wie hier gezeigt.

Achja: Bezüglich der Deutschen Bücher stimme ich übrigens voll und ganz zu. Wobei es inzwischen weit mehr gute Bücher gibt, als die verlinkten. Und natürlich sind nicht alle der verlinkten Bücher als Einstieg gedacht. Viele davon vertiefen bestimmte Aspekte.

Re: fester Wert für erste Spalte - Rest gleichmäßig verteilen

von ich meine ja nur » Di 22. Nov 2022, 08:42

Wie gesagt: Es gibt gute Bücher auf Deutsch → https://www.dante.de/dante-e-v/literatur/

Re: fester Wert für erste Spalte - Rest gleichmäßig verteilen

von Mariatschi0815 » Mo 21. Nov 2022, 20:16

Ich habe so mein tun mit englischen Dokumentationen, gerade wenn ich von der Thematik gänzlich unbeleckt bin... Darum durchforste ich zu erst das Netz... Der kleine Hinweis, dass man in tabularx nicht nur "l","c","r" nutzen kann, sondern auch "p{.}" hätte schon viel geholfen.
Ich hatte zuerst versucht mir etwas aus deinem anderen Beispiel zusammen zu schmieden. Was ja leider nicht geklappt hat.
Ich verstehe ja, dass solche Anfängerfragen in Foren nicht gern gesehen sind, aber wie gesagt... ein kleiner Hinweis hätte an der Stelle schon geholfen.

Hier also nun meine Lösung falls jemand anderes ein ähnliches Problem hat:
\documentclass[ngerman,10pt]{scrartcl}

\usepackage{babel}
\usepackage[T1]{fontenc}

\usepackage{scrlayer-scrpage}
\usepackage{array,calc}
\usepackage{tabularx}

\begin{document}
	\begin{tabularx}{\textwidth}{|p{1cm}|X|X|}
		\hline		
		Zeit & Unterrichtsinhalt & didaktisch-methodisches Vorgehen und Medieneinsatz\tabularnewline
		\hline
  		\multicolumn{3}{|c|}{Einstiegsphase}\tabularnewline
  		\hline
  		9.00h bis 10.00h & Hier steht was da so getrieben wird, das wird meist ziemlich ausführlich & Auch hier steht so einiges drin, weswegen ich die Spalten gleichmäßig aufteilen möchte\tabularnewline
  		\hline
	\end{tabularx}
\end{document}
Edit: Besten Dank für den Link über Tabellengestaltung, ich werde es einmal testen.

Re: fester Wert für erste Spalte - Rest gleichmäßig verteilen

von ich meine ja nur » Mo 21. Nov 2022, 20:02

Du hast offenbar die Beispiele in Abschnitt 2 der tabularx-Anleitung nicht sonderlich gut angeschaut. Denn dort werden ebenfalls Tabellen gezeigt, die nicht nur aus X-Spalten bestehen. Wenn du die Anleitungen nicht magst, dann besorg dir am besten ein Buch. Es gibt beispielsweise von Herbert Voss ein Buch extra zum Thema Tabellen.

Und wenn du ganz viel Flexibilität benötigst, wonach es allerdings derzeit nicht aussieht, dann wäre da noch tabularray. Das ist dann allerdings ein sehr viel komplexeres Paket. Dafür wäre es wirklich nützlich, erst einem ein gutes LaTeX-Buch komplett durchzuarbeiten. Dafür ist die Anleitung des Pakets sehr kompakt und beschränkt sich auf das wesentliche.

Re: fester Wert für erste Spalte - Rest gleichmäßig verteilen

von Mariatschi0815 » Mo 21. Nov 2022, 19:42

Aber tabularx kann doch nur alle Spalten gleichmäßig aufteilen oder habe ich da eine Option übersehen? Da die erste Spalte nicht viele Informationen enthält möchte ich sie ja kompakt halten.

Re: fester Wert für erste Spalte - Rest gleichmäßig verteilen

von ich meine ja nur » Mo 21. Nov 2022, 19:24

Im konkreten Fall kann man natürlich die Breiten der beiden hinteren Spalten auch einfach berechnen, wenn man für die erste eine feste Breite verwendet. Wie man so eine Berechnung durchführt, habe ich dir ja bereits gezeigt. Mit tabularx kann man sich die eigene Berechnung aber einfach sparen,

Re: fester Wert für erste Spalte - Rest gleichmäßig verteilen

von ich meine ja nur » Mo 21. Nov 2022, 19:21

tabularx, wobei in diesem Fall tatsächlich auch tabular* möglich sein sollte. Was hast du denn versucht?

Es sei übrigens erwähnt, dass vertikale Linien in Tabellen meist schlecht sind. Die Hauptleserichtung einer Tabelle sollte horizontal sein. Die Linien bremsen aber das Auge, lenken es in die Vertikale und provozieren, dass man die Zeile verliert. Für bessere Tabellen siehe booktabs-de. Übrigens ist aus ähnlichen Gründen eher von Nachteil, wenn man Tabellen mit viel horizontalem Leerraum künstlich auf Seitenbreite bringt. Besser ist, eine Tabelle einfach mit ihrer natürlichen Breite horizontal zu zentrieren.

fester Wert für erste Spalte - Rest gleichmäßig verteilen

von Mariatschi0815 » Mo 21. Nov 2022, 19:04

Hallo nochmal,

heute habe ich es mit den Tabellen...

Ich würde gerne folgende Tabelle:
\documentclass[ngerman,10pt]{scrartcl}

\usepackage{babel}
\usepackage[T1]{fontenc}
\usepackage{graphicx}

\usepackage{scrlayer-scrpage}
\usepackage{array,calc}

\begin{document}
	\begin{tabular}{|p{1cm}|l|l|}
		\hline		
		Zeit & Unterrichtsinhalt & didaktisch-methodisches Vorgehen und Medieneinsatz\tabularnewline
		\hline
  		\multicolumn{3}{|c|}{Einstiegsphase}\tabularnewline
  		\hline
  		9.00h bis 10.00h & Hier steht was da so getrieben wird, das wird meist ziemlich ausführlich & Auch hier steht so einiges drin, weswegen ich die Spalten gleichmäßig aufteilen möchte\tabularnewline
  		\hline
	\end{tabular}
\end{document}
So anpassen, dass die Tabelle textwidth ist, die erste Spalte einen festen Wert bekommt und sich die folgenden beiden Spalten gleichmäßig aufteilen... daran scheitert es aber gerade.

Nach oben