Seite 1 von 2
Tabelle mit Inhalt an Seite anpassen
Verfasst: Mi 3. Apr 2019, 11:54
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:
% 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}
Verfasst: Mi 3. Apr 2019, 12:04
von Gast
Als erstes würde ich für eine Tabelle mit vier verwendeten Spalten nicht 8 Spalten deklarieren, also nicht
\begin{tabular*}{\linewidth}{@{\extracolsep{\fill}}*8l@{}}
sondern
\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.
Re: Tabelle mit Inhalt an Seite anpassen
Verfasst: Mi 3. Apr 2019, 12:06
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.
Verfasst: Mi 3. Apr 2019, 12:27
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?
\begin{table}[htbp]
\begin{tabularx}{\textwidth}{XXXX}
\toprule
Dateierweiterung, Unbeantwortete&Bla&BlaBla&Lange Überschrift\\
\end{tabularx}
\end{table}
Verfasst: Mi 3. Apr 2019, 12:43
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.
Verfasst: Di 9. Apr 2019, 16:50
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
\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.
Verfasst: Di 9. Apr 2019, 19:10
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.
Verfasst: Mi 10. Apr 2019, 09:13
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
\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
\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.
Verfasst: Do 11. Apr 2019, 18:08
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:
\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:

Lesen der Anleitungen der empfohlenen/verwendeten Pakete …
Verfasst: Do 11. Apr 2019, 19:38
von Gast
Da Du nichts von vollständigen
Minimalbeispiel hältst ein vollkommen ungetesteter Vorschlag unter Zuhilfenahme des bereits oben erwähnten
ragged2e:
\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!