Ich benutzetabellarischxum den Inhalt einer Spalte am Dokumentrand umzubrechen (vgl.Zeilenumbruch in Tabellenzelle am Dokumentrand). Wenn ich es jedoch \multicolumn
in einer solchen Tabelle verwende, wird die Anweisung zum Umbrechen des Textes in dieser Spalte ignoriert. Wie kann ich das erzwingen?
\documentclass{article}
\usepackage{tabularx}
\begin{document}
\newlength{\mylength}
\setlength{\mylength}{\linewidth}
\addtolength{\mylength}{-\parindent}
\hrule
\begin{tabularx}{\mylength}{lX}
Lorem ipsum dolor sit amet, consectetuer & adipiscing elit. Ut purus elit, vestibulum ut, placerat ac\\
\multicolumn{2}{l}{Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut purus elit, vestibulum ut, placerat ac}\\
\end{tabularx}
\hrule
\end{document}
Als Antwort auf Micos Frage:
\documentclass{article}
\usepackage{tabularx}
\begin{document}
\newlength{\mylength}
\setlength{\mylength}{\linewidth}
\addtolength{\mylength}{-\parindent}
\hrule
\begin{tabularx}{\mylength}{llX}
Lorem ipsum dolor & sit amet, consectetuer & adipiscing elit. Ut purus elit\\
\end{tabularx}
\hrule
\begin{tabularx}{\mylength}{llX}
Lorem ipsum dolor & sit amet, consectetuer & adipiscing elit. Ut purus elit\\
Lorem ipsum dolor sit & \multicolumn{2}{p{\mylength}}{Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut purus elit}\\
\end{tabularx}
\hrule
\end{document}
Antwort1
Das Folgende ist eine Version Ihres zweiten MWE. Beachten Sie, dass Sie diesen Parameter nicht für die kombinierte Breite der zweiten und dritten Spalte verwenden dürfen, da die Breite der gesamten tabularx
Umgebung durch gegeben ist \mylength
. Um die richtige Breite zu berechnen, verwende ich zwei zusätzliche Längenvariablen \xlength
und \ylength
. \xlength
wird auf die Breite der ersten Spalte (+ 4\tabcolsep
) gesetzt; dann \ylength
wird als berechnet \mylength-\xlength
.
\documentclass{article}
\usepackage{tabularx}
\hyphenation{ad-ip-is-cing} % no idea if this is correct...
\newlength\xlength
\settowidth\xlength{Lorem ipsum dolor sit}
\addtolength\xlength{4\tabcolsep}
\newlength\mylength
\setlength\mylength{\linewidth}
\addtolength\mylength{-\parindent}
\newlength\ylength
\setlength\ylength\mylength
\addtolength\ylength{-\xlength}
\begin{document}
\hrule
\begin{tabularx}{\mylength}{llX}
Lorem ipsum dolor & sit amet, consectetuer &
adipiscing elit. Ut purus elit\\
Lorem ipsum dolor sit &
\multicolumn{2}{p{\ylength}}{Lorem ipsum dolor sit amet,
consectetuer adipiscing elit. Ut purus elit}\\
\end{tabularx}
\hrule
\end{document}
NachtragEin paar Antworten auf die Folgefragen des OP:
Die Berechnung von
\xlength
entlang der im obigen Code angegebenen Zeilen lauteterforderlichweil die erste Spalte vom Typl
keine vordefinierte Breite hat. Wenn Sie den Spaltentyp in ändern möchtenp
, kann die Breite dieser Spalte direkt zur Berechnung der Breite der Mehrfachspalte verwendet werden.Wenn beispielsweise die Breite der ersten Spalte wie folgt angegeben ist
\xlength
(Sie können den Wert selbst wählen ...), können Sie dietabularx
Umgebung folgendermaßen starten:\begin{tabularx}{\mylength}{p{\xlength}lX}
Beachten Sie, dass
\xlength
es sich jetzt lediglich um die Breite der ersten Spalte handelt und der Begriff daher nicht enthalten ist4\tabcolsep
.Später in dieser
tabularx
Umgebung können Sie dann die Breite der zweispaltigen Spalte\multicolumn
(vom Typp
, wie im vorherigen Beispiel) wie folgt angeben:\multicolumn{2}{p{\dimexpr\mylength-\xlength-4\tabcolsep}}{<stuff>}
Der Begriff
4\tabcolsep
ist die Summe von1\tabcolsep
am linken Rand der Tabelle,2\tabcolsep
für die Menge an Leerzeichen zwischen den Spalten 1 und 2 und1\tabcolsep
am rechten Rand der Tabelle.