KTUGFaq

KTUG FAQ

로그인:
비밀번호:
가입
Economy makes men independent.
FrontPage › Tabular환경
tabular 환경

tabular 환경은 Table환경과는 달리 inline 개체(floating하지 않음)이다.


목차

1 일반적인 사용 형식
2 array 패키지를 이용한 확장
3 스타일 변수
4 KTUGBoard:651(현범석)에 기초한 여러 예들, 기타
4.1 multirow 패키지
4.2 \raisebox
4.3 표 안(셀)에 리스트환경
4.4 표 안(셀)에 대각선 그리기
4.5 p{...}과 가운데정렬
4.6 booktabs 패키지
4.7 colortbl 패키지
4.8 hhline 패키지
4.9 arydshln 패키지
4.10 makecell 패키지
5 표(셀) 안의 상하정렬
5.1 array 패키지의 m 칼럼지시자
5.2 multirow의 vertical centering
5.3 \raisebox를 이용하여 상하 정렬
5.4 표 내용의 위/아래로 공란을 만들기
5.5 내부 공란 띄우기
6 Tabular에서 임의의 선 굵기 표현하기
6.1 세로선 굵기 조절
6.1.1 mdwtab 패키지
6.1.2 array 패키지 이용
6.2 가로선 굵기 조절
6.3 booktabs 패키지
7 여러 페이지에 걸치는 표
8 표만들기 예제(by Progress)
9 두개이상의 파라그래프를 Table에 넣기
9.1 패러그래프 넣기
9.1.1 minipage 이용
9.1.2 TabularY 패키지 이용
10 TabularX
11 TabularY
12 기타 Q & A
12.1 \tabularnewline
12.2 소숫점 정렬
12.3 sideways table
12.4 adjustwidth
12.5 multirow + colortbl
12.6 arraystretch
13 그밖의 사용법 팁
14 Tabu 패키지

1 일반적인 사용 형식

\begin{tabular}[위치지시자]{칼럼지시자}
 칼럼 1 & 칼럼 2 ... & 칼럼 n \\
 ...
 ...
\end{tabular}
또는
\begin{tabular*}{폭}[위치지시자]{칼럼지시자}
 칼럼 1 & 칼럼 2 ... & 칼럼 n \\
 ...
 ...
\end{tabular*}

후자의 별표(*)붙은 환경은 표의 폭을 지정할 수 있게 한다. 전자의 경우 표의 폭은 셀의 내용에 따라 자동으로 정해진다.
(!) 표 전체의 폭(width)과 셀의 폭을 좀더 유연하게 다루는 문제에 대해서는 TabularXTabularY를 보라.

칼럼지시자
  • l : 왼쪽 정렬
  • r : 오른쪽 정렬
  • c : 가운데 정렬
  • p{폭} : 칼럼의 폭을 임의로 지정할 수 있다.
  • | : 수직선
  • @{text} : 모든 행에 text를 삽입하고 칼럼 사이의 간격을 없애버린다. 이로써 예를 들면 소수점 정렬이 가능해진다. lshort-kr 2.11.5 참조. 그러나 text\extracolsep{폭}이 오면 이후의 모든 칼럼사이에 지정된 길이의 폭을 삽입한다. 예를 들면:
    \begin{tabular*}{0.75\textwidth}%
          {@{\extracolsep{\fill}}cccr}
      label 1 & label 2 & label 3 & label 4 \\ \hline
      item 1  & item 2  & item 3  & item 4  \\
      % ...
    \end{tabular*}
    
    \begin{tabular*}{0.75\textwidth}%
      {@{\extracolsep{\fill}}cccr}
  label 1 & label 2 & label 3 & label 4 \\ \hline
  item 1  & item 2  & item 3  & item 4  \\
  % ...
\end{tabular*}

  • *{숫자}{칼럼지시자} : 칼럼지시자숫자만큼 반복한다. 예컨대 {*{10}{l}}{llllllllll}과 같다.

위치지시자(선택적 옵션)
  • t : 표를 주변 문자열의 top에 수직정렬한다.
  • b : 표를 주변 문자열의 bottom에 수직정렬한다.
  • 기본값은 주변 문자열의 가운데에 수직정렬하는 것이다.

표 본문
  • & : 셀 구분자
  • \\ : 행 구분자. 수평선은 그 뒤에 \hline를 추가하면 생긴다. 마지막 행 다음에 수평선이 온다면 마지막행이라도 \\를 넣는다. \cline{n-m}n칼럼에서 m칼럼까지 수평선을 그음.
  • \multicolumn{칼럼수}{정렬 방법}{내용} : 여러 칼럼에 걸친 셀을 만든다. 정렬 방법에는 l,c,r 중 하나. \multicolumn{1}{정렬 방법}{내용}로 쓰면 어느 한 셀의 정렬 방법을 바꾼다.

