我有 15 个项目的枚举。如何让这些项目显示在 3x5 表中?
所以我希望每个表格单元格只有一个枚举项:
---------------------------------- | 1. 这是 | 2 | 3 另一个 | | 项目 1 | 文本 | 项目 | ---------------------------------- | 4 等 | 5 | 6 | ---------------------------------- ...
答案1
有两种方法可以做到这一点。最简单的方法是使用multicol
包和常规枚举,但这最终会按列而不是按行对项目进行编号。如果这是可以接受的,那么这是迄今为止最简单的解决方案。要处理引用,您可以像往常一样向任何项目添加标签。
一个更笨拙的解决方案是创建一个枚举表环境。这是我在第二个示例中所做的。我使用该array
包创建了一种新的列类型T
,它实际上是两列,一列包含枚举,另一列包含内容。为了使语法类似于枚举,我在该环境中重新定义了,但您仍然需要像在常规表中一样在每个项目的末尾\item
添加&
and 。\\
环境tabularlist
采用一个参数作为单元格标签前缀,然后根据T
列采用一个常规表格规范。
传递给列类型的长度T
对应于列应占的比例\linewidth
。对于三列表,应将其设置为.27
;对于两列表,应将其设置为约.45
。
单元格标签前缀为每个单元格设置一个自动标签,以处理引用问题。在示例文档中,我使用了以下形式:
\begin{tabularlist}{TAB1}{T{.27}T{.27}T{.27}}
这将为表格中的每个单元格设置一个标签,其形式为\label{TAB1:<cell number>}
,因此如果您想引用单元格 5,您只需\ref{TAB1:5}
在参考文本中使用即可。
\tblenumlabelspace
我还为枚举标签和内容之间的间距添加了用户可设置的长度。
\documentclass{article}
\usepackage[margin=1in]{geometry}
\usepackage{multicol}
\usepackage{array}
\usepackage{etoolbox}
\newenvironment{tabularlist}[1]{%
\preto{\tabular}{\renewcommand{\item}{\label{#1:\thetblenum} &} \setcounter{tblenum}{0}}
\setlength{\extrarowheight}{.5\baselineskip}
\begin{tabular}}
{\end{tabular}}
\newcounter{tblenum}
\newlength{\tblenumlabelspace}
\setlength{\tblenumlabelspace}{.75em}
\newcolumntype{T}[1]{@{}>{\refstepcounter{tblenum}\thetblenum.}
r@{\hspace{\tblenumlabelspace}}p{#1\linewidth}}
\begin{document}
\begin{multicols}{3}
\begin{enumerate}
\item First item is long and will wrap.
\item Second item
\item Third item
\item Fourth item
\item Fifth item
\item Sixth item
\item Seventh item
\item Eighth item
\item Ninth item
\item Tenth item
\item Eleventh item
\item Twelfth item
\item Thirteenth item
\item Fourteenth item
\item Fifteenth item
\end{enumerate}
\end{multicols}
\noindent
\begin{tabularlist}{TAB1}{T{.27}T{.27}T{.27}}
\item First item that is quite long and will wrap. &
\item Second item &
\item Third item\\
\item Fourth item &
\item Fifth item &
\item Sixth item\\
\item Seventh item &
\item Eighth item &
\item Ninth item\\
\item Tenth item &
\item Eleventh item &
\item Twelfth item \\
\item Thirteenth item &
\item Fourteenth item &
\item Fifteenth item
\end{tabularlist}
\bigskip
In Item \ref{TAB1:5} we can see \ldots.
\end{document}
答案2
尽管 Alans 的解决方案更好(就我而言),但我还是想分享我的初步工作:
我使用 gb4e 包创建了自定义的枚举环境。每个单元格一个。为了更好地阅读表格,我将每个单元格项的文本放在其自己的命令中。
\documentclass{article}
\usepackage{gb4e}
\begin{document}
\newcommand{\myHeaderLabel}[2]{\vspace{-1.4em} \begin{exe} \ex \label{#2} \texttt{#1:} \end{exe} \vspace{-1em}}
\newcommand{\entryA}{
\myHeaderLabel{Item}{i:labelA}
First item is long and will wrap.
}
\newcommand{\entryB}{
\myHeaderLabel{Item}{i:labelB}
Second item
}
\newcommand{\entryC}{
\myHeaderLabel{Item}{i:labelC}
Text, text, text
}
\newcommand{\entry}{
\myHeaderLabel{Another item}{i:label}
Text, text, text
}
\begin{table}[h]
\caption{One item per table cell}
\begin{tabular*}{\hsize}{@{\extracolsep{\fill}}
p{\dimexpr \textwidth/3-1\tabcolsep}
p{\dimexpr \textwidth/3-2\tabcolsep}
p{\dimexpr \textwidth/3-1\tabcolsep}@{}}
\hline
\entryA & \entryB & \entryC \\
\hline
\entry & \entry & \entry \\
\hline
\entry & \entry & \entry \\
\hline
\entry & \entry & \entry \\
\colrule
\entry & \entry & \entry \\
\hline
\end{tabular*}
\label{tab:useCases}
\end{table}
In Items \ref{i:labelA} and \ref{i:labelB} we can see \ldots.
\end{document}