Wie berechnet man die Mehrspaltengröße bei Verwendung von Tabularx richtig?

Wie berechnet man die Mehrspaltengröße bei Verwendung von Tabularx richtig?

Wie kann ich die richtige Größe für den Einsatz mit den p{}erforderlichen \multicolumnAngaben auf die richtige Größe bestimmen?

Das Problem ist folgendes: Ich möchte verwenden tabularxund auch verwenden \multicolumn. Dazu muss ich \multicolumn eine genaue Größe zuweisen. Und das ist das Problem. Bei komplizierten Tabellen, bei denen ich eine Tabelle in einer anderen haben kann und eine Zeile sich über wenige Spalten erstreckt, werden die Berechnungen schwierig.

Es wird schwieriger, die richtige Größe zu ermitteln, und wenn ich die Tabelle später ändere, muss ich den Code erneut ändern.

Das erste Beispiel unten zeigt, dass X nicht mit \multicolumn verwendet werden kann, um es auf mehr als eine Spalte auszudehnen:

\documentclass[10pt,notitlepage]{article}%
\usepackage{tabularx}
\usepackage{array}
\newcolumntype{Y}{>{\centering\arraybackslash}X}
\usepackage{lipsum}
\setlength{\parindent}{0pt}
\begin{document}

\begin{tabularx}{\textwidth}{@{}|l|Y|@{}}\hline
 column 1 &
 {\begin{tabularx}{\linewidth}{@{}Y|Y|Y@{}}\hline
      \lipsum[75] & \lipsum[75] &  \lipsum[75] \\\hline
      \multicolumn{3}{X}{\lipsum[75]}
  \end{tabularx}
 }
 \\\hline
\end{tabularx}
\end{document}

Mathematica-Grafiken

Also muss verwendet werden p{}. Sonst würde es sich nicht auf die anderen Spalten ausdehnen.

Aber pwill eine Größe. nach einigem Ausprobieren, hier ist eine, die der benötigten Größe nahe kommt

\documentclass[10pt,notitlepage]{article}%
\usepackage{tabularx}
\usepackage{array}
\newcolumntype{Y}{>{\centering\arraybackslash}X}
\usepackage{lipsum}
\setlength{\parindent}{0pt}
\begin{document}

\begin{tabularx}{\textwidth}{@{}|l|Y|@{}}\hline
 column 1 &
 {\begin{tabularx}{\linewidth}{@{}Y|Y|Y@{}}\hline
       \lipsum[75] &  \lipsum[75] &   \lipsum[75] \\\hline
      \multicolumn{3}
        %this calculation below is needed, and not sure if it is correct now
        {p{.9\dimexpr \textwidth-4\arrayrulewidth-8\tabcolsep\relax}}{\lipsum[75]}
  \end{tabularx}
 }
 \\\hline
\end{tabularx}
\end{document}

Mathematica-Grafiken

.9Ok, jetzt ist es besser. Aber wenn ich später etwas ändere, muss ich es bestimmt zu etwas anderem ändern .

Die Frage ist: Ist das wirklich die Vorgehensweise in Latex? Es scheint, dass Latex eine Möglichkeit bieten sollte, dies automatisch zu tun. Gibt es einen besseren Ansatz, den ich mir ansehen sollte, anstatt das, was ich oben mache?

Das Obige ist ein kleines Beispiel. Ich möchte tabularx verwenden und auch andere tabularx-Tabellen darin haben. Das kann also sehr schnell kompliziert werden.

Antwort1

Sie benötigen hier keine Mehrspaltigkeit, Ihr Text ist nur ein Absatz über die gesamte Breite der äußeren Tabellenspalte. (Übrigens würde ich, wie ich bereits zuvor kommentiert habe, tabularx nicht für die innere Spalte verwenden: In einer Tabelle, in der jede Spalte eine XSpalte ist, kennen Sie die Spaltenbreiten im Voraus, sodass Sie tabularx nicht dazu bringen müssen, sie zu berechnen (obwohl es funktioniert).

\documentclass[10pt,notitlepage]{article}%
\usepackage{tabularx}
\usepackage{array}
\newcolumntype{Y}{>{\centering\arraybackslash}X}
\usepackage{lipsum}
\setlength{\parindent}{0pt}
\begin{document}

\begin{tabularx}{\textwidth}{@{}|l|Y|@{}}\hline
 column 1 &
 {\begin{tabularx}{\linewidth}{@{}Y|Y|Y@{}}\hline
       \lipsum[75] &  \lipsum[75] &   \lipsum[75] \\\hline
  \end{tabularx}
 }

\lipsum[75]
 \\\hline
\end{tabularx}
\end{document}

Antwort2

Dies ist eine Möglichkeit, das Ziel zu erreichen. Die Standardgröße jeder einzelnen Spalte ist \hsize. Um sie zu ändern, verwenden Sie >{\setlength\hsize{1\hsize}}. Was die 3-Spalten-Breite betrifft, muss man sie auf das Dreifache der Basis einstellen, \hsizeda sie 3 Spalten einnimmt.

Bildbeschreibung hier eingeben

Code:

\documentclass[10pt,notitlepage]{article}%
\usepackage{tabularx}
\usepackage{array}
\newcolumntype{Y}{>{\centering\arraybackslash}X}
\usepackage{lipsum}
\setlength{\parindent}{0pt}
\begin{document}

\begin{tabularx}{\textwidth}{@{}|l|Y|@{}}\hline
 column 1 &{
\begin{tabularx}{\linewidth}{Y|Y|Y}%
\lipsum[75] &\lipsum[75] & \lipsum[75] \\ \hline
\multicolumn{3}{>{\centering\setlength\hsize{3\hsize}}Y}{\lipsum[75]}
\end{tabularx}}\\ \hline
\end{tabularx}
\end{document}

verwandte Informationen