更改列表中间的标签

更改列表中间的标签

我尝试使用moreenumenumitem创建一个十六进制编号的列表。为了增加趣味性,我希望标签尽可能为0x##(或0x0#最多为)。这是我的第一个方法:0x0F

\documentclass{scrartcl}
\begin{document}
\usepackage{moreenum}
\usepackage{enumitem}
    \begin{enumerate}[label=0x0\enumhex*]
        \item Thou shalt not follow the null pointer.
        \item Thou shalt not follow the null pointer.
        \setcounter{enumi}{14}
        \item Thou shalt not follow the null pointer.
        \item Thou shalt not follow the null pointer.
        \item Thou shalt not follow the null pointer.
    \end{enumerate}
\end{document}

遗憾的是,0现在每个值前面都打印了。这会编译为第一列,但我想实现打印在第二列中的方式。换句话说:检查计数器并0在必要时忽略。

0x01     0x01
0x02     0x02
0x0D     0x0D
0x0F     0x0F
0x010    0x10

是否可以定义一个命令以便[label=0x\somecommand]打印所需的结果?

我尝试\newif在列表主体中使用和切换,但没有成功。我还希望能够使用基于计数器值的条件来定义一个函数,因为这在未来的项目中可能会更有用。

\newif\ifNotLargerF
....
\begin{enumerate}[label=0x\ifNotLargerF{0}\fi\enumhex*]
    \NotLargerFtrue
    \item Thou shalt not follow the null pointer.
    \item Thou shalt not follow the null pointer.
    \NotLargerFfalse
    \setcounter{enumi}{14}
    \item Thou shalt not follow the null pointer.
    \item Thou shalt not follow the null pointer.
    \item Thou shalt not follow the null pointer.
\end{enumerate}

答案1

您可以在标签中构建受保护的数字测试。此处,如果计数为 15 或更少,则\padz添加零。enumi

\documentclass{scrartcl}
\usepackage{moreenum}
\usepackage{enumitem}
\def\padz{\ifnum\value{enumi}>15\relax\else0\fi}
\begin{document}
    \begin{enumerate}[label={\ttfamily0x\protect\padz\enumhex*}]
        \item Thou shalt not follow the null pointer.
        \item Thou shalt not follow the null pointer.
        \setcounter{enumi}{14}
        \item Thou shalt not follow the null pointer.
        \item Thou shalt not follow the null pointer.
        \item Thou shalt not follow the null pointer.
    \end{enumerate}
\end{document}

在此处输入图片描述

答案2

自从moreenum用途fmtcount作为它的“数字转换主力”,您可以使用它\padzeroes[2]在枚举前面添加足够数量的零:

在此处输入图片描述

\documentclass{article}

\usepackage{moreenum,enumitem}

\padzeroes[2]
\begin{document}

\begin{enumerate}[label=\texttt{0x\enumHex*}]
  \item Thou shalt not follow the null pointer.
  \item Thou shalt not follow the null pointer.
  \setcounter{enumi}{14}
  \item Thou shalt not follow the null pointer.
  \item Thou shalt not follow the null pointer.
  \item Thou shalt not follow the null pointer.
\end{enumerate}

\end{document}

相关内容