Zentrieren einer Gruppe von Tabellenspalten unter einer breiten Kopfzeile

Zentrieren einer Gruppe von Tabellenspalten unter einer breiten Kopfzeile

In der folgenden Tabelle ist die Spalte „Mittlere Übereinstimmung vs. Zufall“ logischerweise nur eine Spalte, aber sie muss intern ausgerichtet werden: Die Dezimalstellen müssen alle ausgerichtet sein, ebenso die Ungleichheitszeichen. Um diese interne Ausrichtung zu erreichen, habe ich sie in fünf Spalten plus zwei weitere zum Auffüllen aufgeteilt, da „Mittlere Übereinstimmung vs. Zufall“ viel breiter ist als die Ungleichheiten. Ich bin mit diesem Teil so zufrieden, wie er ist.

Die eigentlicheProblemIch habe das Problem, dass ich nicht herausfinden kann, wie ich die Größe der Füllspalten automatisch anpassen kann, sodass der Block mit den Ungleichungen insgesamt zentriert unter der Überschrift erscheint. Im Moment habe ich eine manuelle Füllspalte mit fester Breite m, die ich durch manuelle Anpassung gut genug aussehen lassen kann, aber das ist mühsam und muss angepasst werden, wenn ich das Gesamtlayout erneut ändere.

Ich habe versucht, die mSpaltenspezifikationen in zu ändern m{0pt plus1fill}, aber das „plus1fill“ wird nicht als Teil der Breitenspezifikation erkannt und wird stattdessen eingebettet in der Tabelle angezeigt. Ich habe auch versucht, cfür die Füllspalten mit \hspace{\fill}in den oberen Zellen beider zu verwenden; das führt dazu, dass die Ungleichheitenlinksbündigunter ihrer Überschrift.

Vorschläge?

