关于枚举和标签扩展的困惑

关于枚举和标签扩展的困惑

这就是我想要实现的目标: 在此处输入图片描述 我正在尝试使用以下代码来获取它:

documentclass{article}
\usepackage{enumitem}
\begin{document}

\newcounter{entry}
\setcounter{entry}{1000}

\newcommand{\xlistformat}[1]{\theentry.~(#1)} % This is the interesting part

\newlist{xlist}{enumerate}{1}
\setlist[xlist]{
  label = {\xlistformat{\alph*}},
  leftmargin = *,
  align = left
}

\begin{xlist}
\item Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut 
      purus elit, vestibulum ut, placerat ac, adipiscing vitae, felis.

      Curabitur dictum gravida mauris. Nam arcu libero, nonummy eget,
      consectetuer id, vulputate a, magna.
\end{xlist}
\end{document}

这不起作用。我得到的是这个: 在此处输入图片描述

我可以通过改变来让它工作

\newcommand{\xlistformat}[1]{\theentry.~(#1)}

\makeatletter
\newcommand{\xlistformat}[1]{\number\c@entry.~(#1)}
\makeatother

但这还引发了许多其他问题。

我不确定我需要改变什么才能让它工作。我试过用 键format代替label,但结果基本相同。我猜是 的扩展出了问题\theentry,但我在这方面的实验没有结果。

答案1

使用widest密钥:

\documentclass{article}
\usepackage{enumitem, fmtcount, siunitx}
\usepackage[showframe]{geometry}

\begin{document}

\newcounter{entry}
\setcounter{entry}{100000000}

\newlength\entrylg\settowidth{\entrylg}{\theentry.}

\newcommand{\xlistformat}[1]{\theentry.~(#1)} % This is the interesting part

\newlist{xlist}{enumerate}{1}
\setlist[xlist]{
label = {\xlistformat{\alph*}},
widest = \makebox[\entrylg]{}, 
align=left,
leftmargin =*, 
}

\begin{xlist}
\item Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut
      purus elit, vestibulum ut, placerat ac, adipiscing vitae, felis.

      Curabitur dictum gravida mauris. Nam arcu libero, nonummy eget,
      consectetuer id, vulputate a, magna.

\setcounter{xlisti}{12}
\item Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut
      purus elit, vestibulum ut, placerat ac, adipiscing vitae, felis.

      Curabitur dictum gravida mauris. Nam arcu libero, nonummy eget,
      consectetuer id, vulputate a, magna.

\end{xlist}

\end{document} 

在此处输入图片描述

相关内容