tikz で列挙リストをカスタマイズすると、number ではなく enumi が出力される

tikz で列挙リストをカスタマイズすると、number ではなく enumi が出力される

色付きの円の中に数字が入ったリストを作成しようとしていますenumerate。円については、パッケージtikzcolorパッケージを使用しています。プリアンブルで円を定義し、リスト項目を再定義します。

\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}

問題は、リスト番号を印刷する代わりに、単に を印刷することですenumi。私はWikibooksに従っています。列挙リストのカスタマイズ追加のパッケージを追加せずに動作させる方法があるはずだと思うのですが、方法がわかりません。

通らない場合はenumiリストの番号にアクセスするにはどうすればいいですか?

乾杯!

答え1

あなたがすべきないと言います\textbf#1が、\bfseries#1または です。また、ではなく で\textbf{#1}ある必要があります。コードでは、 を として渡しており、カウンターの値を印刷する命令ではありません。\arabic{enumi}enumienumi\circled#1

ただし、以下を使用することをお勧めします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}

すべての第一レベルのenumerate環境をカスタマイズして使用でき\circledます

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

プリアンブルに と記述すれば、 にオプションの引数は必要ありません\begin{enumerate}

ここに画像の説明を入力してください

追加のパッケージが必要ない場合(理由はわかりませんが)、再定義の方法は\labelenumi機能します。

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

しかし、\circledしかし、あなた自身しなければならない\bfseries#1またはのいずれかを実行してください\textbf{#1}。 は\textbf#1誤りであり、解析不能なエラーが発生します。

なぜロードする必要があるのでしょうかenumitem?簡単です。

\item\label{foo} text

次に を試すと\ref{foo}、テキスト内に丸で囲まれた数字が表示されますが、これは正しくないようです。 を使用する上記のコードではenumitem\ref{foo}は単に飾りのない数字を出力します。

関連情報