LaTeX: Umbruch von Text in Tabellenzelle

Bruddler

Aktives Mitglied
Thread Starter
Dabei seit
14.08.2006
Beiträge
1.543
Reaktionspunkte
15
Hallo,

wie erreiche ich es, daß längerer Text in einer Tabellenzelle umgebrochen wird. Bei meinem Beispiel wird einfach "über den Rand der Seite" rausgeschrieben.

Code:
\begin{center}
\begin{tabular}[]{|l|l|p{5cm}|r|}
\hline
\textbf{Symbol} & \textbf{Definition}\\
\hline\hline
Symbol & Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla faci\\
\hline
\end{tabular}
\end{center}

Danke :)
 
Zuletzt bearbeitet:
Zuletzt bearbeitet:
\begin{tabular}[]{|l|p{5cm}|}

sollte es klappen.

wobei mir nicht klar ist, weshalb da nur {|l|...

hinkommt...

Ich habe doch bei der zweispaltigen Tabelle folgendes Schema:

Rand - Textausrichtung links - Rand - Textausrichtung links - Rand

also

|l|l|

:kopfkratz:

und mit p{...} geb ich ja die Breite der Tabelle an, oder?
 
wobei mir nicht klar ist, weshalb da nur {|l|...

hinkommt...

Ich habe doch bei der zweispaltigen Tabelle folgendes Schema:

Rand - Textausrichtung links - Rand - Textausrichtung links - Rand

also

|l|l|

:kopfkratz:

und mit p{...} geb ich ja die Breite der Tabelle an, oder?
l gibt die Ausrichtung links an und p die Breite des Textes. Du kannst das Format einer Spalte aber nur über einen Parameter definieren, d. h. in deinem Fall entweder l oder p.

Wie man den Text innerhalb der p Spalte jetzt linksbündig hinbekommt weiß ich aber leider gerade auch nicht.
 
Wie man den Text innerhalb der p Spalte jetzt linksbündig hinbekommt weiß ich aber leider gerade auch nicht.

Aber ich! Einfach eine paar neuer Spaltenformate definieren:

\newcolumntype{L}[1]{>{\raggedright}p{#1}}
\newcolumntype{R}[1]{>{\raggedleft}p{#1}}
\newcolumntype{M}[1]{>{\raggedright}m{#1}}
\newcolumntype{C}[1]{>{\center}p{#1}}
 
Hallo,

ich empfehle, mal die Übersicht zum Tabellensatz durchzulesen, die hier unter „Sonstiges“ verlinkt ist.

Grüße,

Moni
 
Hallo!

Der Link von tasha führt leider ins Leere. Im Prinzip funktioniert aber die Definition von MacPiet - allerdings leider nicht in der letzten Spalte.

Die Tabelle
Code:
\begin{tabular}{|l|L{3cm}|L{3cm}|L{3cm}@{}|}
a&b b b b bbbbbbbbbbbbbbb&b b b b bbbbbbbbbbbbbbb& b b b b bbbbbbbbbbbbbbb\\
\end{tabular}
funktioniert nicht. Einen Workaround habe ich zwar gefunden, aber der ist äußerst unschön, nämlich das Hinzufügen einer Dummy-Spalte:
Code:
\begin{tabular}{|l|L{3cm}|L{3cm}|L{3cm}@{}p{0mm}@{}|}
a&b b b b bbbbbbbbbbbbbbb&b b b b bbbbbbbbbbbbbbb& b b b b bbbbbbbbbbbbbbb &\\
\end{tabular}
Wichtig ist offenbar für den Raggedright-Befehl, dass die Spalte mit einem & abgeschlossen wird. Vielleicht hat ja jemand da 'ne Idee oder die entsprechenden Pakete werden mal angepasst...
 
und mit p{...} geb ich ja die Breite der Tabelle an, oder?
Nein das hast du falsch verstanden, p{...} ist auch ein Spaltentyp.
Mit "|l|l|p{5cm}|r|" definierst du also insgesamt 4 Spalten: zwei linksbündige gefolgt von einer Textspalte und einer rechtsbündigen Spalte.

Hier ist das beispielsweise beschrieben:
http://en.wikibooks.org/wiki/LaTeX/Tables#The_tabular_environment

Diese Seite kann ich auch so zum nachschlagen empfehlen.

EDIT: sorry, gerade erst gesehen, dass die oberen Themen schon 4 Jahre alt sind :eek:
 
Ich hätte zwei Lösungsmöglichkeiten.

Nummer 1: Du schließt eine Zeile in der Tabelle nicht mit \\ ab, sondern verwendest den Befehl \tabularnewline.

Nummer 2: Oder du fügst in deiner "Spaltentypdefinition" hinter dem \raggedright (bzw. dem entsprechenden Befehl in den anderen Definitionen) den Befehl \arraybackslash ein (Beispiel: \newcolumntype{L}[1]{>{\raggedright\arraybackslash}p{#1}}), dann kannst du die Zeile wieder mit \\ beenden.
 
Wunderbar! Das funktioniert jetzt. Aus Neugierde: Woran liegt das? Kann man das einigermaßen kurz erklären?

Beim Einfügen der Tabelle in meine Arbeit fiel mir nur leider noch etwas auf - diese Variante verträgt sich leider nicht mit dem Pdfsync-Paket. Da werden die Spalten wahnsinnig breit gemacht - so dass es nicht mehr auf dem Blatt ist. Deaktiviere ich Pdfsync, sieht alles wieder normal aus.

Vielleicht ist das ja für jemanden von Interesse. Mir ist Pdfsync nicht so wichtig, da das mit eingebundenen Dateien eh nicht gut zurecht kommt...
 
Im Grunde ist \\ nichts anderes als ein normaler Befehl, den du bei Bedarf umdefinieren kannst. Im normalen Text fügt \\ beispielsweise einen Zeilenumbruch ein, in der Tabular-Umgebung wird der Befehl umdefiniert und dazu verwendet eine neue Tabellenzeile zu erzeugen. Die Befehle \raggedright usw. definieren in der Tabellenzelle, in der sie verwendet werden (also insbesondere, wenn die letzte Spalte damit formatiert wird), \\ für diese Zelle um, was dann in der letzten Zelle einer Zeile zum Problem wird, weil das abschließende \\ nicht mehr als neue Tabellenzeile interpretiert wird. Da der \\ in der Tabelle aber nur den Befehl \tabularnewline aufruft, kann man die neue Tabellenzeile auch einfach durch Eingabe dieses Befehls erzeugen. Eine andere Möglichkeit ist, nach \raggedright den Befehl \arraybackslash zu verwenden, der den \\ wieder so umdefiniert, dass er wieder eine neue Tabellenzeile erzeugt. Warum verwendet die Tabular-Umgebung den Befehl \\ um, damit nur einen anderen Befehl aufzurufen? Wahrscheinlich, weil \\ kürzer ist und der Anwender \\ als Zeilenumbruch kennt und es somit eingängiger ist damit auch neue Tabellenzeilen zu erzeugen.
 
Zurück
Oben Unten