Wie kann man erreichen, dass die Breite einer inneren Tabelle die volle Spaltenbreite einer äußeren Tabelle nutzt?

Wie kann man erreichen, dass die Breite einer inneren Tabelle die volle Spaltenbreite einer äußeren Tabelle nutzt?

Beim Erstellen tabularxmuss man eine Tabellenbreite angeben. Für die äußerste Tabelle kann man verwenden \textwidth.

Wenn Sie eine oder mehrere innere Tabellen innerhalb äußerer Tabellen erstellen, benötigen die inneren Tabellen ebenfalls eine Breite. In diesem Fall ist dies die Breite der Spalte der äußeren Tabelle, in der sich diese innere Tabelle zufällig befand. Es ist schwierig, den Überblick über den Kontext zu behalten und manuell fest codierte Werte einzugeben.

Ich weiß nicht, wie ich LaTeX anweisen kann, die gesamte verfügbare Spaltenbreite der äußeren Tabelle zu verwenden und LaTeX die Berechnung durchführen zu lassen. Ich brauche etwas Ähnliches, Xaber für die Tabellenbreite selbst.

Hier ist ein MWE, eine Tabelle in einer anderen.

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

%have to use tabular* for outer table since I can't figure how to use tabularx
\begin{tabular*}{\textwidth}{|p{0.5\textwidth}|p{0.5\textwidth}|}\hline

 \begin{tabularx}{0.5\textwidth}{@{}|Y|Y|Y|@{}}\hline  % how to automate this?
                                                       % instead of 0.5\textwidth
                                                       % use full column width

    \href{foo/index.htm}{A}
    \begin{enumerate}
      \item item 1
      \item item 2
    \end{enumerate}& 
    \href{foo/index.htm}{B}& 
    \href{foo/index.htm}{C}\\\hline
 \end{tabularx} 

  &

  second column

\end{tabular*}
\end{document}

Mathematica-Grafiken

Antwort1

Sie können verwenden \linewidth. Nützliche Referenzen sind:diese Frage und ihre Antwort. Es wäre besser, p{\dimexpr0.5\textwidth-2\tabcolsep\relax}für die äußere Tabelle eine linksbündige Zellstruktur zu verwenden und für enumerate.

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

%have to use tabular* for outer table since I can't figure how to use tabularx

\noindent\begin{tabular*}{\textwidth}{|p{\dimexpr0.5\textwidth-2\tabcolsep\relax}|
                                @{\extracolsep{\fill}}p{\dimexpr0.5\textwidth-2\tabcolsep\relax}|}\hline

 \begin{tabularx}{\linewidth}{@{}|p{0.35\hsize}|Y|Y|@{}}\hline  % how to automate this?
                                                       % instead of 0.5\textwidth
                                                       % use full column width
    {\centering \href{foo/index.htm}{A}\par}    
    \begin{enumerate}
      \item item 1
      \item item 2
    \end{enumerate}
    &
    \href{foo/index.htm}{B}&
    \href{foo/index.htm}{C}\\\hline
 \end{tabularx}
  &
  second column
\end{tabular*}
\end{document}

Bildbeschreibung hier eingeben

Antwort2

Überprüfen Sie, ob es das ist, was Sie erreichen möchten:

\documentclass[10pt,notitlepage]{article}%
\usepackage{array,tabularx,hyperref}
\newcolumntype{Y}{>{\centering\arraybackslash}X}
 \begin{document}
\begin{tabularx}{\textwidth}{|@{}X@{}|X|}%outer table, @{} omit column separation 
    \hline
    {\begin{tabularx}{\hsize}{|Y|Y|Y|}
    \hline
\href{foo/index.htm}{A}
    \begin{enumerate}
      \item item 1
      \item item 2
    \end{enumerate} &
        \href{foo/index.htm}{B} &
            \href{foo/index.htm}{C} \\
    \hline
    \end{tabularx}}
                &   second column   \\
\end{tabularx}
\end{document}

verwandte Informationen