LaTeX 테이블에서 텍스트를 줄 바꿈하는 방법은 무엇입니까?


454

LaTeX에서 몇 가지 테이블이 포함 된 보고서를 작성 중입니다. 테이블의 셀 데이터가 페이지 너비를 초과함에 따라 그 문제가 발생합니다. 어떻게 든 텍스트를 테이블의 동일한 셀에서 다음 줄로 넘어갈 수 있습니까?

어떻게 든 테이블 너비와 관련이 있습니까? 그러나 페이지 너비를 초과하면 차이가 있습니까?


나는 긴 단어를 줄 바꿈하는 방법을 찾고 있었고, 다른 솔루션은 내 요구에 더 잘 맞는다. tex.stackexchange.com/questions/198325/wrap-word-in-table-cell
Miranda

답변:


513

l / r / c 대신 열 지정자에 p {width}를 사용하십시오.

\begin{tabular}{|p{1cm}|p{3cm}|}
  This text will be wrapped & Some more text \\
\end{tabular}

37
좋은 해결책이지만 '|' 테이블 주위에 테두리를 원하지 않으면 \begin{tabular}{p{1cm}p{3cm}}
그럴

83
각 셀에 정렬을 지정 하면서이 작업을 수행 할 수있는 방법이 있습니까?
Dylan Knowles

7
각 셀에서 정렬을 지정하는 방법을 찾았습니다! 매크로를 만드십시오! \ newcolumntype {L} {> {\ centering \ arraybackslash} m {.8cm}} \ begin {table *} [t] % \ small \ caption {Comparison} \ centering % \ begin {tabular} {| L | L | L | L | L | L | L | L | L | L | L | L | L |}
Veridian

8
첫 번째가 내용에 맞게 필요한 길이만큼 두 개의 열이 있고 다른 열이 줄 바꿈으로 줄 바꿈을하는 경우 어떻게해야합니까? 그래서 기본적으로begin{tabular}{lp{<whatever is left to fill the line width>}}
Sander

118
훌륭한 솔루션. 그러나 임의의 차원 대신 상대 값을 사용하는 것이 좋습니다. 예 :p{0.2\linewidth}p{0.6\linewidth}}
jgyou

139

일반적인 tabular환경에서는 p{width}marcog가 나타내는 것처럼 열 유형 을 사용하려고합니다 . 그러나 그로 인해 폭이 명시 적으로 나타납니다.

또 다른 해결책은 tabularx환경입니다.

\usepackage{tabularx}
...
\begin{tabularx}{\linewidth}{ r X }
    right-aligned foo & long long line of blah blah that will wrap when the table fills the column width\\
\end{tabularx}

모든 X 열의 너비는 동일합니다. \hsize형식 선언에서 설정 하여 이에 영향을 줄 수 있습니다 .

>{\setlength\hsize{.5\hsize}} X >{\setlength\hsize{1.5\hsize}} X

그러나 모든 요소는 1까지 합산해야한다고 생각합니다 (LaTeX 동반자에게서 이것을 취했습니다). tabulary행 높이의 균형을 맞추기 위해 열 너비를 조정 하는 패키지도 있습니다 . 자세한 내용 texdoc tabulary은 TeXlive에서 각 패키지에 대한 설명서를 얻을 수 있습니다 .


3
흥미 롭습니다. 정말 유용합니다. 열 너비를 선택할 때 얼마나 지능적입니까? 예를 들어 줄 바꿈해야하는 두 개의 열이 있지만 다른 열보다 훨씬 긴 텍스트가있는 열이 여전히 동일한 너비를 지정합니까?
moinudin

2
내 답변을 편집했습니다. 그러나 실제로는 단일 열에 X 만 필요하도록 테이블을 단순화하려고합니다. 방금 표를 발견했습니다 :)
Damien Pollet

49

또 다른 옵션은 텍스트 줄 바꿈이 필요한 각 셀에 미니 페이지를 삽입하는 것입니다. 예 :

\begin{table}[H]
\begin{tabular}{l}
\begin{minipage}[t]{0.8\columnwidth}%
a very long line a very long line a very long line a very long line
a very long line a very long line a very long line a very long line
a very long line a very long line a very long line %
\end{minipage}\tabularnewline
\end{tabular}
\end{table}