\documentclass{article}
\usepackage{array}
\usepackage{booktabs}
\begin{document}
% approximate \thickmuskip outside math mode
\def\relskip{\hskip 0.27778em plus0.27778em\relax}
\begin{tabular}[b]{lrm{2.5em}@{}r@{.}l@{\relskip}c@{\relskip}r@{.}l@{}m{1.5em}}
\toprule
  \textbf{Type} &
  \textbf{\# clusters} &
  \multicolumn{7}{c}{\textbf{Mean agreement vs. random}} \\
\midrule
\textbf{ASes}       & 534 & & 99 & 28\% & $>$   & 99 & 20\% & \\
\textbf{Cities}     & 481 & & 99 & 62   & $>$   & 98 & 99   & \\
\textbf{Countries}  &  96 & & 93 & 88   & $\ll$ & 96 & 32   & \\
\textbf{Continents} &   6 & & 83 & 08   & $<$   & 84 & 05   & \\
\bottomrule
\end{tabular}

\end{document}

Darstellung von MWE oben, mit nicht ganz richtiger Ausrichtung der rechten Spalte

Antwort1

Dies berechnet den Platz, der benötigt wird, um die Spalten in Bezug auf zu zentrieren \multicolumn. Ich muss gestehen, dass dies -\tabcolsepeher ein Schummelfaktor ist, da ich nicht herausfinden kann, warum dies erforderlich ist.

\documentclass{article}
\usepackage{array}
\usepackage{booktabs}
\usepackage{siunitx}
\newlength{\myspace}
\begin{document}
% approximate \thickmuskip outside math mode
\bgroup
  \sbox0{\textbf{Mean agreement vs. random}}
  \sbox1{\begin{tabular}{S@{}c@{}S}
    99.28\% & $>$ & 99.20\%
  \end{tabular}}% one row will do
  \global\myspace=\dimexpr 0.5\wd0-0.5\wd1-\tabcolsep\relax
\egroup
\begin{tabular}[b]{lr p{\myspace} S @{}c@{} Sl}
\toprule
  \textbf{Type} &
  \textbf{\# clusters} &
  \multicolumn{5}{c}{\textbf{Mean agreement vs. random}} \\
\midrule
\textbf{ASes}       & 534 & & 99.28\% & $>$   & 99.20\% & \\
\textbf{Cities}     & 481 & & 99.62   & $>$   & 98.99   & \\
\textbf{Countries}  &  96 & & 93.88   & $\ll$ & 96.32   & \\
\textbf{Continents} &   6 & & 83.08   & $<$   & 84.05   & \\
\bottomrule
&&\multicolumn{5}{c}{\rule{0.5pt}{\ht\strutbox}}
\end{tabular}

\end{document}

Demo

Antwort2

Ich würde wahrscheinlich weniger Ausrichtungspunkte verwenden:

Bildbeschreibung hier eingeben

\documentclass{article}
\usepackage{array}
\usepackage{booktabs}
\begin{document}
\newcommand\p{\phantom{\%}}
\begin{tabular}{lr@{\qquad}r@{}>{${}}l<{{}$}@{}l}
\toprule
  \textbf{Type} &
  \multicolumn{1}{c}{\textbf{\# clusters}} &
  \multicolumn{1}{r@{}}{\textbf{Mean agreement}}&
  \multicolumn{2}{l}{\textbf{vs. random}} \\
\midrule
\textbf{ASes}       & 534 & 99.28\% & >&  99.20\%  \\
\textbf{Cities}     & 481 & 99.62\p & >&  98.99    \\
\textbf{Countries}  &  96 & 93.88\p &\ll& 96.32    \\
\textbf{Continents} &   6 & 83.08\p &  <& 84.05    \\
\bottomrule
\end{tabular}

\end{document}

Antwort3

Ich würde die Überschrift kürzen.

\documentclass{article}
\usepackage{array}
\usepackage{booktabs}
\usepackage{siunitx}

\begin{document}

\begin{table}[htp]
\centering

\begin{tabular}{
  @{}
  l
  S[table-format=3.0]
  S[table-format=2.2]
  >{$}c<{$}
  S[table-format=2.2]
  @{}
  }
\toprule
Type &
{\# clusters} &
\multicolumn{3}{c@{}}{%
  \begin{tabular}[t]{@{}c@{}}Mean agreement \\ vs.\ random (\%)\end{tabular}%
} \\
\midrule
ASes       & 534 & 99.28 & >   & 99.20 \\
Cities     & 481 & 99.62 & >   & 98.99 \\
Countries  &  96 & 93.88 & \ll & 96.32 \\
Continents &   6 & 83.08 & <   & 84.05 \\
\bottomrule
\end{tabular}

\caption{Some caption}

\end{table}

\end{document}

Bildbeschreibung hier eingeben

Antwort4

Der folgende Code kombiniert die Idee der Vorberechnung der Tabellenbreite von John Kormylo und tabularray. Außerdem gibt die Tabellenpräambel Folgendes an: Schriftart für die erste Zeile und Spalte (muss nicht \textbfin allen Zellen verwendet werden), mathematischer Typ für die Spalte mit Ungleichheitszeichen (mit Hinzufügen {}am Anfang und am Ende, um den üblichen mathematischen Abstand um binäre Beziehungen zu verwenden) und entfernt Lücken zwischen Spalten mit Zahlen und Ungleichheitszeichen. Die Zahlen werden mit formatiert siunitx, obwohl dies hier nicht erforderlich ist (die Verwendung von lSpalten würde ausreichen).

\documentclass{article}
\usepackage{tabularray}
\UseTblrLibrary{booktabs,siunitx}
\newdimen\myspace

\begin{document}
\bgroup
  \sbox0{%
  \begin{booktabs}{
    colspec={lll},
    row{1}={font=\bfseries},
  }
  Continents & \# clusters & Mean agreement vs. random \\
  \end{booktabs}%
  }
  \global\myspace=\wd0
\egroup

\begin{booktabs}[
  baseline=b,
]{
  width={\myspace},
  colspec={lrXS[table-format=2.2{\%}]cS[table-format=2.2{\%}]X},
  row{1}={font=\bfseries},
  column{1}={font=\bfseries},
  column{5}={mode=math,preto={{}},appto={{}},colsep=0pt},
  column{4}={rightsep=0pt},
  column{6}={leftsep=0pt},
  cell{1}{3}={c=5}{c},
}
\toprule
Type & \# clusters & Mean agreement vs. random \\
\midrule
ASes       & 534 & & 99.28\% & >   & 99.20\% & \\
Cities     & 481 & & 99.62   & >   & 98.99   & \\
Countries  &  96 & & 93.88   & \ll & 96.32   & \\
Continents &   6 & & 83.08   & <   & 84.05   & \\
\bottomrule
\end{booktabs}

\end{document}

Das Ergebnis: Bildbeschreibung hier eingeben

verwandte Informationen