web-dev-qa-db-ja.com

LaTeXの表でテキストを折り返す方法

私はLaTeXでいくつかのテーブルを含むレポートを作成しています。テーブル内の私のセルデータがページの幅を超えているので、私はそれにこだわっています。テキストが表の同じセル内の次の行に入るようにテキストを折り返すことはできますか。

それはどういうわけかテーブルの幅に関係していますか?しかし、それはページの幅をオーバーシュートしているので、それは違いを生むでしょうか?

380
Arnkrishn

列指定子にはl/r/cの代わりにp {width}を使用してください。

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

通常のtabular環境では、marcogが示すようにp{width}列型を使用します。しかし、それはあなたに明示的な幅を与えることを強制します。

別の解決策は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パッケージもあります。詳細については、(TeXliveの)texdoc tabularyで各パッケージのドキュメントを入手できます。

130
Damien Pollet

他の選択肢は、テキストの折り返しが望まれる各セルにミニページを挿入することである。

\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}
43
Neil Rubens

私は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 から取得されます。

34
ozi

テキストを折り返して整列を維持したい場合は、そのセルをminipageまたはvarwidth環境で折り返すことができます(varwidthはvarwidthパッケージに由来します)。可変幅は「内容と同じ幅ですが、Xよりは広くありません」となります。 "p {xx}"のように振る舞うカスタムカラムタイプを作成することができます。

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

これはarrayパッケージを必要とするかもしれません。 \begin{tabular}{llM{2in}}のようなものを使うと、最初の2列は通常左寄せになり、3列目は通常左寄せになりますが、2inより広くなるとテキストは折り返されます。

5
cheshirekow

ケーキのようにシンプル!

現在の配置を維持Lname__、cname__またはrname__)のように(この場合はlname__)のような新しい列型を定義できます。

\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}

enter image description here

3
Shayan Amani