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 m
columnas, 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 m
especificaciones 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 c
para 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}
Respuesta1
Esto calcula el espacio necesario para centrar las columnas con respecto al archivo \multicolumn
. Debo confesar que -\tabcolsep
es 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}
Respuesta2
Probablemente usaría menos puntos de alineación:
\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}
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 \textbf
en 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 l
columnas 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}