Tabelle über ganze Seite, aber Spaltenbreite variabel

Tabellen und Grafiken erstellen und anordnen


Jens2102
Forum-Anfänger
Forum-Anfänger
Beiträge: 12
Registriert: Do 11. Jul 2019, 16:36

Tabelle über ganze Seite, aber Spaltenbreite variabel

Beitrag von Jens2102 »

Hallo zusammen,

ich habe ein kleines Problem bei der Formatierung meiner LaTeX-Tabelle. Ich habe eine Tabelle mit 8 Spalten und 5 Zeilen. Diese soll über die gesamte Seitenbreite gehen. Ich möchte die Spaltenbreite so anpassen, dass in einer Zeile kein Zeilenumbruch erzwungen wird. Dazu habe ich zwei verschiedene Ansätze ausprobiert, die jedoch beide nicht erfolgreich waren. Dazu hier meine Minimalbeispiele...
\documentclass[english]{scrartcl}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{babel}
\usepackage{booktabs,tabularx}
\usepackage[backend=biber]{biblatex}

\begin{document}
  \begin{table}[!ht]
    \begin{tabularx}{\textwidth}{*{8}{>{\centering\arraybackslash}X}} \toprule
      Phase 1 & Mg & Al & Si & Cr & Mn & Fe & Ni \\ \midrule
      1 & 0,1-0,9 & 57,5-59,3 & 4,9-7,0 & 0,1-0,3 & 0,0-0,1 & 0,6-1,9 & 32,6-34,0 \\
      2 & 0,0-0,2 & 66,0-68,4 & 13,7-14,2 & 3,6-4,1 & 0,1-1,0 & 12,0-12,4 & 1,3-2,9 \\
      3 & - & 78,5-79,3 & 2,0-2,7 & 0,3-0,4 & 0,1 & 4,1-5,0 & 11,6-13,7 \\
      4 & 0,0-0,3 & 75,8-76,9 & 0,1-0,8 & 0,0-0,1 & 0,0-0,1 & 0,1-0,9 & 22,2-22,7 \\
\bottomrule
    \end{tabularx}
  \end{table}
\end{document}

und

\documentclass[english]{scrartcl}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{babel}
\usepackage{booktabs,tabularx}
\usepackage[backend=biber]{biblatex}

\begin{document}
  \begin{table}[!ht]
\begin{tabularx}{\textwidth}{XXXXXXXX} \toprule
\multicolumn{1}{c}{Phase} & \multicolumn{1}{c}{Mg} & \multicolumn{1}{c}{Al} & \multicolumn{1}{c}{Si} & \multicolumn{1}{c}{Cr} & \multicolumn{1}{c}{Mn} & \multicolumn{1}{c}{Fe} & \multicolumn{1}{c}{Ni} \\ \midrule
\multicolumn{1}{c}{1} & \multicolumn{1}{c}{0,1-0,9} & \multicolumn{1}{c}{57,5-59,3} & \multicolumn{1}{c}{4,9-7,0} & \multicolumn{1}{c}{0,1-0,3} & \multicolumn{1}{c}{0,0-0,1} & \multicolumn{1}{c}{0,6-1,9} & \multicolumn{1}{c}{32,6-34,0} \\
\multicolumn{1}{c}{2} & \multicolumn{1}{c}{0,0-0,2} & \multicolumn{1}{c}{66,0-68,4} & \multicolumn{1}{c}{13,7-14,2} & \multicolumn{1}{c}{3,6-4,1} & \multicolumn{1}{c}{0,3-1,0} & \multicolumn{1}{c}{12,0-12,4} & \multicolumn{1}{c}{1,3-2,9} \\
\multicolumn{1}{c}{3} & \multicolumn{1}{c}{-} & \multicolumn{1}{c}{78,5-79,3} & \multicolumn{1}{c}{2,0-2,7} & \multicolumn{1}{c}{0,3-0,4} & \multicolumn{1}{c}{0,1} & \multicolumn{1}{c}{4,1-5,0} & \multicolumn{1}{c}{11,6-13,7} \\
\multicolumn{1}{c}{4} & \multicolumn{1}{c}{0,0-0,3} & \multicolumn{1}{c}{75,8-76,9} & \multicolumn{1}{c}{0,1-0,8} & \multicolumn{1}{c}{0,0-0,1} & \multicolumn{1}{c}{0,0-0,1} & \multicolumn{1}{c}{0,1-0,9} & \multicolumn{1}{c}{22,2-22,7} \\
\bottomrule
\end{tabularx}
  \end{table}
\end{document}
Die zweite Tabelle hat das Problem, dass sie nicht die Seitenbreite einhält. Eigentlich möchte ich auch vor und nach den Bindestrichen immer ein Leerzeichen. Aber dann geht die Tabelle über den Bildrand hinaus. Die erste Tabelle macht von alleine Zeilenumbrüche die ich so nicht haben möchte....


Kann mir irgendwer helfen?

Vielen Dank im Voraus und VG Jens

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

Beitrag von Bartman »

Das Fehlen der Leerzeichen ist bei Bereichsangaben meines Wissens so vorgesehen, aber rein technisch betrachtet ist es machbar:
\documentclass[english]{scrartcl}
\usepackage[T1]{fontenc}
%\usepackage[utf8]{inputenc}% Ausgabe 28 in ltnews auf CTAN
\usepackage{lmodern}
\usepackage{babel}
\usepackage{booktabs,tabularx}
\usepackage{showframe}

