Tabelle auf Textweite ausrichten, gleichmäßiger Abstand

Tabellen und Grafiken erstellen und anordnen


mr. pink
Forum-Anfänger
Forum-Anfänger
Beiträge: 28
Registriert: Mo 11. Jun 2018, 18:30

Tabelle auf Textweite ausrichten, gleichmäßiger Abstand

Beitrag von mr. pink »

Hallo zusammen,

meine Frage bezieht sich auf das erstellen von Tabellen. Ich möchte, dass sich die Tabelle über die gesamte Textbreite erstreckt, was ich auch mit \textwidth erreicht habe. Nun habe ich aber folgendes Problem: Die Spalten sind stark nach links verschoben, der Platz zwischen den Spalten ist außerdem ungleichmäßig. Nach etwas Recherche habe ich herausgefunden, dass man mit dem Befehl @{\extracolsep{\fill} diesen Abstand manipulieren kann. Allerdings wirkt sich das nicht auf meine Tabelle aus. Hier ein Minimalbeispiel.
\documentclass[12pt,a4paper,headsepline=true,twoside]{scrreprt}
\usepackage[utf8]{inputenc}
\usepackage[ngerman]{babel}
\usepackage{booktabs}
\usepackage[demo]{graphicx}
\begin{document}

\begin{table}[H]
\centering

\renewcommand{\arraystretch}{1.5}
\caption{Bla}

\begin{tabular*}{\textwidth}{c@{\extracolsep{\fill}}ccc}
\multicolumn{4}{c}{\includegraphics[scale=0.8]{plank}}   \\ \hline \hline
A     &  B   &C    & D   \\ \hline
wert & wert & wert & wert \\

\multicolumn{4}{p{1.0\textwidth}}{Anmerkungen zur Tabelle }
     
\end{tabular*}
\end{table}

\end{document}
Wenn ich allerdings ein Musterbeispiel, welches ich bei meiner Recherche gefunden habe, kompiliert es die Tabelle exakt so wie ich es haben wollen würde.
\documentclass[12pt,a4paper,headsepline=true,twoside]{scrreprt}
\usepackage[utf8]{inputenc}
\usepackage[ngerman]{babel}
\usepackage{booktabs}
\begin{document}
\begin{tabular*}{\textwidth}{c@{\extracolsep{\fill}}cc}
\hline
links & mitte & rechts
\\
\hline
\end{tabular*}
\end{document}
Ich verstehe nicht woran das liegt.
Im Anhang außerdem die beschriebene Problematik.
MfG
Mr. Pink
Dateianhänge
Beispiel.JPG
Beispiel.JPG (24.49 KiB) 2711 mal betrachtet

Gast

Beitrag von Gast »

Das liegt an
\multicolumn{4}{p{1.0\textwidth}}{Anmerkungen zur Tabelle }
am Ende der Tabelle. Setze die Anmerkungen nach der Tabelle, dann funktioniert es.

Zusatzhinweis: Generell ist \multicolumn mit p{…}-Spalten in solchen Fällen kritisch, weil der Platz, den die eine große Spalte dabei belegt nicht gleichmäßig über alle Spalten verteilt wird. Und natürlich erzeugt die Angabe 1.0\textwidth dann auch noch eine Überbreite, da der Spaltenabstand am Anfang und Ende nicht berücksichtigt wurde. Das ist aber für das eigentliche Problem hier unerheblich.

mr. pink
Forum-Anfänger
Forum-Anfänger
Beiträge: 28
Registriert: Mo 11. Jun 2018, 18:30

Beitrag von mr. pink »

Danke für deine Antwort. Die multicolumn am Ende benötige ich allerdings, aber dafür gibt es bestimmt elegantere Lösungen. Ich mach mich mal auf die Suche danach.
MfG

Gast

Beitrag von Gast »

mr. pink hat geschrieben:Die multicolumn am Ende benötige ich allerdings
Weshalb? Die Anmerkungen kann man (wie bereits angeregt) einfach unter die Tabelle in einem eigenen Absatz (dazu ggf. \centering mit einer Gruppe beschränken), einer eigenen \parbox oder sogar einer eigenen Tabelle setzen. Es gibt keinen erkennbaren Grund, warum die Anmerkungen innerhalb der Tabelle gesetzt werden müssen.

Gast

Beitrag von Gast »

Es sei außerdem auf threeparttable hingewiesen.

mr. pink
Forum-Anfänger
Forum-Anfänger
Beiträge: 28
Registriert: Mo 11. Jun 2018, 18:30

Beitrag von mr. pink »

Ich habe eine Beispieltabelle als .JPEG angehängt, so ist meine Vorgabe des Lehrstuhls. Ich verstehe nicht ganz was du mit einem eigenen Absatz meinst.
Außerdem habe ich deinen Korrekturvorschlag angenommen, leider funktioniert die gleichmäßige Verteilung nur wenn alle multicolumn nicht existent sind. Allerdings benötige ich die obere multicolumn für das Bild (siehe ebenfalls Anhang).
Wie kann man dieses Problem lösen? Bzw. welche Package Dokumentation sollte ich dafür mal studieren.
MfG
Dateianhänge
Beispiel.JPG
Beispiel.JPG (77.42 KiB) 2699 mal betrachtet

mr. pink
Forum-Anfänger
Forum-Anfänger
Beiträge: 28
Registriert: Mo 11. Jun 2018, 18:30

Beitrag von mr. pink »

Sehe gerade deine Anmerkung, werde mal das Handbuch studieren.
Danke!

Gast

Beitrag von Gast »

Die obere \multicolumn ist im Beispiel kein Problem:
\documentclass[12pt,a4paper,headsepline=true,twoside]{scrreprt}
\usepackage[utf8]{inputenc}
\usepackage[ngerman]{babel}
\usepackage{booktabs}
\usepackage[demo]{graphicx}
\begin{document}

\begin{table}% [H] ergibt einen Fehler und sollte daher unterbleiben! Siehe auch: https://texwelt.de/wissen/fragen/6635
\centering

\renewcommand{\arraystretch}{1.5}
\caption{Bla}

\begin{tabular*}{\textwidth}{c@{\extracolsep{\fill}}ccc}
\multicolumn{4}{c}{\includegraphics[scale=0.8]{plank}}   \\ \hline \hline
A     &  B   &C    & D   \\ \hline
wert & wert & wert & wert \\    
\end{tabular*}

\parbox{\textwidth}{Anmerkungen zur Tabelle }
\end{table}

\end{document}
Wenn man mit Tabellenüberschriften statt Tabellenunterschriften verwendet, sollte man das scrreprt allerdings auch mitteilen, weil der Abstand sonst über statt der unter der Tabellenüberschrift eingefügt wird. Im folgenden Beispiel mit Gruppe zur Begrenzung der Wirkung von \centering habe ich deshalb zusätzlich Option captions=tableheading eingefügt:
\documentclass[12pt,a4paper,headsepline=true,twoside,captions=tableheading]{scrreprt}
\usepackage[utf8]{inputenc}
\usepackage[ngerman]{babel}
\usepackage{booktabs}
\usepackage[demo]{graphicx}
\begin{document}

\begin{table}% [H] ergibt einen Fehler und sollte daher unterbleiben!
\begingroup
\centering
\renewcommand{\arraystretch}{1.5}
\caption{Bla}
\begin{tabular*}{\textwidth}{c@{\extracolsep{\fill}}ccc}
\multicolumn{4}{c}{\includegraphics[scale=0.8]{plank}}   \\ \hline \hline
A     &  B   &C    & D   \\ \hline
wert & wert & wert & wert \\    
\end{tabular*}
\par\endgroup
Anmerkungen zur Tabelle
\end{table}

\end{document}

Gast

Beitrag von Gast »

Die Abbildung passt eigentlich sehr gut zum Sinn und Zweck von threeparttable. Außerdem würde ich Paket booktabs für die horizontalen Linien empfehlen. Damit kann man auch leicht die Dicke der Linien einstellen. Dagegen würde ich von doppelten Linien, wie im Beispiel mit \hline \hline, abraten.

Gast

Beitrag von Gast »

Übrigens kann man auch die Abbildung bereits vor \begin{tabular*} in einem eigenen Absatz (also mit Leerzeile oder mit \par zwischen Bild und tabular*) setzen. Dann braucht man auch dafür kein \multicolumn. Es ist ein weit verbreiteter Irrtum, dass innerhalb von table nur Tabellen stehen dürfen.

Achja: Bitte beachte: Wie hänge ich ein Bild an meine Frage? Unter dem Link wird auch erklärt, wie man das angehängte Bild per img-Tag so einbindet, dass man es direkt sehen kann, ohne erst darauf klicken zu müssen.

Antworten