tabularx und textbreite

Oct 01 2020

Ich möchte eine 3-Spalten-Tabelle in mein Projekt einfügen, habe jedoch Probleme beim Versuch, Text in eine Mehrfarben-Zelle einzufügen. Hier ist mein Code:

\begin{center}
\begin{tabularx}{\textwidth}{|c X c|}
\hline

\multicolumn{1}{|c}{} & 
\multicolumn{2}{>{\hsize=\dimexpr2\hsize+2\tabcolsep+\arrayrulewidth\relax}X|}{ cell0: text text text text text text text text text text text text text text text text }\\
\hline

cell1 & cell2: text text text text text text text text & cell3\\

\hline
\end{tabularx}
\end{center}

Das Problem ist, wenn ich den Befehl hsize verwende, um den Text richtig in Zelle0 einzufügen, verliert Zelle2 in der folgenden Zeile seine automatische Anpassung an Text und erhält eine feste Breite (die ich nicht möchte). Wie kann ich also den Text in Zelle0 anpassen, während Zelle2 die automatische Anpassung an Text beibehält?

Antworten

2 Mico Oct 01 2020 at 11:48

Ihre Berechnung der nutzbaren Breite des Objekts "cell0" ist falsch. Es wäre (fast) richtig, wenn beide zugrunde liegenden Spalten vom Typ wären X; das ist aber nicht der Fall, oder?

Um die nutzbare kombinierte Breite der Spalten 2 und 3 korrekt zu berechnen, empfehlen wir Ihnen, wie folgt vorzugehen.

  • Suchen Sie zunächst die Zelle in Spalte 3, die die natürliche Breite dieser Spalte bestimmt. Dies erfolgt normalerweise einfach und zuverlässig durch Sichtprüfung.

  • Angenommen, die Zelle, die die natürliche Breite von Spalte 3 definiert, besteht aus der Zeichenfolge aratherlongword. Seine Breite kann durch Laufen bestimmt werden

   \newlength\colwidth
   \settowidth\colwidth{aratherlongword}
  • Dann kann die nutzbare kombinierte Breite der Spalten 2 und 3 berechnet werden als
   \hsize=\dimexpr\hsize+\colwidth+2\tabcolsep\relax

Eine vollständige MWE (beachten Sie, dass ich sie verworfen habe, \multicolumn{1}{|c}{}da sie überflüssig ist.)

\documentclass{article}
\usepackage{tabularx}
\begin{document}

\begin{center}
\newlength\colwidth
\settowidth\colwidth{aratherlongword}
\begin{tabularx}{\textwidth}{|c X c|}
\hline
& \multicolumn{2}{>{\hsize=\dimexpr\hsize+\colwidth+2\tabcolsep\relax}X|}{%
  cell0: text text text text text text text text text text text text text text text text }\\
\hline
cell1 & cell2: text text text text text text text text & aratherlongword\\
\hline
\end{tabularx}
\end{center}
\end{document}