So fügen Sie Tabularx in Tabularx ein

So fügen Sie Tabularx in Tabularx ein

Ich versuche, eine komplizierte Tabelle zu erstellen, bei der jede Zelle selbst eine Tabelle sein kann.

Ich habe festgestellt, dass ich tabularx in tabular* einbinden kann, kann aber nicht herausfinden, warum ich einen Fehler erhalte, wenn die äußere Tabelle ebenfalls tabularx ist. Vielleicht kann jemand sehen, was ich falsch mache.

Dieses MWE funktioniert. Das darunter funktioniert nicht.

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

\begin{tabular*}{\textwidth}{p{\textwidth}}\hline
 \begin{tabularx}{\textwidth}{@{}|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}

\end{tabular*}
\end{document}

Mathematica-Grafiken

Jetzt ändere ich die äußere Tabelle in tabularX und es ist fehlgeschlagen:

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

\begin{tabularx}{\textwidth}{@{}Y@{}}\hline
 \begin{tabularx}{\textwidth}{@{}|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}

\end{tabularx}
\end{document}

Fehler ist

(./foo2.out) (./foo2.out)
! Extra }, or forgotten \endgroup.
\TX@trial ...er \tabular \the \toks@ \endtabular }
                                                  \TX@ckpt \TX@typeout@ {\@s...
l.18  \end{tabularx}

? 

Texlive 2013 unter Linux verwenden

Antwort1

Die verschachtelten Elemente tabularxsollten umgeben sein von {und}

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

\begin{tabularx}{\textwidth}{@{}Y@{}}\hline
 {\begin{tabularx}{\textwidth}{@{}|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}}

\end{tabularx}
\end{document}

nestDies steht in der Dokumentation. Ich habe es gefunden, indem ich in der Dokumentation danach gesucht habe .

Sie sollten jedoch wahrscheinlich ein paar Änderungen vornehmen. Die Verwendung \textwidthvon „inner“ tabularxführt höchstwahrscheinlich dazu, dass die Spalten zu breit sind. Verwenden Sie stattdessen \linewidth. Hier ist eine modifizierte verschachtelte tabularxKonstruktion:

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

\begin{tabularx}{\textwidth}{@{}lY@{}}\hline
 Hello &
 {\begin{tabularx}{\linewidth}{@{}|Y|Y|Y|@{}}\hline
    \href{foo/index.htm}{A}
    \begin{enumerate}
      \item item 1 \lipsum[1]
      \item item 2
    \end{enumerate}
    & 
    \href{foo/index.htm}{B}

     \lipsum[2]
    & 
    \href{foo/index.htm}{C}

    3:\lipsum[3] \\\hline
 \end{tabularx}}
\end{tabularx}
\end{document}

Bildbeschreibung hier eingeben

verwandte Informationen