如何使自定义计数器样式与枚举引用一起工作?

如何使自定义计数器样式与枚举引用一起工作?

我正在尝试使用 ZeroRoman 风格第 0 章/罗马数字。我还有一种列表,在引用时应在章节下编号。我收到错误Missing number, treated as zero

以下是一个 mwe:

\documentclass{book}

\usepackage{enumitem}

\newcommand{\ZeroRoman}[1]{% 0 + \Roman
  \ifcase\value{#1}\relax 0\else% Chapter 0
  \Roman{#1}\fi}% All other chapters
\renewcommand{\thechapter}{\ZeroRoman{chapter}}

\newlist{test}{enumerate}{2} 
\setlist[test]{label=\arabic*., ref=\thechapter.\arabic*}

\begin{document}
\chapter{}

\begin{test}
\item Blah \label{label}
\end{test}

\ref{label}

\end{document}

我该如何避免这种情况?我猜\thechapter是在序言中以某种方式调用的,而计数器chapter尚未定义?

答案1

您可以使用 传递\thechapter未扩展的标记(即不访问值)\noexpand。扩展将由接收标记的下一个宏执行。这可以防止出现尚不可用的值的问题。

此案例的 MWE:

\documentclass{book}

\usepackage{enumitem}

\newcommand{\ZeroRoman}[1]{% 0 + \Roman
  \ifcase\value{#1}\relax 0\else% Chapter 0
  \Roman{#1}\fi}% All other chapters
\renewcommand{\thechapter}{\ZeroRoman{chapter}}

\newlist{test}{enumerate}{2} 
\setlist[test]{label=\arabic*., ref=\noexpand\thechapter.\arabic*}
\setcounter{chapter}{-1}
\begin{document}
\chapter{}

\begin{test}
\item Blah \label{label}
\end{test}

\ref{label}

\end{document}

在此处输入图片描述

相关内容