
저는 LaTex를 처음 사용하는데 booktabs
서식을 사용하여 이 표를 만드는 데 도움이 필요합니다. 나는 패키지를 사용 R
하여 이상적으로 생성합니다 xtables
. 그러나 나는 열에 걸친 문제를 다룰 수 없었습니다.
그래서 수동으로 \multicolumn
명령을 삽입하려고 했습니다.
코드는 다음과 같습니다.
\documentclass{article}
\usepackage{booktabs}
\usepackage{multirow}
\begin{document}
\begin{table}[ht]
\centering
\begin{tabular}{@{\extracolsep{4pt}}llccccccc}
\toprule
{} & {} & {Observations} & \multicolumn{3}{c}{Median} & \multicolumn{3}{c}{SD}\\
\cline{3-3}
\cline{4-6}
\cline{7-9}
Year & Group & N & V1 & V2 & V3 & V1 & V2 & V3 \\
\hline
\multirow{2}{*}{2012}
& Control & 2 & 0.052 & 0.294 & 0.115 & 0.304 & 0.619 & 0.611 \\
& Treat & 2 & 0.511 & 0.083 & 0.123 & 0.573 & 0.541 & 0.734 \\
\multirow{2}{*}{2016}
& Control & 3 & 0.320 & 0.344 & 0.382 & 0.382 & 0.494 & 0.477 \\
& Treat & 3 & 0.378 & 0.296 & 0.123 & 0.386 & 0.668 & 0.732 \\
\hline
\end{tabular}
\caption{Mean by Year and Group}
\end{table}
\end{document}
그런데 이 표는 표준에 따르지 않고 실제로 형식이 잘 구성되어 있지 않은 것 같습니다 booktabs
. 디자인은 동일하지만 형식이 더 나은 테이블을 수동으로 만드는 방법은 무엇입니까?
감사합니다
답변1
테이블의 주요 문제점은 규칙을 사용하지 않고 booktabs
대신 표준 테이블 형식 규칙( \hline
및 \cline
)과 booktabs
규칙( \toprule
)을 혼합하여 사용한다는 것입니다.
이러한 규칙을 booktabs
버전( \midrule
, \cmidrule
및 \bottomrule
)으로 바꾸면 원하는 형식을 얻을 수 있습니다.
물건 을 없앴습니다 multirow
. 이렇게 하면 테이블에 아무것도 추가되지 않습니다. 해당 연도의 행 쌍 중 첫 번째 행에 연도를 넣는 것은 매우 명확합니다. 일반적으로 나는 multirow
전혀 사용하지 않을 것입니다. 용도가 있지만 일반적으로 박스형 셀이 있는 형태와 같은 것에 사용됩니다. 표준 연구 테이블의 경우 거의 적합하지 않습니다.
PS 데이터가 만들어졌으면 좋겠어요! 당신의 N은 정말 작습니다 ... :)
\documentclass{article}
\usepackage{booktabs}
\begin{document}
\begin{table}[ht]
\centering
\begin{tabular}{@{\extracolsep{4pt}}llccccccc}
\toprule
{} & {} & {Observations} & \multicolumn{3}{c}{Median} & \multicolumn{3}{c}{SD}\\
\cmidrule{3-3}
\cmidrule{4-6}
\cmidrule{7-9}
Year & Group & N & V1 & V2 & V3 & V1 & V2 & V3 \\
\midrule
2012 & Control & 2 & 0.052 & 0.294 & 0.115 & 0.304 & 0.619 & 0.611 \\
& Treat & 2 & 0.511 & 0.083 & 0.123 & 0.573 & 0.541 & 0.734 \\
2016 & Control & 3 & 0.320 & 0.344 & 0.382 & 0.382 & 0.494 & 0.477 \\
& Treat & 3 & 0.378 & 0.296 & 0.123 & 0.386 & 0.668 & 0.732 \\
\bottomrule
\end{tabular}
\caption{Mean by Year and Group}
\end{table}
\end{document}
숫자 데이터 조판에 대한 몇 가지 의견
c
숫자 데이터를 조판할 때 열 유형을 사용하는 것은 실제로 최선의 계획은 아닙니다. 일반적으로 우리는 숫자 데이터를 어떤 방식으로든 정렬하여 숫자의 크기가 다른 경우 올바르게 정렬되기를 원합니다.
소수점 데이터의 경우 소수점에 정렬하는 것이 일반적입니다. 소수가 아닌 데이터의 경우 간단한 오른쪽 정렬이 좋습니다.
소수점을 맞추려면 패키지 siunitx
또는 dcolumn
패키지를 사용할 수 있습니다. siunitx
큰 숫자에 대한 숫자 그룹화를 포함하여 숫자 데이터의 형식을 자동으로 지정하는 많은 고급 기능이 있습니다. 또한 SI 단위를 적절하게 조판하는 방법도 제공합니다. 이 dcolumn
패키지는 소수점 정렬을 위해 특별히 설계되었습니다. 차이점을 보여주는 예는 다음과 같습니다.
\documentclass{article}
\usepackage{booktabs}
\usepackage{dcolumn}
\usepackage{siunitx}
% Shorthand for multicolumn
\newcommand\mc[1]{\multicolumn{1}{c}{#1}}
\begin{document}
\begin{tabular}{ccrD{.}{.}{2.3}S}
\toprule
Center & Center & \mc{right} & \mc{D-column} & \mc{S-column} \\
\midrule
1 & 32.6 & 1 & 32.6 & 32.6 \\
10 & 335.434 & 10 & 335.434 & 335.434 \\
100 & 0.99 & 100 & 0.99 & 0.99 \\
5 & 1 & 5 & 1 & 1 \\
\bottomrule
\end{tabular}
\end{document}
답변2
먼저 모든 규칙은 booktabs
테이블 규칙에 약간의 패딩을 추가하므로(종종 너무 빡빡한 기본 라텍스의 테이블 행)로 수행되어야 합니다.
둘째, 표 캡션은 다음과 같아야 합니다.~ 위에표는 페이지에 걸쳐 펼쳐질 수 있으므로 독자는 표의 내용을 알기 위해 페이지를 넘길 필요가 없습니다. 이를 위해 캡션이 유용합니다. 기본 라텍스는 캡션이 테이블 위에 있을 때 및 package
값을 바꾸는 것을 잊어버립니다 .\abovecaptionskip
\belowdisplayskip
Observations
셋째, 그렇게 넓은 열 머리글을 가진 한 자릿수 열을 갖는 것이 보기 흉하기 때문에 약어로 바꾸겠습니다 .
넷째, 테이블 끝 부분에 3개의 열로 구성된 두 그룹에 대해 더 작은 열 사이 공간을 설정합니다. 또한 (lr)
`\cmidrules에 대한 매개변수는 테이블의 일반적인 모양을 개선하는 데 유용합니다.
\documentclass{article}
\usepackage{array, multirow, caption, booktabs}
\begin{document}
\begin{table}[ht]
\centering\setlength\extrarowheight{2pt}
\caption{Mean by Year and Group}
\begin{tabular}{@{\extracolsep{4pt}}llc*{2}{c@{\enspace}c@{\enspace}c}}
\toprule
{} & {} & {Obsv\textsuperscript{ns}} & \multicolumn{3}{c}{Median} & \multicolumn{3}{c}{SD}\\
\cmidrule(lr){3-3}
\cmidrule{4-6}
\cmidrule(lr){7-9}
Year & Group & N & V1 & V2 & V3 & V1 & V2 & V3 \\
\midrule
\multirow{2}{*}{2012}
& Control & 2 & 0.052 & 0.294 & 0.115 & 0.304 & 0.619 & 0.611 \\
& Treat & 2 & 0.511 & 0.083 & 0.123 & 0.573 & 0.541 & 0.734 \\
\addlinespace
\multirow{2}{*}{2016}
& Control & 3 & 0.320 & 0.344 & 0.382 & 0.382 & 0.494 & 0.477 \\
& Treat & 3 & 0.378 & 0.296 & 0.123 & 0.386 & 0.668 & 0.732 \\
\bottomrule
\end{tabular}
\end{table}
\end{document}
메모: `Observations'를 축약하지 않으려면 행과 열을 교환하여 테이블을 재구성하는 것을 고려해야 합니다.