Beim Anpassen von Aufzählungslisten mit Tikz wird „enumi“ statt „number“ gedruckt.

Beim Anpassen von Aufzählungslisten mit Tikz wird „enumi“ statt „number“ gedruckt.

Ich versuche, eine enumerateListe zu erstellen, die die Zahlen in einem farbigen Kreis enthält. Für die Kreise verwende ich das tikzPaket und das colorPaket. Ich definiere einen Kreis in der Präambel und definiere dann die Listenelemente neu:

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

Das Problem ist, dass statt der Listennummern nur ein gedruckt wird enumi. Ich folge den Wikibooks aufAnpassen von Aufzählungslisten. Ich denke, es sollte eine Möglichkeit geben, es zum Laufen zu bringen, ohne zusätzliche Pakete hinzuzufügen, aber ich weiß nicht wie.

Wenn es nicht durch ist enumi,Wie kann ich auf die Nummer der Liste zugreifen??

Prost!

Antwort1

Du solltestnichtsagen wir \textbf#1, aber \bfseries#1oder \textbf{#1}. Außerdem sollte es heißen \arabic{enumi}, nicht enumi: Mit Ihrem Code übergeben Sie enumian \circledals #1, nicht an die Anweisung, die den Wert des Zählers ausgibt.

Ich schlage jedoch vor, Folgendes zu verwenden 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}

Sie können alle enumerateUmgebungen der ersten Ebene für die Verwendung \circledmit anpassen

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

in der Präambel und Sie benötigen kein optionales Argument für \begin{enumerate}.

Bildbeschreibung hier eingeben

Wenn Sie keine zusätzlichen Pakete möchten (ich bin mir aber nicht sicher, warum), \labelenumifunktioniert die Methode der Neudefinition, vorausgesetzt, sie ist

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

Denken Sie jedoch daran, dass in der Definition von \circledSiemussMachen Sie entweder das eine \bfseries#1oder das andere \textbf{#1}, denn \textbf#1das ist falsch und führt zu unerklärlichen Fehlern.

Warum sollten Sie laden wollen enumitem? Ganz einfach: Wenn Sie

\item\label{foo} text

und dann versuchen Sie \ref{foo}, erhalten Sie eine eingekreiste Zahl im Text, die nicht korrekt erscheint. Mit dem obigen Code wird bei Verwendung von enumitemnur \ref{foo}eine schmucklose Zahl gedruckt.

verwandte Informationen