
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
열 유형 대신 열 유형을 사용하고 문 에 숫자를 묶지 않았습니다 . 마지막으로 표 형식의 자료를 환경에 넣습니다 .X
C
\num
table
~ 아니다환경 에서 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}