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
,但似乎都不能满足我的要求。有没有干净的解决方案?enumerate
listliketab
multienum
答案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}
但这当然是一个相当不灵活的解决方案。
最好的