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 '16, 20:13

runix's gravatar image

runix
1.0k247486
Akzeptiert-Rate: 0%

bearbeitet 01 Jun '16, 08:23

saputello's gravatar image

saputello
11.1k174365

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

(01 Jun '16, 07: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 '16, 07:31

saputello's gravatar image

saputello
11.1k174365
Akzeptiert-Rate: 51%

bearbeitet 02 Jun '16, 07:57

Deine Antwort
Vorschau umschalten

Folgen dieser Frage

Per E-Mail:

Wenn sie sich anmelden, kommen Sie für alle Updates hier in Frage

Per RSS:

Antworten

Antworten und Kommentare

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ügen Sie einfach zwei Leerzeichen an die Stelle an der die neue Linie sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Frage-Themen:

×257
×32
×21
×11
×2

gestellte Frage: 31 Mai '16, 20:13

Frage wurde gesehen: 17,523 Mal

zuletzt geändert: 02 Jun '16, 07:57