我需要一张包含两列的表格,其中第一列包含枚举,第二列包含纯文本。例如,
Column 1 Column 2
1. Step 1 Reason 1
2. Step 2 Reason 2
我尝试了几种表格与枚举环境的组合,但都没有用。有人能告诉我怎么做吗?
答案1
为了将标准列表环境包含在内,tabular
您需要将其“装箱”。minipage
环境提供了一种很好的方法。此外,项目标签可以通过以下方式轻松自定义enumitem
:
\documentclass{article}
\usepackage{enumitem}% http://ctan.org/pkg/enumitem
\begin{document}
\begin{tabular}{c c}
Column 1 & Column 2 \\ \hline \\[-\dimexpr\normalbaselineskip-\jot]
\begin{minipage}{0.3\textwidth}\begin{enumerate}[label={\strut\arabic*.}]
\item First step
\item Second step
\item Last step
\end{enumerate}\end{minipage} &
\begin{minipage}{0.3\textwidth}\begin{enumerate}[label={\strut}]
\item First reason
\item Second reason
\item Last reason
\end{enumerate}\end{minipage} \\ \hline
\end{tabular}
\end{document}
列表Column 1
具有常规列表形式,而 中的列表则Column 2
没有标签。我\strut
在两个标签上都添加了 ,以确保没有降部的短项目具有适当的深度。此外,由于minipage
众所周知装箱会消除适当的垂直间距,因此我\jot
在列标题和tabular
正文之间添加了间隙。这是通过添加额外的一行高度来实现的\jot-\normalbaselineskip
(通过\dimexpr
)。有关minipage
“行为”和可能的更正的更多信息,可以从以下网址获得:如何在使用 minipages (或 \parboxes) 时保持恒定的 baselineskip?
在表格中保留列表的优点是,较长项目的标准间距( labelwidth
、labelsep
、 、 ...)仍然有效。您可能还想删除标签分隔符,但这取决于您的实际应用。所有这些设置都可以随时更改。有关更多信息,请参阅itemindent
Column 2
enumitem
文档。
答案2
您可以简单地使用您自己的计数器:
笔记:
- 正如@egreg评论的那样,最好使用
\theNumber
而不是\the\value{Number}
:通过更改前者的定义,可以更改表中的格式而无需干预每个单元格。 请参阅访问计数器的正确方法是什么?
代码:
\documentclass{article}
\newcounter{Number}
\newcommand{\Item}{\stepcounter{Number}\theNumber.~}
\begin{document}
\begin{tabular}{c c}\setcounter{Number}{0}
Column 1 & Column 2\\
\Item Step 1 & Reason 1\\
\Item Step 2 & Reason 2
\end{tabular}
\end{document}
答案3
我采用了 Peter Grill 的想法,并提出了一个复杂、美观的解决方案,代码中有注释。我个人认为表 2 更好(带有 的那个p{.4\textwidth}
)。
\documentclass{article}
% tabularx for the ! command, booktabs for the rules and spacing
\usepackage{tabularx,booktabs}
% counter for the items
\newcounter{rowcnt}
% this macro typesets the number
\def\tableitem{\vspace{\itemsep}\ \stepcounter{rowcnt}\therowcnt.\ }
\begin{document}
\begin{table}
% horizontal center
\centering
% reset counter to zero
\setcounter{rowcnt}{0}
% the ! command places its argument at the very beginning of every line
\begin{tabular}{!{\tableitem} cc}
\toprule
% multicolumn just to kill the ! command on this line
\multicolumn{1}{c}{\bf Steps} & \bf Reasons \\\midrule
Step 1 & Reason 1 longer \\
Step 2 longer & Reason 2 \\
% the [-\itemsep] is acutally a parameter of \\ above and kills the \itemsep of the last row of the table
[-\itemsep]\bottomrule
\end{tabular}
\caption{Steps and reasons}
\end{table}
\begin{table}
\centering
\setcounter{rowcnt}{0}
\begin{tabular}{!{\tableitem} p{.4\textwidth} p{.4\textwidth}}
\toprule
\multicolumn{1}{c}{\bf Steps} & \multicolumn{1}{c}{\bf Reasons} \\\midrule
Step $\sum_{k=1}^\infty2^{-k}$ & We know that the sum converges to a number $1$. \\
Step $\sum_{k=0}^\infty2^{-k}$ &
We added $2^0=1$ to the previous sum, and even a small child know that $1+1$ equal to $2$, which is a number in front of this line.\\
[-\itemsep]\bottomrule
\end{tabular}
\caption{Second, identical table, we just use \texttt{p\{.4\textbackslash textwidth\}} as column specification, for long contents}
\end{table}
\begin{table}
\centering
\begin{tabular}{!{\tableitem} cc}
\toprule
\multicolumn{1}{c}{\bf Steps} & \bf Reasons \\\midrule
Step X & Reason X longer \\
Step Y longer & Reason Y \\
[-\itemsep]\bottomrule
\end{tabular}
\caption{Third table, we removed the command \texttt{\textbackslash setcounter\{rowcnt\}\{0\}} so that the numbering continues}
\end{table}
\end{document}