\begin{document}
\begin{table}[!ht]
    \small
    \setlength{\tabcolsep}{.88\tabcolsep}
    \renewcommand{\tabularxcolumn}[1]{>{\centering\arraybackslash}p{#1}}
    \begin{tabularx}{\textwidth}{c *7X} 
    \toprule
    Phase & Mg & Al & Si & Cr & Mn & Fe & Ni \\ 
    \midrule
    1 & 0,1\,--\,0,9 & 57,5\,--\,59,3 & 4,9\,--\,7,0 & 0,1\,--\,0,3 & 0,0\,--\,0,1 & 0,6\,--\,1,9 & 32,6\,--\,34,0 \\
    2 & 0,0\,--\,0,2 & 66,0\,--\,68,4 & 13,7\,--\,14,2 & 3,6\,--\,4,1 & 0,1\,--\,1,0 & 12,0\,--\,12,4 & 1,3\,--\,2,9 \\
    3 & -- & 78,5\,--\,79,3 & 2,0\,--\,2,7 & 0,3\,--\,0,4 & 0,1 & 4,1\,--\,5,0 & 11,6\,--\,13,7 \\
    4 & 0,0\,--\,0,3 & 75,8\,--\,76,9 & 0,1\,--\,0,8 & 0,0\,--\,0,1 & 0,0\,--\,0,1 & 0,1\,--\,0,9 & 22,2\,--\,22,7 \\
    \bottomrule
\end{tabularx}
\end{table} 
\end{document}
Der bequeme Nutzer nimmt die Suche-und-Ersetze-Funktion seines Editors. Wer mehr Zeit hat, kann bei jeder Bereichsangabe den geeigneten Befehl des Pakets siunitx bemühen.

Jens2102
Forum-Anfänger
Forum-Anfänger
Beiträge: 12
Registriert: Do 11. Jul 2019, 16:36

Beitrag von Jens2102 »

Ok. Das sieht schonmal sehr gut aus. Ich habe aber leider gerade feststellen müssen, dass ich bei meiner Dokumentenklasse in meinem Minimalbeispiel eine andere gewählt habe als in meinem eigentlichen Dokument.

Dort nutze ich nämlich \documentclass[13pt, a4paper]{scrartcl}

Füge ich dieses ein erhalte ich folgendes Minimalbeispiel:
\documentclass[13pt, a4paper]{scrartcl}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}% Ausgabe 28 in ltnews auf CTAN
\usepackage{lmodern}
\usepackage{babel}
\usepackage{booktabs,tabularx}
\usepackage{showframe}

\begin{document}
\begin{table}[!ht]
    \small
    \setlength{\tabcolsep}{.88\tabcolsep}
    \renewcommand{\tabularxcolumn}[1]{>{\centering\arraybackslash}p{#1}}
    \begin{tabularx}{\textwidth}{c *7X}
    \toprule
    Phase & Mg & Al & Si & Cr & Mn & Fe & Ni \\
    \midrule
    1 & 0,1\,--\,0,9 & 57,5\,--\,59,3 & 4,9\,--\,7,0 & 0,1\,--\,0,3 & 0,0\,--\,0,1 & 0,6\,--\,1,9 & 32,6\,--\,34,0 \\
    2 & 0,0\,--\,0,2 & 66,0\,--\,68,4 & 13,7\,--\,14,2 & 3,6\,--\,4,1 & 0,1\,--\,1,0 & 12,0\,--\,12,4 & 1,3\,--\,2,9 \\
    3 & -- & 78,5\,--\,79,3 & 2,0\,--\,2,7 & 0,3\,--\,0,4 & 0,1 & 4,1\,--\,5,0 & 11,6\,--\,13,7 \\
    4 & 0,0\,--\,0,3 & 75,8\,--\,76,9 & 0,1\,--\,0,8 & 0,0\,--\,0,1 & 0,0\,--\,0,1 & 0,1\,--\,0,9 & 22,2\,--\,22,7 \\
    \bottomrule
\end{tabularx}
\end{table}
\end{document}

Dort passt es mit den Abständen erst wieder ab der Größe \scriptsize.

Das ist aber schon sehr klein.....Gibt es noch eine alternative Lösung?

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

Beitrag von Bartman »

Müssen die Spalten mit den Bereichsangaben die gleiche Breite haben? Wenn nicht, dann könntest Du X durch c ersetzen und darfst die Schriftgröße auf \footnotesize einstellen. Mit einem passenden Faktor für \tabcolsep genügt dann aber die tabular-Umgebung.

Falls es der Platz auf Deiner Seite zulässt, kannst Du noch \addlinespace zwischen den Zeilen einfügen.

Jens2102
Forum-Anfänger
Forum-Anfänger
Beiträge: 12
Registriert: Do 11. Jul 2019, 16:36

Beitrag von Jens2102 »

Perfekt. So klappt es wie ich es mir vorstelle. Nur das kompilieren dauert jetzt deutlich länger. Aber damit kann ich leben :D

Vielen Dank für die schnelle Hilfe :)

VG

Antworten