Seite 1 von 1

Spaltenbreite in Tabelle verändern

Verfasst: Sa 9. Nov 2019, 12:14
von Jens2102
Hallo zusammen,

ich könnte eure Hilfe gebrauchen. Ich möchte eine Tabelle erstellen in der alle Spalten gleich breit sind. In einigen Zeilen sollen die Spalten außerdem teilweise verbunden sein. Ein Beispiel welches schon ca meinen Vorstellungen entspricht ist folgendes:
\documentclass[13pt, a4paper]{scrartcl}
\usepackage{booktabs,tabularx}
\usepackage{biblatex}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{tabu}

\begin{document}
\begin{table}[!htbp]
\centering
\caption {Ich bastel mir meine Tabelle}
\begingroup
\setlength{\tabcolsep}{1cm}   
\begin{tabular}{|c|c|c|c|c|c|c|}
  \hline
  \multicolumn{7}{|c|}{Bezeichnungen} \\
  \hline
  \multicolumn{2}{|c|}{chemische Bezeichnung} & \multicolumn{2}{|c|}{Werkstoffnummer} & \multicolumn{3}{|c|}{Internat. Bezeichnung} \\
  \hline
  1 & 2 & 3 & 4 & 1 & 2 & 3 \\
  \hline
  &   &   &  &  &  &  \\
  \hline
  \multicolumn{3}{|c|}{a} & \multicolumn{4}{|c|}{}\\
  \hline
\end{tabular}
\endgroup
\label{Legierungselemente}
\end{table}
\end{document}
Die Spalte zwei ist jedoch deutlich breiter als bspw. Spalte eins.

Außerdem würde ich am liebsten die letzte Zeile in zwei gleichgroße Spalten unterteilen und nicht links über drei und rechts über 4 Spalten gehen.

Ich habe mal ein Bild von einer Tabelle angehängt wie ich es am Ende gerne hätte. Auch die grau hinterlegten Zellen hätte ich gerne. Mit \rowcolor[gray]{.6} funktioniert es aber leider nicht zusammen mit \multicolumn in einer Zeile...

Kann mir da jemand helfen? :)

Vielen Dank schon mal im Voraus

Jens

Verfasst: Sa 9. Nov 2019, 15:37
von Bartman
Wie hänge ich ein Bild an meine Frage?

Ein Vorschlag:
\documentclass[fontsize=13pt, captions=tableheading]{scrartcl}% <- geändert
%\usepackage[utf8]{inputenc} nur noch bei einer älteren TeX-Distribution erforderlich
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage[ngerman]{babel}
\usepackage{tabularx}
\usepackage[table]{xcolor}
\usepackage[locale=DE]{siunitx}% für \SI
\usepackage{showframe}

\begin{document}
\begin{table}[htbp]
\footnotesize
\caption{Ich bastel mir meine Tabelle}
\label{tab:Legierungselemente}
{\renewcommand{\tabularxcolumn}[1]{>{\centering\arraybackslash}p{#1}}
\begin{tabularx}{\textwidth}{|X|X|X|}
\hline
\rowcolor{lightgray}
\multicolumn{3}{|c|}{Bezeichnungen} \\
\hline
Chemische Bezeichnung & Werkstoffnummer & Internat. Bezeichnung \\
\hline
Text & Text & Text\\
\hline
\end{tabularx}%
\vspace{-1.4pt}
\begin{tabularx}{\textwidth}{|*9{X|}}
\hline
\rowcolor{lightgray}
\multicolumn{9}{|c|}{Chemische Zusammensetzung}\\
\hline
Text & Text & Text & Text & Text & Text & Text & Text & Text\\
\hline
1 & 2 & 3 & 4 & 5 & 6 & 7 & 8 & 9\\
\hline
\end{tabularx}}%
\vspace{-1.4pt}
\begin{tabularx}{\textwidth}{|X|X|}
\hline
\rowcolor{lightgray}
\multicolumn{2}{|c|}{Mechanische und physikalische Eigenschaften}\\
\hline
Text & \SI{120}{\MPa}\\
\hline
Text & \SI{120}{\MPa}\\
\hline
Text & \SI{120}{\MPa}\\
\hline
Text & \SI{120}{\MPa}\\
\hline
Text & \SI{120}{\MPa}\\
\hline
Text & \SI{120}{\MPa}\\
\hline
Text & \SI{120}{\MPa}\\
\hline
Text & \SI{120}{\MPa}\\
\hline
Text & \SI{120}{\MPa}\\
\hline
\end{tabularx}
\end{table}
\end{document}
Du könntest die Färbung der Zeilen auch weglassen und das bereits in Deiner Präambel geladene Paket booktabs benutzen.

Danke...aber

Verfasst: Di 12. Nov 2019, 01:44
von Jens2102
Das klappt soweit schon mal gut :) Vielen Dank für die Hilfe. Jetzt habe ich nur noch das Problem, dass ich einen Werkstoff mit 10 verschiedenen Elementen habe. Sprich ich brauche 10 Spalten. Aber das funktioniert irgendwie nicht :? liegt das an der multicolumn?

Verfasst: Di 12. Nov 2019, 02:01
von Bartman
Wo ist das Problem? Laut Deinem Wunsch braucht die zweite Tabelle eine weitere Spalte. Dafür änderst Du das Argument des genannten Befehls, das Argument der tabularx-Umgebung und fügst weitere Et-Zeichen ein.

Achtung: Der Faktor des Spaltentyps im zweiten erforderlichen Argument der Tabellenumgebung benötigt ab einer zweistelligen Zahl geschweifte Klammern.

Verfasst: Di 12. Nov 2019, 10:18
von u_fischer
Bartman hat geschrieben: \begin{tabularx}{\textwidth}{|X|X|X|}
Wenn alle Spalten X-Spalten sind, braucht man tabularx nicht. Es macht einem nur das Leben schwer, wenn man \multicolumn verwendet.

Einfach ein bisschen rechnen, ist da viel vernünftiger:
\documentclass{article}
\usepackage{xfp,array}

\begin{document}
\newcommand\mytabwidth[1]{\fpeval{(\textwidth-(#1+1)\arrayrulewidth-(#1*2)\tabcolsep)/#1}pt}

\noindent
x\hfill y

\noindent\begin{tabular}{|p{\mytabwidth{3}}|p{\mytabwidth{3}}|p{\mytabwidth{3}}|}
abc & abc &abc
\end{tabular}

\end{document}