在自定义 etemune 列出的项目中添加前导零并枚举

在自定义 etemune 列出的项目中添加前导零并枚举

如何在包裹etaremune和列出的项目中添加前导零enumerate?例如,我希望标签为:

A01, A02, A03, ..., A09, A10

以下是示例代码。如何在本地和全局添加前导零?

\documentclass{article}

\usepackage{etaremune}
\usepackage{enumitem}
\setlist[enumerate]{nosep} % To remove the spacing


\begin{document}
First list

\renewcommand*{\labelenumi}{A\theenumi.}
\begin{etaremune}[topsep=0pt,itemsep=0pt,partopsep=0pt,parsep=0pt,] 
    \item item 10
    \item item 09
    \item item 08
    \item item 07
    \item item 06
    \item item 05
    \item item 04
    \item item 03
    \item item 02
    \item item 01
\end{etaremune}

Second list
\begin{enumerate}[label={M\arabic*.}]
    \item item 01
    \item item 02
\end{enumerate}

Third list
\begin{enumerate}[label={M\arabic*.}, resume]
    \item item 03
    \item item 04
\end{enumerate}

\end{document}

在此处输入图片描述输出如下:

答案1

[编辑鉴于问题及其解决方案的演变,我正在编辑此内容以使解决方案更清晰。因此,下面的评论可能没有多大意义...]

下面的代码可以让你只使用enumitem 包。 尤其, 野葛藤不再需要,因为我们使用 enumitem 欺骗枚举变得像 etemune 环境一样运行。

代码使用 enumitem\AddEnumerateCounter命令定义两个新计数器:\PaddingUp和。如果计数器小于 10,\PaddingDown则两个计数器都会用填充项号。计数器具有秘密执行的额外功能0\PaddingDown减少项目计数器增加一(实际上减少了二,因此当计数器下次增加时,净效应是它将减少一)。

\PaddingUp和计数器\PaddingDown可以像任何标准 enumitem 计数器宏一样使用。因此,

\begin{enumerate}[label=Up\PaddingUp*.]
...
\end{enumerate}

创建带有项目标签的枚举环境Up01.,,Up02....然而

\begin{enumerate}[label=Down\PaddingDown*.,start=10]
...
\end{enumerate}

创建一个带有项目标签的枚举环境Down10.,,Down09....

以下代码产生了 OP 所请求的输出:

\documentclass{article}
\usepackage{enumitem}

\makeatletter
\AddEnumerateCounter{\PaddingUp}{\two@digits}{A00}
\AddEnumerateCounter{\PaddingDown}{\two@digits}{A00}
\newcommand\PaddingUp[1]{\expandafter\two@digits\csname c@#1\endcsname}
\newcommand\PaddingDown[1]{\PaddingUp{#1}\addtocounter{#1}{-2}}
\makeatother

\setlist[enumerate]{nosep,label=M\PaddingUp*.} % To remove the spacing
\newlist{etaremune}{enumerate}{1}% one level of nesting
\setlist[etaremune]{nosep,label=A\PaddingDown*.}

\begin{document}

First list
\begin{etaremune}[start=10]
    \item item 10
    \item item 09
    \item item 08
    \item item 07
    \item item 06
    \item item 05
    \item item 04
    \item item 03
    \item item 02
    \item item 01
\end{etaremune}

Second list
\begin{enumerate}
    \item item 01
    \item item 02
\end{enumerate}

Third list
\begin{enumerate}[resume]
    \item item 03
    \item item 04
\end{enumerate}

\end{document}

为了更好的衡量,上面的代码定义了一个带有选项etaremune的环境nosep。然而,这可能会产生误导,因为递减计数器是通过将标签设置为label=\PaddingDown*.Above 给出的,这是使用 完成的setlist。请注意,有必要明确设置环境中项目计数器的起始值etaremune。如果您不设置起始值,那么它们将从 1 开始,这可能不是您想要的。

最后,也许我应该指出,在使用这些环境时,很容易更改标记这些环境的字母等。例如,要将它们更改为使用P's 和Q's,您可以这样写:

\begin{enumerate}[label=P\PaddingDown*.]% item -> P#. going up
    \item item 01 \item item 02
\end{enumerate}

\begin{enumerate}[label=Q\PaddingUp*.]% item -> P#. going down
    \item item 01 \item item 02
\end{enumerate}

答案2

可以通过以下两行直接完成:

\newcommand\harabic[1]{\ifnum#1<10\relax0\fi#1}
\renewcommand*{\labelenumi}{\labelprefix\protect\harabic{\theenumi}.}

然后,只需要通过 来定义首字母\labelprefix。MWE:

\documentclass{article}
\usepackage{etaremune}
\usepackage{enumitem}
\setlist[enumerate]{nosep} % To remove the spacing
\newcommand\harabic[1]{\ifnum#1<10\relax0\fi#1}
\renewcommand*{\labelenumi}{\labelprefix\protect\harabic{\theenumi}.}
\def\labelprefix{M}
\begin{document}
First list

{\def\labelprefix{A}%
\begin{etaremune}[topsep=0pt,itemsep=0pt,partopsep=0pt,parsep=0pt,] 
    \item item 10
    \item item 09
    \item item 08
    \item item 07
    \item item 06
    \item item 05
    \item item 04
    \item item 03
    \item item 02
    \item item 01
\end{etaremune}}

Second list
\begin{enumerate}
    \item item 01
    \item item 02
\end{enumerate}

Third list
\begin{enumerate}[resume]
    \item item 03
    \item item 04
\end{enumerate}

\end{document}

在此处输入图片描述

相关内容