Mehrere Spalten in der Tabelle sind nicht zentriert

Mehrere Spalten in der Tabelle sind nicht zentriert

Ich habe einige Probleme mit der Verwendung von \multicolumn. Wie auf dem Screenshot unten zu sehen ist, sind die Wörter „Classical“ und „Squared“ korrekt in der Mitte der Spalte ausgerichtet. Das Wort „Exponential“ ist jedoch nicht richtig zentriert.

Bildbeschreibung hier eingeben

Der Code lautet:

\begin{table}[]
\setlength{\tabcolsep}{12pt}
\centering
\begin{tabular}{l c c c c c c}
\hline\hline
\\\\[-4.3\medskipamount]
 & \multicolumn{2}{c}{Classic} & \multicolumn{2}{c}{Squared} & \multicolumn{2}{c}{Exponential} \\
\textit{a} & 70 & 30 & 70 & 30 & 70 & 30 \\ [0.5ex]
\hline
\\\\[-3.9\medskipamount]
S100 & 91 & 31 & 71 & 01 & 21 & 41 \\
S100 & 91 & 31 & 71 & 01 & 21 & 41 \\
S100 & 91 & 31 & 71 & 01 & 21 & 41 \\
[1ex] \hline
\end{tabular}
\end{table}

Ich würde lieber weiterhin das tabellarische Paket in der Lösung verwenden. Vielen Dank im Voraus!

Antwort1

Der Grund ist, dass dieses Wort etwas zu lang ist. Natürlich können Sie den Wert von erhöhen \tabcolsep. Eine andere Lösung verwendet einen \makebox[0pt], wodurch das Wort symmetrisch leicht in den Spaltenzwischenraum hineinragt.

Ansonsten empfehle ich, die Regeln von zu verwenden booktabs, die eine variable Dicke haben, und etwas vertikalen Abstand um die Regeln herum hinzuzufügen. So müssen Sie die Abstände nicht mehr manuell anpassen:

\documentclass{article}
\usepackage{booktabs} 

\begin{document}

\begin{table}[]
\setlength{\tabcolsep}{12pt}
\centering
\begin{tabular}{l c c c c c c}
\toprule\midrule
 & \multicolumn{2}{c}{Classic} & \multicolumn{2}{c}{Squared} & \multicolumn{2}{c}{\makebox[0pt]{Exponential}} \\
\textit{a} & 70 & 30 & 70 & 30 & 70 & 30 \\ [0.5ex]
\midrule
\\\\[-3.9\medskipamount]
S100 & 91 & 31 & 71 & 01 & 21 & 41 \\
S100 & 91 & 31 & 71 & 01 & 21 & 41 \\
S100 & 91 & 31 & 71 & 01 & 21 & 41 \\
\bottomrule
\end{tabular}
\end{table}

\end{document} 

Bildbeschreibung hier eingeben

Antwort2

Ich würde Sden Spaltentyp aus dem siunitxPaket verwenden, Sdie Spaltenbreite bestimmen und \cmidruleunten mehrspaltige Zellen hinzufügen:

\documentclass[12pt,a4paper]{article}
\usepackage{booktabs}
\usepackage{siunitx}

\begin{document}
    \begin{table}
\centering
\begin{tabular}{l *{6}{S[table-format=2,
                         table-column-width=2em]}
                }
    \toprule
            & \multicolumn{2}{c}{Classic} 
                            & \multicolumn{2}{c}{Squared} 
                                            & \multicolumn{2}{c}{Exponential} \\
    \cmidrule{2-3}\cmidrule(lr){4-5}\cmidrule{6-7}
\textit{a}  & 70    & 30    & 70    & 30    & 70    & 30 \\
    \midrule
S100        & 91    & 31    & 71    & 01    & 11    & 41 \\
S100        & 91    & 31    & 71    & 01    & 21    & 41 \\
S100        & 91    & 31    & 71    & 01    & 21    & 41 \\ 
    \bottomrule
\end{tabular}
    \end{table}
\end{document}

Bildbeschreibung hier eingeben

Antwort3

Das Problem bei der Verwendung \makebox[0pt]{}ist, dass, wie Bernard sagte, die lange Kopfzeile den Spaltenabstand überlappt, was ziemlich hässlich aussehen kann. Um dies zu vermeiden, sollte die Summe der Breiten der beiden numerischen Spalten mindestens gleich der Breite der langen Kopfzeile sein. Dies kann genau berechnet und in einem neuen Spaltentyp Cwie folgt definiert werden.

\documentclass[12pt,a4paper]{article}
\usepackage{booktabs, array}    
\begin{document}

\begin{table}
\setlength{\tabcolsep}{12pt}
\newlength\wexp
\settowidth{\wexp}{Exponential}
\newcolumntype{C}{>{\centering\arraybackslash}p{\dimexpr.5\wexp-\tabcolsep}}

\centering
\begin{tabular}{l c c c c C C}
\toprule
           & \multicolumn{2}{c}{Classic} & \multicolumn{2}{c}{Squared} & \multicolumn{2}{c}{Exponential} \\
\textit{a} & 70 & 30 & 70 & 30 & 70 & 30 \\ \midrule
S100       & 91 & 31 & 71 & 01 & 11 & 41 \\
S100       & 91 & 31 & 71 & 01 & 21 & 41 \\
S100       & 91 & 31 & 71 & 01 & 21 & 41 \\ \bottomrule
\end{tabular}
\end{table}

\end{document}

Bildbeschreibung hier eingeben

Antwort4

Ich hätte verwendet:

  1. Die neue w{<align>}{<wd>}Spalte zur Festlegung der Breite aller Spalten
  2. \setlength{\tabcolsep}{0.5em}(schafft 1emPlatz zwischen den Spalten)
  3. Getrimmtcmidrule
  4. Keine Seitenlager ( @{})
  5. Eine Stufe kleinere Schrift in den Überschriften
  6. booktab-Regeln undaddlinespace[<wd>]

Bildbeschreibung hier eingeben

Und das MWE:

\documentclass{article}
\usepackage{booktabs, array, caption} 

\begin{document}

\begin{table}[ht]
\caption{A table with figures\label{tab:atable}}
\setlength{\tabcolsep}{0.5em}
\centering
\begin{tabular}{@{}w{l}{4em}*{6}{w{c}{2em}}@{}}
\toprule
 & \multicolumn{2}{c}{\small Classic} & \multicolumn{2}{c}{\small Squared} & \multicolumn{2}{c@{}}{\makebox[0pt]{\small Exponential}} \\\cmidrule(l{0.75em}r{0.75em}){2-3}\cmidrule(l{0.75em}r{0.75em}){4-5}\cmidrule(l{0.65em}){6-7}
\textit{a} & 70 & 30 & 70 & 30 & 70 & 30 \\ 
\midrule\addlinespace[1ex]
S100 & 91 & 31 & 71 & 01 & 21 & 41 \\
S100 & 91 & 31 & 71 & 01 & 21 & 41 \\
S100 & 91 & 31 & 71 & 01 & 21 & 41 \\
\bottomrule
\end{tabular}
\end{table}

\end{document}

verwandte Informationen