我有一张大表,其中第一列是项目列表(使用 itemize 和 enumerate),第二列和第三列是相对于第一列中每个项目的值。我正在尝试寻找一种可以在表格中使用列表的解决方案,如下所示:
\begin{tabular}{p{.6\linewidth}p{.2\linewidth}p{.2\linewidth}}
items here & values 1 & values 2
\begin{enumerate}
\item First Item & & \\ \hline
\begin{itemize}
\item From Itemize & value & other value \\
\item Another one & another value & other value 2\\ \hline
\end{itemize}
\item Second from enum & something & value 3 \\ \hline
\end{enumerate}
\end{tabular}
有没有这样一种方式来创建 LaTeX 表格?
答案1
这是一个解决方案:
mttabular
定义了一个新的环境,在它里面\item
重新定义了OP需要做的事情\parbox
(可以使用minipage
它可能为表格选项提供更多的灵活性,例如m{length})。
mttabular
环境需要 2 个参数:最后 2 列的宽度,第一列的宽度由这两个函数计算。
\documentclass{article}
\makeatletter
\newenvironment{mttabular}[2]{%
\let\mtitem\item%
\def\item##1&##2&##3\\{%
\mtitem
\parbox[t]{\dimexpr\linewidth-2\tabcolsep-#1-#2\relax}{##1}%
\hfill\parbox[t]{#1}{##2}%
\hfill\parbox[t]{#2}{##3}}%
}%
{\relax}
\makeatother
\begin{document}
bla bla
\begin{mttabular}{.15\textwidth}{.15\textwidth}
\begin{enumerate}
\item First Item & & \\
\item First Item & & \\
\begin{itemize}
\item From Itemize & value & other value \\
\item Another one & another value & other value 2\\
\end{itemize}
\item Second from enum & something & value 3 \\
\end{enumerate}
\end{mttabular}
\end{document}