有没有简单的方法可以组合枚举列表中的两个项目?例如:
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
业务或任何事情;只需拆分该项目即可。