Mehrspaltigen Text am Dokumentrand mit Tabularx unterbrechen

Mehrspaltigen Text am Dokumentrand mit Tabularx unterbrechen

Ich benutzetabellarischxum den Inhalt einer Spalte am Dokumentrand umzubrechen (vgl.Zeilenumbruch in Tabellenzelle am Dokumentrand). Wenn ich es jedoch \multicolumnin 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}

Bildbeschreibung hier eingeben


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}

Bildbeschreibung hier eingeben

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 tabularxUmgebung durch gegeben ist \mylength. Um die richtige Breite zu berechnen, verwende ich zwei zusätzliche Längenvariablen \xlengthund \ylength. \xlengthwird auf die Breite der ersten Spalte (+ 4\tabcolsep) gesetzt; dann \ylengthwird als berechnet \mylength-\xlength.

Bildbeschreibung hier eingeben

\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 \xlengthentlang der im obigen Code angegebenen Zeilen lauteterforderlichweil die erste Spalte vom Typ lkeine vordefinierte Breite hat. Wenn Sie den Spaltentyp in ändern möchten p, 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 die tabularxUmgebung folgendermaßen starten:

    \begin{tabularx}{\mylength}{p{\xlength}lX}
    

    Beachten Sie, dass \xlengthes sich jetzt lediglich um die Breite der ersten Spalte handelt und der Begriff daher nicht enthalten ist 4\tabcolsep.

    Später in dieser tabularxUmgebung können Sie dann die Breite der zweispaltigen Spalte \multicolumn(vom Typ p, wie im vorherigen Beispiel) wie folgt angeben:

    \multicolumn{2}{p{\dimexpr\mylength-\xlength-4\tabcolsep}}{<stuff>}
    
  • Der Begriff 4\tabcolsepist die Summe von

    • 1\tabcolsepam linken Rand der Tabelle,
    • 2\tabcolsepfür die Menge an Leerzeichen zwischen den Spalten 1 und 2 und
    • 1\tabcolsepam rechten Rand der Tabelle.

verwandte Informationen