使用 tikz 自訂枚舉清單列印 enumi 而不是數字

使用 tikz 自訂枚舉清單列印 enumi 而不是數字

我正在嘗試製作一個enumerate列表,其中的數字位於彩色圓圈內。對於圓圈,我使用的是tikz包和color包。我在序言中定義了一個圓圈,然後重新定義了清單項目:

\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},而不是enumi:使用您傳遞enumi\circledas 的程式碼#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}只會列印一個樸素的數字。

相關內容