多列列表,每列包含相同数量的项目

多列列表,每列包含相同数量的项目

我想创建一个多列列表,每列包含相同数量的项目。我尝试使用多列,但有些项目的高度比其他项目大,所以我得到了一列 5 个项目和一列 3 个项目:

\documentclass{article}
\usepackage{multicol}
\usepackage{amsmath}
\begin{document}
\begin{multicols}{2}
\begin{enumerate}
\item $1$
\item $2$
\item $3$
\item $4$
\item $5$
\item $\cfrac{1}{4}$
\item $\cfrac{1}{5}$
\item $\cfrac{1}{6}$
\end{enumerate}
\end{multicols}
\end{document}

在此处输入图片描述 有没有简单的方法可以让每列的项目数相同?

答案1

我会创建自己的环境,比如myenumerate,插入一个支柱,每个支柱的\item高度和深度都预先定义好,以便容纳最大的物品。我在下面对其进行了硬编码,使其深度1\baselineskip和跨度为3\baselineskip(实际上2\baselineskip高于基线):

在此处输入图片描述

\documentclass{article}
\usepackage{multicol,amsmath}% http://ctan.org/pkg/{multicol,amsmath,etoolbox}
\newenvironment{myenumerate}
  {\enumerate% Regular enumerate environment
   \def\makelabel##1{\hss\llap{##1}\rule[-\baselineskip]{0pt}{3\baselineskip}}}
  {\endenumerate}
\begin{document}
\begin{multicols}{2}
\begin{myenumerate}
  \item $1$
  \item $2$
  \item $3$
  \item $4$
  \item $5$
  \item $\dfrac{1}{4}$
  \item $\dfrac{1}{5}$
  \item $\dfrac{1}{6}$
\end{myenumerate}
\end{multicols}
\end{document}

\makelabel通过对负责设置实际标签格式的宏进行(局部)重新定义来插入支柱。

答案2

另一个选择是tasks我刚刚了解的包。

该包的副作用是编号水平递增而不是垂直递增,但这对我来说没问题。此外,还有一些限制,例如tasks环境不能嵌套(但可以包含itemize和其他正常列表)。我对这两个事实都满意。

\documentclass{article}
\usepackage{multicol}
\usepackage{tasks}

\everymath{\displaystyle}

\begin{document}
    \begin{tasks}(2)
        \task $1$
        \task $2$
        \task $3$
        \task $\frac{1}{4}$
        \task $5$
        \task $\frac{1}{5}$
        \task $4$
        \task $\frac{1}{6}$
    \end{tasks}

\end{document}

在此处输入图片描述

相关内容