Skip to content

Option "label" adds an extra pair of braces to \cs{the\@enumctr} #23

@muzimuzhi

Description

@muzimuzhi

When option label is used, an extra pair of braces is added to \cs{the\@enumctr}, which influences \@currentlabel. This may break macros aiming to retrieve value from a label, for example the \gerrefnumber from refcount package (see this TeX-SX question as an example).

Is this pair of braces a must?

\documentclass{article}
\usepackage{enumitem}

\begin{document}
\makeatletter
\def\test{\meaning\@currentlabel}
\makeatother

\begin{enumerate}
  \item text \test
  % this defines \@currentlabel to "1"
\end{enumerate}

\begin{enumerate}[label=\arabic*., ref=\arabic*]
  \item text \test
  % this defines \@currentlabel to "{1}"
\end{enumerate}
\end{document}

Related source code, see line 548:

enumitem/enumitem.sty

Lines 541 to 551 in 1bdcad0

\def\enit@reflabel#1#2{%
\ifnum\enit@depth=\@ne\else % no level 0
\advance\enit@depth\@ne
\@namedef{p@\@enumctr}{}% Don't accumulate labels
\advance\enit@depth\m@ne
\fi
\ifcase#2%
\@namedef{the\@enumctr}{{#1}}%
\else
\enit@normlabel{\csname the\@enumctr\endcsname}{#1}%
\fi}

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions