Tabelle mit Inhalt an Seite anpassen

Tabellen und Grafiken erstellen und anordnen


Remus_
Forum-Anfänger
Forum-Anfänger
Beiträge: 20
Registriert: Do 7. Mär 2019, 15:17

Tabelle mit Inhalt an Seite anpassen

Beitrag von Remus_ »

Guten Tag,

ich habe folgendes Problem. Meine Tabelle ist etwas größer, sodass der Inhalt nicht mehr auf der Seite erscheint. Ich möchte nun gerne, dass der Inhalt auf der Seite ist. Am Besten wäre es, wenn das durch einen automatischen Umbruch oder eine bessere Skalierung erreicht werden würde, je nachdem was da überhaupt geht und machbar ist.

Den Befehl tiny habe ich schon gefunden, allerdings ist die Schrift dann extrem klein...

Hier ein Minimalbeispiel:

Code: Alles auswählen

% Hauptklasse für Latexdokument 
% -------------------------------
\documentclass[12pt,a4paper,titlepage]{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}
\usepackage[autostyle=true,german=quotes]{csquotes}
\usepackage{makeidx}
\usepackage{graphicx}
\usepackage{amsmath}
\usepackage{amssymb}
\usepackage{autobreak}
\usepackage{caption}
\usepackage{array} 
\usepackage[a4paper, left=2.5cm, right=2.5cm, top=3cm, bottom=2cm]{geometry}
\usepackage[autooneside=false,headsepline,markcase=noupper]{scrlayer-scrpage}
\ihead{\headmark}
\ohead*{\pagemark}
\ifoot{Remus}
\automark[subsection]{section}
\usepackage{float}
\usepackage[hang]{footmisc}
\usepackage[braket]{qcircuit}
\usepackage[matrix,frame,arrow]{xypic}
\pagestyle{scrheadings}
\usepackage{blindtext}
\usepackage{booktabs}
\usepackage[numbers]{natbib} 
\usepackage{listings} 
\usepackage{hyperref}


\begin{document}
	\begin{table}[htbp]
	%\tiny
	\centering
	\begin{tabular*}{\linewidth}{@{\extracolsep{\fill}}*8l@{}}
		\toprule
		Lange Überschrift 1&Zweite Überschrift&Und noch eine&Und die Letzte\\
		\midrule
		Eintrag 1&Eintrag 2&Eintrag 3 diser ist etwas länger&Eintrag 4\\
		\bottomrule
	\end{tabular*}
	\captionsetup{labelfont=bf,textfont=it}
	\caption[Titel.]{Besch.}
	\label{tabelle:xy}
	\end{table}	
	% Literatur
	\begin{thebibliography}{xxxxx} 
		\bibitem[AE]{Einstein}Albert Einstein, Titel~\dots\label{Einstein Spez teo}
	\end{thebibliography} 
	
	
\end{document}

Gast

Beitrag von Gast »

Als erstes würde ich für eine Tabelle mit vier verwendeten Spalten nicht 8 Spalten deklarieren, also nicht

Code: Alles auswählen

\begin{tabular*}{\linewidth}{@{\extracolsep{\fill}}*8l@{}}
sondern

Code: Alles auswählen

\begin{tabular*}{\linewidth}{@{\extracolsep{\fill}}*4l@{}}
verwenden. Dann könnte man je nach Inhalt noch p-Spalten verwenden, damit innerhalb der Spalten ein Zeilenumbruch erlaubt ist. p-Spalten sollten in jeder bessere LaTeX-Einführung erklärt sein.

Und ob es wirklich sinnvoll ist tabular* zu verwenden, sei einmal dahin gestellt. Üblicherweise finde ich Tabellen, die künstlich auf Zeilenbreite aufgeblasen werden eher schlecht. Wenn man Zeilenumbrüche in den Spalten will, wäre ggf. tabularx und die Verwendung einer oder mehrerer X-Spalten eine Alternative. Siehe dazu die Anleitung und unzählige Beispiele hier auf goLaTeX oder auch auf TeXwelt.de.

BTW: \pagestyle{scrheadings} ist nach dem Laden von scrlayer-scrpage Voreinstellung. Die Anweisung braucht es also nicht.

Zwischen \tiny und \normalsize gibt es übrigens auch noch \footnotesize und \small. Siehe dazu eine nahezu beliebige LaTeX-Einführung.

markusv
Forum-Meister
Forum-Meister
Beiträge: 850
Registriert: Do 3. Sep 2015, 17:20
Wohnort: Leipzig

Re: Tabelle mit Inhalt an Seite anpassen

Beitrag von markusv »

Remus_ hat geschrieben:Am Besten wäre es, wenn das durch einen automatischen Umbruch [...]
Wenn du dies möchtest, musst du auch eine Spaltendefinition verwenden, die Zeilenumbrüche ermöglicht. Im einfachsten Falle wäre das p{Spaltenlänge} bzw. m{Spaltenlänge}. Sollen alle Spalten die gleiche Länge haben und die Tabelle die ganze Seite ausfüllen, wäre evtl. tabularx ein Versuch wert.
Wäre Microsoft Word für das Schreiben von Büchern entwickelt worden,
würde es Microsoft Book heißen.

Unkomplizierte und schnelle LaTeX-Hilfe, bspw. Erstellung von Vorlagen und Bewerbungen:
Help-LaTeX@web.de

Remus_
Forum-Anfänger
Forum-Anfänger
Beiträge: 20
Registriert: Do 7. Mär 2019, 15:17

Beitrag von Remus_ »

Ok danke für die Antworten, also ich habe dann mal etwas losgelegt. Mein Problem ist jetzt aber, dass er sehr komisch trennt.

Gibt es einen Parameter mit dem man einen Umbruch ab einem Gewissen Wort erwirken kann. Ich will mal ein Beispiel geben:

In einer Zeile steht z.B.

"Dateierweiterung, Un-
beantwortete"

besser wäre die Trennung:

"Dateierweiterung,
Unbeantwortete"


Gibt es dort vielleicht einen Parameter, mit dem das umgesetzt werden kann?



Code: Alles auswählen

\begin{table}[htbp] 
	\begin{tabularx}{\textwidth}{XXXX} 
	\toprule
	Dateierweiterung, Unbeantwortete&Bla&BlaBla&Lange Überschrift\\
	\end{tabularx} 
\end{table} 

Gast

Beitrag von Gast »

In schmalen Spalten ist Blocksatz ohnehin eher nicht zu empfehlen. Ich würde also entweder \raggedright oder \RaggedRight verwenden. Zu letzterem siehe ragged2e. Bei \raggedright gibt es Trennung nur noch, wenn ein Wort insgesamt nicht in die Zeile passt. Bei der letzten Spalte kann es sinnvoll sein zusätzlich zu \raggedright noch \arraybackslash zu verwenden. Siehe dazu die [d]array[/d]-Anleitung.

Ansonsten kann man in Tabellen Trennung auf die übliche Weise beeinflussen, also beispielsweise mit expliziten Trennstrichen \- nur bestimmte Stellen die Trennung eines Worts erlauben oder mit \mbox die Trennung eines Worts komplett verbieten. Ebenso funktionieren \linebreak oder \newline.

Remus_
Forum-Anfänger
Forum-Anfänger
Beiträge: 20
Registriert: Do 7. Mär 2019, 15:17

Beitrag von Remus_ »

Also ich habe nochmal etwas probiert. Das mit \newline war hilfreich! Jetzt hab ich es bisher allerdings noch nicht geschafft, den Blocksatz explizit für die Tabelle zu deaktivieren.

Die Tabelle ist fast so wie ich mir das vorstelle, allerdings bekomme ich den Blocksatz nicht in der Tabelle deaktiviert. Wäre klasse, wenn mir Jemand weiterhelfen kann! Danke :)

Code: Alles auswählen