2 array 패키지를 이용한 확장

  • m{폭} : 지정한 폭을 가진 칼럼을 만들면서 수직정렬은 가운데로.
  • b{폭} : 지정한 폭을 가진 칼럼을 만들면서 수직정렬은 바닥으로.
  • >{표현} : 칼럼의 모든 행의 앞에 표현을 삽입. 아래 p{...}과 가운데정렬 참조.
  • <{표현} : 칼럼의 모든 행의 뒤에 표현을 삽입.
  • !{표현} : | 대신 쓰여 수직선이 아닌 표현을 그 자리에 삽입. @{...}와 달리 칼럼사이의 간격을 없애지 않는다.

3 스타일 변수

See 길이변수.
  • \tabcolsep
  • \arrayrulewidth
  • \doublerulesep
  • \arraystretch(상수)

(./) array 패키지가 필요한 것
  • \arraycolsep
  • \extrarowheight

필요한 곳에
\setlength\extrarowheight{10pt}% extra space on row top
\setlength\arraycolsep{10pt}% extra space on column
과 같이 쓴다.

4 KTUGBoard:651(현범석)에 기초한 여러 예들, 기타

4.1 multirow 패키지

특정의 셀이 여러 행에 걸치도록 할 때 사용한다.

\usepackage{multirow}    % preamble

\renewcommand{\multirowsetup}{\centering}  % 기본값은 \raggedright
\begin{tabular}{c|c|c|c|c|c} \hline
  \multicolumn{2}{c|}{\multirow{2}{15mm}{선택지들}}
  & \multirow{2}{10mm}{경우 1} & \multirow{2}{10mm}{경우 2}
  & \multicolumn{2}{c}{고르시오} \\\cline{5-6}
  \multicolumn{2}{c|}{} & & & 높음 & 낮음\\ \hline \hline
  \multirow{3}*{S} & R & 2 & 3 & 4 & 5 \\ \cline{2-6}
  & 4 & 1 & 6 & 9 & 7 \\ \cline{2-6}
  & R & 2 & 3 & 4 & 5 \\ \hline
\end{tabular}
\makeatletter
\input{multirow.sty}    % preamble
\makeatother

\renewcommand{\multirowsetup}{\centering}  % 기본값은 \raggedright
\begin{tabular}{c|c|c|c|c|c} \hline
  \multicolumn{2}{c|}{\multirow{2}{15mm}{선택지들}}
  & \multirow{2}{10mm}{경우 1} & \multirow{2}{10mm}{경우 2} 
  & \multicolumn{2}{c}{고르시오} \\\cline{5-6}
  \multicolumn{2}{c|}{} & & & 높음 & 낮음\\ \hline \hline
  \multirow{3}*{S} & R & 2 & 3 & 4 & 5 \\ \cline{2-6}
  & 4 & 1 & 6 & 9 & 7 \\ \cline{2-6}
  & R & 2 & 3 & 4 & 5 \\ \hline
\end{tabular}
자동 vertical centering이 잘 안 될 때가 있다. 이 때는 다음과 같은 형식으로 위치를 직접 지정해준다.
\multirow{2}*[-5ex]{셀의 내용}


4.2 \raisebox

\begin{tabular}{|c|c|}\hline
  1&\\\cline{1-1}
  10&\\\cline{1-1}
  100&\\\cline{1-1}
  1000&\\\cline{1-1}
  10000&\raisebox{1.8ex}[0pt][0pt]{\includegraphics[scale=0.15]{mu.eps}}\\\hline
\end{tabular}

4.3 표 안(셀)에 리스트환경

parbox나 minipage를 이용하면 되나, parbox의 여백모양이 더 낫다.
\begin{tabular}{c|c|c|c} \hline
  No. \# & T1  & T2 & Remarks \\ \hline
  \#~46 &  0.14 &   0.63   &  \\ \hline
  \#~47a &  0.14 &
  \parbox{20em}{
    \begin{itemize}
      \item SSSSSSS
      \item FFFFFFF
    \end{itemize}
  }    &   \\ \hline
  \#~48 &  0.15 &   0.67   &   \\ \hline
\end{tabular}
\begin{tabular}{c|c|c|c} \hline
  No. \# & T1  & T2 & Remarks \\ \hline
  \#~46 &  0.14 &   0.63   &  \\ \hline
  \#~47a &  0.14 &
  \parbox{10em}{
    \begin{itemize}
      \item SSSSSSS
      \item FFFFFFF
    \end{itemize}
  }    &   \\ \hline
  \#~48 &  0.15 &   0.67   &   \\ \hline
\end{tabular}

4.4 표 안(셀)에 대각선 그리기

종래 SlashBox를 이용한 방법이 주로 쓰였으나 이 패키지가 texlive에서 제외된 지금은 DiagBoxPackage를 이용하는 것이 낫다. See DiagBoxPackage

4.5 p{...}과 가운데정렬

\usepackage{array}          % preamble

\begin{tabular}{>{\centering}p{40mm}}
하이픈도 가능하게 하려면...
\usepackage{array,ragged2e}       % preamble

\begin{tabular}{>{\Centering}p{40mm}}
(!) 문단의 첫 단어에도 하이픈을 주기 위해서는 \hspace{0pt}\Centering다음에 추가한다.
다른 방법으로 한두곳만 가운데 정렬을 하려면 아래와 같은 방법도 있다.
\begin {tabular}{|p{15em}|}
  p로 되어 있으면 어디로 붙을까? \\
  \multicolumn{1}{|c|}{임시 가운데라네} \\
