Personalizar listas enumeradas con tikz imprime enumi en lugar de número

Personalizar listas enumeradas con tikz imprime enumi en lugar de número

Estoy intentando hacer una enumeratelista que tenga los números dentro de un círculo de color. Para los círculos estoy usando el tikzpaquete y el colorpaquete. Defino un círculo en el preámbulo y luego redefino los elementos de la lista:

\documentclass{report}

\usepackage{color}
\usepackage{tikz}

% Defining the circle:
\newcommand*\circled[1]{\tikz[baseline=(char.base)]{
    \node[shape=circle,draw,inner sep=2pt,fill=lightgray,lightgray] (char) {\color{gray}\textbf#1};}}

% Redefining the list items
\renewcommand{\labelenumi}{\protect\circled{enumi}}

\begin{document}

\begin{enumerate}
 \item foo
 \item bar
\end{enumerate}

\end{document}

El problema es que en lugar de imprimir los números de la lista, simplemente imprime un archivo enumi. Estoy siguiendo los Wikilibros enpersonalizar listas enumeradas. Creo que debería haber una manera de hacerlo funcionar sin agregar paquetes adicionales, pero no sé cómo.

Si no ha terminado enumi,¿Cómo debo acceder al número de la lista??

¡Salud!

Respuesta1

Deberíanodecir \textbf#1, pero \bfseries#1o \textbf{#1}. También debería ser \arabic{enumi}, no : con el código al que enumiestás pasando enumicomo , no la instrucción que imprime el valor del contador.\circled#1

Sin embargo sugiero usar enumitem:

\documentclass{report}

\usepackage{color}
\usepackage{tikz}
\usepackage{enumitem}

% Defining the circle:
\DeclareRobustCommand*\circled[1]{%
  \tikz[
    baseline=(char.base)
  ]{%
    \node[
      shape=circle,
      draw,
      inner sep=2pt,
      fill=lightgray,
      lightgray
     ] (char) {\color{gray}\bfseries#1};%
   }%
}

\begin{document}

\begin{enumerate}[label=\circled{\arabic*},ref=\arabic*]
 \item foo
 \item bar
\end{enumerate}

\end{document}

Puede personalizar todos enumeratelos entornos de primer nivel para \circledutilizarlos

\setlist[enumerate,1]{label=\circled{\arabic*},ref=\arabic*}

en el preámbulo y no necesitará ningún argumento opcional para \begin{enumerate}.

ingrese la descripción de la imagen aquí

Si no desea paquetes adicionales, pero no estoy seguro de por qué, entonces el método de redefinición \labelenumifuncionará, siempre que sea

\renewcommand{\labelenumi}{\protect\circled{\arabic{enumi}}}

Sin embargo recuerda que en la definición de \circledtidebehaga cualquiera de los dos \bfseries#1o \textbf{#1}porque \textbf#1está mal y producirá errores inescrutables.

¿Por qué deberías querer cargar enumitem? Simple; si lo haces

\item\label{foo} text

y luego inténtalo \ref{foo}, obtendrás un número encerrado en un círculo en el texto, que no parece correcto. Con el código anterior usando enumitem, \ref{foo}simplemente imprimirá un número sin adornos.

información relacionada