8
고마워, itemize내 셀에 목록 을 넣을 수있었습니다 .
Quentin Pradet

대답은 의미를 설명해야한다고 생각합니다 \columnwidth. 시도했을 때 열 너비보다 테이블 너비가 더 넓어 보였으므로 0.2\columnwidth합리적인 너비를 얻는 것과 같은 수동 비율을 설정해야했습니다 .
U. Windl

37

나는 tabulary패키지 의 단순함을 좋아한다 .

\usepackage{tabulary}
...
\begin{tabulary}{\linewidth}{LCL}
    \hline
    Short sentences      & \#  & Long sentences                                                 \\
    \hline
    This is short.       & 173 & This is much loooooooonger, because there are many more words.  \\
    This is not shorter. & 317 & This is still loooooooonger, because there are many more words. \\
    \hline
\end{tabulary} 

이 예에서는 \ textwidth를 기준으로 테이블의 전체 너비를 정렬합니다. 예를 들어 0.4입니다. 그런 다음 나머지는 패키지에 의해 자동으로 수행됩니다.

대부분의 예제는 http://en.wikibooks.org/wiki/LaTeX/Tables 에서 가져옵니다 .


20

케이크처럼 간단합니다!

현재 정렬 ( , 또는 ) L유지 하면서 ( 이 경우) 와 같은 새 열 유형을 정의 할 수 있습니다 .crl

\documentclass{article}
\usepackage{array}
\newcolumntype{L}{>{\centering\arraybackslash}m{3cm}}

\begin{document}

\begin{table}
    \begin{tabular}{|c|L|L|}
        \hline
        Title 1 & Title 2 & Title 3 \\
        \hline 
        one-liner & multi-line and centered & \multicolumn{1}{m{3cm}|}{multi-line piece of text to show case a multi-line and justified cell}   \\
        \hline
        apple & orange & banana \\
        \hline
        apple & orange & banana \\
        \hline
    \end{tabular}
\end{table}
\end{document}

여기에 이미지 설명을 입력하십시오


5

텍스트를 줄 바꿈하지만 정렬을 유지하려는 경우 해당 셀을 환경 minipage또는 varwidth환경 에서 줄 바꿈 할 수 있습니다 (가로 폭은 varwidth 패키지에서 제공됨). Varwidth는 "내용만큼 넓지 만 X보다 넓지 않습니다". "p {xx}"처럼 작동하지만 다음을 사용하여 줄어드는 사용자 정의 열 유형을 만들 수 있습니다.

\newcolumntype{M}[1]{>{\begin{varwidth}[t]{#1}}l<{\end{varwidth}}}

array패키지 가 필요할 수 있습니다 . 그런 다음 \begin{tabular}{llM{2in}}처음 두 열과 같은 것을 사용할 때 우리는 정상적인 왼쪽 정렬이고 세 번째 열은 왼쪽에서 정상적인 정렬되지만 2in보다 넓 으면 텍스트가 줄 바꿈됩니다.


1

텍스트를 변경하려면 ABA \r B테이블 셀의 셀 위치에 이것을 넣어 : \makecell{A \\ B}.

그렇게하기 전에 package도 포함해야합니다 makecell.


-11
\begin{table}
 \caption{ Example of force text wrap}
 \begin{center}
  \begin{tabular}{|c|c|}
   \hline
   cell 1       &   cell 2 \\   \hline
   cell 3                &       cell 4 & & very big line that needs to be wrap. \\ \hline
   cell 5       &   cell 6 \\   \hline
  \end{tabular}
  \label{table:example}
 \end{center}
\end{table}

공감. 이것은 전혀 설명이없는 코드 전용 답변입니다.
starbeamrainbowlabs

1
또한 두 번째 행에는 테이블이 두 개의 열만 수용하도록 설계된 4 개의 셀이 있으므로 어쨌든 잘못되었습니다. 그리고 그것은 어떻게 든 셀 내용을 감싸는 것과 관련이 없습니다.
Ahmed 살라
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.