\end {tabular}


4.6 booktabs 패키지

(cf. KTUGOperate:277, KTUGOperate:150759)

LaTeX에서 booktabs 패키지를 쓰지 않고 그냥 tabular 환경을 쓰면 표에서 가로 줄과 글자의 사이가 좀 좁아 보인다. 또 맨위와 맨아래는 약간 굵은 선, 첫 행 다음은 보통 굵기, 나머지 행은 가는 선을 넣거나 경우에 따라서는 어떤 특정 행 사이를 다른 행 사이보다 조금 더 띄워서 구분하고 싶을 때가 있다. booktabs 패키지는 이런 요구를 한꺼번에 해결하는 패키지이다. 즉, 가로 줄과 글자 사이의 간격을 0.65ex(default)로 띄우도록 되어 있고 여러 위치에 여러 굵기의 가로 줄을 쉽게 쓸 수 있도록 되어 있다.
booktabs 패키지를 쓰지 않았을 때 tabular 환경에서는 가로 줄은 보통 \hline 밖에 없지만 booktabs 패키지에서는 아래의 예에서 보듯이 \toprule (default 0.08em 굵기), \midrule (default 0.05em 굵기), \bottomrule (default 0.08em 굵기) 등으로 다른 굵기로 되어 있을 뿐만 아니라 \midrule[0.5pt] 와 같이 조정할 수 있다. 그리고 특정한 행 사이를 조금 더 띄우고 싶으면 \addlinespace를 넣어면 된다. 또 \cmidrule(lr){2-3} 과 같이 2열에서 3열까지 \midrule을 넣되 왼쪽과 오른쪽에 약간의 여유를 둘 수도 있다. 가령 1열에서 4열까지 그은 가로 줄이 2열과 3열 사이에 약간 끊어지게 하려면 \cmidrule(r){1-2}\cmidrule(l){3-4} 로 하면 된다. 이것은 그냥 tabular 환경에서 \cline과 비슷하나 \cline은 양쪽 모두에 조금씩 여유를 두는데 \cmidrule은 여유를 두지 않을 둘 수도 있고 한 쪽에만 둘 수도 있다. 다만 세로 줄을 쓰면 세로 줄과 가로 줄이 바싹 붙지 않고 약간의 간격이 생겨 엉성하게 보인다.

CTAN:/macros/latex/contrib/booktabs/booktabs.pdf에 설명이 있다. 뽄(Template)이 필요하면 Mittelbach가 쓴 The LaTeX Companion, 2nd ed.의 269--272쪽을 참조하여 CTAN:/info/examples/tlc2/에 있는 5-6-7.ltx, 5-6-8.ltx 등을 복사하여서 쓰면 된다.

\usepackage{booktabs}          %preamble
\usepackage{multirow}          %preamble    

\renewcommand{\multirowsetup}{\centering}
\begin{tabular}{cccc}
 \toprule
  Case & Box A & Box B & Remarks \\
 \midrule
  \multirow{2}{10mm}{A}
   & $+X$ & $-1.0$ & \multirow{2}{10mm}{B} \\
    \cmidrule(lr){2-3}
   & $-X$ & $-7.9$ & \\
 \bottomrule
\end{tabular}
\makeatletter
\input{booktabs.sty}%
\input{multirow.sty}%
\makeatother

\renewcommand{\multirowsetup}{\centering}
\begin{tabular}{cccc}
 \toprule
  Case & Box A & Box B & Remarks \\ 
 \midrule
  \multirow{2}{10mm}{A}
   & $+X$ & $-1.0$ & \multirow{2}{10mm}{B} \\ 
    \cmidrule(lr){2-3}
   & $-X$ & $-7.9$ & \\
 \bottomrule
\end{tabular}

4.7 colortbl 패키지

\usepackage{colortbl}     % preamble

\begin{tabular}{cccc} \hline
  Case & Box A & Box B & Remarks \\\hline
  A    & +X    & -1.0  &         \\\hline
  \rowcolor[gray]{0.9} B & -X & -7.9 & \\\hline
\end{tabular}

colortbl.png

4.8 hhline 패키지

겹세로줄과 겹가로줄을 처리할 수 있게 한다. \hhline 명령의 인자에 쓰이는 지시자는 다음과 같다.
=   겹가로줄
-   홑가로줄
~   \hline이 없는 칼럼
|   가로줄을 넘어가는 세로줄
:   가로줄을 넘어가지 않는 세로줄
#   겹가로줄과 겹세로줄이 모두 교차하도록 함
t   겹가로줄에서 세로줄과 만나는 곳에서 교차하지 않도록 함. 
    |t| 또는 |t: 와 같은 방식으로 표의 첫번째 줄에 주로 쓰임
b   t와 같으나 표의 마지막에 쓰임

\usepackage{hhline}           % preamble