\documentclass[12pt,a4paper,titlepage]{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}
\usepackage[autostyle=true,german=quotes]{csquotes}
\usepackage{makeidx}
\usepackage{graphicx}
\usepackage{amsmath}
\usepackage{amssymb}
\usepackage{autobreak}
\usepackage{caption}
\usepackage{array} 
\usepackage[a4paper, left=2.5cm, right=2.5cm, top=3cm, bottom=2cm]{geometry}
\usepackage[autooneside=false,headsepline,markcase=noupper]{scrlayer-scrpage}
\ihead{\headmark}
\ohead*{\pagemark}
\ifoot{Remus}
\addto\extrasngerman{% 
	\renewcommand{\refname}{Literaturverzeichnis}% 
} 

\automark[subsection]{section}
\usepackage{float}
\usepackage[hang]{footmisc}
\usepackage[braket]{qcircuit}
\usepackage[matrix,frame,arrow]{xypic}
\pagestyle{scrheadings}
\usepackage{blindtext}
\usepackage{booktabs}
\usepackage[numbers]{natbib} 
\usepackage{listings} 
\usepackage{tabularx} 
\usepackage{colortbl}
\usepackage{hyperref}


\begin{document}
	\begin{table}[htbp] 
	\begin{tabularx}{\textwidth}{|X|X|X|X|} 
		\hline
		Spalte 1 & Spalte 2 & Spalte 3 & Spalte 4 \\
		\hline
		Inhalt 1 & Inhalt 2 & Inhalt 3 & Inhalt 4 \\
		\hline
	\end{tabularx} 
	\captionsetup{labelfont=bf,textfont=it}
	\caption[Titel]{Beschreibung}
	\label{tabelle:label}
	\end{table} 


	% Definiton des Literaturverzeichnisses
	\begin{thebibliography}{xxxxx} 
		%\bibitem[AE]{Einstein}Albert Einstein, Titel~\dots\label{Einstein Spez teo}
	\end{thebibliography} 
	
	
\end{document}




PS: Gibt es auch eine Möglichkeit die Tabelle darstellerisch noch etwas zu optimieren? Also gerade die zweite Zeile wirkt etwas gequetscht.

Bartman
Forum-Meister
Forum-Meister
Beiträge: 2142
Registriert: Do 16. Jul 2009, 21:41
Wohnort: Hessische Provinz

Beitrag von Bartman »

Welche der im Beitrag des Gastes beschriebenen Mittel hast Du probiert, um die Ausrichtung einer Spalte zu ändern? In der Dokumentation von tabularx erfährst Du, wie der durch dieses Paket verfügbare Spaltentyp verändert werden kann. Das funktioniert für das ganze Dokument oder auch nur lokal in Deiner table-Umgebung.

Darfst Du nun booktabs benutzen oder nicht?

Auch wenn die Tabellenbeschriftung lokal beeinflusst werden kann, so sollte sie doch für alle Tabellen im Dokument einheitlich sein.

Gast

Beitrag von Gast »

90% des gezeigten Codes ist für das Beispiel mit Sicherheit vollkommen unerheblich und der Rest zeigt IMHO nicht das angesprochene Problem. Bitte die Minimalbeispiel-Anleitung einmal sehr viel gründlicher lesen. Zumindest das angesprochene Problem sollte ein Beispiel selbst dann zeigen, wenn es alles andere als minimal ist. Davon abgesehen, dass ich die gezeigte Tabelle eher als

Code: Alles auswählen

   \begin{tabularx}{\textwidth}{XXXX}
      \toprule
      Spalte 1 & Spalte 2 & Spalte 3 & Spalte 4 \\
      \midrule
      Inhalt 1 & Inhalt 2 & Inhalt 3 & Inhalt 4 \\
      \bottomrule
   \end{tabularx}
oder genau genommen als

Code: Alles auswählen

  \centering
   \begin{tabular}{llll}
      \toprule
      Spalte 1 & Spalte 2 & Spalte 3 & Spalte 4 \\
      \midrule
      Inhalt 1 & Inhalt 2 & Inhalt 3 & Inhalt 4 \\
      \bottomrule
   \end{tabular}
setzen würde, kann ich sonst nicht viel mehr beitragen als ich schon habe.

