我想创建一个多列列表,每列包含相同数量的项目。我尝试使用多列,但有些项目的高度比其他项目大,所以我得到了一列 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}