wake-up-neo.net

Wie wird Text in LaTeX-Tabellen umgebrochen?

Ich erstelle einen Bericht in LaTeX, der einige Tabellen enthält. Ich bleibe dabei, da meine Zellendaten in der Tabelle die Breite der Seite überschreiten. Kann ich den Text irgendwie so umbrechen, dass er in die nächste Zeile in derselben Zelle der Tabelle fällt?

Hängt es irgendwie mit der Tischbreite zusammen? Aber da es die Breite der Seite überschreitet, wird es einen Unterschied machen?

399
Arnkrishn

Verwenden Sie p {width} für Ihre Spaltenspezifizierer anstelle von l/r/c.

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

In der normalen tabular Umgebung möchten Sie den Spaltentyp p{width} verwenden, wie es marcog angibt. Das zwingt Sie aber dazu, explizite Breiten anzugeben.

Eine andere Lösung ist die tabularx -Umgebung:

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

Alle X-Spalten erhalten die gleiche Breite. Sie können dies beeinflussen, indem Sie in der Formatdeklaration \hsize setzen:

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

aber dann müssen wohl alle Faktoren zu 1 summieren (ich habe dies dem LaTeX-Begleiter entnommen). Es gibt auch das Paket tabulary, mit dem die Spaltenbreiten angepasst werden, um die Zeilenhöhen auszugleichen. Für die Details können Sie die Dokumentation für jedes Paket mit texdoc tabulary (in TeXlive) erhalten.

134
Damien Pollet

Eine andere Option ist das Einfügen einer Miniseite in jede Zelle, in der ein Textumbruch gewünscht wird, z.

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

Ich mag die Einfachheit des Pakets 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} 

Im Beispiel ordnen Sie die gesamte Breite der Tabelle in Bezug auf\textwidth an. ZB 0,4 davon. Dann erledigt das Paket den Rest automatisch.

Das meiste Beispiel stammt aus http://en.wikibooks.org/wiki/LaTeX/Tables .

35
ozi

Einfach wie ein Stück Kuchen!

Sie können einen neuen Spaltentyp wie (L in diesem Fall) definieren, während die aktuelle Ausrichtung beibehalten wird (c, r oder l):

\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

8
Shayan Amani

Wenn Sie Ihren Text umbrechen möchten, aber die Ausrichtung beibehalten möchten, können Sie diese Zelle in einer minipage- oder varwidth -Umgebung umbrechen (varwidth stammt aus dem varwidth-Paket). Die Breite ist "so breit wie der Inhalt, aber nicht breiter als X". Sie können einen benutzerdefinierten Spaltentyp erstellen, der sich wie "p {xx}" verhält, jedoch durch Verwendung von auf die Größe angepasst wird

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

hierfür ist möglicherweise das Paket array erforderlich. Wenn Sie dann so etwas wie \begin{tabular}{llM{2in}} verwenden, werden die ersten beiden Spalten linksbündig und die dritte Spalte linksbündig ausgerichtet. Wenn sie jedoch breiter als 2 Zoll wird, wird der Text umbrochen.

5
cheshirekow