2011-04-28

LaTeX 헤매기... table의 셀 관리 (multicolumn, multirow)

이런저런 생각을 하면서 만들다보니 어느덧 익숙해져 가고 있지만 아직도 모르는 것이 많다. 특히 표의 경우에는 안에 넣어야 할 것들이 이것저것 있다 보니 신경이 많이 쓰인다. 여기서는 메뉴얼에 잘 안나오는 내용만 언급하고자 한다.

1. 복잡한 표를 만들 때의 팁 : 셀을 이리저리 합치는 경우가 있다. \multicolumn의 경우에는 직관적이어서 조금 쉬울 수도 있는데, \multirow의 경우 머리속으로 그림을 그리기가 쉽지 않다. 특히 두 컬럼 이상을 줄 합치기 하는 경우 아래와 같이 해야 한다는 경험을 얻었다.

\begin{table}\label{tab:swairline}

\centering
\begin{tabular}{c c|l c}
\multirow{5}{*}{Corporation}
& \multirow{5}{*}{Southwest Airlines}
& 26. Southwest Airlines News & 0.3164 \\
& & 10. Southwest Airlines - Wikipedia & 0.2964 \\
& & 40. Southwest Airlines - USATODAY.com & 0.2933 \\
& & 28. The Southwest Airlines Chinese New Year... & 0.2903 \\
& & 46. Southwest Airlines - Mahalo & 0.2900 \\
\hline
\end{tabular}
\caption{Categorization example (Query: southwest airlines)}
\end{table}

위의 예에서 첫번째 열의 줄 합치기는 다음 열 서두에 &를 앞세워서 되는데, 두번째 열도 줄 합치기를 할 경우에는 그 다음 열부터 줄 합치기를 한 갯수만큼 &를 넣어야 한다는 것을 알 수 있다. (나만 몰랐나...)

2. \multicolumn은 \multicolumn만이 아니다: 처음에 정의해 놓은 표 내부 셀의 정렬방식을 바꾸고 싶은 경우가 있다. 예를 들어 첫줄은 범례로 중앙정렬, 다음 줄부터는 자료로 왼쪽 정렬과 같이 말이다. 이때는 정의할 때 다수 사용하는 정렬방식으로 정의한 후 해당 셀만 바꾸어주는 것이 편리할 수 있다.

\begin{table}\label{tab:swairline}

\centering
\begin{tabular}{c c|r c}
\hline
Item 1 & Item 2 & \multicolumn{1}{c}{Item 3} & Item 4 \\
stock & price & $333.0 & refer this \\
\end{tabular}
\caption{Categorization example (Query: southwest airlines)}
\end{table}

위 예에서 3번째 열이 최초에는 우측 정렬로 되어 있는데 범례 부분만 따로 중앙정렬로 바꾼 것을 볼 수 있다. 이때 사용되는 것이 \multicolumn인데, 첫번째 인수인 셀 수를 {1}로 하면 해당 셀만 바뀌니까 좋다.

3. 셀 내에서의 줄바꿈 : 메뉴얼에는 \\나 \par을 사용 가능하게 해 놨는데 실제로는 되지 않는다. 현재로서는 \multicolumn을 이용해서 셀의 크기를 적절히 정해주는 수밖에 없는데, 이때 정해진 폭 이상의 글은 자동으로 줄바꿈된다.

\multirow{5}{8mm}{This is difficult.}
% 8mm는 매우 작기 때문에
%This
%is
%diffi-
%cult
%의 형태로 표현된다.


### 2011. 5.24 추가
\multirow와 \multicolumn을 함께 써야 하는 경우도 있다. 이때는 \multicolumn을 먼저 쓰고 내용부분에 \multirow를 써야 제대로 나오고 반대의 경우는 에러가 발생한다.

\begin{tabular}{|c|c|c|}\hline

\multicolumn{2}{|c|}{\multirow{2}{*}{combined cells}}
&top right\\ \cline{3-3}
\multicolumn{2}{|c|}{}
&middle right\\ \hline
bottom left
&bottom center
&bottom right\\ \hline
\end{tabular}


참고 페이지 : http://www.tex.ac.uk/cgi-bin/texfaq2html?label=multirow

No comments:

Post a Comment