
Я пытаюсь создать сложную таблицу, где каждая ячейка сама по себе может быть таблицей.
Я обнаружил, что могу включить tabularx внутрь tabular*, но не могу понять, почему я получаю ошибку с внешней таблицей tabularx. Может быть, кто-то может увидеть, что я делаю неправильно.
Этот MWE работает. Тот, что ниже, не работает.
\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}
Теперь я изменил внешнюю таблицу на tabularX, и это не удалось:
\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}
ошибка это
(./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 на Linux
решение1
Вложенные элементы tabularx
должны быть окружены {
и}
\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}
Это согласно документации. Я нашел это, выполнив поиск nest
в документации.
Вам, вероятно, следует внести пару изменений. Использование \textwidth
внутри внутреннего tabularx
, скорее всего, приведет к тому, что столбцы будут слишком широкими. Вместо этого используйте \linewidth
. Вот измененная вложенная tabularx
конструкция:
\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}