我怎样才能跳过环境中的每个偶数项而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}