Personalizando listas enumeradas com tikz imprime enumi em vez de número

Personalizando listas enumeradas com tikz imprime enumi em vez de número

Estou tentando fazer uma enumeratelista que contenha os números dentro de um círculo colorido. Para os círculos estou usando o tikzpacote e o colorpacote. Defino um círculo no preâmbulo e depois redefino os itens da 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}

O problema é que em vez de imprimir os números da lista, ele apenas imprime um arquivo enumi. Estou seguindo o Wikibooks nopersonalizando listas enumeradas. Acho que deveria haver uma maneira de fazer funcionar sem adicionar pacotes extras, mas não sei como.

Se não acabar enumi,como devo acessar o número da lista?

Saúde!

Responder1

Você devenãodigamos \textbf#1, mas \bfseries#1ou \textbf{#1}. Também deveria ser \arabic{enumi}, não : com o seu código que enumivocê está passando enumicomo , e não com a instrução que imprime o valor do contador.\circled#1

No entanto, sugiro 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}

Você pode personalizar todos enumerateos ambientes de primeiro nível para usar \circledcom

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

no preâmbulo e você não precisará de nenhum argumento opcional para \begin{enumerate}.

insira a descrição da imagem aqui

Se você não quiser pacotes extras, mas não sei por que, então o método de redefinição \labelenumifuncionará, desde que seja

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

No entanto, lembre-se que na definição de \circledvocêdevefaça um \bfseries#1ou \textbf{#1}, porque \textbf#1está errado e produzirá erros inescrutáveis.

Por que você deveria querer carregar enumitem? Simples; se você fizer

\item\label{foo} text

e tente \ref{foo}, você receberá um número circulado no texto, que não parece correto. Com o código acima enumitem, usar \ref{foo}apenas imprimirá um número sem adornos.

informação relacionada