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 m
Spaltenspezifikationen 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, c
fü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}
Antwort1
Dies berechnet den Platz, der benötigt wird, um die Spalten in Bezug auf zu zentrieren \multicolumn
. Ich muss gestehen, dass dies -\tabcolsep
eher 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}
Antwort2
Ich würde wahrscheinlich weniger Ausrichtungspunkte verwenden:
\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}
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 \textbf
in 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 l
Spalten 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}