Centrar un grupo de columnas de la tabla bajo un encabezado ancho

Centrar un grupo de columnas de la tabla bajo un encabezado ancho

En la siguiente tabla, la columna "Concordancia media versus aleatoria" es lógicamente solo una columna, pero necesita mucha alineación interna: se supone que todos los puntos decimales deben alinearse, al igual que los signos de desigualdad. Para lograr esa alineación interna, lo he dividido en cinco columnas más dos más para el relleno, porque "Acuerdo medio versus aleatorio" es mucho más amplio que las desigualdades. Estoy contento con esa parte tal como está.

El actualproblemaLo que tengo es que no puedo entender cómo hacer que las columnas de relleno tengan un tamaño automático para que el bloque de desigualdades parezca, en general, centrado debajo del encabezado. En este momento tengo un relleno manual de ancho fijo usando mcolumnas, que puedo hacer que se vean bastante bien mediante el ajuste manual, pero eso es tedioso y debe ajustarse si vuelvo a cambiar el diseño general.

Intenté cambiar las mespecificaciones de la columna a m{0pt plus1fill}, pero "plus1fill" no se reconoce como parte de la especificación de ancho y, en su lugar, aparece incrustado en la tabla. También intenté usar cpara las columnas de relleno, \hspace{\fill}en las celdas superiores de ambas; que hace que las desigualdades seannivelado a la izquierdadebajo de su encabezado.

¿Sugerencias?

\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}

representación de MWE arriba, con una alineación no del todo correcta de la columna más a la derecha

Respuesta1

Esto calcula el espacio necesario para centrar las columnas con respecto al archivo \multicolumn. Debo confesar que -\tabcolsepes más bien un factor de manipulación ya que no puedo entender por qué es necesario.

\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}

manifestación

Respuesta2

Probablemente usaría menos puntos de alineación:

ingrese la descripción de la imagen aquí

\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}

Respuesta3

Acortaría el encabezado.

\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}

ingrese la descripción de la imagen aquí

Respuesta4

El siguiente código combina la idea de precalcular el ancho de la tabla de John Kormylo y tabularray. Además, el preámbulo de la tabla especifica: fuente para la primera fila y columna (no es necesario usarla \textbfen todas las celdas), tipo matemático para la columna con signos de desigualdad (con agregados {}al principio y al final para usar el espaciado matemático habitual alrededor de relaciones binarias). ) y elimina espacios entre columnas con números y signos de desigualdad. Los números tienen el formato siunitx, aunque aquí no es necesario (usar lcolumnas sería suficiente).

\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}

El resultado: ingrese la descripción de la imagen aquí

información relacionada