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}}
Andrejas 2012年

83
各セルの配置を指定しながらこれを行う方法はありますか?
Dylan Knowles 2013

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 | L |}
ベリディアン2013

8
2つの列があり、最初の列は内容に合わせて必要な長さで、もう1つの列は折り返し中に線幅まで埋める場合はどうなりますか?基本的に、私は必要ですbegin{tabular}{lp{<whatever is left to fill the line width>}}
サンダー2014年

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
興味深いことに、それは本当に便利に見えます。列幅の選択に関しては、どの程度インテリジェントですか?たとえば、折り返す必要がある2つの列があり、一方が他方よりもはるかに長いテキストがある場合でも、同じ幅に割り当てられますか?
モイヌディン2009

2
回答を編集しました。しかし、実際には実際にはテーブルを単純化して、1つの列にXしか必要ないようにします。私は表形式を発見しました:)
Damien Pollet

50

別のオプションは、テキストの折り返しが必要な各セルにミニページを挿入することです。例:

\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、2011

答えは次の意味を説明するはずだと思います。\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パッケージから取得されます)。Varwidthは、「コンテンツと同じ幅ですが、Xよりも広くはありません」。「p {xx}」のように機能するが、次のコマンドを使用して収まるように縮小するカスタム列タイプを作成できます。

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

arrayパッケージが必要な場合があります。次に\begin{tabular}{llM{2in}}、最初の2列のようなものを使用すると、通常は左揃えになり、3番目の列は通常の左揃えになりますが、2インチより広くなると、テキストが折り返されます。


1

テキストABA \r B表のセルに変更するには、これをセルの位置に挿入します\makecell{A \\ B}

その前に、packageを含める必要もありますmakecell


-12
\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
さらに、2番目の行には4つのセルが含まれており、テーブルが2つの列のみを収容するように設計されているため、それはとにかく間違っています。また、セルの内容の折り返しとは関係ありません。
アーメドサラ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.