Hallo, mir ist die Tabelle insgesamt nicht breit genug. Wie kann ich (global) die Zellenbreite in dieser Tabelle festlegen?

Open in Online-Editor
\documentclass{scrartcl}
\begin{document}
\begin{tabular}     {|c|c|c|c|c|c|c|c|c|}
  \hline
  \multicolumn{4}{|c|}{A} & \multicolumn{3}{|c|}{B} & C \\
  \hline
  1 & 2 & 3 & 4 & 1 & 2 & 3 &  \\
  \hline
  &   &   &  &  &  &  &  \\
  \hline
  \multicolumn{3}{|c|}{a} & \multicolumn{5}{|c|}{}\\
  \hline
\end{tabular}
\end{document}

zu schmale Spalten

gefragt 31 Mai, 14:13

runix's gravatar image

runix
5191343
Akzeptiert: 50%

bearbeitet 01 Jun, 02:23

saputello's gravatar image

saputello
18.4k22352

Du hast 9 Spalten definiert, verwendest aber nur 8. Das solltest Du korrigieren!

(01 Jun, 01:54) saputello

Davon abgesehen, dass diese Tabelle mit ihren vielen vertikalen und horizontalen Linien insgesamt eher hässlich ist und nur zum Ausfüllen aber nicht zum Lesen taugt, gibt es diverse Möglichkeiten, die Spaltenbreiten zu beeinflussen. Die einfachste Möglichkeit besteht darin, die Spaltenabstände zu erhöhen:

Open in Online-Editor
\documentclass{scrartcl}
\setlength{\tabcolsep}{2em}
\begin{document}
%\begingroup
%\setlength{\tabcolsep}{2em}   
\begin{tabular}{|c|c|c|c|c|c|c|c|c|}
  \hline
  \multicolumn{4}{|c|}{A} & \multicolumn{3}{|c|}{B} & C \\
  \hline
  1 & 2 & 3 & 4 & 1 & 2 & 3 &  \\
  \hline
  &   &   &  &  &  &  &  \\
  \hline
  \multicolumn{3}{|c|}{a} & \multicolumn{5}{|c|}{}\\
  \hline
\end{tabular}
%\endgroup
\end{document}

Soll das nur die eine Tabelle betreffen, kann man die entsprechende Längenänderung unmittelbar vor der Tabelle vornehmen und zusammen mit der Tabelle in eine eigene Gruppe packen. Dazu kommentiert man die Zeile \setlength{\tabcolsep}{2em} in der Dokumentpräambel aus und aktiviert die drei auskommentierten Zeilen. Bei Verwendung einer table-Umgebung genügt es, die Längenänderung zwischen \begin{table} und \begin{tabular} einzufügen.

klzzwxh:0004abcolsep-Lösung

Zu beachten ist bei dieser Lösung, dass der zusätzliche Spaltenabstand wirklich zwischen und nicht in den Spalten eingefügt wird. Deshalb ändert sich im Beispiel auch nicht wirklich viel, wenn man die c-Spalten durch r- oder l-Spalten ersetzt, die Spalten scheinen dann trotzdem zentriert.

Man kann natürlich stattdessen auch die Spaltenbreiten einzeln oder in Gruppen explizit festlegen, indem man p-Spalten verwendet:

Open in Online-Editor
\documentclass{scrartcl}
\usepackage{array}
\begin{document}  
\begin{tabular}{|*5{>{\centering}p{3em}|}*3{>{\centering\arraybackslash}p{1.5em}|}}
  \hline
  \multicolumn{4}{|c|}{A} & \multicolumn{3}{c|}{B} & C \\
  \hline
  1 & 2 & 3 & 4 & 1 & 2 & 3 &  \\
  \hline
  &   &   &  &  &  &  &  \\
  \hline
  \multicolumn{3}{|c|}{a} & \multicolumn{5}{c|}{}\\
  \hline
\end{tabular}
\end{document}

p-Spalten

Das Paket array wurde hier verwenden, um den Inhalt der p-Spalten zu zentrieren.

Bei der Gelegenheit habe ich auch gleich die Spaltendefinition auf die verwendeten acht Spalten reduziert und die neunte, in der Tabelle nicht verwendete Spalte entfernt. Außerdem habe ich aufeinander folgende, identische Spaltendefinitionen durch den Wiederholungsoperator * angegeben, was die Deklaration übersichtlicher macht.

