
Beim Erstellen tabularx
muss 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, X
aber 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}
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}
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}