将枚举列表中的两个项目合并起来

将枚举列表中的两个项目合并起来

有没有简单的方法可以组合枚举列表中的两个项目?例如:

1.   First bullet
2-3. Second bullet
4.   Third bullet

我目前的计划是先搞砸\labelenumi,然后手动增加\enumi,但这看起来很丑陋

答案1

这里有一个更自动化的解决方案,可以省去你手动编号的麻烦。基本思想是定义一种新的\item称为\combine,它结合了n项合并为一个,其中n可以指定为可选参数(默认 2)。

为了处理具有不同标签格式(alpha、roman 等)的枚举,我还添加了一个命令来设置组合标签的标签格式。这可以在任何特定列表之前完成,或者如果所有列表都要求组合元素具有相同的排序,则可以在文档中完成一次。

一个警告:不要尝试\label与组合物品一起使用。

\documentclass{article}
\usepackage{calc}
\makeatletter
\newcounter{tmp@cnt}
\newcommand*\@labelpunc{.}
% command to combine items: optional argument to specify the number to be combined
% \combine[<num>]<item>
%
\newcommand*\combine[1][2]{%
    \refstepcounter{enumi}
    \setcounter{tmp@cnt}{\value{enumi}}
    \addtocounter{enumi}{#1-1}
    \item[\thetmp@cnt--\theenumi\@labelpunc]}
% command to set the label format and punctuation
% \labeltype[<punc>]{<format>} where default punctuation is none; <format> is 
% \alph \Alph \roman \Roman etc.  Not needed for default enumerations
%
\newcommand*\labeltype[2][]{\gdef\@labelpunc{#1}\renewcommand\thetmp@cnt{#2{tmp@cnt}}}
\makeatother
\usepackage{enumitem} % for demonstration purposes (not required for the above commands)
\begin{document}
\begin{enumerate}
\item An item
\item Another item
\combine Two items combined
\item Another one
\combine[4]Four items combined
\end{enumerate}

\labeltype{\Roman}
\begin{enumerate}[label=\Roman*]
\item An item
\combine Two items combined
\item The last item
\end{enumerate}
\end{document}

代码输出

答案2

由于您在评论中指出数字-内容映射是固定的,因此我将为每个项目使用自定义标签。在枚举环境中使用的目的是 1) 获取列表的格式和 2) 让 LaTeX 为您跟踪编号,这样您就不必自己动手了。但在这里您代码中的数字,这样您就可以看到什么是什么。我不知道这是否被认为是好的风格,但这就是我会做的:

\begin{enumerate}
    \item[1] Let $p$ be a number. What if it doesn't want to be a number? Then \dots
    \item[2--3] I'm going to tackle two things at once here, that's how amazing I am
    \item[4] Assume not. Then the question writer has erred. Impossible!
\end{enumerate}

这还有一个额外的好处:如果您稍后改变主意并想拆分项目 2 和 3,那么您不必担心任何额外的enumi业务或任何事情;只需拆分该项目即可。

相关内容