넓은 헤더 아래에 테이블 열 그룹을 중앙에 배치

넓은 헤더 아래에 테이블 열 그룹을 중앙에 배치

다음 표에서 "평균 일치 대 무작위" 열은 논리적으로 단 하나의 열이지만 여러 내부 정렬이 필요합니다. 소수점은 모두 정렬되어야 하며 부등호도 마찬가지입니다. 내부 정렬이 이루어지도록 하기 위해 5개의 열과 패딩을 위한 2개의 열로 분할했습니다. "평균 일치 대 무작위"가 불평등보다 훨씬 넓기 때문입니다. 그 부분은 있는 그대로 만족해요.

실제문제나는 불평등 블록이 전체적으로 헤더 아래 중앙에 표시되도록 패딩 열의 크기를 자동으로 조정하는 방법을 알 수 없습니다. 지금은 m열을 사용하는 수동 고정 너비 패딩을 사용하고 있는데, 수동 조정을 통해 충분히 보기 좋게 만들 수 있지만 이는 지루하며 전체 레이아웃을 다시 변경하면 조정해야 합니다.

m열 사양을 로 변경하려고 시도했지만 m{0pt plus1fill}"plus1fill"이 너비 사양의 일부로 인식되지 않고 대신 테이블에 포함되어 표시됩니다. 나는 또한 양쪽의 상단 셀에 c패딩 열을 사용해 보았습니다. \hspace{\fill}불평등을 초래하는 것은왼쪽 플러시헤더 아래에 있습니다.

제안?

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

가장 오른쪽 열이 정확하지 않게 정렬된 위의 MWE 렌더링

답변1

이는 열을 중앙에 배치하는 데 필요한 공간을 계산합니다 \multicolumn. -\tabcolsep왜 그것이 필요한지 알 수 없기 때문에 이것이 퍼지 요소에 더 가깝다는 것을 고백해야 합니다 .

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

데모

답변2

아마도 더 적은 수의 정렬 지점을 사용할 것입니다.

여기에 이미지 설명을 입력하세요

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

답변3

헤더를 줄이겠습니다.

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

여기에 이미지 설명을 입력하세요

답변4

다음 코드는 John Kormylo의 테이블 너비 사전 계산 아이디어와 tabularray. 또한 테이블 서문은 다음을 지정합니다: 첫 번째 행과 열의 글꼴( \textbf모든 셀에서 사용할 필요 없음 ), 부등 기호가 있는 열의 수학 유형( {}이진 관계 주위에 일반적인 수학 간격을 사용하기 위해 시작과 끝에 추가 포함) ) 숫자와 부등호가 있는 열 사이의 간격을 제거합니다. siunitx여기서는 필요하지 않지만 숫자는 를 사용하여 형식화됩니다 ( l열을 사용하면 충분합니다).

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

결과: 여기에 이미지 설명을 입력하세요

관련 정보