每三项列举一次

每三项列举一次

有没有办法让枚举环境每三项增加计数器?

我已经看到这个问题:枚举模式:1、1、2、2、3、3、... 等

但我正在寻找更简单的东西。

这应该可行,但我不想为每个项目设置计数器:

\begin{enumerate}
    \item First Item
    \setcounter{enumi}{0}
    \item Another first item
    \setcounter{enumi}{0}
    \item latest first item
    \item Second Item
    \setcounter{enumi}{1}
    \item Another second item
    \setcounter{enumi}{1}
    \item latest second item
\end{enumerate}

我想要这样的东西:

\begin{enumerateeachthree}
     \item First Item
     \item Another first item
     \item latest first item
     \item Second Item
     \item Another second item
     \item latest second item
\end{enumerateeachthree}

在两个例子中,输出必须是:1)第一项1)另一个第一项1)最新的第一项2)第二项2)另一个第二项2)最新的第二项

答案1

这是一个带有 的解决方案enumitem,借助expl3进行算术运算:

\documentclass{article}
\usepackage{enumitem,xparse}

\ExplSyntaxOn
\DeclareExpandableDocumentCommand{\counterbythree}{m}
 {
  \doc_counter_by_three:c { c@#1 }
 }
\cs_new:Nn \doc_counter_by_three:N
 {
  \int_div_truncate:nn { #1 + 2 } { 3 }
 }
\cs_generate_variant:Nn \doc_counter_by_three:N { c }
\AddEnumerateCounter{\counterbythree}{\doc_counter_by_three:c}{0}
\ExplSyntaxOff

\newenvironment{enumerateeachthree}[1][]
 {\enumerate[label=\counterbythree*.]}
 {\endenumerate}

\begin{document}

\begin{enumerateeachthree}
\item First Item
\item Another first item
\item latest first item
\item Second Item
\item Another second item
\item latest second item
\item Third Item
\item Another third item
\item latest third item
\end{enumerateeachthree}

\end{document}

在此处输入图片描述

答案2

没有包。我只定义了三个版本\item\itemA\itemB\itemC),其中两个enumi在调用 的已保存形式之前会减少计数器\item。它们还将 的下一次调用重新定义\item为下一个变体。

为了使流程顺利进行,我在启动传统环境之前定义了要设置enumerateeachthree的环境(这是经过编辑的,因为原始解决方案重新定义了环境,这可能并不理想)。\item\itemAenumerateenumerate

\documentclass{article}
\let\svitem\item
\def\itemA{\let\item\itemB\svitem}
\def\itemB{\let\item\itemC\addtocounter{enumi}{-1}\svitem}
\def\itemC{\let\item\itemA\addtocounter{enumi}{-1}\svitem}
\newenvironment{enumerateeachthree}{\let\item\itemA\enumerate}{\endenumerate}
\begin{document}
\begin{enumerateeachthree}
     \item First Item
     \item Another first item
     \item latest first item
     \item Second Item
     \item Another second item
     \item latest second item
\end{enumerateeachthree}
\end{document}

在此处输入图片描述


跟进:

虽然 OP 表示,对于他/她的代码,这种方法无法正确跟踪计数器(我尊重这一缺陷),但我只想让读者知道,这个问题肯定还有更多问题,因为以下 MWE 在带脚注的小页面中运行良好。

\documentclass{article}
\usepackage{lipsum}
\let\svitem\item
\def\itemA{\let\item\itemB\svitem}
\def\itemB{\let\item\itemC\addtocounter{enumi}{-1}\svitem}
\def\itemC{\let\item\itemA\addtocounter{enumi}{-1}\svitem}
\newenvironment{enumerateeachthree}{\let\item\itemA\enumerate}{\endenumerate}
\begin{document}
\lipsum[4]
\begin{minipage}{3in}
\lipsum[4]
\footnote{Footnote
\begin{enumerateeachthree}
     \item First Item
     \item Another first item
     \item latest first item
     \item Second Item
     \item Another second item
     \item latest second item
\end{enumerateeachthree}
}
\end{minipage}
\end{document}

在此处输入图片描述

相关内容