\begin{tabular}{||cc||c|c||}  % ||는 겹세로줄
 \hhline{|t:==:t:==:t|}
 a & b & c & d \\
 \hhline{|:==:|~|~||}
 1 & 2 & 3 & 4 \\
 \hhline{#==#~|=#}
 i & j & k & l \\
 \hhline{||--||--||}
 w & x & y & z \\
 \hhline{|b:==:b:==:b|}
\end{tabular}

hhlinetest.jpg

4.9 arydshln 패키지

가로선(horizontal line) 또는 세로선(vertical line)을 점선(dashed rule)으로 하려 할 때 사용한다. The LaTeX Companion, 2nd ed.의 268쪽에 설명과 함께 예제(5-6-4, 5-6-5)가 있다. 예제의 뽄(Template: 5-6-4.ltx, 5-6-5.ltx)은 CTAN CTAN:/info/examples/tlc2/폴더 속에 있다.
(./) 5-6-4.ltx를 복사하여 고친 것(그냥 dashed line을 쓴 것).
%%
%% The LaTeX Companion, 2ed
%%
%% Example 5-6-4 on page 268.
%%
%% Copyright (C) 2004 Frank Mittelbach, Michel Goossens,
%%    Johannes Braams, David Carlisle, and Chris Rowley
%%
%% It may be distributed and/or modified under the conditions
%% of the LaTeX Project Public License, either version 1.3
%% of this license or (at your option) any later version.
%%
%% See http://www.latex-project.org/lppl.txt for details.
%%

\documentclass{article}%<-고친 부분
\pagestyle{empty}
\setcounter{page}{6}
\setlength\textwidth{159.0pt}
%\StartShownPreambleCommands%<-고친 부분
\usepackage{array,arydshln}
\setlength\extrarowheight{4pt}% extra space on row top
%\StopShownPreambleCommands%<-고친 부분
\begin{document}
\begin{tabular}{|c::c|c|}
\hline
 A   & B  & C  \\ \hline
 X   & Y  & Z  \\ \hdashline
100  & 10 & 1  \\ \hline
\end{tabular}
\end{document}

5-6-4.jpg

(./) 5-6-5.ltx를 복사하여 고친 것(좀더 가는 점선으로 고친 것).
%%
%% The LaTeX Companion, 2ed
%%
%% Example 5-6-5 on page 268.
%%
%% Copyright (C) 2004 Frank Mittelbach, Michel Goossens,
%%    Johannes Braams, David Carlisle, and Chris Rowley
%%
%% It may be distributed and/or modified under the conditions
%% of the LaTeX Project Public License, either version 1.3
%% of this license or (at your option) any later version.
%%
%% See http://www.latex-project.org/lppl.txt for details.
%%

\documentclass{article}%<-고친 부분
\pagestyle{empty} \setcounter{page}{6} \setlength\textwidth{159.0pt}
%\StartShownPreambleCommands%<-고친 부분
\usepackage{array,arydshln}
\renewcommand\arraystretch{1.3333}% extra space evenly
                                  % distributed
\setlength\dashlinedash{1pt}
\setlength\dashlinegap{1pt}
%\StopShownPreambleCommands%<-고친 부분
\begin{document}
\begin{tabular}{;{5pt/2pt}c::c:c;{5pt/2pt}}
\hdashline
 A   & B  & C  \\ \hdashline
 X   & Y  & Z  \\ \hdashline[5pt/2pt]
100  & 10 & 1  \\ \hdashline
\end{tabular}
\end{document}

5-6-5.jpg

4.10 makecell 패키지

5 표(셀) 안의 상하정렬

5.1 array 패키지의 m 칼럼지시자

array 패키지의 m 지시자를 지정하면 주어진 셀의 세로 길이를 기준으로 vertical centering이 된다. 아래 표만들기 예제 참조.

5.2 multirow의 vertical centering

MultiRowPackage는 셀의 vertical centering을 구현해준다. See MultiRowPackage

5.3 \raisebox를 이용하여 상하 정렬

명령어 \raisebox는 표의 셀에서 상하 가운데 정렬에도 요긴하게 이용할 수 있다. 가령 그림 http://www.ktug.or.kr/jsboard/data/operate/files/20031105163340/raisebox.jpg

과 같이 출력하고 싶을 때는 아예 Preamble에
  \newcommand{\rb}[1]{\raisebox{-1.5ex}[0pt]{#1}}
와 같이 정하여 두고
\begin{tabular}{|p{45pt}|p{28pt}|p{28pt}|p{33pt}|p{33pt}|}
  \hline
     & Tree-\par based & Mesh-\par based & Stateless \par
                                multicast& Overlay \par multicast          \\ \hline
  Periodic \par message & \rb{Yes}  & \rb{Yes}  & \rb{No}   & \rb{No}      \\ \hline
  Robustness \par for mobility
                       & \rb{No}    & \rb{Yes}  & \rb{Yes}  & \rb{Yes}     \\ \hline
  Resource \par efficiency
                       & \rb{High}  & \rb{Low}  & \rb{High} & \rb{Medium}  \\ \hline
  Type of \par data packet & Multi-\par cast
                        & Multi-\par cast & Broad-\par cast & \rb{Unicast} \\ \hline
  Control \par overhead & \rb{High} & \rb{High} & \rb{Low}  & \rb{Medium}  \\ \hline
\end{tabular}
와 같이 필요한 곳에 쓰면 된다.

5.4 표 내용의 위/아래로 공란을 만들기

  • \newcommand{\STRUT}{\rule{0in}{3ex}} 처럼 Width는 없고, Height만 있는 Box를 만든다. 이것을 문자열 뒤에 첨가하면 표 내용의 위쪽으로 공란이 그만큼 들어간다.
  • \\[3ex] 처럼 line feed 이후에 공란을 기록해 줄 수가 있다.
  • \rule-2mm{0cm}{6mm} 처럼 Strut을 만들 수도 있다. 이렇게 하면 Box가 아래로 -2mm 내려가고 전체적으로 높이가 6mm가 되므로 기준선으로 부터 아래로는 2mm, 위로는 4mm의 높이의 Cell이 만들어 진다.

예제는 다음과 같다.
\newcommand{\STRUT}{\rule{0in}{3ex}}
\begin{tabular}{|l r@{.}l |p{2cm}|}
\hline
\multicolumn{4}{|c|}
 {\small \bf Extreme Range of Thermal \STRUT} \\ %[1.5ex]
\hline
\multicolumn{4}{|c|}
 {\small \bf Conductivity at 273~K} \\[1.5ex]
\hline
\end{tabular}
table.jpg

5.5 내부 공란 띄우기

  • 위아래로 띄울때에는 vspace*{}를 이용한다.
  • 컬럼사이를 띄울때에는 \setlength{\tabcolsep}{1cm} 처럼 tabcolsep을 이용한다.
  • \parindent 값을 바꾸어서 인덴테이션을 조절할 수도 있다.

제가 이부분 때문에 고생을 해서 비슷한 고생을 하시는 분이 없도록 기록했습니다만 더 좋은 방법이 있으면 알려주시기 바랍니다. -- smcho

6 Tabular에서 임의의 선 굵기 표현하기

6.1 세로선 굵기 조절

6.1.1 mdwtab 패키지

비교적 쉽다.
 \usepackage{mdwtab}  % preamble
 %....
 \begin{tabular}
 {| c !{\vline[2pt]} c | c |}
 \hlx{hv}
 \bf A & \it B & \sf C \\
 \hlx{vhv}
 \bf D & \it E & \sf F \\
 \hlx{vh}
 \end{tabular}
<!> mdwtab 패키지에서는 \hline을 개선한 \hlx 명령을 제공한다.

6.1.2 array 패키지 이용

From KTUGOperate:7889
 \usepackage{array} % preamble
 \newcommand\clinewd[1]{\vrule width #1} % preamble

 \begin{tabular}{|c||c|c!{\clinewd{2pt}} }
 \hline

6.2 가로선 굵기 조절

from KTUGOperate:3539 다음 예제의 \hlinewd 명령 설정을 보라. LongTable에서의 가로선 굵기 조절에 대해서는 LongTable을 볼 것.
 \documentclass{article}
 \usepackage{array}

 \makeatletter
 \def\hlinewd#1{%
  \noalign{\ifnum0=`}\fi\hrule \@height #1 \futurelet
   \reserved@a\@xhline}
 \makeatother

 \begin{document}
 \begin{tabular}{|c|c!{\vrule width 1pt}c||c|} \hlinewd{3pt}
 Model & $E_k / E_p$ & Non-dim. & Ratio. \\ \hlinewd{3pt}
 A1 & 3.62 & 20.12 & 0.912 \\ \hline
 A5 & 7.10 & 22.75 & 1.139 \\ \hlinewd{3pt}
 \end{tabular}

 \end{document}

6.3 booktabs 패키지

booktabs 패키지(BookTabsPackage)는 세로선(|)이 없는 표(영문 서적에서 주로 쓰임)를 만들 때 가로선 굵기를 조절할 수 있도록 한다. 만약 세로선(|)을 쓰면 행이 바뀔 때마다 선이 귾어져 엉성하게 나타난다.

7 여러 페이지에 걸치는 표

Tabular환경은 한 페이지 안에 들어가는 표만을 작성할 수 있다. 하나의 표를 여러 페이지에 걸쳐서 나누어 배치해야 하는 경우라면 SuperTabular 또는 LongTable을 사용한다. XtabPackage도 같은 목적으로 쓸 수 있다.

8 표만들기 예제(by Progress)

from KTUGOperate:3655

table_centering.gif

\documentclass{report}
\usepackage{array, hfont}
\usepackage[usenames]{color}  %% 데이지웹 님께서 알려주신, 
%기본 색 이외에 다른 색을 색이름으로 지정해서 쓰는 법

\renewcommand{\arraystretch}{1.6}
%%<==표의 줄간격 조절. 괄호안의 숫자를 바꿔보세요.

\renewcommand{\baselinestretch}{1.6}
%%<== 본문 줄간격. \linespread라는 명령도 있으니 검색바랍니다.

\begin{document}

\begin{tabular}{|b{40mm}|m{40mm}|p{40mm}|}
\hline
\centering\textcolor{blue}{가나다라} & 답답한 마음 & 질문 \\
\hline
b 옵션을 줬으니 맨 위로 붙어라!!
가나다라 마바사아 자차카타파하 가나다라 마바사아 자차카타파하 &
\centering\textcolor{blue}{너는 m옵션을 줬으니 가운데에 있으렴!! \\답답한
  마음 답답한 마음 답답한 마음 답답한  마음 답답한 마음 } & 너는 p옵션
줬으니 바닥에 붙어라!! 질문 질문 질문 질문 질문 질문 질문 질문 질문 질문 질문 질문 질문
질문 질문 \\
\hline
가나다라 & 답답한 마음 & \multicolumn{1}{c|}{\textcolor{blue}{질문}} \\
\hline
가나다라 & 답답한 마음 & \multicolumn{1}{r}{\textcolor{blue}{질문}} \\
\hline
가나다라 & 답답한 마음 & 질문 \\
\hline
\end{tabular}

\end{document}

9 두개이상의 파라그래프를 Table에 넣기


9.1 패러그래프 넣기

9.1.1 minipage 이용

Tabular 포맷을 이용해서 두개이상의 패러그래프를 넣어야 할 경우가 있다. 이때에는 minipage를 사용한다. paratable.jpg

\begin{tabular}{|p{5cm}|p{5cm}|}
\hline
\begin{minipage}[t]{5cm}
\vspace*{0.5cm}
\setlength{\parindent}{2cm}
%\begin{Hello}{안녕?}
좋은 예가 있는가? 파라그래프를 박스안에 넣는 방법이 무었이 좋겠는가?
좋은 예가 있는가? 파라그래프를 박스안에 넣는 방법이 무었이 좋겠는가?

좋은 예가 있는가? 파라그래프를 박스안에 넣는 방법이 무었이 좋겠는가?
좋은 예가 있는가? 파라그래프를 박스안에 넣는 방법이 무었이 좋겠는가?
\vspace*{0.5cm}
%\end{Hello}
\end{minipage}
&
\begin{minipage}[t]{5cm}
안녕?
\end{minipage} \\
\hline
\end{tabular}
만일 indentation 등 더 세밀한 제어를 위해서는 environment를 만들고, minipage 내부에서 이 환경을 사용하도록 한다.

9.1.2 TabularY 패키지 이용

See TabularY.

10 TabularX

tabularx 환경

TabularX 패키지를 쓰면 tabularx 환경을 이용할 수 있다. 인수 형식은 tabular* 환경과 동일하다.
\usepackage{tabularx}     % preamble에 넣으세요.

\begin{tabularx}{표전체의 폭(width)}[정렬위치(t 또는 b)]{칼럼지시자}
표의 내용
\end{tabularx}

이 환경에서는 칼럼 지시자로 tabular환경에서 쓰는 l,r,c는 물론이고 새로이 X(대문자임에 주의)를 하나 더 쓸 수 있다. 이 지시자로 지정된 칼럼은 표 전체의 폭에 맞추어서 길이가 자동으로 설정된다. 또, 다음과 같은 형식으로 array 패키지가 p{} 칼럼지시자에 대해서 제공하는 기능을 쓸 수도 있다.
>{\small}X

ltablex 패키지

ltablex 패키지를 사용하면 tabularx 환경이 LongTable이 된다.
\documentclass{article}
\usepackage{ltablex}
\textheight=4in
\begin{document}

% we want a table that is \textwidth long, has 4 columns, columns 1
% and 3 are auto sized with the 3rd columns being 3 times wider than
% the first column.
%
\begin{tabularx}{\linewidth}%
 {|>{\setlength{\hsize}{.5\hsize}\raggedright\arraybackslash}X| % col 1; auto-sized ragged right
    c|                                                        % col 2; default    centered
    >{\setlength{\hsize}{1.5\hsize}\raggedleft\arraybackslash}X|% col 3; auto-sized ragged left
    l|}                                                       % col 4; default    left-justified
\caption*{The Table Caption}\\
\hline
F-Head1 & F-Head2 & F-Head3 & F-Head4\\
\hline
\hline
\endfirsthead
\hline
Head1 & Head2 & Head3 & Head4\\
\hline
\hline
\endhead

\hline
\hline
Foot1 & Foot2 & Foot3 & Foot4\\
\hline
\endfoot

\hline
\hline
L-Foot1 & L-Foot2 & L-Foot3 & L-Foot4\\
\hline
\endlastfoot

This is a very long sentence not likely to fit&
not too long&
This is another  very long sentence not likely to fit&
not long\\

<이하 줄임>

예제

KTUGOperate:5764 (by hoze) \newcolumntype 명령과 TabularXX 칼럼지시자를 이용하여 칼럼폭을 균등하게 할당하는 예제.
\usepackage{tabularx}

\newcolumntype{Y}{>{\raggedleft\arraybackslash}X} %오른쪽 정렬
\newcolumntype{Z}{>{\centering\arraybackslash}X} %가운데 정렬
\begin{tabularx}{\linewidth}{c|Z|Z|Z|Z|Z|Z}\hline

KTUGOperate:4426 (by Karnes) 하나의 칼럼 좌우에 균등하게 할당된 폭의 칼럼을 두는 문제.
\renewcommand\tabularxcolumn[1]{>{\small}m{#1}}
\begin{tabularx}{2.5cm}{|X|m{.52cm}|X|}
\hline
A & \Huge A & A \\ \hline
\end{tabularx}


11 TabularY

David Carlisle 씨가 만든 패키지로 표(Tabular)의 칼럼 폭을 자동조절한다. 칼럼 안에서 긴 문장은 자동으로 줄나눔이 되기 때문에 특히 긴 문장이 들어가는 표가 많은 우리의 문서작성 환경에서 매우 유용하다.

기본 사용 형식

기본 사용법은 다음과 같다.

\usepackage{tabulary}
%...
\begin{tabulary}{표의전체가로길이}{칼럼지시자}
  표내용
\end{tabulary}

칼럼지시자

대문자 칼럼지시자 C, L, R, J를 쓸 수 있다.
  • 이 지시자들은 자동 계산된 길이를 갖는 p 칼럼으로 변환되며, 각각 \centering, \raggedright, \raggedleft와 양쪽정렬(justification)이 적용된다.
  • \multicolumn은 쓸 수 있다. \verb는 사용할 수 없음.
  • multirow 패키지와도 잘 맞는다. 아래 예제 참조.

길이

  1. 반드시 표의 전체 길이를 지시해야 한다.
  2. 칼럼의 길이는, CLRJ 모두에 대하여, 그 칼럼에 속한 가장 긴 문자열의 길이를 기준으로 비례적으로 할당한다. 예를 들어서 네 개의 칼럼이 있고 그 안에 속한 내용의 길이가 각각 1em, 3em, 4em, 2em이라면, 전체 길이의 합이 10em 이고, 왼쪽부터 지시된 표전체길이의 10%, 30%, 40%, 20%가 각 칼럼의 폭으로 할당된다.
  3. 칼럼의 최소길이와 최대길이를 미리 지정할 수 있다. 각각 \tymin, \tymax로 지정한다.

예제

아래 예제는 array, multirow, tabulary 패키지를 미리 로드해두고 작성한 것이다.
\begin{tabulary}{\textwidth}% 필요하다면 100mm 형태로 표전체길이 지정
{|p{5em}|C|R|L|J|} % 첫번째 칼럼이 유난히 짧아서 비례할당한 결과는 주어진 텍스트가 모두 들어가지
                   % 못할 정도로 좁으므로, 5em을 강제할당함
\hline
짧은 칼럼 & \textcolor{blue}{가나다라} & 답답한 마음 & 질문 & 맨오른쪽 컬럼 \tabularnewline
\hline
여기에 텍스트가 &
C 옵션을 줬으니 가운데 정렬을 해야겠지?!!!
가나다라 마바사아 자차카타파하 가나다라 마바사아 자차카타파하 &
\textcolor{blue}{너는 R옵션을 줬으니 오른쪽으로 가렴!!} \par
답답한 마음 답답한 마음 답답한 마음 답답한  마음 답답한 마음 &
너는 L옵션 줬으니 왼쪽에 붙어라!!
질문 질문 질문 질문 질문 질문 질문 질문 질문 질문 질문 질문 질문
질문 질문 &
J 옵션은 어떻게 동작할지 생각해보자. J는 Justification의 약자가 틀림없을지도
몰라. \tabularnewline
\hline
온다면 &
\multirow{2}*[-11ex]{가나다라} & \multicolumn{2}{c|}{\textcolor{blue}{%
                        질문}} &
그러니까 표가 만들어지네 신기해라 \tabularnewline
\cline{1-1}\cline{3-5}
잘되겠죠 &  & 답답한 마음 &
\multicolumn{1}{r|}{\textcolor{blue}{질문}} &
100년 후에도 똑같은 모양으로 인쇄될 문서를 작성하고 싶으세요? \tabularnewline
\hline
잘되는군요 &
가나다라 & 답답한 마음 & 질문 &
그러면 \LaTeX을 써보세요. 그렇지만 100년후까지는 사실 장담 못하지
않을까요? \tabularnewline
\hline
\end{tabulary}

tabulary_test.jpg

12 기타 Q & A

12.1 \tabularnewline

Q1. >{\centering}m{40mm}을 이용하여 정렬을 시도했더니 줄바꿈문자에서 컴파일 에러가 납니다. 어떻게 해야 하나요?

A. \centering 등이 \\를 재정의하고 있기 때문입니다. \\ 대신 \tabularnewline을 사용하십시오.

12.2 소숫점 정렬

Q2. @{.}을 이용하는 트릭 외에 소수점 정렬을 하는 더 좋은 방법이 없을까요?

A. dcolumn 패키지를 이용하는 방법이 권장됩니다.

\begin{tabular}{|D{.}{.}{2}|}
\hline
\\ \hline
1.2 \\
1.23 \\
11.2 \\ \hline
\end{tabular}
여기서 D라는 칼럼지시자의 마지막 인수는 소숫점 아래 가장 많은 자릿수를 지정합니다. 그렇게 하면 오른쪽 정렬을 할 수 있습니다. 음수를 쓰면 가운데 정렬하면서 소숫점에 따라 나란히 배열할 수 있을 것입니다. <!> D 칼럼지시자가 지정되면 그 칼럼의 데이터는 모두 수학모드로 간주됩니다. 그러므로 텍스트를 넣으려면 \text 또는 \mbox를 이용해야 합니다.

12.3 sideways table

Q3. 표가 옆으로 너무 길어서 그러는데, 표를 90도 회전시키는 방법이 있습니까?

A.
  1. 프리엠블에다 \usepackage{rotating} 하시고 본문에다가 \begin{table}대신에 \begin{sidewaystable}하시면 됩니다.
  2. 만약 표가 옆으로 퍼져서 90도 돌려서 넣으려면 -> KTUGOperate:4308
    sideways를 말씀하시는 군요. \begin{sideways}\end{sideways} 사이에 원하는 것을 한 번 넣어 보세요. sidewaysfigure나 sidewaystable로 만들어진 결과는 dvi viewer에서는 제대로 보이지 않고, ps 또는 pdf로 결과를 확인해 보아야 합니다.
  3. hvfloat 패키지를 이용한 방법을 권장합니다. 다음 예는 KTUGOperate:15291에서 가져옴.
    %% preamble 
    \usepackage{hvfloat}
    
    %% body
    \savebox\hvOBox{%
    \begin{tabular}[b]{p{2cm}p{2cm}p{2cm}p{2cm}p{2cm}p{2cm}p{2cm}p{2cm}}
    Name of structure & Generation order & No. of structures & Diameter 
    Length & Total crossection & Total volume & Accumul.volume\\
    & z & n(z) & d(z) & l(z) & S(z) & V(z) & V(i) \\
    & & & mm & mm & cm$^2$ & cm$^3$ & cm$^3$ \\
    \hline
    Mouth and Pharynx & xx & 1 & 20 & 70 & xx & xx & xx\\
    Trachea&0&1&18&120&2.54&30.50&30.5\\
    \end{tabular}
    }
    
    \hvFloat[%
    	floatPos=p,%
    	capPos=t,%
    	capWidth=1,%
    	rotAngle=90,%
    	objectPos=c,%
    	useOBox=true%
    ]{table}{}{Geometric model of airways}{table_disease2}
    


12.4 adjustwidth

Q4. 표가 옆으로 약간 길어서 그러는데, 표를 왼쪽으로 튀어 나가게 하는 방법이 있습니까?

A.
  1. tabular 환경 바로 앞에
     \hskip-20mm%수치는 조정하십시요.
    
  2. 정도 주면 tabular만 왼쪽으로 이동합니다. table 환경 전체를 왼쪽으로 이동하려면 minipage 등을 써야 할 것 같습니다. --Yhchoe
  3. memoir라면 adjustwidth를 이용해서 표 부분의 문단폭을 넓힐 수 있습니다. memoir가 아니라면 ChngpagePackage 의 adjustwidth 환경을 응용해보시기 바랍니다.

12.5 multirow + colortbl

Q5. multirow와 colortbl을 함께 썼더니 multirow의 내용 일부가 color가 들어간 셀에 가려져서 보이지 않습니다.

A. multirow명령을 가장 마지막 행에 넣고 행의 갯수를 음수로 지정하십시오.
\begin{tabular}{l>{\columncolor{yellow}}l}
  aaaa & \\
  cccc & \\
  dddd & \multirow{-3}*{bbbb}\\
\end{tabular}


12.6 arraystretch

Q6. 표의 세로 간격을 조절할 수는 없는지요?

A. KTUGOperate:6444, KTUGOperate:3655 (by Progress)
\arraystretch 값을 바꿉니다.
\renewcommand{\arraystretch}{1.6}
%%<==표의 줄간격 조절. 괄호안의 숫자를 바꿔보세요.

13 그밖의 사용법 팁

  1. WinEdt이나 EmEditor/MTeXHelper 에서는 Tabular 메뉴를 찾아 클릭하므로서 뽄(型板, Template)을 입력할 수있다.
  2. LyX에서는 표를 워드프로세서에서와 같이 쉽게 그릴 수 있게 하는 도구를 메뉴에서 찾을 수 있다.
  3. Excel to LaTeX Converter : CTAN:support/excel2latex/
  4. 김주명 님이 만드신 Excel to LaTeX converter : Excel2Tabular
  5. Sun의 staroffice나 starsuite의 표계산프로그램인 Calc to LaTeX converter : Calc2LaTeX (아마도 Open Office도 될 듯하다.)

14 Tabu 패키지

  1. tabular 관련 가장 강력한 대안 패키지로서 tabu 환경을 제공한다. See TabuPackage





^
Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2012-11-01 16:18:34
Processing time 0.1765 sec