跳过枚举环境中的每个偶数项

跳过枚举环境中的每个偶数项

我怎样才能跳过环境中的每个偶数项而enumerate不必不断输入\setcounter{enumi}{5}?我仍在学习编写宏,因此如果这是一个非常简单的问题,我深表歉意。

为了清楚起见,我想要类似的东西

1. *Something.* 3. *Somthing else.* 5. *A third something.* ...相对于

1. Something. 2. A second something. 3. A tertiary Something.

答案1

这是针对第一级枚举;可以按照类似的方式添加其他级别。

\documentclass{article}
\usepackage{enumitem}

\newlist{oddenumerate}{enumerate}{1}
\setlist[oddenumerate]{start=0,label=\theoddenumeratei.}
\makeatletter
\renewcommand\theoddenumeratei{\@arabic{\numexpr2*\value{oddenumeratei}+1}}
\makeatother

\begin{document}
\begin{oddenumerate}
    \item one
    \item two\label{two}
    \item three
\end{oddenumerate}

Here's a ref: \ref{two}
\end{document}

在此处输入图片描述

答案2

下面的示例定义了宏\arabicodd和,\arabiceven其工作方式与类似\arabic,但分别使用奇数和偶数。

与 cmhughes 和 egreg 的其他答案一样,该列表是通过 package 制作的enumitem

引用的工作方式与“正常”enumerate环境相同,特别是引用中不包含点。标签和引用的外观可以通过选项label和/或轻松配置ref。计数器宏\arabicodd\arabiceven可以在\arabic此处使用,因为它们是使用注册的\AddEnumerateCounter

\documentclass{article}

\usepackage{enumitem}

\makeatletter
\newcommand*{\arabicodd}[1]{%
  \expandafter\@arabicodd\csname c@#1\endcsname
}
\newcommand*{\arabiceven}[1]{%
  \expandafter\@arabiceven\csname c@#1\endcsname
}
\newcommand*{\@arabicodd}[1]{%
  \@arabic{\numexpr(#1)*2-1\relax}%
}
\newcommand*{\@arabiceven}[1]{%
  \@arabic{\numexpr(#1)*2\relax}%
}

\AddEnumerateCounter\arabicodd\@arabicodd{0}
\AddEnumerateCounter\arabiceven\@arabiceven{0}
\makeatother

\begin{document}
  \begin{enumerate}
      \item one
      \item\label{normal:two}two
      \item three
  \end{enumerate}
  Middle label of normal numbered list: \ref{normal:two}.

  \begin{enumerate}[label=\arabicodd*.,ref=\arabicodd*]
      \item one
      \item\label{odd:two}two
      \item three
  \end{enumerate}
  Middle label of odd-numbered list: \ref{odd:two}.

  \begin{enumerate}[label=\arabiceven*.,ref=\arabiceven*]
      \item one
      \item\label{even:two}two
      \item three
  \end{enumerate}
  Middle label of even-numbered list: \ref{even:two}.
\end{document}

结果

相关内容