我尝试使用moreenum
和enumitem
创建一个十六进制编号的列表。为了增加趣味性,我希望标签尽可能为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}