两列表格,枚举第一列但不枚举第二列

两列表格,枚举第一列但不枚举第二列

我需要一张包含两列的表格,其中第一列包含枚举,第二列包含纯文本。例如,

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?

在表格中保留列表的优点是,较长项目的标准间距( labelwidthlabelsep、 、 ...)仍然有效。您可能还想删除标签分隔符,但这取决于您的实际应用。所有这些设置都可以随时更改。有关更多信息,请参阅itemindentColumn 2enumitem文档

答案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}

相关内容