枚举内的对齐

枚举内的对齐

enumerate我正在寻找一种方法来将(和其他类似列表的环境)的功能与表格环境的功能结合起来。

具体来说,我喜欢的enumerate是它提供自动编号,并且它生成一个直接的“流”输出,可以将其包装在multicols环境中,这样我就可以轻松更改所需的列数。tabular但我需要的是与 类似的,我需要在每个枚举项内有多个对齐点。

我理想中想要做的是这样的:

\begin{coolEnv}{lrc}{2} % specifying two columns
   \item This should & align & and stuff
   \item This should & also align & and everything
   \item This should & additionally align & and all
   \item This here should & be aligned & with the rest
\end{coolEnv}

我想要的输出是好像是六列,但实际上应该是两列,每列有三个“子列”。也就是说,我{2}在环境中说“我想要两列”,但由于环境的每个项目都有两个对齐点,因此单独的部分也应该按列对齐。我希望能够像在{lrc}那里一样指定子列的对齐方式,但这是最不重要的部分。

我之所以要这样做,是因为我经常发现自己创建了tabular一些列的 s,但后来又决定要让它们更宽,而不是又高又瘦,整个tabular包装成多个列(枚举在环境中的方式multicols)。使用tabular,这需要我完全删除tabular并移动所有的&s 和\\s ,因为tabular需要我指定什么是显示在同一行上,而不是哪些数据属于同一行。我想要一种方法来指定数据表格的语义“行”(即必须保持在一起的信息组)无需指定我希望它如何流动(即一行上打印多少个这样的组)。我希望保留以后说“我希望一行上打印 X 个组”的自由,而不必重新做整个事情。

我查看了各种软件包组合,例如、、、等multicol,但似乎都不能满足我的要求。有没有干净的解决方案?enumeratelistliketabmultienum

答案1

我一直都用\makebox这个方法。如果需要超过两三次,可以创建一个宏来接受n论据n列。例如

\newcommand\itemrow[3]{%
  \item\makebox[8em][l]{#1}%
    \makebox[8em][r]{#2}%
    \makebox[8em][c]{#3}%
}

\begin{enumerate}
   \itemrow{This should}{align}{and stuff}
   \itemrow{This should}{also align}{and everything}
   \itemrow{This should}{additionally align}{and all}
   \itemrow{This here should}{be aligned}{with the rest}
\end{enumerate}

但这当然是一个相当不灵活的解决方案。

最好的

相关内容