Remus_
Forum-Anfänger
Forum-Anfänger
Beiträge: 20
Registriert: Do 7. Mär 2019, 15:17

Beitrag von Remus_ »

Ich habe nochmal eine Tabelle erzeugt, aus der mein Problem etwas deutlicher hervorgeht. Also wenn man sich die Spalte 4 ansieht, dann ist dort zu erkenne, dass die Trennung einfach schlecht ist:

Code: Alles auswählen

\documentclass[12pt,a4paper,titlepage]{article} 
\usepackage[utf8]{inputenc} 
\usepackage[T1]{fontenc} 
\usepackage[ngerman]{babel} 
\usepackage[autostyle=true,german=quotes]{csquotes} 
\usepackage{makeidx} 
\usepackage{graphicx} 
\usepackage{amsmath} 
\usepackage{amssymb} 
\usepackage{autobreak} 
\usepackage{caption} 
\usepackage{array} 
\usepackage[a4paper, left=2.5cm, right=2.5cm, top=3cm, bottom=2cm]{geometry} 
\usepackage[autooneside=false,headsepline,markcase=noupper]{scrlayer-scrpage} 
\ihead{\headmark} 
\ohead*{\pagemark} 
\ifoot{Remus} 
\addto\extrasngerman{% 
   \renewcommand{\refname}{Literaturverzeichnis}% 
} 

\automark[subsection]{section} 
\usepackage{float} 
\usepackage[hang]{footmisc} 
\usepackage[braket]{qcircuit} 
\usepackage[matrix,frame,arrow]{xypic} 
\pagestyle{scrheadings} 
\usepackage{blindtext} 
\usepackage{booktabs} 
\usepackage[numbers]{natbib} 
\usepackage{listings} 
\usepackage{tabularx} 
\usepackage{colortbl} 
\usepackage{hyperref} 


\begin{document} 
   \begin{table}[htbp] 
   \begin{tabularx}{\textwidth}{|X|X|X|X|} 
      \hline 
      Xccccccccccccm- \linebreak Xccccccccs&Xc&Xnnnnnn&Xnnnnn nnnnn XXXXXXXX\\ 
      \hline 
      Spalte 1 & Spalte 2 & Spalte 3 & Spalte 4\\ 
      \hline 
   \end{tabularx} 
\end{table}


   % Definiton des Literaturverzeichnisses 
   \begin{thebibliography}{xxxxx} 
      %\bibitem[AE]{Einstein}Albert Einstein, Titel~\dots\label{Einstein Spez teo} 
   \end{thebibliography} 
    
    
\end{document} 

Ich würde gerne die Tabelle mit den "echten" Daten hochladen, aber da weiß ich nicht ob mir das erlaubt ist...

Ich habe das auch nochmal als Bild eingefangen:

Bild
Dateianhänge
bildltx.PNG
bildltx.PNG (2.77 KiB) 280 mal betrachtet
Zuletzt geändert von Remus_ am Fr 12. Apr 2019, 10:10, insgesamt 1-mal geändert.

Gast

Lesen der Anleitungen der empfohlenen/verwendeten Pakete …

Beitrag von Gast »

Da Du nichts von vollständigen Minimalbeispiel hältst ein vollkommen ungetesteter Vorschlag unter Zuhilfenahme des bereits oben erwähnten ragged2e:

Code: Alles auswählen

\begin{table}[htbp]
   \begin{tabularx}{\textwidth}{>{\RaggedRight}Xll>{\RaggedRight}X}
      \toprule
      Xccccccccccccm\-Xccccccccs&Xc&Xnnnnnn&Xnnnnn nnnnn XXXXXXXX\\
      \midrule
      Spalte 1 & Spalte 2 & Spalte 3 & Spalte 4\\
      Spalte 1 & Spalte 2 & Spalte 3 & Spalte 4\\
      \bottomrume
   \end{tabularx}
\end{table}
Alles weitere ist den Anleitungen der Pakete tabularx, array, ragged2e und booktabs zu entnehmen. Lesen!

Antworten