
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.
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}
Antwort2
Ich würde S
den Spaltentyp aus dem siunitx
Paket verwenden, S
die Spaltenbreite bestimmen und \cmidrule
unten 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}
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 C
wie 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}
Antwort4
Ich hätte verwendet:
- Die neue
w{<align>}{<wd>}
Spalte zur Festlegung der Breite aller Spalten \setlength{\tabcolsep}{0.5em}
(schafft1em
Platz zwischen den Spalten)- Getrimmt
cmidrule
- Keine Seitenlager (
@{}
) - Eine Stufe kleinere Schrift in den Überschriften
booktab
-Regeln undaddlinespace[<wd>]
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}