Desweiteren habe ich die \multicolumn-Angaben korrigiert. Die Spaltentrennlinie sollte (außer bei der ersten Spalte) immer nur rechts angegeben werden! Anderenfalls können in einigen Fällen sogar dickere Linien oder hüpfende vertikale Linien entstehen:

p-Spalten (mit falschen |-Angaben)

Wenn gleichzeitig wie im ersten Beispiel alle Spalten nahezu gleich breit sind, kann man auch tabularx verwenden, um tatsächlich gleich breite Spalten vorzuschreiben und die Breite gleichmäßig auf eine gewünschte Tabellenbreite verteilen:

Open in Online-Editor
\documentclass{scrartcl}
\usepackage{tabularx}
\begin{document}
\begin{tabularx}{.75\textwidth}{|*8{>{\centering\arraybackslash}X|}}
  \hline
  \multicolumn{4}{|c|}{A} & \multicolumn{3}{c|}{B} & C \\
  \hline
  1 & 2 & 3 & 4 & 1 & 2 & 3 &  \\
  \hline
  &   &   &  &  &  &  &  \\
  \hline
  \multicolumn{3}{|c|}{a} & \multicolumn{5}{c|}{}\\
  \hline
\end{tabularx}
\end{document}

tabularx-Lösung

Hier wird die Zentrierung dann durch das \centering in der Spaltendeklaration vorgegeben. Das \arraybackslash in der Spaltendeklaration sorgt dafür, dass \\ weiterhin als Tabellenzeilenende und nicht als harter Umbruch (entsprechend \centering) verstanden wird. Es wird nur für die letzte Spalte benötigt und nur, wenn man die Tabellenzeilen nicht stattdessen mit \tabularnewline beenden will.

Für Tabellen mit rein – oder zumindest hauptsächlich – numerischem Inhalt, kann man sogar siunitx verwenden, um die Spaltenbreiten einzustellen:

Open in Online-Editor
\documentclass{scrartcl}
\usepackage{siunitx}
\begin{document}  
\begin{tabular}{|*8{S[table-column-width=3em,table-number-alignment=center]|}}
  \hline
  \multicolumn{4}{|c|}{A} & \multicolumn{3}{c|}{B} & C \\
  \hline
  1 & 2 & 3 & 4 & 1 & 2 & 3 &  \\
  \hline
  &   &   &  &  &  &  &  \\
  \hline
  \multicolumn{3}{|c|}{a} & \multicolumn{5}{c|}{}\\
  \hline
\end{tabular}
\end{document}

siunitx-Lösung

Hier wird die Zentrierung der Zahlen durch die Eigenschaft table-number-alignment=center erreicht. Diverse andere Ausrichtungen sind möglich. Siehe dazu die Anleitung zum Paket siunitx.

Siehe außerdem: Unterschied zwischen: tabular, tabularx und tabulary?

Permanenter link

beantwortet 01 Jun, 01:31

saputello's gravatar image

saputello
18.4k22352

bearbeitet 02 Jun, 01:57

Deine Antwort auf die Frage (nicht auf andere Antworten)
Knebel-Vorschau

Folge dieser Frage

Per E-Mail:

Wenn Du Dich anmeldest, kannst Du Updates hier abonnieren

Per RSS:

Antworten

Antworten und Kommentare

Aktuelle Buch-Infos

LaTeX Cookbook

LaTeX Beginners Guide

Limitierter Rabatt ebook
50% Coupon code tDRet6Y

Markdown-Grundlagen

  • *kursiv* oder _kursiv_
  • **Fett** oder __Fett__
  • Link:[Text](http://url.com/ "Titel")
  • Bild?![alt Text](/path/img.jpg "Titel")
  • nummerierte Liste: 1. Foo 2. Bar
  • zum Hinzufügen ein Zeilenumbruchs füge einfach zwei Leerzeichen an die Stelle ein, an der die neue Zeile sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Zugeordnete Themen:

×185
×23
×17
×7
×2

Frage gestellt: 31 Mai, 14:13

Frage wurde angeschaut: 649 Mal

Zuletzt aktualisiert: 02 Jun, 01:57