그룹화된 테이블 형식 열의 숫자 정렬

그룹화된 테이블 형식 열의 숫자 정렬

tabularx를 사용하여 테이블 형식을 지정하려고 합니다. 아래를 참조하세요.

테이블

테이블 내용은 중요하지 않습니다. 그냥 거기에 임의의 숫자를 넣었을 뿐입니다. 보시다시피, 저는 사용자 정의 열 유형을 사용하고 열 구분 기호를 수정하여 4개 범주(Apple, ...)와 전체 범주(2~4열)를 3개 열 블록으로 그룹화하려고 했습니다.

카테고리 아래에 있는 cmidrules을 적절하게 정렬하는 데 꽤 많은 시간을 보냈지만 지금은 열 그룹과 제대로 일치하고 있는 것 같습니다. 다음과 같은 두 가지 문제가 남아 있습니다.

  • 열 내용을 중앙에 배치하기 위한 새로운 열 유형을 도입했지만 모든 것이 여전히 왼쪽 정렬되어 있는 것 같습니다.
  • 마지막 행의 음수 값을 맨 위 행의 양수로만 정렬해야 합니다. 그래서 이것은 어쨌든 열을 중앙에 맞추고 싶지 않고 오른쪽 정렬이 필요하다는 것을 의미한다고 생각합니다. siunitx 열 유형에 대해서도 읽었지만 이를 내 테이블에 성공적으로 통합할 수 없었습니다.

MWE를 첨부했습니다. 미리 도움을 주셔서 감사합니다!

\documentclass[11pt]{scrreprt}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[english]{babel}
\usepackage[scaled=1]{uarial}
\renewcommand{\familydefault}{\sfdefault}
\usepackage{amsmath}
\usepackage{amssymb}
\usepackage{graphicx}
\usepackage{array}
\usepackage{booktabs}
\usepackage{tabularx}
\usepackage{multirow}
\usepackage{siunitx}

\begin{document}

\newcommand{\ap}[1]{AP\textsubscript{#1}}
\newcommand{\apavg}[0]{AP\textsubscript{\(\varnothing\)}}

\begin{figure}[!htbp]
  \centering
  \tiny
  \newcolumntype{C}{>{\centering\arraybackslash}X} % centered X-column
  \newcolumntype{B}{*{3}{C}} % block of 3 columns
  \newcolumntype{d}{@{\hspace{3\tabcolsep}}} % 150% spacing
  \begin{tabularx}{\textwidth}{c d B d B d B d B d B @{\hspace{2\tabcolsep}}}
    \toprule
    \multirow{2}[3]{*}{Model} & \multirow{2}[3]{*}{\ap{50}} & \multirow{2}[3]{*}{\ap{75}} & \multirow{2}[3]{*}{\apavg} & \multicolumn{3}{@{}cd}{Apple} & \multicolumn{3}{@{}cd}{Banana} & \multicolumn{3}{@{}cd}{Potato} & \multicolumn{3}{@{}c}{Orange} \\ \cmidrule(r{2\tabcolsep}){5-7} \cmidrule(r{2\tabcolsep}){8-10} \cmidrule(r{2\tabcolsep}){11-13} \cmidrule(r{\tabcolsep}){14-16}
    &  &  &  & \ap{50} & \ap{75} & \apavg & \ap{50} & \ap{75} & \apavg & \ap{50} & \ap{75} & \apavg & \ap{50} & \ap{75} & \apavg \\
    \midrule
    Baseline & \num{0.100} & \num{0.460} & \num{0.810} & \num{0.210} & \num{0.450} & \num{0.520} & \num{0.880} & \num{0.020} & \num{0.080} & \num{0.240} & \num{0.080} & \num{0.600} & \num{0.050} & \num{0.990} & \num{0.030} \\
    Improved & \num{0.200} & \num{0.360} & \num{0.860} & \num{0.390} & \num{0.400} & \num{0.600} & \num{0.900} & \num{0.020} & \num{0.080} & \num{0.200} & \num{0.080} & \num{0.600} & \num{0.100} & \num{0.990} & \num{0.100} \\
    \(\Delta\) & \num{0.100} & \num{-0.100} & \num{0.050} & \num{0.180} & \num{-0.050} & \num{0.080} & \num{0.020} & \num{0.000} & \num{0.000} & \num{-0.040} & \num{0.000} & \num{0.000} & \num{0.050} & \num{0.000} & \num{0.070} \\
    \bottomrule
  \end{tabularx}
\end{figure}

\end{document}

답변1

tabular*나의 주요 제안은 환경 대신 환경을 사용하는 것입니다 tabularx. 내가 이렇게 말하는 이유는 열 유형의 주요 기능 중 하나 X인 셀 내용의 자동 줄바꿈이 현재 테이블과 관련이 없어 보이기 때문입니다.

15개 데이터 열에 대해 (또는 ) S열 유형 대신 열 유형을 사용하고 문 에 숫자를 묶지 않았습니다 . 마지막으로 표 형식의 자료를 환경에 넣습니다 .XC\numtable~ 아니다환경 에서 figure.

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

\documentclass[11pt]{scrreprt}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[english]{babel}
\usepackage[scaled=1]{helvet} % I don't seem to have 'uarial' package
\renewcommand{\familydefault}{\sfdefault}
\usepackage{array,amssymb,booktabs,siunitx}

\newcommand{\ap}[1]{AP\textsubscript{#1}}
\newcommand{\apavg}[0]{AP\textsubscript{\(\!\varnothing\)}}

\begin{document}

\begin{table}[!htbp] % <-- 'table', not 'figure'
\setlength\tabcolsep{0pt}
\tiny
\begin{tabular*}{\textwidth}{@{\extracolsep{\fill}} % <-- use 'tabular*'
                   l *{15}{S[table-format=1.3]} }
    \toprule
    Model & &&&
    \multicolumn{3}{c}{Apple}  & \multicolumn{3}{c}{Banana} & 
    \multicolumn{3}{c}{Potato} & \multicolumn{3}{c}{Orange} \\ 
    \cmidrule{5-7} \cmidrule{8-10} \cmidrule{11-13} \cmidrule{14-16}
    & {\ap{50}} & {\ap{75}} & {\apavg} 
    & {\ap{50}} & {\ap{75}} & {\apavg} & {\ap{50}} & {\ap{75}} & {\apavg} 
    & {\ap{50}} & {\ap{75}} & {\apavg} & {\ap{50}} & {\ap{75}} & {\apavg} \\
    \midrule
    Baseline & 0.100 & 0.460 & 0.810 & 0.210 & 0.450 & 0.520 & 0.880 & 0.020 & 0.080 & 0.240 & 0.080 & 0.600 & 0.050 & 0.990 & 0.030\\
    Improved & 0.200 & 0.360 & 0.860 & 0.390 & 0.400 & 0.600 & 0.900 & 0.020 & 0.080 & 0.200 & 0.080 & 0.600 & 0.100 & 0.990 & 0.100\\
    Diff. & 0.100 & -0.100 & 0.050 & 0.180 & -0.050 & 0.080 & 0.020 & 0.000 & 0.000 & -0.040 & 0.000 & 0.000 & 0.050 & 0.000 & 0.070\\
    \bottomrule
\end{tabular*}
\end{table}
\end{document}

관련 정보